diff --git a/Paper b/Paper
index 54890033d..7d85344ef 160000
--- a/Paper
+++ b/Paper
@@ -1 +1 @@
-Subproject commit 54890033d570f5bd0eff1ada5dbb5441dd65496d
+Subproject commit 7d85344efd873c58947be779015124cb18f87f92
diff --git a/current-paper b/current-paper
index df8ac859a..9d692dfc1 100644
--- a/current-paper
+++ b/current-paper
@@ -1 +1 @@
-1.16.2--20c1e6cad902fdd2b57434676b239614c0333c79
+1.16.3--5e33549a0469a6a8e7c2423751f46c056f5ac87c
diff --git a/patches/api/0001-Tuinity-API-Changes.patch b/patches/api/0001-Tuinity-API-Changes.patch
index 05a23eb8a..d4e1696c3 100644
--- a/patches/api/0001-Tuinity-API-Changes.patch
+++ b/patches/api/0001-Tuinity-API-Changes.patch
@@ -8,7 +8,7 @@ Tuinity config
API to retrieve raw YamlConfiguration + timing exports
diff --git a/pom.xml b/pom.xml
-index 1a34f6880..95a99b7b5 100644
+index 29dafd4b..3b5dcb43 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,18 +3,18 @@
@@ -26,7 +26,7 @@ index 1a34f6880..95a99b7b5 100644
- com.destroystokyo.paper
- paper-api
+ tuinity-api
- 1.16.2-R0.1-SNAPSHOT
+ 1.16.3-R0.1-SNAPSHOT
jar
- Paper-API
@@ -37,7 +37,7 @@ index 1a34f6880..95a99b7b5 100644
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
-index bacb3ee9a..e9fb263b6 100644
+index 7c0a7889..740a86a8 100644
--- a/src/main/java/org/bukkit/Server.java
+++ b/src/main/java/org/bukkit/Server.java
@@ -1456,6 +1456,14 @@ public interface Server extends PluginMessageRecipient {
diff --git a/patches/api/0002-Rebrand.patch b/patches/api/0002-Rebrand.patch
index 24dc33063..e14bf8426 100644
--- a/patches/api/0002-Rebrand.patch
+++ b/patches/api/0002-Rebrand.patch
@@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand
diff --git a/pom.xml b/pom.xml
-index 95a99b7b..a7aca07e 100644
+index 3b5dcb43..d6060229 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,20 +1,19 @@
@@ -24,7 +24,7 @@ index 95a99b7b..a7aca07e 100644
- tuinity-api
+ purpur-api
- 1.16.2-R0.1-SNAPSHOT
+ 1.16.3-R0.1-SNAPSHOT
jar
- Tuinity-API
diff --git a/patches/server/0001-Tuinity-Server-Changes.patch b/patches/server/0001-Tuinity-Server-Changes.patch
index b6fce8419..8c9ece19b 100644
--- a/patches/server/0001-Tuinity-Server-Changes.patch
+++ b/patches/server/0001-Tuinity-Server-Changes.patch
@@ -279,24 +279,18 @@ Simply return.
Do not run vanilla update logic when eigencraft is enabled
-Fix missing block property portal crash
-
-Looks like it appears when the portal isn't created (cancelled
-event). So, just use the original direction and call it a day.
-
diff --git a/pom.xml b/pom.xml
-index d018f900d..4f45b8158 100644
+index 838f199b6..f009b05e4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,11 +1,11 @@
--
4.0.0
- paper
+ tuinity
jar
- 1.16.2-R0.1-SNAPSHOT
+ 1.16.3-R0.1-SNAPSHOT
- Paper
- https://papermc.io
+ Tuinity-Server
@@ -345,7 +339,7 @@ index d018f900d..4f45b8158 100644
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
-index dd0722397..85b25eace 100644
+index 884b59d47..68ab5ccb2 100644
--- a/src/main/java/co/aikar/timings/MinecraftTimings.java
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
@@ -43,6 +43,9 @@ public final class MinecraftTimings {
@@ -489,10 +483,10 @@ index e7624948e..77df68888 100644
diff --git a/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java b/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java
new file mode 100644
-index 000000000..f599725e1
+index 000000000..b57006d04
--- /dev/null
+++ b/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java
-@@ -0,0 +1,329 @@
+@@ -0,0 +1,349 @@
+package com.tuinity.tuinity.chunk;
+
+import co.aikar.timings.MinecraftTimings;
@@ -502,6 +496,7 @@ index 000000000..f599725e1
+import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
+import it.unimi.dsi.fastutil.objects.ReferenceLinkedOpenHashSet;
+import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
++import net.minecraft.server.ChunkCoordIntPair;
+import net.minecraft.server.MCUtil;
+import net.minecraft.server.WorldServer;
+import java.util.ArrayList;
@@ -659,6 +654,7 @@ index 000000000..f599725e1
+ protected void recalculateRegion(final Region region) {
+ this.regionRecalculateTimings.startTiming();
+ try {
++ region.markedForRecalc = false;
+ // clear unused regions
+ for (final Iterator> iterator = region.deadSections.iterator(); iterator.hasNext(); ) {
+ final RegionSection deadRegion = iterator.next();
@@ -745,7 +741,7 @@ index 000000000..f599725e1
+
+ protected void markRegionDead(final RegionSection section) {
+ this.deadSections.add(section);
-+ if (!this.markedForRecalc && this.sections.size() >= this.regionManager.minSectionRecalcCount && this.getDeadSectionPercent() >= this.regionManager.maxDeadRegionPercent) {
++ if (!this.markedForRecalc && (this.sections.size() >= this.regionManager.minSectionRecalcCount || this.sections.size() == this.deadSections.size()) && this.getDeadSectionPercent() >= this.regionManager.maxDeadRegionPercent) {
+ this.regionManager.addToRecalcQueue(this);
+ this.markedForRecalc = true;
+ }
@@ -798,9 +794,16 @@ index 000000000..f599725e1
+ this.data.put(key, data);
+ }
+
++ private static long getChunkIndex(final int chunkX, final int chunkZ) {
++ return 1L << ((chunkX & (REGION_CHUNK_SIZE - 1)) | ((chunkZ & (REGION_CHUNK_SIZE - 1)) << REGION_CHUNK_SIZE_SHIFT));
++ }
++
+ protected void addChunk(final int chunkX, final int chunkZ) {
+ final long bitset = this.chunksBitset;
-+ this.chunksBitset = bitset | (1L << ((chunkX & (REGION_CHUNK_SIZE - 1)) | ((chunkZ & (REGION_CHUNK_SIZE - 1)) << REGION_CHUNK_SIZE_SHIFT)));
++ final long after = this.chunksBitset = bitset | getChunkIndex(chunkX, chunkZ);
++ if (after == bitset) {
++ throw new IllegalStateException("Cannot add a chunk to a region which already has the chunk! RegionSection: " + this + ", global chunk: " + new ChunkCoordIntPair(chunkX, chunkZ).toString());
++ }
+ if (bitset != 0L) {
+ return;
+ }
@@ -808,12 +811,23 @@ index 000000000..f599725e1
+ }
+
+ protected void removeChunk(final int chunkX, final int chunkZ) {
-+ final long bitset = this.chunksBitset |= ~(1L << ((chunkX & (REGION_CHUNK_SIZE - 1)) | ((chunkZ & (REGION_CHUNK_SIZE - 1)) << REGION_CHUNK_SIZE_SHIFT)));
++ final long before = this.chunksBitset;
++ final long bitset = this.chunksBitset = before & ~getChunkIndex(chunkX, chunkZ);
++ if (before == bitset) {
++ throw new IllegalStateException("Cannot remove a chunk from a region which does not have that chunk! RegionSection: " + this + ", global chunk: " + new ChunkCoordIntPair(chunkX, chunkZ).toString());
++ }
+ if (bitset != 0L) {
+ return;
+ }
+ this.region.markRegionDead(this);
+ }
++
++ @Override
++ public String toString() {
++ return "RegionSection{" +
++ "regionCoordinate=" + new ChunkCoordIntPair(this.regionCoordinate).toString() +
++ '}';
++ }
+ }
+
+ public static interface RegionDataCreator & RegionDataCreator> {
@@ -1212,10 +1226,10 @@ index 000000000..08ed24325
\ No newline at end of file
diff --git a/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java
new file mode 100644
-index 000000000..b0f1e21e6
+index 000000000..67fb1b533
--- /dev/null
+++ b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java
-@@ -0,0 +1,271 @@
+@@ -0,0 +1,274 @@
+package com.tuinity.tuinity.util.maplist;
+
+import it.unimi.dsi.fastutil.objects.Reference2IntLinkedOpenHashMap;
@@ -1314,6 +1328,9 @@ index 000000000..b0f1e21e6
+ this.firstInvalidIndex = index;
+ }
+ this.listElements[index] = null;
++ if (this.iteratorCount == 0 && this.getFragFactor() >= this.maxFragFactor) {
++ this.defrag();
++ }
+ return true;
+ } else {
+ return this.pendingAdditions.remove(element);
@@ -1870,7 +1887,7 @@ index 6b655b744..e811295b4 100644
}
diff --git a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java
-index 8265ed4da..2db488aba 100644
+index 505d40278..9d85ce027 100644
--- a/src/main/java/net/minecraft/server/BlockBase.java
+++ b/src/main/java/net/minecraft/server/BlockBase.java
@@ -182,8 +182,8 @@ public abstract class BlockBase {
@@ -2005,19 +2022,6 @@ index 12a023044..9e5e6de52 100644
if (tileentity instanceof IInventory) {
InventoryUtils.dropInventory(world, blockposition, (IInventory) tileentity);
-diff --git a/src/main/java/net/minecraft/server/BlockPortalShape.java b/src/main/java/net/minecraft/server/BlockPortalShape.java
-index 6ef81aeb4..a84844726 100644
---- a/src/main/java/net/minecraft/server/BlockPortalShape.java
-+++ b/src/main/java/net/minecraft/server/BlockPortalShape.java
-@@ -227,7 +227,7 @@ public class BlockPortalShape {
- public static ShapeDetectorShape a(WorldServer worldserver, BlockUtil.Rectangle blockutil_rectangle, EnumDirection.EnumAxis enumdirection_enumaxis, Vec3D vec3d, EntitySize entitysize, Vec3D vec3d1, float f, float f1, CraftPortalEvent portalEventInfo) { // CraftBukkit // PAIL rename toDetectorShape
- BlockPosition blockposition = blockutil_rectangle.origin;
- IBlockData iblockdata = worldserver.getType(blockposition);
-- EnumDirection.EnumAxis enumdirection_enumaxis1 = (EnumDirection.EnumAxis) iblockdata.get(BlockProperties.E);
-+ EnumDirection.EnumAxis enumdirection_enumaxis1 = !iblockdata.contains(BlockProperties.E) ? enumdirection_enumaxis : (EnumDirection.EnumAxis) iblockdata.get(BlockProperties.E); // Tuinity - use provided direction if the block doesn't have one
- double d0 = (double) blockutil_rectangle.side1;
- double d1 = (double) blockutil_rectangle.side2;
- int i = enumdirection_enumaxis == enumdirection_enumaxis1 ? 0 : 90;
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
index 2d887af90..2291135ea 100644
--- a/src/main/java/net/minecraft/server/BlockPosition.java
@@ -2980,7 +2984,7 @@ index 95ef96286..73163b417 100644
T t0 = this.h.a(this.a.a(i));
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
-index 1c878265b..5907caa74 100644
+index 0eabd62ad..c4bbe4463 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -170,6 +170,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -3005,10 +3009,10 @@ index 550232cb3..229c3b0f0 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 1ee01486f..630fb5265 100644
+index cfb14c54d..3c63327ca 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -137,7 +137,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -135,7 +135,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public double D;
public double E;
public double F;
@@ -3017,7 +3021,7 @@ index 1ee01486f..630fb5265 100644
public boolean noclip;
public float I;
protected final Random random;
-@@ -208,6 +208,14 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -205,6 +205,14 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
// CraftBukkit end
@@ -3032,7 +3036,7 @@ index 1ee01486f..630fb5265 100644
// Paper start - optimise entity tracking
final org.spigotmc.TrackingRange.TrackingRangeType trackingRangeType = org.spigotmc.TrackingRange.getTrackingRangeType(this);
-@@ -223,6 +231,41 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -220,6 +228,41 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
// Paper end - optimise entity tracking
@@ -3074,7 +3078,7 @@ index 1ee01486f..630fb5265 100644
public Entity(EntityTypes> entitytypes, World world) {
this.id = Entity.entityCount.incrementAndGet();
this.passengers = Lists.newArrayList();
-@@ -591,7 +634,39 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -588,7 +631,39 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.onGround;
}
@@ -3114,7 +3118,7 @@ index 1ee01486f..630fb5265 100644
if (this.noclip) {
this.a(this.getBoundingBox().c(vec3d));
this.recalcPosition();
-@@ -619,7 +694,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -616,7 +691,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
// Paper end
vec3d = this.a(vec3d, enummovetype);
@@ -3123,7 +3127,7 @@ index 1ee01486f..630fb5265 100644
if (vec3d1.g() > 1.0E-7D) {
this.a(this.getBoundingBox().c(vec3d1));
-@@ -735,6 +810,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -732,6 +807,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.world.getMethodProfiler().exit();
}
@@ -3137,7 +3141,7 @@ index 1ee01486f..630fb5265 100644
}
protected BlockPosition ao() {
-@@ -815,6 +897,132 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -812,6 +894,132 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return d0;
}
@@ -3270,7 +3274,7 @@ index 1ee01486f..630fb5265 100644
private Vec3D g(Vec3D vec3d) {
AxisAlignedBB axisalignedbb = this.getBoundingBox();
VoxelShapeCollision voxelshapecollision = VoxelShapeCollision.a(this);
-@@ -850,6 +1058,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -847,6 +1055,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return vec3d1;
}
@@ -3278,7 +3282,7 @@ index 1ee01486f..630fb5265 100644
public static double c(Vec3D vec3d) {
return vec3d.x * vec3d.x + vec3d.z * vec3d.z;
}
-@@ -1934,11 +2143,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -1931,11 +2140,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return EnumInteractionResult.PASS;
}
@@ -3294,7 +3298,7 @@ index 1ee01486f..630fb5265 100644
return false;
}
-@@ -3275,12 +3486,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -3273,12 +3484,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.locBlock;
}
@@ -3311,7 +3315,7 @@ index 1ee01486f..630fb5265 100644
}
public void setMot(double d0, double d1, double d2) {
-@@ -3335,7 +3550,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -3333,7 +3548,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
// Paper end
if (this.loc.x != d0 || this.loc.y != d1 || this.loc.z != d2) {
@@ -3335,10 +3339,10 @@ index 314886398..79de11ce2 100644
this.setPersistent();
}
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index c622fb704..ec9174206 100644
+index 76185f042..0e000c718 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
-@@ -2846,7 +2846,11 @@ public abstract class EntityLiving extends Entity {
+@@ -2847,7 +2847,11 @@ public abstract class EntityLiving extends Entity {
return;
}
// Paper - end don't run getEntities if we're not going to use its result
@@ -3351,7 +3355,7 @@ index c622fb704..ec9174206 100644
if (!list.isEmpty()) {
// Paper - move up
-@@ -2875,6 +2879,9 @@ public abstract class EntityLiving extends Entity {
+@@ -2876,6 +2880,9 @@ public abstract class EntityLiving extends Entity {
this.C(entity);
}
}
@@ -3362,7 +3366,7 @@ index c622fb704..ec9174206 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
-index 831298e3b..7ab013058 100644
+index 4efc40c01..f322dccd8 100644
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -74,6 +74,7 @@ public class EntityTrackerEntry {
@@ -3636,7 +3640,7 @@ index ff74be145..653ba0f1d 100644
0, 2, 60L, TimeUnit.SECONDS,
new LinkedBlockingQueue(),
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 65e8dc340..106661fae 100644
+index 883c17f00..64f7e448c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -985,7 +985,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant {
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
-index fcd3388d8..1887b93e5 100644
+index fcd3388d8..6016a7bc5 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -121,31 +121,28 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -4415,15 +4419,26 @@ index fcd3388d8..1887b93e5 100644
asyncSaveData, chunk);
chunk.setLastSaved(this.world.getTime());
-@@ -1043,6 +1071,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
- this.lightEngine.a(ichunkaccess.getPos());
+@@ -1020,7 +1048,9 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
+ if (completablefuture1 != completablefuture) {
+ this.a(i, playerchunk);
+ } else {
+- if (this.pendingUnload.remove(i, playerchunk) && ichunkaccess != null) {
++ // Tuinity start
++ boolean removed;
++ if ((removed = this.pendingUnload.remove(i, playerchunk)) && ichunkaccess != null) { // Tuinity end
+ if (ichunkaccess instanceof Chunk) {
+ ((Chunk) ichunkaccess).setLoaded(false);
+ }
+@@ -1044,6 +1074,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
this.lightEngine.queueUpdate();
this.worldLoadListener.a(ichunkaccess.getPos(), (ChunkStatus) null);
-+ this.dataRegionManager.removeChunk(playerchunk.location.x, playerchunk.location.z); // Tuinity
}
++ if (removed) this.dataRegionManager.removeChunk(playerchunk.location.x, playerchunk.location.z); // Tuinity
}
-@@ -1059,6 +1088,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
+ };
+@@ -1059,6 +1090,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
}
protected boolean b() {
@@ -4431,7 +4446,7 @@ index fcd3388d8..1887b93e5 100644
if (!this.updatingChunksModified) {
return false;
} else {
-@@ -1246,7 +1276,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
+@@ -1246,7 +1278,10 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
}
// Paper end
this.mailboxWorldGen.a(ChunkTaskQueueSorter.a(playerchunk, runnable));
@@ -4443,7 +4458,7 @@ index fcd3388d8..1887b93e5 100644
}
protected void c(ChunkCoordIntPair chunkcoordintpair) {
-@@ -1498,6 +1531,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
+@@ -1498,6 +1533,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
}
public void setViewDistance(int i) { // Paper - public
@@ -4451,7 +4466,7 @@ index fcd3388d8..1887b93e5 100644
int j = MathHelper.clamp(i + 1, 3, 33); // Paper - diff on change, these make the lower view distance limit 2 and the upper 32
if (j != this.viewDistance) {
-@@ -1511,6 +1545,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
+@@ -1511,6 +1547,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
// Paper start - no-tick view distance
public final void setNoTickViewDistance(int viewDistance) {
@@ -4459,7 +4474,7 @@ index fcd3388d8..1887b93e5 100644
viewDistance = viewDistance == -1 ? -1 : MathHelper.clamp(viewDistance, 2, 32);
this.noTickViewDistance = viewDistance;
-@@ -2037,23 +2072,20 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
+@@ -2037,23 +2074,20 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
private final void processTrackQueue() {
this.world.timings.tracker1.startTiming();
try {
@@ -5804,15 +5819,15 @@ index 2484293b1..1496c43fc 100644
private static JsonElement a(UserCache.UserCacheEntry usercache_usercacheentry, DateFormat dateformat) {
diff --git a/src/main/java/net/minecraft/server/Vec3D.java b/src/main/java/net/minecraft/server/Vec3D.java
-index 3048ba008..84858ba39 100644
+index 7f05587d4..5af554870 100644
--- a/src/main/java/net/minecraft/server/Vec3D.java
+++ b/src/main/java/net/minecraft/server/Vec3D.java
@@ -4,7 +4,7 @@ import java.util.EnumSet;
public class Vec3D implements IPosition {
-- public static final Vec3D a = new Vec3D(0.0D, 0.0D, 0.0D);
-+ public static final Vec3D a = new Vec3D(0.0D, 0.0D, 0.0D); public static Vec3D getZeroVector() { return Vec3D.a; } // Tuinity - OBFHELPER
+- public static final Vec3D ORIGIN = new Vec3D(0.0D, 0.0D, 0.0D);
++ public static final Vec3D ORIGIN = new Vec3D(0.0D, 0.0D, 0.0D); public static Vec3D getZeroVector() { return Vec3D.ORIGIN; } // Tuinity - OBFHELPER
public final double x;
public final double y;
public final double z;
@@ -6137,7 +6152,7 @@ index e21c747b6..4bdadffee 100644
return voxelshape != b() && voxelshape1 != b() ? (voxelshape.isEmpty() && voxelshape1.isEmpty() ? false : !c(b(), b(voxelshape, voxelshape1, OperatorBoolean.OR), OperatorBoolean.ONLY_FIRST)) : true;
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index 724aec660..699dc4343 100644
+index eaa285393..a490662e0 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -75,7 +75,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -6308,7 +6323,7 @@ index f01186988..26a8c4ffe 100644
return this.j.d();
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
-index efe10b7f5..37c4abec6 100644
+index 25cdd7b0f..2eff22ed5 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -51,12 +51,13 @@ import org.bukkit.event.server.MapInitializeEvent;
@@ -6880,8 +6895,8 @@ index efe10b7f5..37c4abec6 100644
if (!(entity instanceof EntityHuman) && !this.getChunkProvider().a(entity)) {
this.chunkCheck(entity);
} else {
-@@ -851,6 +1299,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
- } // Paper - timings
+@@ -858,6 +1306,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+ //} finally { timer.stopTiming(); } // Paper - timings - move up
}
+ // Tuinity start - log detailed entity tick information
@@ -6892,7 +6907,7 @@ index efe10b7f5..37c4abec6 100644
}
public void a(Entity entity, Entity entity1) {
-@@ -894,6 +1347,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -915,6 +1368,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
int i = MathHelper.floor(entity.locX() / 16.0D);
int j = Math.min(15, Math.max(0, MathHelper.floor(entity.locY() / 16.0D))); // Paper - stay consistent with chunk add/remove behavior
int k = MathHelper.floor(entity.locZ() / 16.0D);
@@ -6905,7 +6920,7 @@ index efe10b7f5..37c4abec6 100644
if (!entity.inChunk || entity.chunkX != i || entity.chunkY != j || entity.chunkZ != k) {
// Paper start - remove entity if its in a chunk more correctly.
-@@ -903,6 +1362,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -924,6 +1383,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
// Paper end
@@ -6918,7 +6933,7 @@ index efe10b7f5..37c4abec6 100644
if (entity.inChunk && this.isChunkLoaded(entity.chunkX, entity.chunkZ)) {
this.getChunkAt(entity.chunkX, entity.chunkZ).a(entity, entity.chunkY);
}
-@@ -916,6 +1381,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -937,6 +1402,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
} else {
this.getChunkAt(i, k).a(entity);
}
@@ -6930,7 +6945,7 @@ index efe10b7f5..37c4abec6 100644
}
this.getMethodProfiler().exit();
-@@ -1267,7 +1737,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -1288,7 +1758,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
Entity entity = (Entity) iterator.next();
if (!(entity instanceof EntityPlayer)) {
@@ -6939,7 +6954,7 @@ index efe10b7f5..37c4abec6 100644
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!")));
}
-@@ -1295,6 +1765,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -1316,6 +1786,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
public void unregisterEntity(Entity entity) {
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot
@@ -6947,7 +6962,7 @@ index efe10b7f5..37c4abec6 100644
// Paper start - fix entity registration issues
if (entity instanceof EntityComplexPart) {
// Usually this is a no-op for complex parts, and ID's should be removed, but go ahead and remove it anyways
-@@ -1361,17 +1832,108 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -1382,17 +1853,108 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.getScoreboard().a(entity);
// CraftBukkit start - SPIGOT-5278
if (entity instanceof EntityDrowned) {
@@ -7059,7 +7074,7 @@ index efe10b7f5..37c4abec6 100644
private void registerEntity(Entity entity) {
org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot
// Paper start - don't double enqueue entity registration
-@@ -1382,7 +1944,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -1403,7 +1965,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
return;
}
// Paper end
@@ -7068,7 +7083,7 @@ index efe10b7f5..37c4abec6 100644
if (!entity.isQueuedForRegister) { // Paper
this.entitiesToAdd.add(entity);
entity.isQueuedForRegister = true; // Paper
-@@ -1390,6 +1952,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -1411,6 +1973,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
} else {
entity.isQueuedForRegister = false; // Paper
this.entitiesById.put(entity.getId(), entity);
@@ -7076,7 +7091,7 @@ index efe10b7f5..37c4abec6 100644
if (entity instanceof EntityEnderDragon) {
EntityComplexPart[] aentitycomplexpart = ((EntityEnderDragon) entity).eJ();
int i = aentitycomplexpart.length;
-@@ -1398,6 +1961,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -1419,6 +1982,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
EntityComplexPart entitycomplexpart = aentitycomplexpart[j];
this.entitiesById.put(entitycomplexpart.getId(), entitycomplexpart);
@@ -7084,7 +7099,7 @@ index efe10b7f5..37c4abec6 100644
}
}
-@@ -1422,12 +1986,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -1443,12 +2007,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
// this.getChunkProvider().addEntity(entity); // Paper - moved down below valid=true
// CraftBukkit start - SPIGOT-5278
if (entity instanceof EntityDrowned) {
@@ -7104,7 +7119,7 @@ index efe10b7f5..37c4abec6 100644
}
entity.valid = true; // CraftBukkit
this.getChunkProvider().addEntity(entity); // Paper - from above to be below valid=true
-@@ -1443,7 +2011,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -1464,7 +2032,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
public void removeEntity(Entity entity) {
@@ -7113,7 +7128,7 @@ index efe10b7f5..37c4abec6 100644
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!")));
} else {
this.removeEntityFromChunk(entity);
-@@ -1544,8 +2112,26 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -1565,8 +2133,26 @@ public class WorldServer extends World implements GeneratorAccessSeed {
VoxelShape voxelshape1 = iblockdata1.getCollisionShape(this, blockposition);
if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) {
@@ -7141,7 +7156,7 @@ index efe10b7f5..37c4abec6 100644
while (iterator.hasNext()) {
NavigationAbstract navigationabstract = (NavigationAbstract) iterator.next();
-@@ -1553,7 +2139,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -1574,7 +2160,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
if (!navigationabstract.i()) {
navigationabstract.b(blockposition);
}
@@ -7191,7 +7206,7 @@ index ff8ba5457..ecedc167d 100644
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
-index 5f5b39b3b..2b0e1e698 100644
+index fd649a0d2..77adc7528 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -230,7 +230,7 @@ import javax.annotation.Nullable; // Paper
@@ -7299,7 +7314,7 @@ index 299f57ca2..4de6252f0 100644
}, MinecraftServer.getServer());
}
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
-index bac292e6d..b4e65963e 100644
+index 9118f0542..a9c96d45c 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -138,6 +138,13 @@ public class Main {
@@ -7326,7 +7341,7 @@ index bac292e6d..b4e65963e 100644
//Thread.sleep(TimeUnit.SECONDS.toMillis(20));
// Paper End
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
-index 3584d20c7..f336f4ecf 100644
+index 3524b6775..b668b7c03 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
@@ -214,7 +214,7 @@ public class CraftBlock implements Block {
diff --git a/patches/server/0002-Rebrand.patch b/patches/server/0002-Rebrand.patch
index 37ac493cc..113abd03b 100644
--- a/patches/server/0002-Rebrand.patch
+++ b/patches/server/0002-Rebrand.patch
@@ -5,17 +5,17 @@ Subject: [PATCH] Rebrand
diff --git a/pom.xml b/pom.xml
-index 4f45b8158..02ee19722 100644
+index f009b05e4..c6bd3d4fd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,11 +1,11 @@
-
4.0.0
- tuinity
+ purpur
jar
- 1.16.2-R0.1-SNAPSHOT
+ 1.16.3-R0.1-SNAPSHOT
- Tuinity-Server
- https://github.com/Spottedleaf/Tuinity
+ Purpur-Server
@@ -98,7 +98,7 @@ index 74ed02fa9..c1280478e 100644
.completer(new ConsoleCommandCompleter(this.server))
);
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 106661fae..045c21d00 100644
+index 64f7e448c..bab892a93 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1510,7 +1510,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant {
@@ -25,7 +25,7 @@ index e23247e0a..2faa83fad 100644
public static MinecraftKey getName(EntityTypes> entitytypes) {
return IRegistry.ENTITY_TYPE.getKey(entitytypes);
}
-@@ -276,6 +286,16 @@ public class EntityTypes {
+@@ -286,6 +296,16 @@ public class EntityTypes {
return this.bg;
}
@@ -42,7 +42,7 @@ index e23247e0a..2faa83fad 100644
public String getDescriptionId() { return f(); } // Paper - OBFHELPER
public String f() {
if (this.bo == null) {
-@@ -285,6 +305,7 @@ public class EntityTypes {
+@@ -295,6 +315,7 @@ public class EntityTypes {
return this.bo;
}
diff --git a/patches/server/0016-EMC-MonsterEggSpawnEvent.patch b/patches/server/0016-EMC-MonsterEggSpawnEvent.patch
index 0281c0266..650e17059 100644
--- a/patches/server/0016-EMC-MonsterEggSpawnEvent.patch
+++ b/patches/server/0016-EMC-MonsterEggSpawnEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] EMC - MonsterEggSpawnEvent
diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java
-index 2faa83fad..c03b0b58b 100644
+index bf5436510..b089c8a3f 100644
--- a/src/main/java/net/minecraft/server/EntityTypes.java
+++ b/src/main/java/net/minecraft/server/EntityTypes.java
-@@ -177,19 +177,45 @@ public class EntityTypes {
+@@ -187,19 +187,45 @@ public class EntityTypes {
@Nullable
public Entity spawnCreature(WorldServer worldserver, @Nullable ItemStack itemstack, @Nullable EntityHuman entityhuman, BlockPosition blockposition, EnumMobSpawn enummobspawn, boolean flag, boolean flag1) {
diff --git a/patches/server/0020-EntityMoveEvent.patch b/patches/server/0020-EntityMoveEvent.patch
index ef32077fa..d72e93a0c 100644
--- a/patches/server/0020-EntityMoveEvent.patch
+++ b/patches/server/0020-EntityMoveEvent.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] EntityMoveEvent
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index c9cff4c07..c7c452e7f 100644
+index baf35465b..84e4c754a 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
-@@ -2801,6 +2801,20 @@ public abstract class EntityLiving extends Entity {
+@@ -2802,6 +2802,20 @@ public abstract class EntityLiving extends Entity {
this.collideNearby();
this.world.getMethodProfiler().exit();
diff --git a/patches/server/0031-Giants-AI-settings.patch b/patches/server/0031-Giants-AI-settings.patch
index ee7a7b21c..6906ac767 100644
--- a/patches/server/0031-Giants-AI-settings.patch
+++ b/patches/server/0031-Giants-AI-settings.patch
@@ -17,10 +17,10 @@ index c57e23e16..92aa104dc 100644
public AttributeModifiable a(AttributeBase attributebase) {
return (AttributeModifiable) this.b.computeIfAbsent(attributebase, (attributebase1) -> {
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 5dd2a52d3..6bf087bd2 100644
+index 3c63327ca..ebe5dc115 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -137,7 +137,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -135,7 +135,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public double D;
public double E;
public double F;
@@ -112,7 +112,7 @@ index 9f4f56c47..8dce2aad7 100644
}
}
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
-index 9cf496b5e..be23120a2 100644
+index 04eff0182..7c58c8238 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -940,6 +940,7 @@ public abstract class EntityInsentient extends EntityLiving {
@@ -146,10 +146,10 @@ index 9cf496b5e..be23120a2 100644
return false;
}
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index c7c452e7f..cf56621ba 100644
+index 84e4c754a..39f5ef025 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
-@@ -2159,7 +2159,7 @@ public abstract class EntityLiving extends Entity {
+@@ -2160,7 +2160,7 @@ public abstract class EntityLiving extends Entity {
this.enderTeleportTo(vec3d.x, vec3d.y, vec3d.z);
}
diff --git a/patches/server/0043-Cat-spawning-options.patch b/patches/server/0043-Cat-spawning-options.patch
index 08cb569f4..6bfba8f5f 100644
--- a/patches/server/0043-Cat-spawning-options.patch
+++ b/patches/server/0043-Cat-spawning-options.patch
@@ -95,10 +95,10 @@ index a5718af9b..b6b4c8c49 100644
return this.E;
}
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
-index 646f9180f..53ab03a29 100644
+index 006ebc113..18af94ceb 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
-@@ -2536,6 +2536,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
+@@ -2557,6 +2557,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
}
diff --git a/patches/server/0045-Cows-eat-mushrooms.patch b/patches/server/0045-Cows-eat-mushrooms.patch
index a131c0ae4..359b7b4ba 100644
--- a/patches/server/0045-Cows-eat-mushrooms.patch
+++ b/patches/server/0045-Cows-eat-mushrooms.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Cows eat mushrooms
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 6bf087bd2..2be922a71 100644
+index ebe5dc115..9ab0572f2 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -2729,6 +2729,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -2727,6 +2727,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.invulnerable = flag;
}
@@ -110,7 +110,7 @@ index 42e6761c8..cfb009c81 100644
public EntityCow createChild(WorldServer worldserver, EntityAgeable entityageable) {
return (EntityCow) EntityTypes.COW.a((World) worldserver);
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index cf56621ba..76575ea5f 100644
+index 39f5ef025..ff412471c 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -81,7 +81,7 @@ public abstract class EntityLiving extends Entity {
diff --git a/patches/server/0061-Fix-the-dead-lagging-the-server.patch b/patches/server/0061-Fix-the-dead-lagging-the-server.patch
index 41fffd801..f91b0ac12 100644
--- a/patches/server/0061-Fix-the-dead-lagging-the-server.patch
+++ b/patches/server/0061-Fix-the-dead-lagging-the-server.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix the dead lagging the server
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 2be922a71..5bb1d8e51 100644
+index 9ab0572f2..d978f2b08 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -1501,6 +1501,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -1498,6 +1498,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;
@@ -17,10 +17,10 @@ index 2be922a71..5bb1d8e51 100644
public void f(double d0, double d1, double d2) {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index d9c19f8f5..91fc7ba76 100644
+index 75005b00d..3193e7172 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
-@@ -2477,7 +2477,7 @@ public abstract class EntityLiving extends Entity {
+@@ -2478,7 +2478,7 @@ public abstract class EntityLiving extends Entity {
}
}
diff --git a/patches/server/0076-Add-option-to-disable-saving-projectiles-to-disk.patch b/patches/server/0076-Add-option-to-disable-saving-projectiles-to-disk.patch
index 8a483746c..532bc4388 100644
--- a/patches/server/0076-Add-option-to-disable-saving-projectiles-to-disk.patch
+++ b/patches/server/0076-Add-option-to-disable-saving-projectiles-to-disk.patch
@@ -17,10 +17,10 @@ index c2adc7f52..24a6102b3 100644
// Paper start
if (asyncsavedata == null && !entity.dead && (int) Math.floor(entity.locX()) >> 4 != chunk.getPos().x || (int) Math.floor(entity.locZ()) >> 4 != chunk.getPos().z) {
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 5bb1d8e51..49cf334fc 100644
+index d978f2b08..204d9e004 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -309,6 +309,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -306,6 +306,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.headHeight = this.getHeadHeight(EntityPose.STANDING, this.size);
}
@@ -34,7 +34,7 @@ index 5bb1d8e51..49cf334fc 100644
return false;
}
diff --git a/src/main/java/net/minecraft/server/EntityEnderSignal.java b/src/main/java/net/minecraft/server/EntityEnderSignal.java
-index e3865a9b4..de55acd1c 100644
+index 08da58677..3ff61434c 100644
--- a/src/main/java/net/minecraft/server/EntityEnderSignal.java
+++ b/src/main/java/net/minecraft/server/EntityEnderSignal.java
@@ -19,6 +19,13 @@ public class EntityEnderSignal extends Entity {
@@ -48,7 +48,7 @@ index e3865a9b4..de55acd1c 100644
+ }
+ // Purpur end
+
- public void b(ItemStack itemstack) {
+ public void setItem(ItemStack itemstack) {
if (true || itemstack.getItem() != Items.ENDER_EYE || itemstack.hasTag()) { // CraftBukkit - always allow item changing
this.getDataWatcher().set(EntityEnderSignal.b, SystemUtils.a(itemstack.cloneItemStack(), (itemstack1) -> { // CraftBukkit - decompile error
diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java
diff --git a/patches/server/0077-Configurable-void-damage-height.patch b/patches/server/0077-Configurable-void-damage-height.patch
index c53582f54..17d0e04f3 100644
--- a/patches/server/0077-Configurable-void-damage-height.patch
+++ b/patches/server/0077-Configurable-void-damage-height.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable void damage height
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 49cf334fc..dfc54b6c1 100644
+index 204d9e004..55e765a3e 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -612,7 +612,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -609,7 +609,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
// Paper start
protected void performVoidDamage() {
diff --git a/patches/server/0083-Climbing-should-not-bypass-cramming-gamerule.patch b/patches/server/0083-Climbing-should-not-bypass-cramming-gamerule.patch
index 155905be4..b8df87ade 100644
--- a/patches/server/0083-Climbing-should-not-bypass-cramming-gamerule.patch
+++ b/patches/server/0083-Climbing-should-not-bypass-cramming-gamerule.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Climbing should not bypass cramming gamerule
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index dfc54b6c1..98b62223b 100644
+index 55e765a3e..6628a15bf 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -1693,6 +1693,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -1690,6 +1690,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
public boolean isCollidable() {
@@ -22,7 +22,7 @@ index dfc54b6c1..98b62223b 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java
-index afa23395c..4f950c6aa 100644
+index ab5d61848..484a5261c 100644
--- a/src/main/java/net/minecraft/server/EntityArmorStand.java
+++ b/src/main/java/net/minecraft/server/EntityArmorStand.java
@@ -320,7 +320,7 @@ public class EntityArmorStand extends EntityLiving {
@@ -35,7 +35,7 @@ index afa23395c..4f950c6aa 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java
-index a726dd676..b84aa1db8 100644
+index af67cf868..f230d84fa 100644
--- a/src/main/java/net/minecraft/server/EntityBat.java
+++ b/src/main/java/net/minecraft/server/EntityBat.java
@@ -50,7 +50,7 @@ public class EntityBat extends EntityAmbient {
@@ -48,7 +48,7 @@ index a726dd676..b84aa1db8 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java
-index 0f25d7cd6..5887b7a26 100644
+index 8d5594651..d8d4b6abf 100644
--- a/src/main/java/net/minecraft/server/EntityBoat.java
+++ b/src/main/java/net/minecraft/server/EntityBoat.java
@@ -106,7 +106,7 @@ public class EntityBoat extends Entity {
@@ -61,7 +61,7 @@ index 0f25d7cd6..5887b7a26 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
-index da79c7e63..8cfbf8abf 100644
+index 9f74d6e88..c7757f9d0 100644
--- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java
+++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
@@ -165,7 +165,7 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven
@@ -74,10 +74,10 @@ index da79c7e63..8cfbf8abf 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index 91fc7ba76..ba4e4ace5 100644
+index 3193e7172..8346d8f3d 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
-@@ -2865,7 +2865,7 @@ public abstract class EntityLiving extends Entity {
+@@ -2866,7 +2866,7 @@ public abstract class EntityLiving extends Entity {
// Paper - end don't run getEntities if we're not going to use its result
// Tuinity start - reduce memory allocation from collideNearby
List list = com.tuinity.tuinity.util.CachedLists.getTempGetEntitiesList();
@@ -86,7 +86,7 @@ index 91fc7ba76..ba4e4ace5 100644
try {
// Tuinity end - reduce memory allocation from collideNearby
-@@ -3010,7 +3010,14 @@ public abstract class EntityLiving extends Entity {
+@@ -3011,7 +3011,14 @@ public abstract class EntityLiving extends Entity {
@Override
public boolean isCollidable() {
@@ -103,7 +103,7 @@ index 91fc7ba76..ba4e4ace5 100644
// CraftBukkit start - collidable API
diff --git a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
-index d5e129678..5e64ca8a0 100644
+index 44eabc4ee..d6cb8becc 100644
--- a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
+++ b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
@@ -107,7 +107,7 @@ public abstract class EntityMinecartAbstract extends Entity {
@@ -131,7 +131,7 @@ index 34e08dda2..6bb73f869 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
-index a99429080..2b22029ea 100644
+index 1f41d101e..e30dbf51d 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -1772,8 +1772,8 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
diff --git a/patches/server/0085-Implement-elytra-settings.patch b/patches/server/0085-Implement-elytra-settings.patch
index b25b987e3..394489a77 100644
--- a/patches/server/0085-Implement-elytra-settings.patch
+++ b/patches/server/0085-Implement-elytra-settings.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index ba4e4ace5..11abe8a93 100644
+index 8346d8f3d..45a297938 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
-@@ -2836,7 +2836,16 @@ public abstract class EntityLiving extends Entity {
+@@ -2837,7 +2837,16 @@ public abstract class EntityLiving extends Entity {
if (itemstack.getItem() == Items.ELYTRA && ItemElytra.d(itemstack)) {
flag = true;
if (!this.world.isClientSide && (this.be + 1) % 20 == 0) {
diff --git a/patches/server/0086-Item-entity-immunities.patch b/patches/server/0086-Item-entity-immunities.patch
index 2d5700d01..b4157e05c 100644
--- a/patches/server/0086-Item-entity-immunities.patch
+++ b/patches/server/0086-Item-entity-immunities.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Item entity immunities
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 98b62223b..5e010d115 100644
+index 6628a15bf..e8199db7b 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -1450,6 +1450,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -1447,6 +1447,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
@@ -68,7 +68,7 @@ index bc4f84c88..b6cb52c10 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
-index c64bbde28..3c1cf5903 100644
+index aea72b0db..29731da08 100644
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -106,6 +106,15 @@ public class EntityTrackerEntry {
diff --git a/patches/server/0089-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0089-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch
index e8c559068..2b08dae5c 100644
--- a/patches/server/0089-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch
+++ b/patches/server/0089-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch
@@ -17,10 +17,10 @@ index 6fe5678cf..bd0267ee4 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 5e010d115..a15bcfc0b 100644
+index e8199db7b..617ab96f1 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -1569,6 +1569,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -1566,6 +1566,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return d3 * d3 + d4 * d4 + d5 * d5;
}
@@ -28,7 +28,7 @@ index 5e010d115..a15bcfc0b 100644
public double h(Entity entity) {
return this.e(entity.getPositionVector());
}
-@@ -2100,8 +2101,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -2097,8 +2098,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.a(new ItemStack(imaterial), (float) i);
}
@@ -108,7 +108,7 @@ index 362ca695d..1942fae27 100644
@Override
protected void saveData(NBTTagCompound nbttagcompound) {
diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
-index 550f80bfd..b3616185d 100644
+index 3a70900c7..92704a078 100644
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
@@ -9,9 +9,10 @@ import javax.annotation.Nullable;
diff --git a/patches/server/0118-Stop-squids-floating-on-top-of-water.patch b/patches/server/0118-Stop-squids-floating-on-top-of-water.patch
index 8052447d2..af9bf5884 100644
--- a/patches/server/0118-Stop-squids-floating-on-top-of-water.patch
+++ b/patches/server/0118-Stop-squids-floating-on-top-of-water.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index a15bcfc0b..a5e639361 100644
+index 617ab96f1..1fa6791cc 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -3399,8 +3399,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -3397,8 +3397,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.lastYaw = this.yaw;
}
diff --git a/patches/server/0119-Ridables.patch b/patches/server/0119-Ridables.patch
index 55cfe0d70..ae71a9680 100644
--- a/patches/server/0119-Ridables.patch
+++ b/patches/server/0119-Ridables.patch
@@ -161,10 +161,10 @@ index bd0267ee4..8b36ac2b0 100644
this.B = true;
return this;
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index a5e639361..75e8b3367 100644
+index 1fa6791cc..2cff6eb90 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -81,7 +81,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -79,7 +79,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public com.destroystokyo.paper.loottable.PaperLootableInventoryData lootableData; // Paper
private CraftEntity bukkitEntity;
@@ -173,7 +173,7 @@ index a5e639361..75e8b3367 100644
boolean collisionLoadChunks = false; // Paper
Throwable addedToWorldStack; // Paper - entity debug
public CraftEntity getBukkitEntity() {
-@@ -106,7 +106,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -104,7 +104,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
private int id;
public boolean i; public final boolean blocksEntitySpawning() { return this.i; } // Paper - OBFHELPER
public final List passengers;
@@ -182,7 +182,7 @@ index a5e639361..75e8b3367 100644
@Nullable
private Entity vehicle;
public boolean attachedToPlayer;
-@@ -122,7 +122,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -120,7 +120,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public float lastYaw;
public float lastPitch;
private AxisAlignedBB boundingBox;
@@ -191,7 +191,7 @@ index a5e639361..75e8b3367 100644
public boolean positionChanged;
public boolean v;
public boolean velocityChanged;
-@@ -178,7 +178,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -176,7 +176,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
private boolean az;
private final double[] aA;
private long aB;
@@ -200,7 +200,7 @@ index a5e639361..75e8b3367 100644
private float headHeight;
// CraftBukkit start
public boolean persist = true;
-@@ -1460,6 +1460,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -1457,6 +1457,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return !this.justCreated && this.M.getDouble(TagsFluid.LAVA) > 0.0D;
}
@@ -208,7 +208,7 @@ index a5e639361..75e8b3367 100644
public void a(float f, Vec3D vec3d) {
Vec3D vec3d1 = a(vec3d, f, this.yaw);
-@@ -2200,6 +2201,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -2198,6 +2199,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.a(entity, false);
}
@@ -216,7 +216,7 @@ index a5e639361..75e8b3367 100644
public boolean a(Entity entity, boolean flag) {
for (Entity entity1 = entity; entity1.vehicle != null; entity1 = entity1.vehicle) {
if (entity1.vehicle == this) {
-@@ -2295,6 +2297,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -2293,6 +2295,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.passengers.add(entity);
}
@@ -230,7 +230,7 @@ index a5e639361..75e8b3367 100644
}
return true; // CraftBukkit
}
-@@ -2335,6 +2344,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -2333,6 +2342,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return false;
}
// Spigot end
@@ -243,7 +243,7 @@ index a5e639361..75e8b3367 100644
this.passengers.remove(entity);
entity.j = 60;
}
-@@ -2500,6 +2515,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -2498,6 +2513,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.setFlag(4, flag);
}
@@ -251,7 +251,7 @@ index a5e639361..75e8b3367 100644
public boolean bD() {
return this.glowing || this.world.isClientSide && this.getFlag(6);
}
-@@ -2718,6 +2734,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -2716,6 +2732,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public void setHeadRotation(float f) {}
@@ -259,7 +259,7 @@ index a5e639361..75e8b3367 100644
public void n(float f) {}
public boolean bK() {
-@@ -3152,6 +3169,18 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -3150,6 +3167,18 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return false;
}
@@ -278,7 +278,7 @@ index a5e639361..75e8b3367 100644
@Override
public void sendMessage(IChatBaseComponent ichatbasecomponent, UUID uuid) {}
-@@ -3594,4 +3623,47 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -3592,4 +3621,47 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
void accept(Entity entity, double d0, double d1, double d2);
}
@@ -327,7 +327,7 @@ index a5e639361..75e8b3367 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java
-index b84aa1db8..34b7424c4 100644
+index f230d84fa..bbf61d011 100644
--- a/src/main/java/net/minecraft/server/EntityBat.java
+++ b/src/main/java/net/minecraft/server/EntityBat.java
@@ -14,9 +14,48 @@ public class EntityBat extends EntityAmbient {
@@ -1436,7 +1436,7 @@ index c4b1f318f..30f602bbc 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityEvoker.java b/src/main/java/net/minecraft/server/EntityEvoker.java
-index 9f3922b18..6864b9956 100644
+index ae7b269de..9abbbd59f 100644
--- a/src/main/java/net/minecraft/server/EntityEvoker.java
+++ b/src/main/java/net/minecraft/server/EntityEvoker.java
@@ -12,10 +12,23 @@ public class EntityEvoker extends EntityIllagerWizard {
@@ -1802,7 +1802,7 @@ index 8dce2aad7..24eb6dca5 100644
this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true));
this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillager.class, false));
diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java
-index 2d0f64d3b..be060cfbd 100644
+index d42750fdd..881b2dd45 100644
--- a/src/main/java/net/minecraft/server/EntityGuardian.java
+++ b/src/main/java/net/minecraft/server/EntityGuardian.java
@@ -24,15 +24,36 @@ public class EntityGuardian extends EntityMonster {
@@ -1996,7 +1996,7 @@ index 069111952..bd63a25e2 100644
protected void eK() {
this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue((double) this.fp());
diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
-index 8cfbf8abf..c14889b09 100644
+index c7757f9d0..a490d0715 100644
--- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java
+++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
@@ -39,12 +39,27 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven
@@ -2162,7 +2162,7 @@ index 48f9feaea..6c2b57a29 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
-index 66bfebe1c..f23721c26 100644
+index f5c9e4e0a..5e6c7e317 100644
--- a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
+++ b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
@@ -20,6 +20,16 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan
@@ -2199,7 +2199,7 @@ index 66bfebe1c..f23721c26 100644
this.targetSelector.a(2, (new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)).a(300));
this.targetSelector.a(3, (new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)).a(300));
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
-index 0ecc5bd28..6b0f7f399 100644
+index 7465e867b..0dc811ff7 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -29,7 +29,7 @@ public abstract class EntityInsentient extends EntityLiving {
@@ -2362,7 +2362,7 @@ index bdff23688..954000a7b 100644
float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F;
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
-index ad17c3d27..4fb2bd443 100644
+index a2d50a1fe..b8f59f29a 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -466,7 +466,7 @@ public abstract class EntityLiving extends Entity {
@@ -2374,7 +2374,7 @@ index ad17c3d27..4fb2bd443 100644
}
protected void cT() {
-@@ -2185,7 +2185,7 @@ public abstract class EntityLiving extends Entity {
+@@ -2186,7 +2186,7 @@ public abstract class EntityLiving extends Entity {
return 0.42F * this.getBlockJumpFactor();
}
@@ -2383,7 +2383,7 @@ index ad17c3d27..4fb2bd443 100644
float f = this.dI();
if (this.hasEffect(MobEffects.JUMP)) {
-@@ -2434,10 +2434,12 @@ public abstract class EntityLiving extends Entity {
+@@ -2435,10 +2435,12 @@ public abstract class EntityLiving extends Entity {
return this.onGround ? this.dM() * (0.21600002F / (f * f * f)) : this.aE;
}
@@ -2834,7 +2834,7 @@ index 6bb73f869..822fe2691 100644
this.goalSelector.a(2, new PathfinderGoalSit(this));
this.goalSelector.a(2, new PathfinderGoalFollowOwner(this, 1.0D, 5.0F, 1.0F, true));
diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
-index 706760bae..aea27a098 100644
+index 03c9a8d0c..ee1ff6dc1 100644
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
@@ -25,6 +25,58 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -3255,7 +3255,7 @@ index cd6d2e07e..c74a10d9b 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPufferFish.java b/src/main/java/net/minecraft/server/EntityPufferFish.java
-index 10c8e2288..b22d5b377 100644
+index 639af6bd3..81e918572 100644
--- a/src/main/java/net/minecraft/server/EntityPufferFish.java
+++ b/src/main/java/net/minecraft/server/EntityPufferFish.java
@@ -17,6 +17,18 @@ public class EntityPufferFish extends EntityFish {
@@ -3554,7 +3554,7 @@ index 2908e9cc4..04e585f44 100644
this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D));
this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.1D, RecipeItemStack.a(Items.WHEAT), false));
diff --git a/src/main/java/net/minecraft/server/EntityShulker.java b/src/main/java/net/minecraft/server/EntityShulker.java
-index a990af15d..11bf731d7 100644
+index f0394fe52..c5853f9f5 100644
--- a/src/main/java/net/minecraft/server/EntityShulker.java
+++ b/src/main/java/net/minecraft/server/EntityShulker.java
@@ -29,12 +29,26 @@ public class EntityShulker extends EntityGolem implements IMonster {
@@ -4103,7 +4103,7 @@ index 495c28ccb..2c9df356e 100644
protected void initDatawatcher() {
super.initDatawatcher();
diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java
-index 430f9d23a..2f7570dd6 100644
+index e025eef47..c29803367 100644
--- a/src/main/java/net/minecraft/server/EntityTurtle.java
+++ b/src/main/java/net/minecraft/server/EntityTurtle.java
@@ -27,6 +27,18 @@ public class EntityTurtle extends EntityAnimal {
@@ -4889,7 +4889,7 @@ index b2c64b314..515ba50ae 100644
Vec3D vec3d = entity.getMot();
World world = entity.world;
diff --git a/src/main/java/net/minecraft/server/Vec3D.java b/src/main/java/net/minecraft/server/Vec3D.java
-index 84858ba39..9b8114d76 100644
+index 5af554870..c59305ef7 100644
--- a/src/main/java/net/minecraft/server/Vec3D.java
+++ b/src/main/java/net/minecraft/server/Vec3D.java
@@ -39,6 +39,7 @@ public class Vec3D implements IPosition {
@@ -4917,7 +4917,7 @@ index 84858ba39..9b8114d76 100644
return new Vec3D(this.x * d0, this.y * d1, this.z * d2);
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
-index 640bcc566..77c72ec9f 100644
+index d6cdb329c..d13684c3d 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1516,5 +1516,10 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
diff --git a/patches/server/0122-Entities-can-use-portals-configuration.patch b/patches/server/0122-Entities-can-use-portals-configuration.patch
index d62013c68..299a2cf4e 100644
--- a/patches/server/0122-Entities-can-use-portals-configuration.patch
+++ b/patches/server/0122-Entities-can-use-portals-configuration.patch
@@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
-index 75e8b3367..a73ecbc07 100644
+index 2cff6eb90..6f1537e82 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
-@@ -2376,7 +2376,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -2374,7 +2374,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public void d(BlockPosition blockposition) {
if (this.ah()) {
this.resetPortalCooldown();
@@ -17,7 +17,7 @@ index 75e8b3367..a73ecbc07 100644
if (!this.world.isClientSide && !blockposition.equals(this.ac)) {
this.ac = blockposition.immutableCopy();
}
-@@ -2945,7 +2945,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
+@@ -2943,7 +2943,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
public boolean canPortal() {