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