Update to 1.16.4 ^_^

This commit is contained in:
William Blake Galbreath
2020-11-03 01:27:33 -06:00
parent 0fa478d031
commit 03654a6880
58 changed files with 472 additions and 477 deletions

View File

@@ -288,7 +288,7 @@ and an action can be defined: DROP or KICK
If interval or rate are less-than 0, the limit is ignored
diff --git a/pom.xml b/pom.xml
index 9211fac206..e5b74fbf25 100644
index 80f1652913..1f265fb038 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,11 +1,11 @@
@@ -298,7 +298,7 @@ index 9211fac206..e5b74fbf25 100644
- <artifactId>paper</artifactId>
+ <artifactId>tuinity</artifactId>
<packaging>jar</packaging>
<version>1.16.3-R0.1-SNAPSHOT</version>
<version>1.16.4-R0.1-SNAPSHOT</version>
- <name>Paper</name>
- <url>https://papermc.io</url>
+ <name>Tuinity-Server</name>
@@ -2250,7 +2250,7 @@ index 6b655b744d..e811295b4d 100644
}
diff --git a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java
index 5131d2172d..2c2fea8e3f 100644
index 1f334d6328..0172e2396b 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 {
@@ -2261,7 +2261,7 @@ index 5131d2172d..2c2fea8e3f 100644
- public int f(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
+ @Deprecated public final int getOpacity(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { return this.f(iblockdata, iblockaccess, blockposition); } // Tuinity - OBFHELPER
+ @Deprecated public int f(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) { // Tuinity - OBFHELPER
return iblockdata.i(iblockaccess, blockposition) ? iblockaccess.J() : (iblockdata.a(iblockaccess, blockposition) ? 0 : 1);
return iblockdata.i(iblockaccess, blockposition) ? iblockaccess.K() : (iblockdata.a(iblockaccess, blockposition) ? 0 : 1);
}
@@ -295,14 +295,14 @@ public abstract class BlockBase {
@@ -2743,7 +2743,7 @@ index 3c7b225edb..43cbb77caf 100644
for (java.util.Iterator<Entry<ArraySetSorted<Ticket<?>>>> iterator = this.tickets.long2ObjectEntrySet().fastIterator(); iterator.hasNext();) {
diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java
index 45c142c227..b74ff6b9f3 100644
index 6acb5f05a0..6e65842172 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -22,6 +22,12 @@ import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; // Paper
@@ -3268,10 +3268,10 @@ index 95ef962868..73163b417a 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 f55dc28f3e..8542f2f4d2 100644
index 5504facd2e..fcba187bbd 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -166,6 +166,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -169,6 +169,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
com.destroystokyo.paper.PaperConfig.registerCommands();
com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // load version history now
// Paper end
@@ -3293,7 +3293,7 @@ index 550232cb38..229c3b0f0c 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 b845e488e3..86903aaa02 100644
index 0c952fea30..4fb01d835b 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -136,7 +136,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -3362,7 +3362,7 @@ index b845e488e3..86903aaa02 100644
public Entity(EntityTypes<?> entitytypes, World world) {
this.id = Entity.entityCount.incrementAndGet();
this.passengers = Lists.newArrayList();
@@ -590,7 +633,39 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -591,7 +634,39 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.onGround;
}
@@ -3402,7 +3402,7 @@ index b845e488e3..86903aaa02 100644
if (this.noclip) {
this.a(this.getBoundingBox().c(vec3d));
this.recalcPosition();
@@ -618,7 +693,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -619,7 +694,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
// Paper end
vec3d = this.a(vec3d, enummovetype);
@@ -3411,7 +3411,7 @@ index b845e488e3..86903aaa02 100644
if (vec3d1.g() > 1.0E-7D) {
this.a(this.getBoundingBox().c(vec3d1));
@@ -734,6 +809,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -735,6 +810,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.world.getMethodProfiler().exit();
}
@@ -3424,8 +3424,8 @@ index b845e488e3..86903aaa02 100644
+ // Tuinity end - detailed watchdog information
}
protected BlockPosition ao() {
@@ -814,6 +896,132 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
protected BlockPosition ap() {
@@ -815,6 +897,132 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return d0;
}
@@ -3558,7 +3558,7 @@ index b845e488e3..86903aaa02 100644
private Vec3D g(Vec3D vec3d) {
AxisAlignedBB axisalignedbb = this.getBoundingBox();
VoxelShapeCollision voxelshapecollision = VoxelShapeCollision.a(this);
@@ -849,6 +1057,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -850,6 +1058,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return vec3d1;
}
@@ -3566,23 +3566,23 @@ index b845e488e3..86903aaa02 100644
public static double c(Vec3D vec3d) {
return vec3d.x * vec3d.x + vec3d.z * vec3d.z;
}
@@ -1947,11 +2156,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -1948,11 +2157,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return EnumInteractionResult.PASS;
}
- public boolean j(Entity entity) {
+ public final boolean hardCollidesWith(Entity other) { return this.j(other); } // Tuinity - OBFHELPER
+ public boolean j(Entity entity) { // Tuinity - diff on change, hard colliding entities override this
return entity.aY() && !this.isSameVehicle(entity);
return entity.aZ() && !this.isSameVehicle(entity);
}
- public boolean aY() {
+ public final boolean collisionBoxIsHard() { return this.aY(); } // Tuinity - OBFHELPER
+ public boolean aY() { // Tuinity - diff on change, hard colliding entities override this
- public boolean aZ() {
+ public final boolean collisionBoxIsHard() { return this.aZ(); } // Tuinity - OBFHELPER
+ public boolean aZ() { // Tuinity - diff on change, hard colliding entities override this
return false;
}
@@ -3293,12 +3504,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -3294,12 +3505,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.locBlock;
}
@@ -3599,7 +3599,7 @@ index b845e488e3..86903aaa02 100644
}
public void setMot(double d0, double d1, double d2) {
@@ -3353,7 +3568,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -3354,7 +3569,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
}
// Paper end
if (this.loc.x != d0 || this.loc.y != d1 || this.loc.z != d2) {
@@ -3610,7 +3610,7 @@ index b845e488e3..86903aaa02 100644
int j = MathHelper.floor(d1);
int k = MathHelper.floor(d2);
diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java
index 3148863984..79de11ce2f 100644
index 957a351c3f..57166a543a 100644
--- a/src/main/java/net/minecraft/server/EntityCat.java
+++ b/src/main/java/net/minecraft/server/EntityCat.java
@@ -292,7 +292,7 @@ public class EntityCat extends EntityTameableAnimal {
@@ -3623,7 +3623,7 @@ index 3148863984..79de11ce2f 100644
this.setPersistent();
}
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 76185f042d..0e000c7186 100644
index fe0334b505..87cd6fb0c0 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -2847,7 +2847,11 @@ public abstract class EntityLiving extends Entity {
@@ -3775,7 +3775,7 @@ index 25e54a1fad..b66c802d5e 100644
return this.d(entity, axisalignedbb, predicate).allMatch(VoxelShape::isEmpty);
} finally { if (entity != null) entity.collisionLoadChunks = false; } // Paper
diff --git a/src/main/java/net/minecraft/server/IEntityAccess.java b/src/main/java/net/minecraft/server/IEntityAccess.java
index 1cb8ba7cd2..882b82d895 100644
index 07dbdd5609..150daa725a 100644
--- a/src/main/java/net/minecraft/server/IEntityAccess.java
+++ b/src/main/java/net/minecraft/server/IEntityAccess.java
@@ -52,16 +52,26 @@ public interface IEntityAccess {
@@ -3861,7 +3861,7 @@ index ff74be1451..653ba0f1d8 100644
0, 2, 60L, TimeUnit.SECONDS,
new LinkedBlockingQueue<Runnable>(),
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 26bbfeba13..c5a8d6d3fb 100644
index 9c4ea5265e..75d36eb3ee 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<TickTas
@@ -3976,7 +3976,7 @@ index 26bbfeba13..c5a8d6d3fb 100644
protected TickTask postToMainThread(Runnable runnable) {
@@ -1133,6 +1188,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
private boolean ba() {
private boolean bb() {
if (super.executeNext()) {
+ this.executeMidTickTasks(); // Tuinity - execute chunk tasks mid tick
return true;
@@ -4054,7 +4054,7 @@ index 26bbfeba13..c5a8d6d3fb 100644
public CrashReport b(CrashReport crashreport) {
diff --git a/src/main/java/net/minecraft/server/NetworkManager.java b/src/main/java/net/minecraft/server/NetworkManager.java
index c9b36e6040..ab6fb2d027 100644
index 7a84ea4116..450e63270d 100644
--- a/src/main/java/net/minecraft/server/NetworkManager.java
+++ b/src/main/java/net/minecraft/server/NetworkManager.java
@@ -71,6 +71,39 @@ public class NetworkManager extends SimpleChannelInboundHandler<Packet<?>> {
@@ -4764,10 +4764,10 @@ index 6c399bcea0..087bbad025 100644
}
// Paper end - optimised tracker
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 4b0ff3e1ac..da2039b536 100644
index 7abf55f532..10f3c97180 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -372,7 +372,9 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -415,7 +415,9 @@ public class PlayerConnection implements PacketListenerPlayIn {
speed *= 2f; // TODO: Get the speed of the vehicle instead of the player
// Paper start - Prevent moving into unloaded chunks
@@ -4778,7 +4778,7 @@ index 4b0ff3e1ac..da2039b536 100644
this.networkManager.sendPacket(new PacketPlayOutVehicleMove(entity));
return;
}
@@ -978,7 +980,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1052,7 +1054,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
if (this.teleportPos != null) {
@@ -4787,7 +4787,7 @@ index 4b0ff3e1ac..da2039b536 100644
this.A = this.e;
this.a(this.teleportPos.x, this.teleportPos.y, this.teleportPos.z, this.player.yaw, this.player.pitch);
}
@@ -1048,7 +1050,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1122,7 +1124,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
speed = player.abilities.walkSpeed * 10f;
}
// Paper start - Prevent moving into unloaded chunks
@@ -4796,7 +4796,7 @@ index 4b0ff3e1ac..da2039b536 100644
this.internalTeleport(this.player.locX(), this.player.locY(), this.player.locZ(), this.player.yaw, this.player.pitch, Collections.emptySet());
return;
}
@@ -1104,6 +1106,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1178,6 +1180,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
this.player.move(EnumMoveType.PLAYER, new Vec3D(d7, d8, d9));
@@ -4804,7 +4804,7 @@ index 4b0ff3e1ac..da2039b536 100644
this.player.setOnGround(packetplayinflying.b()); // CraftBukkit - SPIGOT-5810, SPIGOT-5835: reset by this.player.move
// Paper start - prevent position desync
if (this.teleportPos != null) {
@@ -1128,7 +1131,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -1202,7 +1205,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
}
this.player.setLocation(d4, d5, d6, f, f1);
@@ -4862,7 +4862,7 @@ index 7ea293f38d..e698dd2260 100644
});
throw CancelledPacketHandleException.INSTANCE;
diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java
index ac3bee9dfb..06a1b4b977 100644
index 485b609bb5..614cfacb1e 100644
--- a/src/main/java/net/minecraft/server/PlayerInteractManager.java
+++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java
@@ -21,14 +21,29 @@ public class PlayerInteractManager {
@@ -6352,7 +6352,7 @@ index e21c747b6c..4bdadffee0 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 d91124bc85..db90920c8d 100644
index d64d94b8c3..3804758a62 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -94,6 +94,8 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -6412,7 +6412,7 @@ index d91124bc85..db90920c8d 100644
}
// Paper start - Prevent armor stands from doing entity lookups
@Override
@@ -1072,10 +1087,44 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -1076,10 +1091,44 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
return this.getChunkAt(i, j, ChunkStatus.FULL, false);
}
@@ -6530,10 +6530,10 @@ index f011869880..26a8c4ffe2 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 95da2a5602..215789b762 100644
index b196810316..dcf28739fc 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;
@@ -55,12 +55,13 @@ import org.bukkit.event.server.MapInitializeEvent;
import org.bukkit.event.weather.LightningStrikeEvent;
import org.bukkit.event.world.TimeSkipEvent;
// CraftBukkit end
@@ -6548,7 +6548,7 @@ index 95da2a5602..215789b762 100644
private final Map<UUID, Entity> entitiesByUUID = Maps.newHashMap();
private final Queue<Entity> entitiesToAdd = Queues.newArrayDeque();
public final List<EntityPlayer> players = Lists.newArrayList(); // Paper - private -> public
@@ -80,7 +81,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -84,7 +85,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
private final PortalTravelAgent portalTravelAgent;
private final TickListServer<Block> nextTickListBlock;
private final TickListServer<FluidType> nextTickListFluid;
@@ -6557,7 +6557,7 @@ index 95da2a5602..215789b762 100644
protected final PersistentRaid persistentRaid;
private final ObjectLinkedOpenHashSet<BlockActionData> L;
private boolean ticking;
@@ -201,6 +202,100 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -205,6 +206,100 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
// Paper end - rewrite ticklistserver
@@ -6658,7 +6658,7 @@ index 95da2a5602..215789b762 100644
// Add env and gen to constructor, WorldData -> WorldDataServer
public WorldServer(MinecraftServer minecraftserver, Executor executor, Convertable.ConversionSession convertable_conversionsession, IWorldDataServer iworlddataserver, ResourceKey<World> resourcekey, DimensionManager dimensionmanager, WorldLoadListener worldloadlistener, ChunkGenerator chunkgenerator, boolean flag, long i, List<MobSpawner> list, boolean flag1, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen) {
super(iworlddataserver, resourcekey, dimensionmanager, minecraftserver::getMethodProfiler, false, flag, i, gen, env, executor); // Paper pass executor
@@ -261,6 +356,328 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -265,6 +360,328 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.asyncChunkTaskManager = new com.destroystokyo.paper.io.chunk.ChunkTaskManager(this); // Paper
}
@@ -6987,7 +6987,7 @@ index 95da2a5602..215789b762 100644
// CraftBukkit start
@Override
protected TileEntity getTileEntity(BlockPosition pos, boolean validate) {
@@ -463,7 +880,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -467,7 +884,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
timings.scheduledBlocks.stopTiming(); // Paper
@@ -6996,16 +6996,16 @@ index 95da2a5602..215789b762 100644
gameprofilerfiller.exitEnter("raid");
this.timings.raids.startTiming(); // Paper - timings
this.persistentRaid.a();
@@ -472,7 +889,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -476,7 +893,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
timings.doSounds.startTiming(); // Spigot
this.aj();
this.ak();
timings.doSounds.stopTiming(); // Spigot
- this.getMinecraftServer().midTickLoadChunks(); // Paper
+ // Tuinity - replace logic
this.ticking = false;
gameprofilerfiller.exitEnter("entities");
boolean flag3 = true || !this.players.isEmpty() || !this.getForceLoadedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players
@@ -488,13 +905,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -492,13 +909,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
this.tickingEntities = true;
@@ -7021,7 +7021,7 @@ index 95da2a5602..215789b762 100644
Entity entity1 = entity.getVehicle();
/* CraftBukkit start - We prevent spawning in general, so this butchering is not needed
@@ -530,7 +946,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -534,7 +950,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
gameprofilerfiller.enter("remove");
if (entity.dead) {
this.removeEntityFromChunk(entity);
@@ -7030,7 +7030,7 @@ index 95da2a5602..215789b762 100644
this.unregisterEntity(entity);
}
@@ -538,6 +954,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -542,6 +958,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
timings.entityTick.stopTiming(); // Spigot
@@ -7038,7 +7038,7 @@ index 95da2a5602..215789b762 100644
this.tickingEntities = false;
// Paper start
for (java.lang.Runnable run : this.afterEntityTickingTasks) {
@@ -549,7 +966,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -553,7 +970,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
this.afterEntityTickingTasks.clear();
// Paper end
@@ -7047,7 +7047,7 @@ index 95da2a5602..215789b762 100644
Entity entity2;
@@ -559,7 +976,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -563,7 +980,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
timings.tickEntities.stopTiming(); // Spigot
@@ -7056,7 +7056,7 @@ index 95da2a5602..215789b762 100644
this.tickBlockEntities();
}
@@ -805,7 +1222,26 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -809,7 +1226,26 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
@@ -7083,7 +7083,7 @@ index 95da2a5602..215789b762 100644
if (!(entity instanceof EntityHuman) && !this.getChunkProvider().a(entity)) {
this.chunkCheck(entity);
} else {
@@ -858,6 +1294,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -862,6 +1298,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
//} finally { timer.stopTiming(); } // Paper - timings - move up
}
@@ -7095,7 +7095,7 @@ index 95da2a5602..215789b762 100644
}
public void a(Entity entity, Entity entity1) {
@@ -1295,7 +1736,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1299,7 +1740,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
Entity entity = (Entity) iterator.next();
if (!(entity instanceof EntityPlayer)) {
@@ -7104,7 +7104,7 @@ index 95da2a5602..215789b762 100644
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!")));
}
@@ -1323,6 +1764,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1327,6 +1768,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
public void unregisterEntity(Entity entity) {
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot
@@ -7112,7 +7112,7 @@ index 95da2a5602..215789b762 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
@@ -1389,12 +1831,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1393,12 +1835,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.getScoreboard().a(entity);
// CraftBukkit start - SPIGOT-5278
if (entity instanceof EntityDrowned) {
@@ -7132,7 +7132,7 @@ index 95da2a5602..215789b762 100644
}
new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid
entity.valid = false; // CraftBukkit
@@ -1410,7 +1856,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1414,7 +1860,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
return;
}
// Paper end
@@ -7141,7 +7141,7 @@ index 95da2a5602..215789b762 100644
if (!entity.isQueuedForRegister) { // Paper
this.entitiesToAdd.add(entity);
entity.isQueuedForRegister = true; // Paper
@@ -1418,6 +1864,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1422,6 +1868,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
} else {
entity.isQueuedForRegister = false; // Paper
this.entitiesById.put(entity.getId(), entity);
@@ -7149,7 +7149,7 @@ index 95da2a5602..215789b762 100644
if (entity instanceof EntityEnderDragon) {
EntityComplexPart[] aentitycomplexpart = ((EntityEnderDragon) entity).eJ();
int i = aentitycomplexpart.length;
@@ -1426,6 +1873,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1430,6 +1877,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
EntityComplexPart entitycomplexpart = aentitycomplexpart[j];
this.entitiesById.put(entitycomplexpart.getId(), entitycomplexpart);
@@ -7157,7 +7157,7 @@ index 95da2a5602..215789b762 100644
}
}
@@ -1450,12 +1898,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1454,12 +1902,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) {
@@ -7177,7 +7177,7 @@ index 95da2a5602..215789b762 100644
}
entity.valid = true; // CraftBukkit
this.getChunkProvider().addEntity(entity); // Paper - from above to be below valid=true
@@ -1471,7 +1923,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1475,7 +1927,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
public void removeEntity(Entity entity) {
@@ -7186,7 +7186,7 @@ index 95da2a5602..215789b762 100644
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!")));
} else {
this.removeEntityFromChunk(entity);
@@ -1567,13 +2019,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1571,13 +2023,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@Override
public void notify(BlockPosition blockposition, IBlockData iblockdata, IBlockData iblockdata1, int i) {
@@ -7204,7 +7204,7 @@ index 95da2a5602..215789b762 100644
while (iterator.hasNext()) {
NavigationAbstract navigationabstract = (NavigationAbstract) iterator.next();
@@ -1582,6 +2037,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1586,6 +2041,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
navigationabstract.b(blockposition);
}
}
@@ -7336,7 +7336,7 @@ index 299f57ca2a..4de6252f07 100644
}, MinecraftServer.getServer());
}
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index e8f52003f3..27cfaf6acf 100644
index 9118f05424..a9c96d45c6 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 {