Updated Upstream (Tuinity)

Upstream has released updates that appears to apply and compile correctly

    Tuinity Changes:
    8c60245 Update maven dependency (#144)
    a40bc91 Fix AdvancementDataPlayer leak due from quitting early in login
This commit is contained in:
William Blake Galbreath
2020-07-15 13:16:28 -05:00
parent d4b37c750c
commit df0b28940e

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Tuinity Server Changes
diff --git a/pom.xml b/pom.xml
index ef8ee637a8a0e5e703922b2991c58f4f116b23fb..6fd59681784a5cc369f4903b4da0d11174b805f2 100644
index ef8ee637a..6fd596817 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,11 +1,11 @@
@@ -65,7 +65,7 @@ index ef8ee637a8a0e5e703922b2991c58f4f116b23fb..6fd59681784a5cc369f4903b4da0d111
</configuration>
<executions>
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
index dd07223978c9aa648673d96ba7b3db1160d43bbf..2966c5731761b125d841c8f3ea80f68bc189c162 100644
index dd0722397..2966c5731 100644
--- a/src/main/java/co/aikar/timings/MinecraftTimings.java
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
@@ -43,6 +43,8 @@ public final class MinecraftTimings {
@@ -78,7 +78,7 @@ index dd07223978c9aa648673d96ba7b3db1160d43bbf..2966c5731761b125d841c8f3ea80f68b
private MinecraftTimings() {}
diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java
index e33e889c291d37a821a4fbd40d9aac7bb079de0d..5dfa0658838c4801cdf260eae8b98163f729e5af 100644
index e33e889c2..5dfa06588 100644
--- a/src/main/java/co/aikar/timings/TimingsExport.java
+++ b/src/main/java/co/aikar/timings/TimingsExport.java
@@ -229,7 +229,8 @@ public class TimingsExport extends Thread {
@@ -92,7 +92,7 @@ index e33e889c291d37a821a4fbd40d9aac7bb079de0d..5dfa0658838c4801cdf260eae8b98163
new TimingsExport(listeners, parent, history).start();
diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
index 49a38c6608b652ff48ef4eaca0dd3ccb1ba570e3..255bbd6e48b95c70fad02ba692c64c7579496827 100644
index 49a38c660..255bbd6e4 100644
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
+++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
@@ -24,8 +24,8 @@ public class PaperVersionFetcher implements VersionFetcher {
@@ -123,7 +123,7 @@ index 49a38c6608b652ff48ef4eaca0dd3ccb1ba570e3..255bbd6e48b95c70fad02ba692c64c75
switch (distance) {
case -1:
diff --git a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java
index 0692fe33bb7c4a7bb666920b10f5dd3a0e7a7689..4263eb917274ddc7acd9651caf7510a36c0558d6 100644
index 0692fe33b..4263eb917 100644
--- a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java
+++ b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java
@@ -188,6 +188,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
@@ -200,7 +200,7 @@ index 0692fe33bb7c4a7bb666920b10f5dd3a0e7a7689..4263eb917274ddc7acd9651caf7510a3
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 0000000000000000000000000000000000000000..97c4100c5d60de7babfc3b7b6a4352101b21aac9
index 000000000..97c4100c5
--- /dev/null
+++ b/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java
@@ -0,0 +1,159 @@
@@ -366,7 +366,7 @@ index 0000000000000000000000000000000000000000..97c4100c5d60de7babfc3b7b6a435210
\ No newline at end of file
diff --git a/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..1c7b858ed53f853541724e8d3fdae4e0e82e5d4f
index 000000000..1c7b858ed
--- /dev/null
+++ b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java
@@ -0,0 +1,279 @@
@@ -652,7 +652,7 @@ index 0000000000000000000000000000000000000000..1c7b858ed53f853541724e8d3fdae4e0
\ No newline at end of file
diff --git a/src/main/java/com/tuinity/tuinity/util/CachedLists.java b/src/main/java/com/tuinity/tuinity/util/CachedLists.java
new file mode 100644
index 0000000000000000000000000000000000000000..a54f516ba72806c0470259436f889faa8f6e7586
index 000000000..a54f516ba
--- /dev/null
+++ b/src/main/java/com/tuinity/tuinity/util/CachedLists.java
@@ -0,0 +1,53 @@
@@ -711,7 +711,7 @@ index 0000000000000000000000000000000000000000..a54f516ba72806c0470259436f889faa
+}
diff --git a/src/main/java/com/tuinity/tuinity/util/TickThread.java b/src/main/java/com/tuinity/tuinity/util/TickThread.java
new file mode 100644
index 0000000000000000000000000000000000000000..08ed243259f052165c6f75aed1d1d65a14219715
index 000000000..08ed24325
--- /dev/null
+++ b/src/main/java/com/tuinity/tuinity/util/TickThread.java
@@ -0,0 +1,41 @@
@@ -759,7 +759,7 @@ index 0000000000000000000000000000000000000000..08ed243259f052165c6f75aed1d1d65a
\ 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 0000000000000000000000000000000000000000..e12d096456965c0f9e152a31f4c2c602184dd7fa
index 000000000..e12d09645
--- /dev/null
+++ b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java
@@ -0,0 +1,265 @@
@@ -1030,7 +1030,7 @@ index 0000000000000000000000000000000000000000..e12d096456965c0f9e152a31f4c2c602
+}
diff --git a/src/main/java/com/tuinity/tuinity/voxel/AABBVoxelShape.java b/src/main/java/com/tuinity/tuinity/voxel/AABBVoxelShape.java
new file mode 100644
index 0000000000000000000000000000000000000000..76593df295e5f462adcbc223d791316a849fffeb
index 000000000..76593df29
--- /dev/null
+++ b/src/main/java/com/tuinity/tuinity/voxel/AABBVoxelShape.java
@@ -0,0 +1,246 @@
@@ -1280,8 +1280,23 @@ index 0000000000000000000000000000000000000000..76593df295e5f462adcbc223d791316a
+ return this.aabb.intersects(axisalingedbb);
+ }
+}
diff --git a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
index d3387a4e1..1588d101e 100644
--- a/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
+++ b/src/main/java/net/minecraft/server/AdvancementDataPlayer.java
@@ -51,6 +51,10 @@ public class AdvancementDataPlayer {
private Advancement l;
private boolean m = true;
+ // Tuinity start - fix advancement data player leakage
+ final Map<CriterionTriggerAbstract, Set<CriterionTrigger.a>> criterionData = Maps.newIdentityHashMap();
+ // Tuinity end - fix advancement data player leakage
+
public AdvancementDataPlayer(DataFixer datafixer, PlayerList playerlist, AdvancementDataWorld advancementdataworld, File file, EntityPlayer entityplayer) {
this.d = datafixer;
this.e = playerlist;
diff --git a/src/main/java/net/minecraft/server/AxisAlignedBB.java b/src/main/java/net/minecraft/server/AxisAlignedBB.java
index ed9b2f9adfecdc6d1b9925579ec510657adde11f..d54bf71409fe299671aa3f72315f18a188b0db9d 100644
index ed9b2f9ad..d54bf7140 100644
--- a/src/main/java/net/minecraft/server/AxisAlignedBB.java
+++ b/src/main/java/net/minecraft/server/AxisAlignedBB.java
@@ -13,6 +13,119 @@ public class AxisAlignedBB {
@@ -1429,7 +1444,7 @@ index ed9b2f9adfecdc6d1b9925579ec510657adde11f..d54bf71409fe299671aa3f72315f18a1
return d0 >= this.minX && d0 < this.maxX && d1 >= this.minY && d1 < this.maxY && d2 >= this.minZ && d2 < this.maxZ;
}
diff --git a/src/main/java/net/minecraft/server/BaseBlockPosition.java b/src/main/java/net/minecraft/server/BaseBlockPosition.java
index 1842e69839a65e7b8d2c47fd30ec8f3179f04470..dab89b0c69ddff24d37cee06107bdc464012c6bb 100644
index 1842e6983..dab89b0c6 100644
--- a/src/main/java/net/minecraft/server/BaseBlockPosition.java
+++ b/src/main/java/net/minecraft/server/BaseBlockPosition.java
@@ -16,9 +16,9 @@ public class BaseBlockPosition implements Comparable<BaseBlockPosition> {
@@ -1465,7 +1480,7 @@ index 1842e69839a65e7b8d2c47fd30ec8f3179f04470..dab89b0c69ddff24d37cee06107bdc46
}
diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java
index db198811ddecc00cbd398f3805bdf51b3239f390..52ebdfcc03ae2d8576a98566e7a99c617f87e19e 100644
index db198811d..52ebdfcc0 100644
--- a/src/main/java/net/minecraft/server/BiomeBase.java
+++ b/src/main/java/net/minecraft/server/BiomeBase.java
@@ -92,6 +92,18 @@ public class BiomeBase {
@@ -1488,7 +1503,7 @@ index db198811ddecc00cbd398f3805bdf51b3239f390..52ebdfcc03ae2d8576a98566e7a99c61
if (biomebase_a.a != null && biomebase_a.b != null && biomebase_a.c != null && biomebase_a.d != null && biomebase_a.e != null && biomebase_a.f != null && biomebase_a.g != null && biomebase_a.j != null) {
this.m = biomebase_a.a;
diff --git a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java
index ff770a3b0e5c4fcccc498ecca51dad9863b0fe0e..12027ecad73a6aee506e0984281f485620ca6e02 100644
index ff770a3b0..12027ecad 100644
--- a/src/main/java/net/minecraft/server/BlockBase.java
+++ b/src/main/java/net/minecraft/server/BlockBase.java
@@ -176,8 +176,8 @@ public abstract class BlockBase {
@@ -1611,7 +1626,7 @@ index ff770a3b0e5c4fcccc498ecca51dad9863b0fe0e..12027ecad73a6aee506e0984281f4856
public SoundEffectType getStepSound() {
diff --git a/src/main/java/net/minecraft/server/BlockChest.java b/src/main/java/net/minecraft/server/BlockChest.java
index 44b9bfcdc7f2cbf4dc6e28c258506d9f84783b0e..dba774018ccd88d75f3a69ceee10fd4691fcfdb6 100644
index 44b9bfcdc..dba774018 100644
--- a/src/main/java/net/minecraft/server/BlockChest.java
+++ b/src/main/java/net/minecraft/server/BlockChest.java
@@ -10,7 +10,7 @@ import javax.annotation.Nullable;
@@ -1633,7 +1648,7 @@ index 44b9bfcdc7f2cbf4dc6e28c258506d9f84783b0e..dba774018ccd88d75f3a69ceee10fd46
if (tileentity instanceof IInventory) {
InventoryUtils.dropInventory(world, blockposition, (IInventory) tileentity);
diff --git a/src/main/java/net/minecraft/server/BlockPiston.java b/src/main/java/net/minecraft/server/BlockPiston.java
index c3133814f1349b2f70b12967b1b5abc88f71f98c..4f10ca5ada741b4f5ef941bb9d92a2fa6a7c44ff 100644
index c3133814f..4f10ca5ad 100644
--- a/src/main/java/net/minecraft/server/BlockPiston.java
+++ b/src/main/java/net/minecraft/server/BlockPiston.java
@@ -270,7 +270,10 @@ public class BlockPiston extends BlockDirectional {
@@ -1690,7 +1705,7 @@ index c3133814f1349b2f70b12967b1b5abc88f71f98c..4f10ca5ada741b4f5ef941bb9d92a2fa
aiblockdata[j++] = iblockdata1;
}
diff --git a/src/main/java/net/minecraft/server/BlockPistonMoving.java b/src/main/java/net/minecraft/server/BlockPistonMoving.java
index 4bf66420f5361771aae4e07379333f3d8cfb718d..bf76615d720911fa3f31efb05fa49f2a1ec239ac 100644
index 4bf66420f..bf76615d7 100644
--- a/src/main/java/net/minecraft/server/BlockPistonMoving.java
+++ b/src/main/java/net/minecraft/server/BlockPistonMoving.java
@@ -21,7 +21,12 @@ public class BlockPistonMoving extends BlockTileEntity {
@@ -1708,7 +1723,7 @@ index 4bf66420f5361771aae4e07379333f3d8cfb718d..bf76615d720911fa3f31efb05fa49f2a
@Override
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
index 8c2a4b57aba17b43517f7b09c4adf65ae5904b6d..7ff4948a47be03c65c162ca04b2338cdcdafe7c4 100644
index 8c2a4b57a..7ff4948a4 100644
--- a/src/main/java/net/minecraft/server/BlockPosition.java
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
@@ -386,11 +386,11 @@ public class BlockPosition extends BaseBlockPosition {
@@ -1810,7 +1825,7 @@ index 8c2a4b57aba17b43517f7b09c4adf65ae5904b6d..7ff4948a47be03c65c162ca04b2338cd
@Override
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
index 84dc89d961bde16f96dba5cf7f2ce4b85564215a..09b8f9a3f6443273aa48846c07e8a84a4bb257fa 100644
index 84dc89d96..09b8f9a3f 100644
--- a/src/main/java/net/minecraft/server/Chunk.java
+++ b/src/main/java/net/minecraft/server/Chunk.java
@@ -375,7 +375,7 @@ public class Chunk implements IChunkAccess {
@@ -1918,7 +1933,7 @@ index 84dc89d961bde16f96dba5cf7f2ce4b85564215a..09b8f9a3f6443273aa48846c07e8a84a
int j = MathHelper.floor((axisalignedbb.maxY + 2.0D) / 16.0D);
diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java
index 893c0085bca0a8d77a85dba1cc29f2dec96c56ec..d83d3b54d394bab7ee9161552cb41ed93d1c9335 100644
index 893c0085b..d83d3b54d 100644
--- a/src/main/java/net/minecraft/server/ChunkMapDistance.java
+++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java
@@ -31,7 +31,7 @@ public abstract class ChunkMapDistance {
@@ -2087,7 +2102,7 @@ index 893c0085bca0a8d77a85dba1cc29f2dec96c56ec..d83d3b54d394bab7ee9161552cb41ed9
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 ef980f9859d1d7d0d5e13d0d70e998055f92135e..0459a591ac5a32de36ba37410744994377457abb 100644
index ef980f985..0459a591a 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
@@ -120,7 +120,7 @@ public class ChunkProviderServer extends IChunkProvider {
@@ -2498,7 +2513,7 @@ index ef980f9859d1d7d0d5e13d0d70e998055f92135e..0459a591ac5a32de36ba374107449943
try {
boolean execChunkTask = com.destroystokyo.paper.io.chunk.ChunkTaskManager.pollChunkWaitQueue() || ChunkProviderServer.this.world.asyncChunkTaskManager.pollNextChunkTask(); // Paper
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
index ac58fcb7985ebe0cfdab6e1400deb37c233ff637..742c59cb059c8a691727ae1a554743b1c059e594 100644
index ac58fcb79..742c59cb0 100644
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
@@ -24,6 +24,14 @@ public class ChunkRegionLoader {
@@ -2530,7 +2545,7 @@ index ac58fcb7985ebe0cfdab6e1400deb37c233ff637..742c59cb059c8a691727ae1a554743b1
nbttagcompound1.setString("Status", ichunkaccess.getChunkStatus().d());
ChunkConverter chunkconverter = ichunkaccess.p();
diff --git a/src/main/java/net/minecraft/server/ChunkSection.java b/src/main/java/net/minecraft/server/ChunkSection.java
index 8d45588ecfa33b8c7335df3db58ed6865b8c956c..4ab74198557ce7db6464ec5828a6563862d3af77 100644
index 8d45588ec..4ab741985 100644
--- a/src/main/java/net/minecraft/server/ChunkSection.java
+++ b/src/main/java/net/minecraft/server/ChunkSection.java
@@ -96,6 +96,7 @@ public class ChunkSection {
@@ -2542,7 +2557,7 @@ index 8d45588ecfa33b8c7335df3db58ed6865b8c956c..4ab74198557ce7db6464ec5828a65638
return this.nonEmptyBlockCount == 0;
}
diff --git a/src/main/java/net/minecraft/server/ChunkStatus.java b/src/main/java/net/minecraft/server/ChunkStatus.java
index 36c26512297430cf072b549614990b064db94152..dd8a3dc4fe978bcd25a5aa950e78ec73dfc0a9c8 100644
index 36c265122..dd8a3dc4f 100644
--- a/src/main/java/net/minecraft/server/ChunkStatus.java
+++ b/src/main/java/net/minecraft/server/ChunkStatus.java
@@ -109,7 +109,7 @@ public class ChunkStatus {
@@ -2563,8 +2578,69 @@ index 36c26512297430cf072b549614990b064db94152..dd8a3dc4fe978bcd25a5aa950e78ec73
this.t = chunkstatus == null ? 0 : chunkstatus.c() + 1;
}
diff --git a/src/main/java/net/minecraft/server/CriterionTriggerAbstract.java b/src/main/java/net/minecraft/server/CriterionTriggerAbstract.java
index 2419c57f9..c61ee03ef 100644
--- a/src/main/java/net/minecraft/server/CriterionTriggerAbstract.java
+++ b/src/main/java/net/minecraft/server/CriterionTriggerAbstract.java
@@ -12,25 +12,25 @@ import java.util.function.Predicate;
public abstract class CriterionTriggerAbstract<T extends CriterionInstanceAbstract> implements CriterionTrigger<T> {
- private final Map<AdvancementDataPlayer, Set<CriterionTrigger.a<T>>> a = Maps.newIdentityHashMap();
+ //private final Map<AdvancementDataPlayer, Set<CriterionTrigger.a<T>>> a = Maps.newIdentityHashMap(); // Tuinity - moved into AdvancementDataPlayer to fix memory leak
public CriterionTriggerAbstract() {}
@Override
public final void a(AdvancementDataPlayer advancementdataplayer, CriterionTrigger.a<T> criteriontrigger_a) {
- ((Set) this.a.computeIfAbsent(advancementdataplayer, (advancementdataplayer1) -> {
+ (advancementdataplayer.criterionData.computeIfAbsent(this, (advancementdataplayer1) -> { // Tuinity - fix AdvancementDataPlayer leak
return Sets.newHashSet();
})).add(criteriontrigger_a);
}
@Override
public final void b(AdvancementDataPlayer advancementdataplayer, CriterionTrigger.a<T> criteriontrigger_a) {
- Set<CriterionTrigger.a<T>> set = (Set) this.a.get(advancementdataplayer);
+ Set<CriterionTrigger.a<T>> set = (Set) advancementdataplayer.criterionData.get(this); // Tuinity - fix AdvancementDataPlayer leak
if (set != null) {
set.remove(criteriontrigger_a);
if (set.isEmpty()) {
- this.a.remove(advancementdataplayer);
+ advancementdataplayer.criterionData.remove(this); // Tuinity - fix AdvancementDataPlayer leak
}
}
@@ -38,7 +38,7 @@ public abstract class CriterionTriggerAbstract<T extends CriterionInstanceAbstra
@Override
public final void a(AdvancementDataPlayer advancementdataplayer) {
- this.a.remove(advancementdataplayer);
+ advancementdataplayer.criterionData.remove(this); // Tuinity - fix AdvancementDataPlayer leak
}
protected abstract T b(JsonObject jsonobject, CriterionConditionEntity.b criterionconditionentity_b, LootDeserializationContext lootdeserializationcontext);
@@ -52,7 +52,7 @@ public abstract class CriterionTriggerAbstract<T extends CriterionInstanceAbstra
protected void a(EntityPlayer entityplayer, Predicate<T> predicate) {
AdvancementDataPlayer advancementdataplayer = entityplayer.getAdvancementData();
- Set<CriterionTrigger.a<T>> set = (Set) this.a.get(advancementdataplayer);
+ Set<CriterionTrigger.a<T>> set = (Set) advancementdataplayer.criterionData.get(this); // Tuinity - fix AdvancementDataPlayer leak
if (set != null && !set.isEmpty()) {
LootTableInfo loottableinfo = CriterionConditionEntity.b(entityplayer, entityplayer);
@@ -63,7 +63,7 @@ public abstract class CriterionTriggerAbstract<T extends CriterionInstanceAbstra
while (iterator.hasNext()) {
criteriontrigger_a = (CriterionTrigger.a) iterator.next();
- T t0 = (CriterionInstanceAbstract) criteriontrigger_a.a();
+ T t0 = (T)criteriontrigger_a.a(); // Tuinity - decompile fix
if (t0.b().a(loottableinfo) && predicate.test(t0)) {
if (list == null) {
diff --git a/src/main/java/net/minecraft/server/DataBits.java b/src/main/java/net/minecraft/server/DataBits.java
index 235c9ec37c00ce8838b3e7c02284e402f9d30e38..dba3c407c10aa8c7aa6c5f76b9eac599743b56de 100644
index 235c9ec37..dba3c407c 100644
--- a/src/main/java/net/minecraft/server/DataBits.java
+++ b/src/main/java/net/minecraft/server/DataBits.java
@@ -52,6 +52,7 @@ public class DataBits {
@@ -2592,7 +2668,7 @@ index 235c9ec37c00ce8838b3e7c02284e402f9d30e38..dba3c407c10aa8c7aa6c5f76b9eac599
//Validate.inclusiveBetween(0L, (long) (this.e - 1), (long) i); // Paper
int j = this.b(i);
diff --git a/src/main/java/net/minecraft/server/DataPaletteBlock.java b/src/main/java/net/minecraft/server/DataPaletteBlock.java
index 1cb45f97b644347d16b66b46113b1e4455004fd3..e60ad41b22ddeeae4923a5b7b2999f2f9789e90d 100644
index 1cb45f97b..e60ad41b2 100644
--- a/src/main/java/net/minecraft/server/DataPaletteBlock.java
+++ b/src/main/java/net/minecraft/server/DataPaletteBlock.java
@@ -163,6 +163,7 @@ public class DataPaletteBlock<T> implements DataPaletteExpandable<T> {
@@ -2604,7 +2680,7 @@ index 1cb45f97b644347d16b66b46113b1e4455004fd3..e60ad41b22ddeeae4923a5b7b2999f2f
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 8b2755a3b95e472e884976195d1d3551fc260e39..578f7809cb09e746778d05b153e02c569f0d1d90 100644
index 8b2755a3b..578f7809c 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
@@ -2616,7 +2692,7 @@ index 8b2755a3b95e472e884976195d1d3551fc260e39..578f7809cb09e746778d05b153e02c56
this.setPVP(dedicatedserverproperties.pvp);
this.setAllowFlight(dedicatedserverproperties.allowFlight);
diff --git a/src/main/java/net/minecraft/server/EULA.java b/src/main/java/net/minecraft/server/EULA.java
index 550232cb3819138b3bae0fa1c51429485e8bc593..229c3b0f0c650b501f31147adaa17194af57fedd 100644
index 550232cb3..229c3b0f0 100644
--- a/src/main/java/net/minecraft/server/EULA.java
+++ b/src/main/java/net/minecraft/server/EULA.java
@@ -70,7 +70,7 @@ public class EULA {
@@ -2629,7 +2705,7 @@ index 550232cb3819138b3bae0fa1c51429485e8bc593..229c3b0f0c650b501f31147adaa17194
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 9c4b02d776f8b99c6703c8dfc5d9fac0702bbe80..3db19a9bab8ffdc42f280a27c867bf7d1a1ab9e7 100644
index 9c4b02d77..3db19a9ba 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
@@ -2908,7 +2984,7 @@ index 9c4b02d776f8b99c6703c8dfc5d9fac0702bbe80..3db19a9bab8ffdc42f280a27c867bf7d
int j = MathHelper.floor(d1);
int k = MathHelper.floor(d2);
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index c388999d104682b84b5f0936efce9d270247d08c..4545bd371c460d360a65d80b31af7819d718c97a 100644
index c388999d1..4545bd371 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -2835,7 +2835,11 @@ public abstract class EntityLiving extends Entity {
@@ -2935,7 +3011,7 @@ index c388999d104682b84b5f0936efce9d270247d08c..4545bd371c460d360a65d80b31af7819
}
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
index f75c09d44a19f84588f21a55ea8f0dd8ccb539b9..bfb931268d35754b415538728e081bc1a2c9f188 100644
index f75c09d44..bfb931268 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 {
@@ -2947,7 +3023,7 @@ index f75c09d44a19f84588f21a55ea8f0dd8ccb539b9..bfb931268d35754b415538728e081bc1
if (!list.equals(this.p)) {
diff --git a/src/main/java/net/minecraft/server/Fluid.java b/src/main/java/net/minecraft/server/Fluid.java
index 05fa52c0b12f159788ec3f2b769753b6bd29578c..8ffc5db509867c585e90ea12d8509dcd0b1435e0 100644
index 05fa52c0b..8ffc5db50 100644
--- a/src/main/java/net/minecraft/server/Fluid.java
+++ b/src/main/java/net/minecraft/server/Fluid.java
@@ -9,8 +9,12 @@ public final class Fluid extends IBlockDataHolder<FluidType, Fluid> {
@@ -2973,7 +3049,7 @@ index 05fa52c0b12f159788ec3f2b769753b6bd29578c..8ffc5db509867c585e90ea12d8509dcd
public float getHeight(IBlockAccess iblockaccess, BlockPosition blockposition) {
diff --git a/src/main/java/net/minecraft/server/HeightMap.java b/src/main/java/net/minecraft/server/HeightMap.java
index 068b92c5c4ae112771757626ea75694e59f3d255..a43c4ca3ea2e0dbf34a177592daed18c64bb14d3 100644
index 068b92c5c..a43c4ca3e 100644
--- a/src/main/java/net/minecraft/server/HeightMap.java
+++ b/src/main/java/net/minecraft/server/HeightMap.java
@@ -19,7 +19,25 @@ public class HeightMap {
@@ -3057,7 +3133,7 @@ index 068b92c5c4ae112771757626ea75694e59f3d255..a43c4ca3ea2e0dbf34a177592daed18c
this.i = heightmap_use;
this.j = predicate;
diff --git a/src/main/java/net/minecraft/server/IBlockData.java b/src/main/java/net/minecraft/server/IBlockData.java
index 10a5901db1e0efe0b7d6958098bb0ae492a9e76f..9117504767834d0a798a3dfd4867a0c0bea95ed8 100644
index 10a5901db..911750476 100644
--- a/src/main/java/net/minecraft/server/IBlockData.java
+++ b/src/main/java/net/minecraft/server/IBlockData.java
@@ -8,6 +8,19 @@ public class IBlockData extends BlockBase.BlockData {
@@ -3081,7 +3157,7 @@ index 10a5901db1e0efe0b7d6958098bb0ae492a9e76f..9117504767834d0a798a3dfd4867a0c0
super(block, immutablemap, mapcodec);
}
diff --git a/src/main/java/net/minecraft/server/IChunkLoader.java b/src/main/java/net/minecraft/server/IChunkLoader.java
index 582a5695bac7d078e3022b8ee70c512c0680d992..5601088cd5024a40e8296bab979f43de924c2b62 100644
index 582a5695b..5601088cd 100644
--- a/src/main/java/net/minecraft/server/IChunkLoader.java
+++ b/src/main/java/net/minecraft/server/IChunkLoader.java
@@ -21,7 +21,7 @@ public class IChunkLoader implements AutoCloseable {
@@ -3094,7 +3170,7 @@ index 582a5695bac7d078e3022b8ee70c512c0680d992..5601088cd5024a40e8296bab979f43de
// Paper - nuke IOWorker
}
diff --git a/src/main/java/net/minecraft/server/ICollisionAccess.java b/src/main/java/net/minecraft/server/ICollisionAccess.java
index 1cc40b1f0af9e617b2a71bcc442543e10b2dc61a..3ce2f7497a9e12082b70525ad2aaf5e0828cc068 100644
index 1cc40b1f0..3ce2f7497 100644
--- a/src/main/java/net/minecraft/server/ICollisionAccess.java
+++ b/src/main/java/net/minecraft/server/ICollisionAccess.java
@@ -46,6 +46,11 @@ public interface ICollisionAccess extends IBlockAccess {
@@ -3110,7 +3186,7 @@ index 1cc40b1f0af9e617b2a71bcc442543e10b2dc61a..3ce2f7497a9e12082b70525ad2aaf5e0
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 267a6baae89c181eed545e6758fac7115eb3882f..0edcb775e965a3d6539d44e49480068deafab7a5 100644
index 267a6baae..0edcb775e 100644
--- a/src/main/java/net/minecraft/server/IEntityAccess.java
+++ b/src/main/java/net/minecraft/server/IEntityAccess.java
@@ -69,6 +69,7 @@ public interface IEntityAccess {
@@ -3122,7 +3198,7 @@ index 267a6baae89c181eed545e6758fac7115eb3882f..0edcb775e965a3d6539d44e49480068d
return entity == null || !entity.isSameVehicle(entity1);
});
diff --git a/src/main/java/net/minecraft/server/LightEngineStorage.java b/src/main/java/net/minecraft/server/LightEngineStorage.java
index b98e60772bad7e06845b50fdc11e98c0ea775d3d..e0bbfe1422cbad811ecb43d7436380d86b0f8abc 100644
index b98e60772..e0bbfe142 100644
--- a/src/main/java/net/minecraft/server/LightEngineStorage.java
+++ b/src/main/java/net/minecraft/server/LightEngineStorage.java
@@ -23,7 +23,8 @@ public abstract class LightEngineStorage<M extends LightEngineStorageArray<M>> e
@@ -3154,7 +3230,7 @@ index b98e60772bad7e06845b50fdc11e98c0ea775d3d..e0bbfe1422cbad811ecb43d7436380d8
while (objectiterator.hasNext()) {
entry = (Entry) objectiterator.next();
diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java
index e9cedbc8b62180134e774b119fb156c54f5767de..a29d54c775feb8a5d872b934aa8360cd70085b2c 100644
index e9cedbc8b..a29d54c77 100644
--- a/src/main/java/net/minecraft/server/MCUtil.java
+++ b/src/main/java/net/minecraft/server/MCUtil.java
@@ -48,6 +48,20 @@ public final class MCUtil {
@@ -3179,7 +3255,7 @@ index e9cedbc8b62180134e774b119fb156c54f5767de..a29d54c775feb8a5d872b934aa8360cd
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 26f230a801bd8efa5f8b61dee53fe7b1435f906b..eb71fa6e39ecf477f18a2ae5a159d8b62ad4bfb5 100644
index 26f230a80..eb71fa6e3 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -986,7 +986,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
@@ -3371,7 +3447,7 @@ index 26f230a801bd8efa5f8b61dee53fe7b1435f906b..eb71fa6e39ecf477f18a2ae5a159d8b6
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 d5cc2af83a1c08db969bfb8a832e450a71dd845e..327bb3e74421fe34479c724bb5307e65421ad13b 100644
index d5cc2af83..327bb3e74 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<?>> {
@@ -3491,7 +3567,7 @@ index d5cc2af83a1c08db969bfb8a832e450a71dd845e..327bb3e74421fe34479c724bb5307e65
}
return true;
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
index 8335d003369d94cbad17ec6fce76d6f9d016455a..e0ee524093e63e902cc7aea3c82e226438d4deb6 100644
index 8335d0033..e0ee52409 100644
--- a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
+++ b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java
@@ -19,7 +19,7 @@ public class PacketPlayOutMapChunk implements Packet<PacketListenerPlayOut> {
@@ -3661,7 +3737,7 @@ index 8335d003369d94cbad17ec6fce76d6f9d016455a..e0ee524093e63e902cc7aea3c82e2264
}
}
diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java
index d7f0df123ba716ca8587cbfab2c8e94961164909..ec55785af2b432b692d3a3bf4298ffb32489bf3b 100644
index d7f0df123..ec55785af 100644
--- a/src/main/java/net/minecraft/server/PathfinderNormal.java
+++ b/src/main/java/net/minecraft/server/PathfinderNormal.java
@@ -538,7 +538,7 @@ public class PathfinderNormal extends PathfinderAbstract {
@@ -3674,7 +3750,7 @@ index d7f0df123ba716ca8587cbfab2c8e94961164909..ec55785af2b432b692d3a3bf4298ffb3
return fluid.a((Tag) TagsFluid.WATER) ? PathType.WATER : (fluid.a((Tag) TagsFluid.LAVA) ? PathType.LAVA : PathType.OPEN);
}
diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java
index a3bce8f13bf278af2d6870891daa9bf692b4e267..a483ec0e2b389903cf693ac7d018fce158d740d2 100644
index a3bce8f13..a483ec0e2 100644
--- a/src/main/java/net/minecraft/server/PlayerChunk.java
+++ b/src/main/java/net/minecraft/server/PlayerChunk.java
@@ -494,6 +494,7 @@ public class PlayerChunk {
@@ -3775,7 +3851,7 @@ index a3bce8f13bf278af2d6870891daa9bf692b4e267..a483ec0e2b389903cf693ac7d018fce1
if (chunk != null) {
playerchunkmap.callbackExecutor.execute(() -> {
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 5544254a655485b8ef9d2883da4d722fa57c63d9..ab751b48d23e06c0d8e54c477611dd6008bb6340 100644
index 5544254a6..ab751b48d 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -119,31 +119,28 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
@@ -3942,7 +4018,7 @@ index 5544254a655485b8ef9d2883da4d722fa57c63d9..ab751b48d23e06c0d8e54c477611dd60
// 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 cf83059fec9f11df992827f0c0249243caa9ac33..37f55c66b6cbca9650b050fe08f60c101c2d35bf 100644
index cf83059fe..37f55c66b 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -322,19 +322,24 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -4047,7 +4123,7 @@ index cf83059fec9f11df992827f0c0249243caa9ac33..37f55c66b6cbca9650b050fe08f60c10
} else {
// CraftBukkit start - fire PlayerMoveEvent
diff --git a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java
index 7ea293f38dedd6066601d94adbe175a31c502e1f..e698dd22607b2b2c4068c5bfb03ac53eb5bac080 100644
index 7ea293f38..e698dd226 100644
--- a/src/main/java/net/minecraft/server/PlayerConnectionUtils.java
+++ b/src/main/java/net/minecraft/server/PlayerConnectionUtils.java
@@ -13,10 +13,30 @@ public class PlayerConnectionUtils {
@@ -4095,7 +4171,7 @@ index 7ea293f38dedd6066601d94adbe175a31c502e1f..e698dd22607b2b2c4068c5bfb03ac53e
});
throw CancelledPacketHandleException.INSTANCE;
diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java
index 6d192b27440ddfd34555005dafefbce6bbb67236..f5de49e3e384b1d2926197e72992ace51d2967b6 100644
index 6d192b274..f5de49e3e 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 {
@@ -4230,7 +4306,7 @@ index 6d192b27440ddfd34555005dafefbce6bbb67236..f5de49e3e384b1d2926197e72992ace5
this.player.playerConnection.sendPacket(new PacketPlayOutBlockChange(this.world, blockposition)); // CraftBukkit - SPIGOT-5196
}
diff --git a/src/main/java/net/minecraft/server/ProtoChunk.java b/src/main/java/net/minecraft/server/ProtoChunk.java
index 3b03c28ee5de1481e1f8088c0e4d388778155fad..6ac9f437e853957e19be077bb2c78eef0dbbbf01 100644
index 3b03c28ee..6ac9f437e 100644
--- a/src/main/java/net/minecraft/server/ProtoChunk.java
+++ b/src/main/java/net/minecraft/server/ProtoChunk.java
@@ -179,14 +179,11 @@ public class ProtoChunk implements IChunkAccess {
@@ -4266,7 +4342,7 @@ index 3b03c28ee5de1481e1f8088c0e4d388778155fad..6ac9f437e853957e19be077bb2c78eef
}
diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java
index 93797395c3a710d228bd790771ac18b4baa3b1e2..6928b1730fd793de78f9d24f3188ab23a09bf057 100644
index 93797395c..6928b1730 100644
--- a/src/main/java/net/minecraft/server/RegionFile.java
+++ b/src/main/java/net/minecraft/server/RegionFile.java
@@ -28,14 +28,349 @@ public class RegionFile implements AutoCloseable {
@@ -4828,7 +4904,7 @@ index 93797395c3a710d228bd790771ac18b4baa3b1e2..6928b1730fd793de78f9d24f3188ab23
((java.nio.Buffer) this.f).position(0);
this.dataFile.write(this.f, 0L);
diff --git a/src/main/java/net/minecraft/server/RegionFileBitSet.java b/src/main/java/net/minecraft/server/RegionFileBitSet.java
index 1ebdf73cc927405bc536dc74a5118d2a086db0e5..cfa3ecb031b59ec677f016ecdea92d16436fb511 100644
index 1ebdf73cc..cfa3ecb03 100644
--- a/src/main/java/net/minecraft/server/RegionFileBitSet.java
+++ b/src/main/java/net/minecraft/server/RegionFileBitSet.java
@@ -4,18 +4,42 @@ import java.util.BitSet;
@@ -4876,7 +4952,7 @@ index 1ebdf73cc927405bc536dc74a5118d2a086db0e5..cfa3ecb031b59ec677f016ecdea92d16
int j = 0;
diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java
index 867dc074bc57b27486de6ce742971d5db945b0fc..60b4171a3aa2a8b216aba13738c84ac9d7f3b49e 100644
index 867dc074b..60b4171a3 100644
--- a/src/main/java/net/minecraft/server/RegionFileCache.java
+++ b/src/main/java/net/minecraft/server/RegionFileCache.java
@@ -14,12 +14,43 @@ public class RegionFileCache implements AutoCloseable { // Paper - no final
@@ -4967,7 +5043,7 @@ index 867dc074bc57b27486de6ce742971d5db945b0fc..60b4171a3aa2a8b216aba13738c84ac9
}
diff --git a/src/main/java/net/minecraft/server/RegionFileCompression.java b/src/main/java/net/minecraft/server/RegionFileCompression.java
index 3382d678e68e559b8d3cb9dced4fce24206cd38f..29137f495942d810e61fadc33178999ad57fdcc0 100644
index 3382d678e..29137f495 100644
--- a/src/main/java/net/minecraft/server/RegionFileCompression.java
+++ b/src/main/java/net/minecraft/server/RegionFileCompression.java
@@ -13,7 +13,7 @@ import javax.annotation.Nullable;
@@ -4999,7 +5075,7 @@ index 3382d678e68e559b8d3cb9dced4fce24206cd38f..29137f495942d810e61fadc33178999a
return (InputStream) this.f.wrap(inputstream);
}
diff --git a/src/main/java/net/minecraft/server/Ticket.java b/src/main/java/net/minecraft/server/Ticket.java
index e41cb8613efc86499dfe3be36c9130ab6dc9b89e..c19ffb925a02d123da8a5c77186e6105422dccf7 100644
index e41cb8613..c19ffb925 100644
--- a/src/main/java/net/minecraft/server/Ticket.java
+++ b/src/main/java/net/minecraft/server/Ticket.java
@@ -5,17 +5,17 @@ import java.util.Objects;
@@ -5036,7 +5112,7 @@ index e41cb8613efc86499dfe3be36c9130ab6dc9b89e..c19ffb925a02d123da8a5c77186e6105
return j != 0L && i - this.d > j;
}
diff --git a/src/main/java/net/minecraft/server/TicketType.java b/src/main/java/net/minecraft/server/TicketType.java
index 5c789b25f1df2eae8ea8ceb4ba977ba336fe6d5e..4657b05a4213c534a653aefd991645e27a6a4b3b 100644
index 5c789b25f..4657b05a4 100644
--- a/src/main/java/net/minecraft/server/TicketType.java
+++ b/src/main/java/net/minecraft/server/TicketType.java
@@ -26,7 +26,8 @@ public class TicketType<T> {
@@ -5050,7 +5126,7 @@ index 5c789b25f1df2eae8ea8ceb4ba977ba336fe6d5e..4657b05a4213c534a653aefd991645e2
public static <T> TicketType<T> a(String s, Comparator<T> comparator) {
return new TicketType<>(s, comparator, 0L);
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
index 67fda8bd5a0ad6fea2df0066c61e006c8a49980c..e1f1d6e33fd76bd11eb23e78457ba711bf9d5cde 100644
index 67fda8bd5..e1f1d6e33 100644
--- a/src/main/java/net/minecraft/server/TileEntity.java
+++ b/src/main/java/net/minecraft/server/TileEntity.java
@@ -12,7 +12,7 @@ import org.bukkit.inventory.InventoryHolder;
@@ -5124,7 +5200,7 @@ index 67fda8bd5a0ad6fea2df0066c61e006c8a49980c..e1f1d6e33fd76bd11eb23e78457ba711
private String tileEntityKeyString = null;
private MinecraftKey tileEntityKey = null;
diff --git a/src/main/java/net/minecraft/server/TileEntityBeacon.java b/src/main/java/net/minecraft/server/TileEntityBeacon.java
index 2858ea1f3eb44ea2cc6b11454b8e94bca4ab0568..453f1301b4b4ed5024a2d608d119889f7805961f 100644
index 2858ea1f3..453f1301b 100644
--- a/src/main/java/net/minecraft/server/TileEntityBeacon.java
+++ b/src/main/java/net/minecraft/server/TileEntityBeacon.java
@@ -35,7 +35,7 @@ public class TileEntityBeacon extends TileEntity implements ITileInventory, ITic
@@ -5175,7 +5251,7 @@ index 2858ea1f3eb44ea2cc6b11454b8e94bca4ab0568..453f1301b4b4ed5024a2d608d119889f
public void tick() {
int i = this.position.getX();
diff --git a/src/main/java/net/minecraft/server/TileEntityBeehive.java b/src/main/java/net/minecraft/server/TileEntityBeehive.java
index 6dc91d985acb9c06b8c284edf3c2439fda6fac72..9da356de6b98e4b9c48ee9ea23647c2e292adea9 100644
index 6dc91d985..9da356de6 100644
--- a/src/main/java/net/minecraft/server/TileEntityBeehive.java
+++ b/src/main/java/net/minecraft/server/TileEntityBeehive.java
@@ -12,6 +12,13 @@ public class TileEntityBeehive extends TileEntity implements ITickable {
@@ -5193,7 +5269,7 @@ index 6dc91d985acb9c06b8c284edf3c2439fda6fac72..9da356de6b98e4b9c48ee9ea23647c2e
super(TileEntityTypes.BEEHIVE);
}
diff --git a/src/main/java/net/minecraft/server/TileEntityBrewingStand.java b/src/main/java/net/minecraft/server/TileEntityBrewingStand.java
index 276eba954bebcf87b6d9b899f161355974bc9dc8..e38a494d7b1aa03b5644a54e9ba9139aa43eb759 100644
index 276eba954..e38a494d7 100644
--- a/src/main/java/net/minecraft/server/TileEntityBrewingStand.java
+++ b/src/main/java/net/minecraft/server/TileEntityBrewingStand.java
@@ -24,7 +24,7 @@ public class TileEntityBrewingStand extends TileEntityContainer implements IWorl
@@ -5244,7 +5320,7 @@ index 276eba954bebcf87b6d9b899f161355974bc9dc8..e38a494d7b1aa03b5644a54e9ba9139a
protected IChatBaseComponent getContainerName() {
return new ChatMessage("container.brewing");
diff --git a/src/main/java/net/minecraft/server/TileEntityChest.java b/src/main/java/net/minecraft/server/TileEntityChest.java
index f6f2743892b5b933e6ba0cc25b24e0d471b305c9..f9a878bd0be1666ee68d790cdf9d71ca8cb11c24 100644
index f6f274389..f9a878bd0 100644
--- a/src/main/java/net/minecraft/server/TileEntityChest.java
+++ b/src/main/java/net/minecraft/server/TileEntityChest.java
@@ -45,6 +45,22 @@ public class TileEntityChest extends TileEntityLootable { // Paper - Remove ITic
@@ -5271,7 +5347,7 @@ index f6f2743892b5b933e6ba0cc25b24e0d471b305c9..f9a878bd0be1666ee68d790cdf9d71ca
super(tileentitytypes);
this.items = NonNullList.a(27, ItemStack.b);
diff --git a/src/main/java/net/minecraft/server/TileEntityConduit.java b/src/main/java/net/minecraft/server/TileEntityConduit.java
index ade830122762b2ba9a0142bdf3e13f325fc3a18a..7e9470caa568ccd5857b8f5c774b6d2651f6f96c 100644
index ade830122..7e9470caa 100644
--- a/src/main/java/net/minecraft/server/TileEntityConduit.java
+++ b/src/main/java/net/minecraft/server/TileEntityConduit.java
@@ -16,15 +16,32 @@ public class TileEntityConduit extends TileEntity implements ITickable {
@@ -5310,7 +5386,7 @@ index ade830122762b2ba9a0142bdf3e13f325fc3a18a..7e9470caa568ccd5857b8f5c774b6d26
this(TileEntityTypes.CONDUIT);
}
diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java
index f4f50fb8375fec3f6868bbccc50bc78a5cd81965..59aa2f8a797482c43fd47d3bce936772ad3cd6aa 100644
index f4f50fb83..59aa2f8a7 100644
--- a/src/main/java/net/minecraft/server/TileEntityFurnace.java
+++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java
@@ -32,14 +32,14 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
@@ -5358,7 +5434,7 @@ index f4f50fb8375fec3f6868bbccc50bc78a5cd81965..59aa2f8a797482c43fd47d3bce936772
}
diff --git a/src/main/java/net/minecraft/server/TileEntityJukeBox.java b/src/main/java/net/minecraft/server/TileEntityJukeBox.java
index 33c7dc56da4fa77c652dda30c5a34ce29e80e60e..75eb1b8b298e6b803cd938b80c71e20670f8df35 100644
index 33c7dc56d..75eb1b8b2 100644
--- a/src/main/java/net/minecraft/server/TileEntityJukeBox.java
+++ b/src/main/java/net/minecraft/server/TileEntityJukeBox.java
@@ -4,6 +4,13 @@ public class TileEntityJukeBox extends TileEntity implements Clearable {
@@ -5376,7 +5452,7 @@ index 33c7dc56da4fa77c652dda30c5a34ce29e80e60e..75eb1b8b298e6b803cd938b80c71e206
super(TileEntityTypes.JUKEBOX);
this.a = ItemStack.b;
diff --git a/src/main/java/net/minecraft/server/TileEntityLectern.java b/src/main/java/net/minecraft/server/TileEntityLectern.java
index b2ceb6c179e925aa9b499693247ae00811a404cc..b955d5d6619d6b9c64559937df6aa619fb4c8c04 100644
index b2ceb6c17..b955d5d66 100644
--- a/src/main/java/net/minecraft/server/TileEntityLectern.java
+++ b/src/main/java/net/minecraft/server/TileEntityLectern.java
@@ -17,7 +17,7 @@ import org.bukkit.inventory.InventoryHolder;
@@ -5453,7 +5529,7 @@ index b2ceb6c179e925aa9b499693247ae00811a404cc..b955d5d6619d6b9c64559937df6aa619
super(TileEntityTypes.LECTERN);
this.book = ItemStack.b;
diff --git a/src/main/java/net/minecraft/server/TileEntityPiston.java b/src/main/java/net/minecraft/server/TileEntityPiston.java
index e7b7e468fc874b0fbcd43f87d816a42420f9b05e..38d0e841cabfbb30b55414e8bf8e12219245fb9e 100644
index e7b7e468f..38d0e841c 100644
--- a/src/main/java/net/minecraft/server/TileEntityPiston.java
+++ b/src/main/java/net/minecraft/server/TileEntityPiston.java
@@ -5,10 +5,10 @@ import java.util.List;
@@ -5583,7 +5659,7 @@ index e7b7e468fc874b0fbcd43f87d816a42420f9b05e..38d0e841cabfbb30b55414e8bf8e1221
}
diff --git a/src/main/java/net/minecraft/server/UserCache.java b/src/main/java/net/minecraft/server/UserCache.java
index a038397028848edb4f43cd4f7262546666e32883..c68af75629f6f57928b219d7afb7dc6821e49b03 100644
index a03839702..c68af7562 100644
--- a/src/main/java/net/minecraft/server/UserCache.java
+++ b/src/main/java/net/minecraft/server/UserCache.java
@@ -51,6 +51,10 @@ public class UserCache {
@@ -5675,7 +5751,7 @@ index a038397028848edb4f43cd4f7262546666e32883..c68af75629f6f57928b219d7afb7dc68
class UserCacheEntry {
diff --git a/src/main/java/net/minecraft/server/Vec3D.java b/src/main/java/net/minecraft/server/Vec3D.java
index 3048ba008147f4647d633f59db812db9021a7c67..84858ba3923845a630d4886ecbd001c60d46131e 100644
index 3048ba008..84858ba39 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;
@@ -5709,7 +5785,7 @@ index 3048ba008147f4647d633f59db812db9021a7c67..84858ba3923845a630d4886ecbd001c6
return this.x * this.x + this.y * this.y + this.z * this.z;
}
diff --git a/src/main/java/net/minecraft/server/VillagePlace.java b/src/main/java/net/minecraft/server/VillagePlace.java
index 303f6b0953ff3c29bd31ec5e02386a92b11d114a..c1e149f204d5676091bb854dbacc564616894e4b 100644
index 303f6b095..c1e149f20 100644
--- a/src/main/java/net/minecraft/server/VillagePlace.java
+++ b/src/main/java/net/minecraft/server/VillagePlace.java
@@ -155,7 +155,7 @@ public class VillagePlace extends RegionFileSection<VillagePlaceSection> {
@@ -5722,7 +5798,7 @@ index 303f6b0953ff3c29bd31ec5e02386a92b11d114a..c1e149f204d5676091bb854dbacc5646
}
// Paper end
diff --git a/src/main/java/net/minecraft/server/VoxelShape.java b/src/main/java/net/minecraft/server/VoxelShape.java
index c2b8c9820663f95f58f0c3a62cd9ec99c835a82f..3a98e242e06ad3a936b9c3a110c66238d172323e 100644
index c2b8c9820..3a98e242e 100644
--- a/src/main/java/net/minecraft/server/VoxelShape.java
+++ b/src/main/java/net/minecraft/server/VoxelShape.java
@@ -8,11 +8,11 @@ import javax.annotation.Nullable;
@@ -5761,7 +5837,7 @@ index c2b8c9820663f95f58f0c3a62cd9ec99c835a82f..3a98e242e06ad3a936b9c3a110c66238
List<AxisAlignedBB> list = Lists.newArrayList();
diff --git a/src/main/java/net/minecraft/server/VoxelShapeArray.java b/src/main/java/net/minecraft/server/VoxelShapeArray.java
index caf297fe977942ca68fdb963d97dd9fc0f78d883..8d68c783f6d8c1dae62c0d3ed34e305785169579 100644
index caf297fe9..8d68c783f 100644
--- a/src/main/java/net/minecraft/server/VoxelShapeArray.java
+++ b/src/main/java/net/minecraft/server/VoxelShapeArray.java
@@ -3,6 +3,7 @@ package net.minecraft.server;
@@ -5868,7 +5944,7 @@ index caf297fe977942ca68fdb963d97dd9fc0f78d883..8d68c783f6d8c1dae62c0d3ed34e3057
+ // Tuinity end - optimise multi-aabb shapes
}
diff --git a/src/main/java/net/minecraft/server/VoxelShapes.java b/src/main/java/net/minecraft/server/VoxelShapes.java
index 1fa7061f7adb539b6786fa11a0090f2c188ba9f2..52aee91d2dc7c2459db45183b7f3dccf326bd515 100644
index 1fa7061f7..52aee91d2 100644
--- a/src/main/java/net/minecraft/server/VoxelShapes.java
+++ b/src/main/java/net/minecraft/server/VoxelShapes.java
@@ -17,18 +17,81 @@ public final class VoxelShapes {
@@ -5995,7 +6071,7 @@ index 1fa7061f7adb539b6786fa11a0090f2c188ba9f2..52aee91d2dc7c2459db45183b7f3dccf
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 5f81997db78c989e942351e80a0d2558f4b90fcd..4a956f36812f36ea9898cb9e0c231ddb5eaa12cd 100644
index 5f81997db..4a956f368 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 {
@@ -6117,7 +6193,7 @@ index 5f81997db78c989e942351e80a0d2558f4b90fcd..4a956f36812f36ea9898cb9e0c231ddb
int j = MathHelper.floor((axisalignedbb.maxX + 2.0D) / 16.0D);
int k = MathHelper.floor((axisalignedbb.minZ - 2.0D) / 16.0D);
diff --git a/src/main/java/net/minecraft/server/WorldBorder.java b/src/main/java/net/minecraft/server/WorldBorder.java
index b651eb87bb23deeb2a3f4a1c626ddde9b11a7b9e..5cba3b0e613bb6c016c4441ebb931be9dba8db4e 100644
index b651eb87b..5cba3b0e6 100644
--- a/src/main/java/net/minecraft/server/WorldBorder.java
+++ b/src/main/java/net/minecraft/server/WorldBorder.java
@@ -47,11 +47,43 @@ public class WorldBorder {
@@ -6189,7 +6265,7 @@ index b651eb87bb23deeb2a3f4a1c626ddde9b11a7b9e..5cba3b0e613bb6c016c4441ebb931be9
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 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ead4d96c02 100644
index 5ee9d3009..a7a63bb06 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -55,7 +55,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -6679,7 +6755,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
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
@@ -487,14 +924,13 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -487,13 +924,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
this.tickingEntities = true;
@@ -6688,8 +6764,6 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
timings.entityTick.startTiming(); // Spigot
- TimingHistory.entityTicks += this.entitiesById.size(); // Paper
+ // Tuinity - fix erroneous entity count reporting
while (objectiterator.hasNext()) {
- Entry<Entity> entry = (Entry) objectiterator.next();
- Entity entity = (Entity) entry.getValue();
@@ -6697,7 +6771,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
Entity entity1 = entity.getVehicle();
/* CraftBukkit start - We prevent spawning in general, so this butchering is not needed
@@ -530,7 +966,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -529,7 +965,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
gameprofilerfiller.enter("remove");
if (entity.dead) {
this.removeEntityFromChunk(entity);
@@ -6706,7 +6780,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
this.unregisterEntity(entity);
}
@@ -538,6 +974,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -537,6 +973,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
timings.entityTick.stopTiming(); // Spigot
@@ -6714,7 +6788,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
this.tickingEntities = false;
// Paper start
for (java.lang.Runnable run : this.afterEntityTickingTasks) {
@@ -549,7 +986,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -548,7 +985,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
this.afterEntityTickingTasks.clear();
// Paper end
@@ -6723,7 +6797,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
Entity entity2;
@@ -559,7 +996,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -558,7 +995,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
timings.tickEntities.stopTiming(); // Spigot
@@ -6732,7 +6806,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
this.tickBlockEntities();
}
@@ -803,7 +1240,26 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -802,7 +1239,26 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
@@ -6759,7 +6833,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
if (!(entity instanceof EntityHuman) && !this.getChunkProvider().a(entity)) {
this.chunkCheck(entity);
} else {
@@ -849,6 +1305,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -848,6 +1304,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
} // Paper - timings
}
@@ -6771,7 +6845,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
}
public void a(Entity entity, Entity entity1) {
@@ -1225,7 +1686,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1224,7 +1685,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
Entity entity = (Entity) iterator.next();
if (!(entity instanceof EntityPlayer)) {
@@ -6780,7 +6854,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
throw (IllegalStateException) SystemUtils.c(new IllegalStateException("Removing entity while ticking!"));
}
@@ -1253,6 +1714,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1252,6 +1713,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
public void unregisterEntity(Entity entity) {
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot
@@ -6788,7 +6862,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
// 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
@@ -1319,12 +1781,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1318,12 +1780,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
this.getScoreboard().a(entity);
// CraftBukkit start - SPIGOT-5278
if (entity instanceof EntityDrowned) {
@@ -6808,7 +6882,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
}
new com.destroystokyo.paper.event.entity.EntityRemoveFromWorldEvent(entity.getBukkitEntity()).callEvent(); // Paper - fire while valid
entity.valid = false; // CraftBukkit
@@ -1340,7 +1806,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1339,7 +1805,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
return;
}
// Paper end
@@ -6817,7 +6891,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
if (!entity.isQueuedForRegister) { // Paper
this.entitiesToAdd.add(entity);
entity.isQueuedForRegister = true; // Paper
@@ -1348,6 +1814,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1347,6 +1813,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
} else {
entity.isQueuedForRegister = false; // Paper
this.entitiesById.put(entity.getId(), entity);
@@ -6825,7 +6899,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
if (entity instanceof EntityEnderDragon) {
EntityComplexPart[] aentitycomplexpart = ((EntityEnderDragon) entity).eK();
int i = aentitycomplexpart.length;
@@ -1356,6 +1823,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1355,6 +1822,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
EntityComplexPart entitycomplexpart = aentitycomplexpart[j];
this.entitiesById.put(entitycomplexpart.getId(), entitycomplexpart);
@@ -6833,7 +6907,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
}
}
@@ -1380,12 +1848,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1379,12 +1847,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) {
@@ -6853,7 +6927,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
}
entity.valid = true; // CraftBukkit
this.getChunkProvider().addEntity(entity); // Paper - from above to be below valid=true
@@ -1401,7 +1873,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1400,7 +1872,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
}
public void removeEntity(Entity entity) {
@@ -6862,7 +6936,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
throw (IllegalStateException) SystemUtils.c(new IllegalStateException("Removing entity while ticking!"));
} else {
this.removeEntityFromChunk(entity);
@@ -1503,7 +1975,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1502,7 +1974,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) {
boolean wasTicking = this.tickingEntities; this.tickingEntities = true; // Paper
@@ -6873,7 +6947,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
while (iterator.hasNext()) {
NavigationAbstract navigationabstract = (NavigationAbstract) iterator.next();
@@ -1512,6 +1986,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
@@ -1511,6 +1985,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
navigationabstract.b(blockposition);
}
}
@@ -6884,7 +6958,7 @@ index 3a740f5669876271a3f13c64e28eb6f2cb033b4c..bc3a7d1513ebdad0c11133855a8a40ea
this.tickingEntities = wasTicking; // Paper
}
diff --git a/src/main/java/net/minecraft/server/WorldUpgrader.java b/src/main/java/net/minecraft/server/WorldUpgrader.java
index 5ccdc0b87b922724c3dd3085860c55d4959ca0b4..888dae2d5ee8a71e83dd24e5f3c6bc8513016f9d 100644
index 5ccdc0b87..888dae2d5 100644
--- a/src/main/java/net/minecraft/server/WorldUpgrader.java
+++ b/src/main/java/net/minecraft/server/WorldUpgrader.java
@@ -218,7 +218,7 @@ public class WorldUpgrader {
@@ -6897,7 +6971,7 @@ index 5ccdc0b87b922724c3dd3085860c55d4959ca0b4..888dae2d5ee8a71e83dd24e5f3c6bc85
try {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java b/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
index 4ec53a54e39cccf29cbe4f21e094bf997ba4389c..31c81b4b52f79892de5c1315358ec161c5a0c204 100644
index 4ec53a54e..31c81b4b5 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftChunkSnapshot.java
@@ -77,7 +77,7 @@ public class CraftChunkSnapshot implements ChunkSnapshot {
@@ -6910,7 +6984,7 @@ index 4ec53a54e39cccf29cbe4f21e094bf997ba4389c..31c81b4b52f79892de5c1315358ec161
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index d8103ab0d542ced4f30b88ceb4fc4c3eedd5d9a0..ba42171096b1d0be518c43f6eacc85ead935a941 100644
index d8103ab0d..ba4217109 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -231,7 +231,7 @@ import javax.annotation.Nullable; // Paper
@@ -6966,7 +7040,7 @@ index d8103ab0d542ced4f30b88ceb4fc4c3eedd5d9a0..ba42171096b1d0be518c43f6eacc85ea
public void restart() {
org.spigotmc.RestartCommand.restart();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 65b36a17418ae64b6166704b3d0ecf97df1e9445..39decca9c538dd4a341d34049cf8bbecb81925e8 100644
index 65b36a174..39decca9c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -336,6 +336,14 @@ public class CraftWorld implements World {
@@ -7018,7 +7092,7 @@ index 65b36a17418ae64b6166704b3d0ecf97df1e9445..39decca9c538dd4a341d34049cf8bbec
}, MinecraftServer.getServer());
}
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index bac292e6d8e6cdb239d8accd21eaa25022f5640f..b4e65963efdf4f192908c8433bdeca7c549708a2 100644
index bac292e6d..b4e65963e 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 {
@@ -7045,7 +7119,7 @@ index bac292e6d8e6cdb239d8accd21eaa25022f5640f..b4e65963efdf4f192908c8433bdeca7c
//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 9b0e868f006a34b47ef9a48c7ea844be8122c291..ee53060b112afe0f84c2be41cad2f498e3d410a0 100644
index 9b0e868f0..ee53060b1 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
@@ -207,7 +207,7 @@ public class CraftBlock implements Block {
@@ -7091,7 +7165,7 @@ index 9b0e868f006a34b47ef9a48c7ea844be8122c291..ee53060b112afe0f84c2be41cad2f498
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
index 11aa2dc18c2fa76c66d89f650636eb623662717b..c51c43573faa33ca5a10e76cb0f6aa9bc301f118 100644
index 11aa2dc18..c51c43573 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
@@ -136,7 +136,7 @@ public class CraftBlockState implements BlockState {
@@ -7104,7 +7178,7 @@ index 11aa2dc18c2fa76c66d89f650636eb623662717b..c51c43573faa33ca5a10e76cb0f6aa9b
public void setFlag(int flag) {
diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
index bbded5671e986be34ebe3100e4c10ee0d5741764..980890153294c04502108d6852e347ca8b1ac200 100644
index bbded5671..980890153 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
@@ -44,7 +44,7 @@ public class CraftBlockData implements BlockData {
@@ -7117,7 +7191,7 @@ index bbded5671e986be34ebe3100e4c10ee0d5741764..980890153294c04502108d6852e347ca
public IBlockData getState() {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index d1df4e5799de4bf0a1fcc6940e2498374cd3db9d..6f18a789805163de63561569e84d9fa1b3dabb61 100644
index d1df4e579..6f18a7898 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -495,27 +495,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -7188,7 +7262,7 @@ index d1df4e5799de4bf0a1fcc6940e2498374cd3db9d..6f18a789805163de63561569e84d9fa1
public boolean teleport(org.bukkit.entity.Entity destination) {
return teleport(destination.getLocation());
diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java b/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java
index 948a59217cca0f8dfa9d3befb61e679a67bf29bc..ab43c97e8fdcb977ed6349e4163e8ba115588adf 100644
index 948a59217..ab43c97e8 100644
--- a/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java
+++ b/src/main/java/org/bukkit/craftbukkit/generator/CraftChunkData.java
@@ -73,7 +73,7 @@ public final class CraftChunkData implements ChunkGenerator.ChunkData {
@@ -7201,7 +7275,7 @@ index 948a59217cca0f8dfa9d3befb61e679a67bf29bc..ab43c97e8fdcb977ed6349e4163e8ba1
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
index ca2be30609159e6ca98b363d75cbc3ac550bca31..2c5701376506f07a748e7ac75c6870320585bb4d 100644
index ca2be3060..2c5701376 100644
--- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
+++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java
@@ -100,9 +100,18 @@ public final class CraftScoreboardManager implements ScoreboardManager {
@@ -7224,7 +7298,7 @@ index ca2be30609159e6ca98b363d75cbc3ac550bca31..2c5701376506f07a748e7ac75c687032
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java b/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java
index f72c13bedaa6fa45e26f5dcad564835bdd4af61f..50f855b931dba60754fff9c7cdf5e0e744f00fdd 100644
index f72c13bed..50f855b93 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java
@@ -119,6 +119,32 @@ public class UnsafeList<E> extends AbstractList<E> implements List<E>, RandomAcc
@@ -7261,7 +7335,7 @@ index f72c13bedaa6fa45e26f5dcad564835bdd4af61f..50f855b931dba60754fff9c7cdf5e0e7
public void clear() {
// Create new array to reset memory usage to initial capacity
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
index 674096cab190d62622f9947853b056f57d43a2a5..001b1e5197eaa51bfff9031aa6c69876c9a47960 100644
index 674096cab..001b1e519 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
@@ -11,7 +11,7 @@ public final class Versioning {
@@ -7274,7 +7348,7 @@ index 674096cab190d62622f9947853b056f57d43a2a5..001b1e5197eaa51bfff9031aa6c69876
if (stream != null) {
diff --git a/src/main/java/org/spigotmc/AsyncCatcher.java b/src/main/java/org/spigotmc/AsyncCatcher.java
index 9f7d2ef932ab41cef5d3d0736d20a7c7e4a2c888..c3ac1a46c3e06bfe06ad9ff9f4ec49c055a790b0 100644
index 9f7d2ef93..c3ac1a46c 100644
--- a/src/main/java/org/spigotmc/AsyncCatcher.java
+++ b/src/main/java/org/spigotmc/AsyncCatcher.java
@@ -10,7 +10,7 @@ public class AsyncCatcher
@@ -7287,7 +7361,7 @@ index 9f7d2ef932ab41cef5d3d0736d20a7c7e4a2c888..c3ac1a46c3e06bfe06ad9ff9f4ec49c0
throw new IllegalStateException( "Asynchronous " + reason + "!" );
}
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
index 513c1041c34ebb3ac1775674a3f4526693759c08..4d310908489953d6d061b2358f614142edacb62e 100644
index 513c1041c..4d3109084 100644
--- a/src/main/java/org/spigotmc/WatchdogThread.java
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
@@ -61,6 +61,84 @@ public class WatchdogThread extends Thread