9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-22 08:29:22 +00:00
Files
LeavesMC/patches/server/0007-Fix-gravity-block-duper.patch
2024-02-21 13:55:54 +08:00

98 lines
4.6 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: violetc <58360096+s-yh-china@users.noreply.github.com>
Date: Sat, 30 Oct 2021 21:07:43 +0800
Subject: [PATCH] Fix gravity block duper
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 75d5e255bb166d2ec7325b16e8e5a30b43855276..1bd585630940b2678bd1d9c3c344c17deb461c03 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -440,6 +440,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
return this.originWorld;
}
// Paper end - Entity origin API
+ /* Leaves - fix gravity block duper
// Paper start - make end portalling safe
public BlockPos portalBlock;
public ServerLevel portalWorld;
@@ -470,6 +471,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
this.teleportTo(worldserver, null);
}
// Paper end - make end portalling safe
+ */
// Paper start - optimise entity tracking
final org.spigotmc.TrackingRange.TrackingRangeType trackingRangeType = org.spigotmc.TrackingRange.getTrackingRangeType(this);
@@ -3183,7 +3185,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
}
this.processPortalCooldown();
- this.tickEndPortal(); // Paper - make end portalling safe
+ // Leaves - fix gravity block duper
}
}
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
index 05b77bf1af82397c542fde19b54ee545448ce12e..c753bc1a3369827d8ef4705e313f744f07759e40 100644
--- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java
@@ -132,11 +132,7 @@ public class FallingBlockEntity extends Entity {
@Override
public void tick() {
- // Paper start - fix sand duping
- if (this.isRemoved()) {
- return;
- }
- // Paper end - fix sand duping
+ // Leaves - fix gravity block duper
if (this.blockState.isAir()) {
this.discard();
} else {
@@ -148,12 +144,14 @@ public class FallingBlockEntity extends Entity {
}
this.move(MoverType.SELF, this.getDeltaMovement());
+ /* // Leaves - fix gravity block duper
// Paper start - fix sand duping
if (this.isRemoved()) {
return;
}
// Paper end - fix sand duping
- // Paper start - Configurable falling blocks height nerf
+ */
+ // Paper start - Configurable EntityFallingBlock height nerf
if (this.level().paperConfig().fixes.fallingBlockHeightNerf.test(v -> this.getY() > v)) {
if (this.dropItem && this.level().getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) {
this.spawnAtLocation(block);
diff --git a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
index a0c1db8cfebaa0344012cc0af18d6231cdcdcbb8..6482c2456d9dc9b4983f691f388b7ec045d2cab6 100644
--- a/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/EndPortalBlock.java
@@ -61,12 +61,19 @@ public class EndPortalBlock extends BaseEntityBlock {
// return; // CraftBukkit - always fire event in case plugins wish to change it
}
- // Paper start - move all of this logic into portal tick
- entity.portalWorld = ((ServerLevel)world);
- entity.portalBlock = pos.immutable();
- // Paper end - move all of this logic into portal tick
- }
+ // Leaves start - fix gravity block duper
+ // CraftBukkit start - Entity in portal
+ EntityPortalEnterEvent event = new EntityPortalEnterEvent(entity.getBukkitEntity(), new org.bukkit.Location(world.getWorld(), pos.getX(), pos.getY(), pos.getZ()));
+ world.getCraftServer().getPluginManager().callEvent(event);
+ if (entity instanceof ServerPlayer) {
+ ((ServerPlayer) entity).changeDimension(worldserver, PlayerTeleportEvent.TeleportCause.END_PORTAL);
+ return;
+ }
+ // CraftBukkit end
+ entity.changeDimension(worldserver);
+ // Leaves end - fix gravity block duper
+ }
}
@Override