@@ -1666,9 +1666,18 @@ index 488a253e218409b5f0b4a872cee0928578fa7582..6e3b2863f04419ee6914ac3fd4f12a4f
16661666
16671667 private void getFullChunk(long pos, Consumer<LevelChunk> chunkConsumer) {
16681668diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
1669- index 6670e657e08e130f7e0368f418379fd1ece00cdf..e921b6db8905a8676a45e36564d877075afb081f 100644
1669+ index 6670e657e08e130f7e0368f418379fd1ece00cdf..4c5f90fdb534d8aeb7dd077a13b1ebed016e4947 100644
16701670--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
16711671+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
1672+ @@ -108,7 +108,7 @@ public class ServerEntity {
1673+
1674+ Entity entity = this.entity;
1675+
1676+ - if (entity instanceof ItemFrame) {
1677+ + if (!this.trackedPlayers.isEmpty() && entity instanceof ItemFrame) { // Paper - Only tick item frames if players can see it
1678+ ItemFrame entityitemframe = (ItemFrame) entity;
1679+
1680+ if (true || this.tickCount % 10 == 0) { // CraftBukkit - Moved below, should always enter this block
16721681@@ -180,7 +180,8 @@ public class ServerEntity {
16731682 long i1 = this.positionCodec.encodeZ(vec3d);
16741683 boolean flag6 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L;
@@ -1752,6 +1761,42 @@ index 18aac3da3c88f33b1a71a5920a8daa27e9723913..eac31c3fcc9161711328588ac852fcae
17521761 // Paper start - optimise chunk ticking
17531762 this.getRandomBlockPosition(j, 0, k, 15, blockposition);
17541763 int normalY = chunk.getHeight(Heightmap.Types.MOTION_BLOCKING, blockposition.getX() & 15, blockposition.getZ() & 15) + 1;
1764+ diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
1765+ index 9d46536f80b5b3e6641fd377c02166a431edfd77..8a1fde50b82a8b0718ae04124c2611b7cff4bcd6 100644
1766+ --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
1767+ +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
1768+ @@ -1245,6 +1245,7 @@ public class ServerPlayer extends Player {
1769+ this.setServerLevel(worldserver);
1770+ this.connection.teleport(exit); // CraftBukkit - use internal teleport without event
1771+ this.connection.resetPosition();
1772+ + this.mainSupportingBlockPos = Optional.empty(); // Pufferfish - Fix paper 9372
1773+ worldserver.addDuringPortalTeleport(this);
1774+ worldserver1.getProfiler().pop();
1775+ this.triggerDimensionChangeTriggers(worldserver1);
1776+ @@ -1907,6 +1908,7 @@ public class ServerPlayer extends Player {
1777+ public void moveTo(double x, double y, double z) {
1778+ super.moveTo(x, y, z);
1779+ this.connection.resetPosition();
1780+ + this.mainSupportingBlockPos = Optional.empty(); // Pufferfish - Fix paper 9372
1781+ }
1782+
1783+ @Override
1784+ @@ -2143,6 +2145,7 @@ public class ServerPlayer extends Player {
1785+
1786+ this.connection.send(new ClientboundSetCameraPacket(this.camera));
1787+ this.connection.resetPosition();
1788+ + this.mainSupportingBlockPos = Optional.empty(); // Pufferfish - Fix paper 9372
1789+ }
1790+ }
1791+
1792+ @@ -2595,6 +2598,7 @@ public class ServerPlayer extends Player {
1793+ public void forceSetPositionRotation(double x, double y, double z, float yaw, float pitch) {
1794+ this.moveTo(x, y, z, yaw, pitch);
1795+ this.connection.resetPosition();
1796+ + this.mainSupportingBlockPos = Optional.empty(); // Pufferfish - Fix paper 9372
1797+ }
1798+
1799+ @Override
17551800diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
17561801index 2a609e43370e68943c580083f7f7d8c9b0972955..309a3e42ec48a1a7684b62ea372bfa984df6a0fb 100644
17571802--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -1885,7 +1930,7 @@ index 04b1531572e8fff1e46fe1c94e7fc863841e0f66..47ddc42f2b63d9d3fae5ae6ea93d4183
18851930 int LARGE_MAX_STACK_SIZE = 64;
18861931 int DEFAULT_DISTANCE_LIMIT = 8;
18871932diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
1888- index 513c34aa02d63f7e3c178eade818e156af4541db..641c4af6bd13c87c26f7932dd5f6f4d2ee20e3c0 100644
1933+ index 513c34aa02d63f7e3c178eade818e156af4541db..1aa184cf7a97364d7b9e4d628c0a6c1dc769ba6e 100644
18891934--- a/src/main/java/net/minecraft/world/entity/Entity.java
18901935+++ b/src/main/java/net/minecraft/world/entity/Entity.java
18911936@@ -306,7 +306,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
@@ -1958,19 +2003,19 @@ index 513c34aa02d63f7e3c178eade818e156af4541db..641c4af6bd13c87c26f7932dd5f6f4d2
19582003
19592004 return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this));
19602005 }
1961- @@ -810 ,6 +838 ,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
1962- // CraftBukkit end
2006+ @@ -797 ,6 +825 ,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
2007+ }
19632008
1964- public void baseTick () {
2009+ public void tick () {
19652010+ // Pufferfish start - entity TTL
19662011+ if (type != EntityType.PLAYER && type.ttl >= 0 && this.tickCount >= type.ttl) {
1967- + remove(RemovalReason.DISCARDED );
2012+ + discard( );
19682013+ return;
19692014+ }
19702015+ // Pufferfish end - entity TTL
1971- this.level().getProfiler().push("entityBaseTick" );
1972- if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Update last hurt when ticking
1973- this.feetBlockState = null;
2016+ this.baseTick( );
2017+ }
2018+
19742019@@ -4306,16 +4340,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
19752020 }
19762021
0 commit comments