From 3afc502214ef8581e9a048c1a775fa0fd80d793d Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 14 Mar 2020 17:05:49 -0500 Subject: [PATCH] Update Tuinity patches --- .../server/0002-Tuinity-Server-Patches.patch | 284 ++++++++---------- patches/server/0006-Ridables.patch | 16 +- patches/server/0018-Cows-eat-mushrooms.patch | 14 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 18 +- .../server/0032-Controllable-Minecarts.patch | 12 +- .../0049-Add-EntityPortalReadyEvent.patch | 12 +- ...-should-not-bypass-cramming-gamerule.patch | 24 +- .../server/0100-Add-item-entity-options.patch | 6 +- ...0102-Configurable-void-damage-height.patch | 6 +- ...0104-Fix-the-dead-lagging-the-server.patch | 6 +- 10 files changed, 176 insertions(+), 222 deletions(-) diff --git a/patches/server/0002-Tuinity-Server-Patches.patch b/patches/server/0002-Tuinity-Server-Patches.patch index 475f58a29..0840fe130 100644 --- a/patches/server/0002-Tuinity-Server-Patches.patch +++ b/patches/server/0002-Tuinity-Server-Patches.patch @@ -1,4 +1,4 @@ -From c794d57af4283d31fe962cea6c96a3602c0e50fd Mon Sep 17 00:00:00 2001 +From e39528079ddd25c1b51230d0b66546f55cc8ff27 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Fri, 14 Dec 2018 21:53:58 -0800 Subject: [PATCH] Tuinity Server Patches @@ -14,37 +14,37 @@ Subject: [PATCH] Tuinity Server Patches .../chunk/QueuedChangesMapLong2Object.java | 170 ++++ .../tuinity/tuinity/config/TuinityConfig.java | 225 +++++ .../server/TickListServerInterval.java | 42 + - .../tuinity/server/TuinityTickList.java | 614 ++++++++++++ + .../tuinity/server/TuinityTickList.java | 614 ++++++++++++++ .../com/tuinity/tuinity/util/ChunkList.java | 119 +++ .../com/tuinity/tuinity/util/EntityList.java | 124 +++ .../tuinity/tuinity/util/IBlockDataList.java | 123 +++ .../tuinity/util/OptimizedSmallEnumSet.java | 65 ++ - .../tuinity/util/PrimaryThreadList.java | 241 +++++ - .../tuinity/util/PrimaryThreadSet.java | 282 ++++++ + .../tuinity/util/PrimaryThreadList.java | 241 ++++++ + .../tuinity/util/PrimaryThreadSet.java | 282 +++++++ .../util/TickSynchronizationPoint.java | 40 + .../com/tuinity/tuinity/util/TickThread.java | 40 + .../java/com/tuinity/tuinity/util/Util.java | 103 +++ .../fastutil/ExtendedAbstractDoubleList.java | 39 + .../fastutil/ExtendedDoubleArrayList.java | 65 ++ .../fastutil/ExtendedObjectAVLTreeSet.java | 90 ++ - .../com/tuinity/tuinity/util/map/AreaMap.java | 388 ++++++++ + .../com/tuinity/tuinity/util/map/AreaMap.java | 388 +++++++++ .../tuinity/util/map/PlayerAreaMap.java | 25 + - .../util/map/PooledLinkedHashSets.java | 287 ++++++ + .../util/map/PooledLinkedHashSets.java | 287 +++++++ .../util/pool/PooledBlockPositions.java | 40 + - .../tuinity/util/set/LinkedSortedSet.java | 142 +++ + .../tuinity/util/set/LinkedSortedSet.java | 142 ++++ .../net/minecraft/server/ArraySetSorted.java | 41 +- .../net/minecraft/server/AxisAlignedBB.java | 2 + .../net/minecraft/server/BlockPosition.java | 1 + src/main/java/net/minecraft/server/Chunk.java | 134 +++ .../java/net/minecraft/server/ChunkMap.java | 15 +- - .../minecraft/server/ChunkMapDistance.java | 387 +++++++- + .../minecraft/server/ChunkMapDistance.java | 387 ++++++++- .../minecraft/server/ChunkProviderServer.java | 186 +++- .../minecraft/server/ChunkRegionLoader.java | 12 +- .../net/minecraft/server/ChunkStatus.java | 5 +- .../net/minecraft/server/DedicatedServer.java | 3 +- .../minecraft/server/DoubleListOffset.java | 2 +- src/main/java/net/minecraft/server/EULA.java | 2 +- - .../java/net/minecraft/server/Entity.java | 53 ++ + .../java/net/minecraft/server/Entity.java | 100 +++ .../minecraft/server/EntityEnderDragon.java | 4 +- .../minecraft/server/EntityInsentient.java | 19 +- .../net/minecraft/server/EntityPlayer.java | 41 +- @@ -74,18 +74,18 @@ Subject: [PATCH] Tuinity Server Patches .../minecraft/server/PathfinderNormal.java | 4 +- .../server/PathfinderTargetCondition.java | 1 + .../net/minecraft/server/PlayerChunk.java | 112 ++- - .../net/minecraft/server/PlayerChunkMap.java | 870 +++++++++++++++--- + .../net/minecraft/server/PlayerChunkMap.java | 791 +++++++++++++++--- .../server/PlayerInteractManager.java | 45 +- .../net/minecraft/server/PlayerInventory.java | 6 +- .../java/net/minecraft/server/PlayerList.java | 6 +- .../java/net/minecraft/server/ProtoChunk.java | 16 +- - .../java/net/minecraft/server/RegionFile.java | 420 ++++++++- + .../java/net/minecraft/server/RegionFile.java | 420 +++++++++- .../minecraft/server/RegionFileBitSet.java | 26 +- .../net/minecraft/server/RegionFileCache.java | 45 +- .../server/RegionFileCompression.java | 7 +- .../server/StructureBoundingBox.java | 14 +- .../net/minecraft/server/ThreadedMailbox.java | 2 +- - .../net/minecraft/server/TickListServer.java | 51 + + .../net/minecraft/server/TickListServer.java | 51 ++ .../java/net/minecraft/server/Ticket.java | 6 +- .../java/net/minecraft/server/TicketType.java | 1 + .../net/minecraft/server/VoxelShapeArray.java | 2 +- @@ -93,7 +93,7 @@ Subject: [PATCH] Tuinity Server Patches .../server/VoxelShapeMergerList.java | 2 +- .../net/minecraft/server/VoxelShapes.java | 2 +- src/main/java/net/minecraft/server/World.java | 23 +- - .../net/minecraft/server/WorldServer.java | 478 +++++++++- + .../net/minecraft/server/WorldServer.java | 471 ++++++++++- .../net/minecraft/server/WorldUpgrader.java | 2 +- .../org/bukkit/craftbukkit/CraftServer.java | 7 +- .../org/bukkit/craftbukkit/CraftWorld.java | 67 +- @@ -102,7 +102,7 @@ Subject: [PATCH] Tuinity Server Patches .../craftbukkit/entity/CraftPlayer.java | 37 +- .../java/org/spigotmc/ActivationRange.java | 41 +- src/main/java/org/spigotmc/AsyncCatcher.java | 2 +- - 98 files changed, 6858 insertions(+), 486 deletions(-) + 98 files changed, 6819 insertions(+), 486 deletions(-) create mode 100644 src/main/java/com/tuinity/tuinity/chunk/ChunkRegionManager.java create mode 100644 src/main/java/com/tuinity/tuinity/chunk/QueuedChangesMapLong2Int.java create mode 100644 src/main/java/com/tuinity/tuinity/chunk/QueuedChangesMapLong2Object.java @@ -186,7 +186,7 @@ index 132397b3f3..4e12f416f9 100644 continue; } diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index c7cde1d0a0..e60af9ceba 100644 +index 7ca67a4aa5..e76d5fd8df 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -108,7 +108,7 @@ public class PaperWorldConfig { @@ -5320,17 +5320,64 @@ index cf00f35a5b..e54730f097 100644 throwable = throwable1; throw throwable1; diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 8974c16bf9..23e91183ef 100644 +index 8974c16bf9..181f1742ac 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -208,6 +208,58 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -208,6 +208,105 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } // CraftBukkit end + // Tuinity start + // ender dragon is special cased for its large range, player is special cased for spectator mode + npc plugins -+ // non-final, let plugins set at their discretion -+ protected boolean isLegacyTrackingEntity = this instanceof EntityEnderDragon || this instanceof EntityPlayer; ++ boolean isLegacyTrackingEntity = this instanceof EntityEnderDragon || this instanceof EntityPlayer; ++ ++ public final void setLegacyTrackingEntity(final boolean isLegacyTrackingEntity) { ++ com.tuinity.tuinity.util.TickThread.softEnsureTickThread("Cannot update legacy tracking off of the main thread"); ++ if (this.isLegacyTrackingEntity == isLegacyTrackingEntity) { ++ return; ++ } ++ ++ if (this.world == null) { ++ this.isLegacyTrackingEntity = isLegacyTrackingEntity; ++ return; ++ } ++ ++ WorldServer world = (WorldServer)this.world; ++ PlayerChunkMap chunkMap = world.getChunkProvider().playerChunkMap; ++ ++ if (chunkMap.playerEntityTrackerTrackMap == null) { ++ this.isLegacyTrackingEntity = isLegacyTrackingEntity; ++ return; ++ } ++ ++ if (this.isLegacyTrackingEntity) { ++ this.isLegacyTrackingEntity = false; ++ chunkMap.activelyTrackedEntitiesLegacy.remove(this); ++ ++ PlayerChunkMap.EntityTracker tracker = chunkMap.trackedEntities.get(this.getId()); ++ if (tracker != null) { ++ for (EntityPlayer player : world.getPlayers()) { ++ tracker.removeTrackingPlayer(player); ++ tracker.updatePlayer(player); ++ } ++ } ++ } else { ++ this.isLegacyTrackingEntity = true; ++ chunkMap.activelyTrackedEntitiesLegacy.add(this); ++ ++ PlayerChunkMap.EntityTracker tracker = this.tracker; ++ if (tracker != null) { ++ com.tuinity.tuinity.util.map.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet inRange = chunkMap.playerEntityTrackerTrackMap.getObjectsInRange(com.tuinity.tuinity.util.Util.getCoordinateKey(this)); ++ ++ for (EntityPlayer player : world.getPlayers()) { ++ tracker.clear(player); ++ if (inRange != null && inRange.contains(player)) { ++ tracker.updateTrackingPlayer(player); ++ } ++ } ++ } ++ } ++ } + + // We queue changes to tracker here because when adding to a chunk we do not know if the entity is in a trackable state + public final it.unimi.dsi.fastutil.ints.IntLinkedOpenHashSet trackQueue = new it.unimi.dsi.fastutil.ints.IntLinkedOpenHashSet(8); @@ -5382,7 +5429,7 @@ index 8974c16bf9..23e91183ef 100644 public Entity(EntityTypes entitytypes, World world) { this.id = Entity.entityCount.incrementAndGet(); this.passengers = Lists.newArrayList(); -@@ -1371,6 +1423,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1371,6 +1470,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return MathHelper.c(f * f + f1 * f1 + f2 * f2); } @@ -6871,7 +6918,7 @@ index b38bc67758..7297952386 100644 } diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java -index 57bea926a6..aa625ce2a4 100644 +index 57bea926a6..6ce0c8f25f 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -55,8 +55,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -6897,7 +6944,7 @@ index 57bea926a6..aa625ce2a4 100644 // CraftBukkit start - recursion-safe executor for Chunk loadCallback() and unloadCallback() public final CallbackExecutor callbackExecutor = new CallbackExecutor(); -@@ -109,6 +110,93 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -109,6 +110,89 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { // Paper start - distance maps private final com.destroystokyo.paper.util.misc.PooledLinkedHashSets pooledLinkedPlayerHashSets = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets<>(); @@ -6941,7 +6988,6 @@ index 57bea926a6..aa625ce2a4 100644 + if (this.playerEntityTrackerTrackMap != null) { + this.playerEntityTrackerTrackMap.update(player, chunkX, chunkZ, Math.min(this.entityTrackerTrackRange, effectiveViewDistance)); + this.playerEntityTrackerUntrackMap.update(player, chunkX, chunkZ, Math.min(this.entityTrackerUntrackRange, effectiveViewDistance)); -+ this.playerEntityTrackerLegacyMap.update(player, chunkX, chunkZ, this.entityTrackerLegacyMapRange); + } + // Tuinity end - use distance map to optimise entity tracker + } @@ -6966,11 +7012,8 @@ index 57bea926a6..aa625ce2a4 100644 + public final int entityTrackerTrackRange; + public final int entityTrackerUntrackRange; + -+ public final com.tuinity.tuinity.util.map.PlayerAreaMap playerEntityTrackerLegacyMap; -+ public final int entityTrackerLegacyMapRange; -+ + //public final com.tuinity.tuinity.util.EntityList activelyTrackedEntities; // TODO not yet -+ public final com.tuinity.tuinity.util.EntityList activelyTrackedEntitiesLegacy; ++ final com.tuinity.tuinity.util.EntityList activelyTrackedEntitiesLegacy; + + public static boolean isLegacyTrackingEntity(Entity entity) { + return entity.isLegacyTrackingEntity; @@ -6991,7 +7034,7 @@ index 57bea926a6..aa625ce2a4 100644 void addPlayerToDistanceMaps(EntityPlayer player) { this.updateMaps(player); -@@ -134,10 +222,91 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -134,10 +218,89 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { // Paper end @@ -7027,7 +7070,6 @@ index 57bea926a6..aa625ce2a4 100644 + if (this.playerEntityTrackerTrackMap != null) { + this.playerEntityTrackerTrackMap.remove(player); + this.playerEntityTrackerUntrackMap.remove(player); -+ this.playerEntityTrackerLegacyMap.remove(player); + } + // Tuinity end - use distance map to optimise entity tracker + @@ -7067,7 +7109,6 @@ index 57bea926a6..aa625ce2a4 100644 + if (this.playerEntityTrackerTrackMap != null) { + this.playerEntityTrackerTrackMap.update(player, chunkX, chunkZ, Math.min(this.entityTrackerTrackRange, effectiveViewDistance)); + this.playerEntityTrackerUntrackMap.update(player, chunkX, chunkZ, Math.min(this.entityTrackerUntrackRange, effectiveViewDistance)); -+ this.playerEntityTrackerLegacyMap.update(player, chunkX, chunkZ, this.entityTrackerLegacyMapRange); + } + // Tuinity end - use distance map to optimise entity tracker + @@ -7084,7 +7125,7 @@ index 57bea926a6..aa625ce2a4 100644 this.pendingUnload = new Long2ObjectLinkedOpenHashMap(); this.loadedChunks = new LongOpenHashSet(); this.unloadQueue = new LongOpenHashSet(); -@@ -166,7 +335,188 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -166,7 +329,157 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { this.l = supplier; this.m = new VillagePlace(new File(this.w, "poi"), datafixer, this.world); // Paper this.setViewDistance(i); @@ -7171,11 +7212,8 @@ index 57bea926a6..aa625ce2a4 100644 + if (!this.world.tuinityConfig.useOptimizedTracker) { + this.playerEntityTrackerTrackMap = null; + this.playerEntityTrackerUntrackMap = null; -+ this.playerEntityTrackerLegacyMap = null; + this.entityTrackerTrackRange = -1; + this.entityTrackerUntrackRange = -1; -+ this.entityTrackerLegacyMapRange = -1; -+ + this.activelyTrackedEntitiesLegacy = null; + } else { + this.activelyTrackedEntitiesLegacy = new com.tuinity.tuinity.util.EntityList(); @@ -7238,34 +7276,6 @@ index 57bea926a6..aa625ce2a4 100644 + entity.clearTrackingQueues(player); + } + }); -+ -+ // legacy tracker -+ -+ // TODO check on update -+ int legacyTrackerRange = 10 * 16; // Ender dragon range -+ if (legacyTrackerRange < this.world.spigotConfig.playerTrackingRange) { -+ legacyTrackerRange = this.world.spigotConfig.playerTrackingRange; -+ } -+ -+ int legacyTrackerChunkRange = legacyTrackerRange >>> 4 + ((legacyTrackerRange & 15) != 0 ? 1 : 0); -+ this.entityTrackerLegacyMapRange = legacyTrackerChunkRange; -+ this.playerEntityTrackerLegacyMap = new com.tuinity.tuinity.util.map.PlayerAreaMap(sets, -+ (EntityPlayer player, int rangeX, int rangeZ, int currPosX, int currPosZ, int prevPosX, int prevPosZ, -+ com.tuinity.tuinity.util.map.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet newState) -> { -+ Chunk chunk = PlayerChunkMap.this.world.getChunkProvider().getChunkAtIfLoadedMainThreadNoCache(rangeX, rangeZ); -+ if (chunk == null || newState.size() != 1) { -+ return; -+ } -+ Entity[] entities = chunk.entities.getRawData(); -+ for (int index = 0, len = chunk.entities.size(); index < len; ++index) { -+ Entity entity = entities[index]; -+ if (!PlayerChunkMap.isLegacyTrackingEntity(entity)) { -+ continue; -+ } -+ PlayerChunkMap.this.activelyTrackedEntitiesLegacy.add(entity); // tracker tick propagates entity -+ } -+ }, -+ null); // tracker tick handles entities moving out of range + } + // Tuinity end - use distance map to optimise entity tracker + // Tuinity start - optimise getPlayersInRange type functions @@ -7274,7 +7284,7 @@ index 57bea926a6..aa625ce2a4 100644 } public void updatePlayerMobTypeMap(Entity entity) { -@@ -177,15 +527,30 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -177,15 +490,30 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { int chunkZ = (int)Math.floor(entity.locZ()) >> 4; int index = entity.getEntityType().getEnumCreatureType().ordinal(); @@ -7306,7 +7316,7 @@ index 57bea926a6..aa625ce2a4 100644 private static double a(ChunkCoordIntPair chunkcoordintpair, Entity entity) { double d0 = (double) (chunkcoordintpair.x * 16 + 8); double d1 = (double) (chunkcoordintpair.z * 16 + 8); -@@ -213,8 +578,13 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -213,8 +541,13 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } private static int a(ChunkCoordIntPair chunkcoordintpair, int i, int j) { @@ -7322,7 +7332,7 @@ index 57bea926a6..aa625ce2a4 100644 return Math.max(Math.abs(k), Math.abs(l)); } -@@ -225,12 +595,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -225,12 +558,17 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @Nullable protected PlayerChunk getUpdatingChunk(long i) { @@ -7342,7 +7352,7 @@ index 57bea926a6..aa625ce2a4 100644 } protected IntSupplier c(long i) { -@@ -308,6 +683,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -308,6 +646,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @Nullable private PlayerChunk a(long i, int j, @Nullable PlayerChunk playerchunk, int k) { @@ -7350,7 +7360,7 @@ index 57bea926a6..aa625ce2a4 100644 if (k > PlayerChunkMap.GOLDEN_TICKET && j > PlayerChunkMap.GOLDEN_TICKET) { return playerchunk; } else { -@@ -327,11 +703,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -327,11 +666,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { playerchunk = (PlayerChunk) this.pendingUnload.remove(i); if (playerchunk != null) { playerchunk.a(j); @@ -7364,7 +7374,7 @@ index 57bea926a6..aa625ce2a4 100644 this.updatingChunksModified = true; } -@@ -411,7 +788,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -411,7 +751,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { protected void save(boolean flag) { if (flag) { @@ -7373,7 +7383,7 @@ index 57bea926a6..aa625ce2a4 100644 MutableBoolean mutableboolean = new MutableBoolean(); do { -@@ -439,7 +816,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -439,7 +779,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { // this.i(); // Paper - nuke IOWorker PlayerChunkMap.LOGGER.info("ThreadedAnvilChunkStorage ({}): All chunks are saved", this.w.getName()); } else { @@ -7382,7 +7392,7 @@ index 57bea926a6..aa625ce2a4 100644 IChunkAccess ichunkaccess = (IChunkAccess) playerchunk.getChunkSave().getNow(null); // CraftBukkit - decompile error if (ichunkaccess instanceof ProtoChunkExtension || ichunkaccess instanceof Chunk) { -@@ -482,7 +859,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -482,7 +822,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { while (longiterator.hasNext()) { // Spigot long j = longiterator.nextLong(); longiterator.remove(); // Spigot @@ -7391,7 +7401,7 @@ index 57bea926a6..aa625ce2a4 100644 if (playerchunk != null) { this.pendingUnload.put(j, playerchunk); -@@ -610,7 +987,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -610,7 +950,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { if (!this.updatingChunksModified) { return false; } else { @@ -7400,7 +7410,7 @@ index 57bea926a6..aa625ce2a4 100644 this.updatingChunksModified = false; return true; } -@@ -903,11 +1280,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -903,11 +1243,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { completablefuture1.thenAcceptAsync((either) -> { either.mapLeft((chunk) -> { this.u.getAndIncrement(); @@ -7413,7 +7423,7 @@ index 57bea926a6..aa625ce2a4 100644 return Either.left(chunk); }); }, (runnable) -> { -@@ -1011,58 +1384,70 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1011,58 +1347,70 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } // Paper } @@ -7505,7 +7515,7 @@ index 57bea926a6..aa625ce2a4 100644 } protected PlayerChunkMap.a e() { -@@ -1070,12 +1455,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1070,12 +1418,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } protected Iterable f() { @@ -7520,7 +7530,7 @@ index 57bea926a6..aa625ce2a4 100644 while (objectbidirectionaliterator.hasNext()) { Entry entry = (Entry) objectbidirectionaliterator.next(); -@@ -1265,31 +1650,53 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1265,31 +1613,53 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { return isOutsideOfRange(chunkcoordintpair, false); } @@ -7594,7 +7604,7 @@ index 57bea926a6..aa625ce2a4 100644 private boolean b(EntityPlayer entityplayer) { return entityplayer.isSpectator() && !this.world.getGameRules().getBoolean(GameRules.SPECTATORS_GENERATE_CHUNKS); } -@@ -1315,13 +1722,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1315,13 +1685,11 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } } @@ -7612,7 +7622,7 @@ index 57bea926a6..aa625ce2a4 100644 } -@@ -1329,11 +1734,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1329,11 +1697,12 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { SectionPosition sectionposition = SectionPosition.a((Entity) entityplayer); entityplayer.a(sectionposition); @@ -7626,7 +7636,7 @@ index 57bea926a6..aa625ce2a4 100644 ObjectIterator objectiterator = this.trackedEntities.values().iterator(); while (objectiterator.hasNext()) { -@@ -1345,6 +1751,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1345,6 +1714,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { playerchunkmap_entitytracker.updatePlayer(entityplayer); } } @@ -7634,7 +7644,7 @@ index 57bea926a6..aa625ce2a4 100644 int i = MathHelper.floor(entityplayer.locX()) >> 4; int j = MathHelper.floor(entityplayer.locZ()) >> 4; -@@ -1384,56 +1791,53 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1384,56 +1754,53 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { int k1; int l1; @@ -7646,12 +7656,7 @@ index 57bea926a6..aa625ce2a4 100644 + this.updateMaps(entityplayer); // Paper - distance maps + this.updateDistanceMapsTuinity(entityplayer); // Tuinity - distance maps + } - -- for (int k2 = k1; k2 <= i2; ++k2) { -- for (int l2 = l1; l2 <= j2; ++l2) { -- ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(k2, l2); -- boolean flag3 = a(chunkcoordintpair, i1, j1) <= this.viewDistance; -- boolean flag4 = a(chunkcoordintpair, i, j) <= this.viewDistance; ++ + @Override + public Stream a(ChunkCoordIntPair chunkcoordintpair, boolean flag) { + // Tuinity start - per player view distance @@ -7675,7 +7680,12 @@ index 57bea926a6..aa625ce2a4 100644 + EntityPlayer player = (EntityPlayer)temp; + int viewDistance = this.playerViewDistanceBroadcastMap.getLastViewDistance(player); + long lastPosition = this.playerViewDistanceBroadcastMap.getLastCoordinate(player); -+ + +- for (int k2 = k1; k2 <= i2; ++k2) { +- for (int l2 = l1; l2 <= j2; ++l2) { +- ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(k2, l2); +- boolean flag3 = a(chunkcoordintpair, i1, j1) <= this.viewDistance; +- boolean flag4 = a(chunkcoordintpair, i, j) <= this.viewDistance; + int distX = Math.abs(com.tuinity.tuinity.util.Util.getCoordinateX(lastPosition) - chunkcoordintpair.x); + int distZ = Math.abs(com.tuinity.tuinity.util.Util.getCoordinateZ(lastPosition) - chunkcoordintpair.z); @@ -7729,7 +7739,7 @@ index 57bea926a6..aa625ce2a4 100644 } protected void addEntity(Entity entity) { -@@ -1452,11 +1856,38 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1452,11 +1819,36 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { entity.tracker = playerchunkmap_entitytracker; // Paper - Fast access to tracker this.trackedEntities.put(entity.getId(), playerchunkmap_entitytracker); @@ -7738,10 +7748,8 @@ index 57bea926a6..aa625ce2a4 100644 + // Tuinity start - implement optimized tracker + } else { + if (PlayerChunkMap.isLegacyTrackingEntity(entity)) { -+ if (this.playerEntityTrackerLegacyMap.getObjectsInRange(com.tuinity.tuinity.util.Util.getCoordinateKey(entity)) != null) { -+ this.activelyTrackedEntitiesLegacy.add(entity); -+ // tracker tick will propagate updates -+ } ++ this.activelyTrackedEntitiesLegacy.add(entity); ++ // tracker tick will propagate updates + } else { + int chunkX = com.tuinity.tuinity.util.Util.getChunkCoordinate(entity.locX()); + int chunkZ = com.tuinity.tuinity.util.Util.getChunkCoordinate(entity.locZ()); @@ -7768,7 +7776,7 @@ index 57bea926a6..aa625ce2a4 100644 ObjectIterator objectiterator = this.trackedEntities.values().iterator(); while (objectiterator.hasNext()) { -@@ -1466,6 +1897,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1466,6 +1858,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { playerchunkmap_entitytracker1.updatePlayer(entityplayer); } } @@ -7776,7 +7784,7 @@ index 57bea926a6..aa625ce2a4 100644 } } -@@ -1494,9 +1926,112 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1494,9 +1887,102 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { playerchunkmap_entitytracker1.a(); } entity.tracker = null; // Paper - We're no longer tracked @@ -7855,7 +7863,7 @@ index 57bea926a6..aa625ce2a4 100644 + Entity entity = legacyEntities[i]; + EntityTracker tracker = this.trackedEntities.get(entity.getId()); + if (tracker == null) { -+ MinecraftServer.LOGGER.error("Entity has no tracker!" + entity); ++ MinecraftServer.LOGGER.error("Legacy tracking entity has no tracker! No longer tracking entity " + entity); + this.activelyTrackedEntitiesLegacy.remove(entity); + --i; + --size; @@ -7863,18 +7871,8 @@ index 57bea926a6..aa625ce2a4 100644 + } + + EntityTrackerEntry entry = tracker.trackerEntry; -+ com.tuinity.tuinity.util.map.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet players = this.playerEntityTrackerLegacyMap.getObjectsInRange(com.tuinity.tuinity.util.Util.getCoordinateKey(entity)); -+ if (players != null) { -+ tracker.updateTrackingPlayers(this, players); -+ } else { -+ // nothing is tracking it now, remove it -+ tracker.clearAll(); -+ this.activelyTrackedEntitiesLegacy.remove(entity); -+ --i; -+ --size; -+ continue; -+ } -+ entry.tick(); ++ tracker.track(this.world.getPlayers()); ++ entry.tick(); // always tick the entry, even if no player is tracking + } + } + // Tuinity end - optimized tracker @@ -7889,7 +7887,7 @@ index 57bea926a6..aa625ce2a4 100644 List list = Lists.newArrayList(); List list1 = this.world.getPlayers(); -@@ -1554,6 +2089,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1554,6 +2040,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } @@ -7897,7 +7895,7 @@ index 57bea926a6..aa625ce2a4 100644 private void a(EntityPlayer entityplayer, Packet[] apacket, Chunk chunk) { if (apacket[0] == null) { apacket[0] = new PacketPlayOutMapChunk(chunk, 65535, true); // Paper - Anti-Xray -@@ -1564,6 +2100,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1564,6 +2051,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { PacketDebug.a(this.world, chunk.getPos()); List list = Lists.newArrayList(); List list1 = Lists.newArrayList(); @@ -7905,7 +7903,7 @@ index 57bea926a6..aa625ce2a4 100644 ObjectIterator objectiterator = this.trackedEntities.values().iterator(); while (objectiterator.hasNext()) { -@@ -1581,6 +2118,32 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1581,6 +2069,32 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { } } } @@ -7938,7 +7936,7 @@ index 57bea926a6..aa625ce2a4 100644 Iterator iterator; Entity entity1; -@@ -1618,7 +2181,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1618,7 +2132,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { public class EntityTracker { @@ -7947,44 +7945,7 @@ index 57bea926a6..aa625ce2a4 100644 private final Entity tracker; private final int trackingDistance; private SectionPosition e; -@@ -1635,6 +2198,36 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { - this.e = SectionPosition.a(entity); - } - -+ // Tuinity start - optimise entity tracker tracking -+ public void clearAll() { -+ for (EntityPlayer player : this.trackedPlayers) { -+ this.trackerEntry.onUntrack(player); -+ } -+ this.trackedPlayers.clear(); -+ } -+ -+ void updateTrackingPlayers(PlayerChunkMap chunkMap, com.tuinity.tuinity.util.map.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet fromPlayers) { -+ EntityTrackerEntry entry = this.trackerEntry; -+ for (Iterator iterator = this.trackedPlayers.iterator(); iterator.hasNext();) { -+ EntityPlayer tracker = iterator.next(); -+ if (!fromPlayers.contains(tracker)) { -+ // definitely out of range -+ iterator.remove(); -+ entry.onUntrack(tracker); -+ } -+ } -+ -+ Object[] backingArray = fromPlayers.getBackingSet(); -+ for (int i = 0, len = backingArray.length; i < len; ++i) { -+ if (backingArray[i] == null) { -+ continue; -+ } -+ EntityPlayer player = (EntityPlayer)backingArray[i]; -+ this.updatePlayer(player); -+ } -+ } -+ // Tuinity end - optimise entity tracker tracking -+ - public boolean equals(Object object) { - return object instanceof PlayerChunkMap.EntityTracker ? ((PlayerChunkMap.EntityTracker) object).tracker.getId() == this.tracker.getId() : false; - } -@@ -1684,10 +2277,13 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1684,10 +2198,13 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { public void updatePlayer(EntityPlayer entityplayer) { org.spigotmc.AsyncCatcher.catchOp("player tracker update"); // Spigot if (entityplayer != this.tracker) { @@ -8002,7 +7963,7 @@ index 57bea926a6..aa625ce2a4 100644 if (flag) { boolean flag1 = this.tracker.attachedToPlayer; -@@ -1696,7 +2292,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1696,7 +2213,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { PlayerChunk playerchunk = PlayerChunkMap.this.getVisibleChunk(chunkcoordintpair.pair()); if (playerchunk != null && playerchunk.getChunk() != null) { @@ -8011,7 +7972,7 @@ index 57bea926a6..aa625ce2a4 100644 } } -@@ -1738,6 +2334,44 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { +@@ -1738,6 +2255,44 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { return i; } @@ -9291,7 +9252,7 @@ index 5117dafbcf..5f69a018d9 100644 if (chunk != null) { chunk.a(oclass, axisalignedbb, list, predicate); diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index c74b85917a..214b555e73 100644 +index c74b85917a..83ccabe710 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -55,7 +55,7 @@ public class WorldServer extends World { @@ -9299,7 +9260,7 @@ index c74b85917a..214b555e73 100644 private static final Logger LOGGER = LogManager.getLogger(); private final List globalEntityList = Lists.newArrayList(); - public final Int2ObjectMap entitiesById = new Int2ObjectLinkedOpenHashMap(); -+ public final Int2ObjectLinkedOpenHashMap entitiesById = new Int2ObjectLinkedOpenHashMap(); // Tuinity - change type for fast iterator ++ public final Int2ObjectMap entitiesById = new Int2ObjectLinkedOpenHashMap(); // Tuinity - diff on change, we expect Int2ObjectLinkedOpenHashMap private final Map entitiesByUUID = Maps.newHashMap(); private final Queue entitiesToAdd = Queues.newArrayDeque(); public final List players = Lists.newArrayList(); // Paper - private -> public @@ -9736,7 +9697,7 @@ index c74b85917a..214b555e73 100644 if (entity.inChunk && this.isChunkLoaded(entity.chunkX, entity.chunkZ)) { this.getChunkAt(entity.chunkX, entity.chunkZ).a(entity, entity.chunkY); } -@@ -827,6 +1199,90 @@ public class WorldServer extends World { +@@ -827,6 +1199,83 @@ public class WorldServer extends World { } else { this.getChunkAt(i, k).a(entity); } @@ -9746,14 +9707,7 @@ index c74b85917a..214b555e73 100644 + if (entity.valid && (prevChunkX != newChunkX || prevChunkZ != newChunkZ)) { + PlayerChunkMap chunkMap = this.getChunkProvider().playerChunkMap; + if (chunkMap.playerEntityTrackerTrackMap != null) { -+ if (PlayerChunkMap.isLegacyTrackingEntity(entity)) { -+ if (chunkMap.playerEntityTrackerLegacyMap != null) { -+ if (chunkMap.playerEntityTrackerLegacyMap.getObjectsInRange(newChunkX, newChunkZ) != null) { -+ chunkMap.activelyTrackedEntitiesLegacy.add(entity); // ensure tracked -+ // untracking is handled in tracker tick -+ } -+ } -+ } else { ++ if (!PlayerChunkMap.isLegacyTrackingEntity(entity)) { + // handle tracking + com.tuinity.tuinity.util.map.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet oldRange = + chunkMap.playerEntityTrackerTrackMap.getObjectsInRange(prevChunkX, prevChunkZ); @@ -9827,7 +9781,7 @@ index c74b85917a..214b555e73 100644 } this.getMethodProfiler().exit(); -@@ -1178,6 +1634,7 @@ public class WorldServer extends World { +@@ -1178,6 +1627,7 @@ public class WorldServer extends World { this.registerEntity(entityplayer); this.getChunkProvider().playerChunkMap.addPlayerToDistanceMaps(entityplayer); // Paper - distance maps @@ -9835,7 +9789,7 @@ index c74b85917a..214b555e73 100644 } // CraftBukkit start -@@ -1360,6 +1817,7 @@ public class WorldServer extends World { +@@ -1360,6 +1810,7 @@ public class WorldServer extends World { this.players.remove(entityplayer); this.getChunkProvider().playerChunkMap.removePlayerFromDistanceMaps(entityplayer); // Paper - distance maps @@ -9843,7 +9797,7 @@ index c74b85917a..214b555e73 100644 } this.getScoreboard().a(entity); -@@ -1372,6 +1830,7 @@ public class WorldServer extends World { +@@ -1372,6 +1823,7 @@ public class WorldServer extends World { if (entity instanceof EntityInsentient) { this.navigators.remove(((EntityInsentient) entity).getNavigation()); } @@ -9851,7 +9805,7 @@ index c74b85917a..214b555e73 100644 new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid entity.valid = false; // CraftBukkit } -@@ -1428,6 +1887,11 @@ public class WorldServer extends World { +@@ -1428,6 +1880,11 @@ public class WorldServer extends World { } // Paper end entity.shouldBeRemoved = false; // Paper - shouldn't be removed after being re-added diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 613fb4404..cd8bc6169 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -1,4 +1,4 @@ -From ae0dd156cdf32c8f2221f31c81d8c5afa9389050 Mon Sep 17 00:00:00 2001 +From c485c84bef3d7371965e13ba58101a79149016c3 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 6 Feb 2020 19:53:59 -0600 Subject: [PATCH] Ridables @@ -143,7 +143,7 @@ index a5c4cbb67f..efe6afde9b 100644 public ControllerMove(EntityInsentient entityinsentient) { diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 23e91183ef..d87bfc98e7 100644 +index 181f1742ac..8343be49d1 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -78,7 +78,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -182,7 +182,7 @@ index 23e91183ef..d87bfc98e7 100644 private float headHeight; // CraftBukkit start public boolean persist = true; -@@ -1337,6 +1337,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1384,6 +1384,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return this.inLava; } @@ -190,7 +190,7 @@ index 23e91183ef..d87bfc98e7 100644 public void a(float f, Vec3D vec3d) { Vec3D vec3d1 = a(vec3d, f, this.yaw); -@@ -2165,7 +2166,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2212,7 +2213,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } else { this.passengers.add(entity); } @@ -205,7 +205,7 @@ index 23e91183ef..d87bfc98e7 100644 } return true; // CraftBukkit } -@@ -2200,6 +2207,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2247,6 +2254,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return false; } // Spigot end @@ -218,7 +218,7 @@ index 23e91183ef..d87bfc98e7 100644 this.passengers.remove(entity); entity.j = 60; } -@@ -2586,6 +2599,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2633,6 +2646,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke public void setHeadRotation(float f) {} @@ -226,7 +226,7 @@ index 23e91183ef..d87bfc98e7 100644 public void l(float f) {} public boolean bA() { -@@ -3431,4 +3445,43 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -3478,4 +3492,43 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke void accept(Entity entity, double d0, double d1, double d2); } @@ -4760,7 +4760,7 @@ index eec1e26b6e..47f0b2df6c 100644 private final EntityWolf j; diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index 8635d4f40c..e9e2be88e3 100644 +index 07ebc1d816..8d1f04415e 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -44,11 +44,30 @@ public class EntityZombie extends EntityMonster { diff --git a/patches/server/0018-Cows-eat-mushrooms.patch b/patches/server/0018-Cows-eat-mushrooms.patch index 46be8acd4..f155ce06b 100644 --- a/patches/server/0018-Cows-eat-mushrooms.patch +++ b/patches/server/0018-Cows-eat-mushrooms.patch @@ -1,4 +1,4 @@ -From 88b381b673aaea1833e1ee600fe714d168aff42d Mon Sep 17 00:00:00 2001 +From 3c70f3542a9f6762f720e1a1013b548d810b9fc2 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 4 May 2019 01:10:30 -0500 Subject: [PATCH] Cows eat mushrooms @@ -11,10 +11,10 @@ Subject: [PATCH] Cows eat mushrooms 4 files changed, 77 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index d87bfc98e..3d03e199c 100644 +index 8343be49d1..78e0c6a396 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1089,6 +1089,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1136,6 +1136,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return false; } @@ -22,7 +22,7 @@ index d87bfc98e..3d03e199c 100644 public void a(SoundEffect soundeffect, float f, float f1) { if (!this.isSilent()) { this.world.playSound((EntityHuman) null, this.locX(), this.locY(), this.locZ(), soundeffect, this.getSoundCategory(), f, f1); -@@ -2626,6 +2627,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2673,6 +2674,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.invulnerable = flag; } @@ -31,7 +31,7 @@ index d87bfc98e..3d03e199c 100644 this.setPositionRotation(entity.locX(), entity.locY(), entity.locZ(), entity.yaw, entity.pitch); } diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java -index 723a9fa1e..f56fd7c01 100644 +index 723a9fa1ee..f56fd7c012 100644 --- a/src/main/java/net/minecraft/server/EntityCow.java +++ b/src/main/java/net/minecraft/server/EntityCow.java @@ -34,6 +34,7 @@ public class EntityCow extends EntityAnimal { @@ -124,7 +124,7 @@ index 723a9fa1e..f56fd7c01 100644 public EntityCow createChild(EntityAgeable entityageable) { return (EntityCow) EntityTypes.COW.a(this.world); diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 17ff8a9fc..6ca11091c 100644 +index 17ff8a9fc3..6ca11091c9 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -2812,8 +2812,9 @@ public abstract class EntityLiving extends Entity { @@ -140,7 +140,7 @@ index 17ff8a9fc..6ca11091c 100644 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 9b60d17bd..661dcce49 100644 +index 9b60d17bdf..661dcce493 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -145,10 +145,12 @@ public class PurpurWorldConfig { diff --git a/patches/server/0023-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0023-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index cdceee08f..0a9a09b76 100644 --- a/patches/server/0023-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0023-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -1,4 +1,4 @@ -From 170c795de8b12a2cbd865b3b82ac17c5e6757d2c Mon Sep 17 00:00:00 2001 +From da13d8898b59821d88c5959b9688877a86f86546 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 9 May 2019 18:26:06 -0500 Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms @@ -13,7 +13,7 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms 6 files changed, 228 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/minecraft/server/DamageSource.java b/src/main/java/net/minecraft/server/DamageSource.java -index 816d301f1..0971f25b5 100644 +index 816d301f1c..0971f25b56 100644 --- a/src/main/java/net/minecraft/server/DamageSource.java +++ b/src/main/java/net/minecraft/server/DamageSource.java @@ -81,6 +81,7 @@ public class DamageSource { @@ -25,10 +25,10 @@ index 816d301f1..0971f25b5 100644 return (new EntityDamageSourceIndirect("indirectMagic", entity, entity1)).setIgnoreArmor().setMagic(); } diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 3d03e199c..43d73385e 100644 +index 78e0c6a396..088380a2b0 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1434,6 +1434,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1481,6 +1481,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return d3 * d3 + d4 * d4 + d5 * d5; } @@ -36,7 +36,7 @@ index 3d03e199c..43d73385e 100644 public double h(Entity entity) { return this.c(entity.getPositionVector()); } -@@ -1957,14 +1958,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2004,14 +2005,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return this.a(new ItemStack(imaterial), (float) i); } @@ -55,7 +55,7 @@ index 3d03e199c..43d73385e 100644 return null; } else if (this.world.isClientSide) { diff --git a/src/main/java/net/minecraft/server/EntityEnderCrystal.java b/src/main/java/net/minecraft/server/EntityEnderCrystal.java -index a57d0089d..02952c3af 100644 +index a57d0089d8..02952c3af8 100644 --- a/src/main/java/net/minecraft/server/EntityEnderCrystal.java +++ b/src/main/java/net/minecraft/server/EntityEnderCrystal.java @@ -13,6 +13,12 @@ public class EntityEnderCrystal extends Entity { @@ -123,7 +123,7 @@ index a57d0089d..02952c3af 100644 @Override protected void b(NBTTagCompound nbttagcompound) { diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 6d2984c8d..3b9cd169b 100644 +index 6d2984c8d5..3b9cd169bd 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java @@ -8,9 +8,10 @@ import javax.annotation.Nullable; @@ -352,7 +352,7 @@ index 6d2984c8d..3b9cd169b 100644 return entityliving != null ? EntityPhantom.this.a(EntityPhantom.this.getGoalTarget(), PathfinderTargetCondition.a) : false; diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java -index c522a7c2a..9622615b5 100644 +index c522a7c2a7..9622615b50 100644 --- a/src/main/java/net/minecraft/server/IEntityAccess.java +++ b/src/main/java/net/minecraft/server/IEntityAccess.java @@ -34,6 +34,7 @@ public interface IEntityAccess { @@ -364,7 +364,7 @@ index c522a7c2a..9622615b5 100644 return this.a(oclass, axisalignedbb, IEntitySelector.f); } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 5bb1b90b3..076e747c5 100644 +index 5bb1b90b31..076e747c5b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -392,6 +392,9 @@ public class PurpurWorldConfig { diff --git a/patches/server/0032-Controllable-Minecarts.patch b/patches/server/0032-Controllable-Minecarts.patch index ec0b9b39a..c80962032 100644 --- a/patches/server/0032-Controllable-Minecarts.patch +++ b/patches/server/0032-Controllable-Minecarts.patch @@ -1,4 +1,4 @@ -From 930e24e2321f18937f9b6fe97d2bfec91a26bc96 Mon Sep 17 00:00:00 2001 +From 9ed0c92f2ae19c2986670fac21c59dbee8e72d57 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 29 Jun 2019 02:32:40 -0500 Subject: [PATCH] Controllable Minecarts @@ -11,10 +11,10 @@ Subject: [PATCH] Controllable Minecarts 4 files changed, 76 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 43d73385e..4333ca032 100644 +index 088380a2b0..ca6ff6380f 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1334,6 +1334,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1381,6 +1381,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.inLava = true; } @@ -23,7 +23,7 @@ index 43d73385e..4333ca032 100644 return this.inLava; } diff --git a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java -index 665bbe07f..1f3e5bd28 100644 +index 665bbe07fa..1f3e5bd288 100644 --- a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java +++ b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java @@ -357,12 +357,50 @@ public abstract class EntityMinecartAbstract extends Entity { @@ -78,7 +78,7 @@ index 665bbe07f..1f3e5bd28 100644 this.setMot(new Vec3D(this.getMot().x * this.derailedX, this.getMot().y * this.derailedY, this.getMot().z * this.derailedZ)); // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/ItemMinecart.java b/src/main/java/net/minecraft/server/ItemMinecart.java -index b73e317fb..e1337a9c0 100644 +index b73e317fbb..e1337a9c04 100644 --- a/src/main/java/net/minecraft/server/ItemMinecart.java +++ b/src/main/java/net/minecraft/server/ItemMinecart.java @@ -103,8 +103,10 @@ public class ItemMinecart extends Item { @@ -103,7 +103,7 @@ index b73e317fb..e1337a9c0 100644 } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 85eaf1a7a..dfa631803 100644 +index 85eaf1a7aa..dfa6318039 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -1,10 +1,16 @@ diff --git a/patches/server/0049-Add-EntityPortalReadyEvent.patch b/patches/server/0049-Add-EntityPortalReadyEvent.patch index d6caba81e..5077e1a18 100644 --- a/patches/server/0049-Add-EntityPortalReadyEvent.patch +++ b/patches/server/0049-Add-EntityPortalReadyEvent.patch @@ -1,4 +1,4 @@ -From e3cc214fd4a87ff6ad0d69f3e6a34ac6bcdec07b Mon Sep 17 00:00:00 2001 +From 07539f4ce3643cee95496fedb20ed575f77402f3 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 11 Jan 2020 23:12:52 -0600 Subject: [PATCH] Add EntityPortalReadyEvent @@ -11,7 +11,7 @@ Subject: [PATCH] Add EntityPortalReadyEvent 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/minecraft/server/BlockPortal.java b/src/main/java/net/minecraft/server/BlockPortal.java -index 09c7c1318..6880cdd7f 100644 +index 09c7c13183..6880cdd7f9 100644 --- a/src/main/java/net/minecraft/server/BlockPortal.java +++ b/src/main/java/net/minecraft/server/BlockPortal.java @@ -54,6 +54,7 @@ public class BlockPortal extends Block { @@ -86,7 +86,7 @@ index 09c7c1318..6880cdd7f 100644 break; // CraftBukkit start - add the block to our list diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 4333ca032..0c0af2dd3 100644 +index ca6ff6380f..3c640ec8b3 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -168,9 +168,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -102,7 +102,7 @@ index 4333ca032..0c0af2dd3 100644 private boolean invulnerable; protected UUID uniqueID; protected String am; -@@ -2267,6 +2267,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2314,6 +2314,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.world.getMethodProfiler().enter("portal"); this.ag = i; this.portalCooldown = this.ba(); @@ -111,7 +111,7 @@ index 4333ca032..0c0af2dd3 100644 if (this instanceof EntityPlayer) { ((EntityPlayer) this).a(this.world.worldProvider.getDimensionManager().getType() == DimensionManager.NETHER ? DimensionManager.OVERWORLD : DimensionManager.NETHER, PlayerTeleportEvent.TeleportCause.NETHER_PORTAL); diff --git a/src/main/java/net/minecraft/server/PortalTravelAgent.java b/src/main/java/net/minecraft/server/PortalTravelAgent.java -index f84dd6d9b..f50e9670b 100644 +index f84dd6d9be..f50e9670bc 100644 --- a/src/main/java/net/minecraft/server/PortalTravelAgent.java +++ b/src/main/java/net/minecraft/server/PortalTravelAgent.java @@ -11,6 +11,7 @@ public class PortalTravelAgent { @@ -141,7 +141,7 @@ index f84dd6d9b..f50e9670b 100644 } } diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java -index 37b5a1193..2b4f2fbae 100644 +index 22a1c4ebfa..c4086ace1f 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -65,7 +65,7 @@ public class WorldServer extends World { diff --git a/patches/server/0057-Ladders-should-not-bypass-cramming-gamerule.patch b/patches/server/0057-Ladders-should-not-bypass-cramming-gamerule.patch index 255e774d7..9fe296c31 100644 --- a/patches/server/0057-Ladders-should-not-bypass-cramming-gamerule.patch +++ b/patches/server/0057-Ladders-should-not-bypass-cramming-gamerule.patch @@ -1,4 +1,4 @@ -From 0b1c3f64cab2b1d30e0413e92d74ab61fde82074 Mon Sep 17 00:00:00 2001 +From 1256a5fca2b7926b4d8feb3368906f0cf4bdd94d Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 21 Jul 2019 18:06:20 -0500 Subject: [PATCH] Ladders should not bypass cramming gamerule @@ -17,10 +17,10 @@ Subject: [PATCH] Ladders should not bypass cramming gamerule 10 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 0c0af2dd3..147e30aa2 100644 +index 3c640ec8b3..945e2c0e47 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1561,6 +1561,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1608,6 +1608,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } public boolean isCollidable() { @@ -34,7 +34,7 @@ index 0c0af2dd3..147e30aa2 100644 } diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java -index 8ad131e4f..dfe8c57ce 100644 +index 8ad131e4fc..dfe8c57cef 100644 --- a/src/main/java/net/minecraft/server/EntityArmorStand.java +++ b/src/main/java/net/minecraft/server/EntityArmorStand.java @@ -318,7 +318,7 @@ public class EntityArmorStand extends EntityLiving { @@ -47,7 +47,7 @@ index 8ad131e4f..dfe8c57ce 100644 } diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java -index dfc2ce972..440c21355 100644 +index dfc2ce9729..440c21355c 100644 --- a/src/main/java/net/minecraft/server/EntityBat.java +++ b/src/main/java/net/minecraft/server/EntityBat.java @@ -85,7 +85,7 @@ public class EntityBat extends EntityAmbient { @@ -60,7 +60,7 @@ index dfc2ce972..440c21355 100644 } diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java -index fdf306e80..563fc8ced 100644 +index fdf306e80a..563fc8ced0 100644 --- a/src/main/java/net/minecraft/server/EntityBoat.java +++ b/src/main/java/net/minecraft/server/EntityBoat.java @@ -98,7 +98,7 @@ public class EntityBoat extends Entity { @@ -73,7 +73,7 @@ index fdf306e80..563fc8ced 100644 } diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java -index e7ba83f32..55e18e4c7 100644 +index e7ba83f32a..55e18e4c7a 100644 --- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java +++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java @@ -188,7 +188,7 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven @@ -86,7 +86,7 @@ index e7ba83f32..55e18e4c7 100644 } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index d64e02628..cd4526039 100644 +index d64e026288..cd45260396 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -2673,7 +2673,7 @@ public abstract class EntityLiving extends Entity { @@ -112,7 +112,7 @@ index d64e02628..cd4526039 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java -index 1f3e5bd28..ae4758f25 100644 +index 1f3e5bd288..ae4758f251 100644 --- a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java +++ b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java @@ -105,7 +105,7 @@ public abstract class EntityMinecartAbstract extends Entity { @@ -125,7 +125,7 @@ index 1f3e5bd28..ae4758f25 100644 } diff --git a/src/main/java/net/minecraft/server/EntityParrot.java b/src/main/java/net/minecraft/server/EntityParrot.java -index 7ba2f3a35..dd2cd7b21 100644 +index 7ba2f3a351..dd2cd7b219 100644 --- a/src/main/java/net/minecraft/server/EntityParrot.java +++ b/src/main/java/net/minecraft/server/EntityParrot.java @@ -392,7 +392,7 @@ public class EntityParrot extends EntityPerchable implements EntityBird { @@ -138,7 +138,7 @@ index 7ba2f3a35..dd2cd7b21 100644 } diff --git a/src/main/java/net/minecraft/server/IEntitySelector.java b/src/main/java/net/minecraft/server/IEntitySelector.java -index 4665671ef..037f14e01 100644 +index 4665671ef6..037f14e010 100644 --- a/src/main/java/net/minecraft/server/IEntitySelector.java +++ b/src/main/java/net/minecraft/server/IEntitySelector.java @@ -36,6 +36,12 @@ public final class IEntitySelector { @@ -155,7 +155,7 @@ index 4665671ef..037f14e01 100644 ScoreboardTeamBase.EnumTeamPush scoreboardteambase_enumteampush = scoreboardteambase == null ? ScoreboardTeamBase.EnumTeamPush.ALWAYS : scoreboardteambase.getCollisionRule(); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 814ff5935..9319c3b74 100644 +index 814ff59352..9319c3b74b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -145,6 +145,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0100-Add-item-entity-options.patch b/patches/server/0100-Add-item-entity-options.patch index f70f47529..0e68be9cd 100644 --- a/patches/server/0100-Add-item-entity-options.patch +++ b/patches/server/0100-Add-item-entity-options.patch @@ -1,4 +1,4 @@ -From 09525d14594e288727a544da2e67dd9279261e96 Mon Sep 17 00:00:00 2001 +From 7842d3b75036b9fb2a925a65872e9eca80ec142b Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 22 Feb 2020 15:54:08 -0600 Subject: [PATCH] Add item entity options @@ -10,10 +10,10 @@ Subject: [PATCH] Add item entity options 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 147e30aa2f..0d509e8410 100644 +index 945e2c0e47..ff42ee6eb6 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1309,6 +1309,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1356,6 +1356,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke } diff --git a/patches/server/0102-Configurable-void-damage-height.patch b/patches/server/0102-Configurable-void-damage-height.patch index b7ae01d11..61bc9ff4a 100644 --- a/patches/server/0102-Configurable-void-damage-height.patch +++ b/patches/server/0102-Configurable-void-damage-height.patch @@ -1,4 +1,4 @@ -From aaac1acff680d1926eff0a74d6ec4c476c542a00 Mon Sep 17 00:00:00 2001 +From a3bbecb7563589578a72b322928e547f5a7d3743 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 27 Feb 2020 21:42:19 -0600 Subject: [PATCH] Configurable void damage height @@ -9,10 +9,10 @@ Subject: [PATCH] Configurable void damage height 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 0d509e8410..c85e794940 100644 +index ff42ee6eb6..a38a29e3d6 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -503,7 +503,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -550,7 +550,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke // Paper start protected void performVoidDamage() { diff --git a/patches/server/0104-Fix-the-dead-lagging-the-server.patch b/patches/server/0104-Fix-the-dead-lagging-the-server.patch index f7d20e14b..850113fa7 100644 --- a/patches/server/0104-Fix-the-dead-lagging-the-server.patch +++ b/patches/server/0104-Fix-the-dead-lagging-the-server.patch @@ -1,4 +1,4 @@ -From a261c8fdf00902ccd72fb9032cf0bb431977588d Mon Sep 17 00:00:00 2001 +From d50854467c74f3cd32f59b4d793c1e1e12f1aa02 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 6 Mar 2020 13:37:26 -0600 Subject: [PATCH] Fix the dead lagging the server @@ -9,10 +9,10 @@ Subject: [PATCH] Fix the dead lagging the server 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index c85e794940..7cc0354d57 100644 +index a38a29e3d6..6805ad2cde 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java -@@ -1395,7 +1395,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -1442,7 +1442,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke this.pitch = MathHelper.a(f1, -90.0F, 90.0F) % 360.0F; this.lastYaw = this.yaw; this.lastPitch = this.pitch;