From 41f23a7a1514be9c5a1bce848ca9b287b8a12514 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Thu, 10 Dec 2020 22:11:33 -0600 Subject: [PATCH] Updated Upstream (Tuinity) Upstream has released updates that appear to apply and compile correctly Tuinity Changes: 0fbcf78 Fix small issue with handling of step height in colliding 0ae7e67 Do not load chunks during a crash report 8c5d945 Improve abnormal server shutdown process cc34294 Copy passenger list in enderTeleportTo 9a48d49 Fix skylight propagation issue on the highest non-empty section border 5d722a0 Fix incorrect handling of special colliding blocks in chunk sections --- .../server/0001-Tuinity-Server-Changes.patch | 402 ++++++++++++------ patches/server/0003-Purpur-config-files.patch | 8 +- ...0080-Add-5-second-tps-average-in-tps.patch | 8 +- 3 files changed, 271 insertions(+), 147 deletions(-) diff --git a/patches/server/0001-Tuinity-Server-Changes.patch b/patches/server/0001-Tuinity-Server-Changes.patch index 577596d4b..e019d42a3 100644 --- a/patches/server/0001-Tuinity-Server-Changes.patch +++ b/patches/server/0001-Tuinity-Server-Changes.patch @@ -342,6 +342,26 @@ Do not retain playerchunkmap instance in light thread factory The executor returned is finalizable and of course that causes issues. +Do not load chunks during a crash report + +This causes deadlocks in some cases when generating +crash reports. + +Fixes https://github.com/Spottedleaf/Tuinity/issues/215 + +Improve abnormal server shutdown process + +- When we're trying to kill the main thread from watchdog, +step up the stop() spamming after 15s to really kill the main thread. + +- Do not wait for window disposing when disposing of the server +gui. It looks like during sigint shutdown there can be some +deadlock between the server thread and awt shutdown thread here. + +Copy passenger list in enderTeleportTo + +Fixes https://github.com/Spottedleaf/Tuinity/issues/208 + Rewrite the light engine The standard vanilla light engine is plagued by @@ -400,7 +420,7 @@ This patch also prevents the saving/unloading of POI data when world saving is disabled. diff --git a/pom.xml b/pom.xml -index 80f1652913..78c2a8bbcc 100644 +index 80f165291..78c2a8bbc 100644 --- a/pom.xml +++ b/pom.xml @@ -1,11 +1,11 @@ @@ -500,7 +520,7 @@ index 80f1652913..78c2a8bbcc 100644 diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java -index 884b59d478..68ab5ccb2f 100644 +index 884b59d47..68ab5ccb2 100644 --- a/src/main/java/co/aikar/timings/MinecraftTimings.java +++ b/src/main/java/co/aikar/timings/MinecraftTimings.java @@ -43,6 +43,9 @@ public final class MinecraftTimings { @@ -514,7 +534,7 @@ index 884b59d478..68ab5ccb2f 100644 private MinecraftTimings() {} diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java -index e33e889c29..5dfa065883 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 { @@ -527,8 +547,30 @@ index e33e889c29..5dfa065883 100644 )); new TimingsExport(listeners, parent, history).start(); +diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java +index 03c95b30d..ac7f390cf 100644 +--- a/src/main/java/com/destroystokyo/paper/Metrics.java ++++ b/src/main/java/com/destroystokyo/paper/Metrics.java +@@ -585,7 +585,7 @@ public class Metrics { + boolean logFailedRequests = config.getBoolean("logFailedRequests", false); + // Only start Metrics, if it's enabled in the config + if (config.getBoolean("enabled", true)) { +- Metrics metrics = new Metrics("Paper", serverUUID, logFailedRequests, Bukkit.getLogger()); ++ Metrics metrics = new Metrics("Tuinity", serverUUID, logFailedRequests, Bukkit.getLogger()); // Tuinity - we have our own bstats page + + metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { + String minecraftVersion = Bukkit.getVersion(); +@@ -595,7 +595,7 @@ public class Metrics { + + metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size())); + metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() || PaperConfig.isProxyOnlineMode() ? "online" : "offline")); +- metrics.addCustomChart(new Metrics.SimplePie("paper_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown")); ++ metrics.addCustomChart(new Metrics.SimplePie("tuinity_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown")); // Tuinity - we have our own bstats page + + metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { + Map> map = new HashMap<>(); diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java -index ad6b15f401..c9e3a0c874 100644 +index ad6b15f40..c9e3a0c87 100644 --- a/src/main/java/com/destroystokyo/paper/PaperCommand.java +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java @@ -225,8 +225,20 @@ public class PaperCommand extends Command { @@ -562,7 +604,7 @@ index ad6b15f401..c9e3a0c874 100644 } diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index 49a38c6608..255bbd6e48 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 { @@ -593,7 +635,7 @@ index 49a38c6608..255bbd6e48 100644 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 e7624948ea..77df688880 100644 +index e7624948e..77df68888 100644 --- a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java +++ b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java @@ -186,6 +186,7 @@ public final class PaperTickList extends TickListServer { // extend to avo @@ -677,7 +719,7 @@ index e7624948ea..77df688880 100644 int ret = 0; diff --git a/src/main/java/com/mojang/brigadier/CommandDispatcher.java b/src/main/java/com/mojang/brigadier/CommandDispatcher.java -index 103576715e..e8fdbe7b8d 100644 +index 103576715..e8fdbe7b8 100644 --- a/src/main/java/com/mojang/brigadier/CommandDispatcher.java +++ b/src/main/java/com/mojang/brigadier/CommandDispatcher.java @@ -590,10 +590,11 @@ public class CommandDispatcher { @@ -694,7 +736,7 @@ index 103576715e..e8fdbe7b8d 100644 } futures[i++] = future; diff --git a/src/main/java/com/mojang/brigadier/arguments/BoolArgumentType.java b/src/main/java/com/mojang/brigadier/arguments/BoolArgumentType.java -index cb993ca102..849686f7b2 100644 +index cb993ca10..849686f7b 100644 --- a/src/main/java/com/mojang/brigadier/arguments/BoolArgumentType.java +++ b/src/main/java/com/mojang/brigadier/arguments/BoolArgumentType.java @@ -34,10 +34,10 @@ public class BoolArgumentType implements ArgumentType { @@ -711,7 +753,7 @@ index cb993ca102..849686f7b2 100644 } return builder.buildFuture(); diff --git a/src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java b/src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java -index bc0024adb8..0343f6663c 100644 +index bc0024adb..0343f6663 100644 --- a/src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java +++ b/src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java @@ -14,9 +14,16 @@ public class SuggestionsBuilder { @@ -732,7 +774,7 @@ index bc0024adb8..0343f6663c 100644 this.start = start; this.remaining = input.substring(start); diff --git a/src/main/java/com/mojang/brigadier/tree/LiteralCommandNode.java b/src/main/java/com/mojang/brigadier/tree/LiteralCommandNode.java -index 7720578796..e5db29d4ca 100644 +index 772057879..e5db29d4c 100644 --- a/src/main/java/com/mojang/brigadier/tree/LiteralCommandNode.java +++ b/src/main/java/com/mojang/brigadier/tree/LiteralCommandNode.java @@ -20,11 +20,11 @@ import java.util.concurrent.CompletableFuture; @@ -760,7 +802,7 @@ index 7720578796..e5db29d4ca 100644 return Suggestions.empty(); diff --git a/src/main/java/com/tuinity/tuinity/chunk/ChunkEntitiesByClass.java b/src/main/java/com/tuinity/tuinity/chunk/ChunkEntitiesByClass.java new file mode 100644 -index 0000000000..37428f4b9a +index 000000000..37428f4b9 --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/chunk/ChunkEntitiesByClass.java @@ -0,0 +1,186 @@ @@ -952,7 +994,7 @@ index 0000000000..37428f4b9a +} 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 0000000000..cae06962d8 +index 000000000..cae06962d --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/chunk/SingleThreadChunkRegionManager.java @@ -0,0 +1,491 @@ @@ -1450,7 +1492,7 @@ index 0000000000..cae06962d8 \ No newline at end of file diff --git a/src/main/java/com/tuinity/tuinity/chunk/light/BlockStarLightEngine.java b/src/main/java/com/tuinity/tuinity/chunk/light/BlockStarLightEngine.java new file mode 100644 -index 0000000000..e7df9dc4b8 +index 000000000..e7df9dc4b --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/chunk/light/BlockStarLightEngine.java @@ -0,0 +1,155 @@ @@ -1611,7 +1653,7 @@ index 0000000000..e7df9dc4b8 +} diff --git a/src/main/java/com/tuinity/tuinity/chunk/light/SWMRNibbleArray.java b/src/main/java/com/tuinity/tuinity/chunk/light/SWMRNibbleArray.java new file mode 100644 -index 0000000000..6cae16cc32 +index 000000000..6cae16cc3 --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/chunk/light/SWMRNibbleArray.java @@ -0,0 +1,196 @@ @@ -1813,10 +1855,10 @@ index 0000000000..6cae16cc32 +} diff --git a/src/main/java/com/tuinity/tuinity/chunk/light/SkyStarLightEngine.java b/src/main/java/com/tuinity/tuinity/chunk/light/SkyStarLightEngine.java new file mode 100644 -index 0000000000..e780ae852a +index 000000000..055f2e1a4 --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/chunk/light/SkyStarLightEngine.java -@@ -0,0 +1,357 @@ +@@ -0,0 +1,365 @@ +package com.tuinity.tuinity.chunk.light; + +import net.minecraft.server.BlockPosition; @@ -2077,7 +2119,15 @@ index 0000000000..e780ae852a + final int startY = highestNonEmptySection << 4 | 15; + for (int currZ = minZ; currZ <= maxZ; ++currZ) { + for (int currX = minX; currX <= maxX; ++currX) { -+ this.tryPropagateSkylight(world, currX, startY, currZ); ++ final int end = this.tryPropagateSkylight(world, currX, startY, currZ); ++ if (end == startY) { ++ // we need to propagate this one ourselves. ++ this.increaseQueue[this.increaseQueueInitialLength++] = (currX + (currZ << 6) + (startY << (6 + 6)) + this.coordinateOffset) | ++ (15 << (6 + 6 + 9)) | // we know we're at full lit here ++ ((Direction.NEGATIVE_Y.ordinal()) << (6 + 6 + 9 + 4)); // no need to check upwards, we know it's 15. ++ // we know this block is air because the section is empty, so it's obviously not sidedly ++ // transparent. ++ } + } + } + } // else: apparently the chunk is empty @@ -2176,7 +2226,7 @@ index 0000000000..e780ae852a +} diff --git a/src/main/java/com/tuinity/tuinity/chunk/light/StarLightEngine.java b/src/main/java/com/tuinity/tuinity/chunk/light/StarLightEngine.java new file mode 100644 -index 0000000000..7fcbfa5c22 +index 000000000..7fcbfa5c2 --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/chunk/light/StarLightEngine.java @@ -0,0 +1,1014 @@ @@ -3196,7 +3246,7 @@ index 0000000000..7fcbfa5c22 +} diff --git a/src/main/java/com/tuinity/tuinity/chunk/light/ThreadedStarLightEngine.java b/src/main/java/com/tuinity/tuinity/chunk/light/ThreadedStarLightEngine.java new file mode 100644 -index 0000000000..767831d169 +index 000000000..767831d16 --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/chunk/light/ThreadedStarLightEngine.java @@ -0,0 +1,181 @@ @@ -3383,7 +3433,7 @@ index 0000000000..767831d169 +} 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 0000000000..42ce3b8021 +index 000000000..42ce3b802 --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/config/TuinityConfig.java @@ -0,0 +1,381 @@ @@ -3771,7 +3821,7 @@ index 0000000000..42ce3b8021 \ 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 0000000000..21e50c75e0 +index 000000000..21e50c75e --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/util/CachedLists.java @@ -0,0 +1,74 @@ @@ -3851,7 +3901,7 @@ index 0000000000..21e50c75e0 +} diff --git a/src/main/java/com/tuinity/tuinity/util/IntervalledCounter.java b/src/main/java/com/tuinity/tuinity/util/IntervalledCounter.java new file mode 100644 -index 0000000000..d2c7d2c792 +index 000000000..d2c7d2c79 --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/util/IntervalledCounter.java @@ -0,0 +1,100 @@ @@ -3957,7 +4007,7 @@ index 0000000000..d2c7d2c792 +} 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 0000000000..08ed243259 +index 000000000..08ed24325 --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/util/TickThread.java @@ -0,0 +1,41 @@ @@ -4005,7 +4055,7 @@ index 0000000000..08ed243259 \ 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 0000000000..be408aebbc +index 000000000..be408aebb --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/util/maplist/IteratorSafeOrderedReferenceSet.java @@ -0,0 +1,335 @@ @@ -4346,7 +4396,7 @@ index 0000000000..be408aebbc +} diff --git a/src/main/java/com/tuinity/tuinity/util/misc/Delayed26WayDistancePropagator3D.java b/src/main/java/com/tuinity/tuinity/util/misc/Delayed26WayDistancePropagator3D.java new file mode 100644 -index 0000000000..155d10994f +index 000000000..155d10994 --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/util/misc/Delayed26WayDistancePropagator3D.java @@ -0,0 +1,295 @@ @@ -4647,7 +4697,7 @@ index 0000000000..155d10994f +} diff --git a/src/main/java/com/tuinity/tuinity/util/misc/Delayed8WayDistancePropagator2D.java b/src/main/java/com/tuinity/tuinity/util/misc/Delayed8WayDistancePropagator2D.java new file mode 100644 -index 0000000000..606417a8ae +index 000000000..606417a8a --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/util/misc/Delayed8WayDistancePropagator2D.java @@ -0,0 +1,713 @@ @@ -5366,7 +5416,7 @@ index 0000000000..606417a8ae +} 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 0000000000..002abb3cbf +index 000000000..002abb3cb --- /dev/null +++ b/src/main/java/com/tuinity/tuinity/voxel/AABBVoxelShape.java @@ -0,0 +1,165 @@ @@ -5536,7 +5586,7 @@ index 0000000000..002abb3cbf + } +} diff --git a/src/main/java/net/minecraft/server/AxisAlignedBB.java b/src/main/java/net/minecraft/server/AxisAlignedBB.java -index ed9b2f9adf..9fbb77e70d 100644 +index ed9b2f9ad..9fbb77e70 100644 --- a/src/main/java/net/minecraft/server/AxisAlignedBB.java +++ b/src/main/java/net/minecraft/server/AxisAlignedBB.java @@ -13,6 +13,149 @@ public class AxisAlignedBB { @@ -5714,7 +5764,7 @@ index ed9b2f9adf..9fbb77e70d 100644 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 6b655b744d..e811295b4d 100644 +index 6b655b744..e811295b4 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 { @@ -5750,7 +5800,7 @@ index 6b655b744d..e811295b4d 100644 } diff --git a/src/main/java/net/minecraft/server/Behavior.java b/src/main/java/net/minecraft/server/Behavior.java -index 65af976527..0b9d469a92 100644 +index 65af97652..0b9d469a9 100644 --- a/src/main/java/net/minecraft/server/Behavior.java +++ b/src/main/java/net/minecraft/server/Behavior.java @@ -7,7 +7,7 @@ import java.util.Map.Entry; @@ -5763,7 +5813,7 @@ index 65af976527..0b9d469a92 100644 private final int d; private final int e; diff --git a/src/main/java/net/minecraft/server/BehaviorFindPosition.java b/src/main/java/net/minecraft/server/BehaviorFindPosition.java -index 63a761ebef..8d445e9c08 100644 +index 63a761ebe..8d445e9c0 100644 --- a/src/main/java/net/minecraft/server/BehaviorFindPosition.java +++ b/src/main/java/net/minecraft/server/BehaviorFindPosition.java @@ -55,6 +55,227 @@ public class BehaviorFindPosition extends Behavior { @@ -6013,7 +6063,7 @@ index 63a761ebef..8d445e9c08 100644 worldserver.broadcastEntityEffect(entitycreature, obyte); }); diff --git a/src/main/java/net/minecraft/server/BehaviorGate.java b/src/main/java/net/minecraft/server/BehaviorGate.java -index 46e9105812..fb967bc03f 100644 +index 46e910581..fb967bc03 100644 --- a/src/main/java/net/minecraft/server/BehaviorGate.java +++ b/src/main/java/net/minecraft/server/BehaviorGate.java @@ -12,7 +12,7 @@ public class BehaviorGate extends Behavior { @@ -6128,7 +6178,7 @@ index 46e9105812..fb967bc03f 100644 }; diff --git a/src/main/java/net/minecraft/server/BehaviorLookInteract.java b/src/main/java/net/minecraft/server/BehaviorLookInteract.java -index a33303c318..ce57e6a4ac 100644 +index a33303c31..ce57e6a4a 100644 --- a/src/main/java/net/minecraft/server/BehaviorLookInteract.java +++ b/src/main/java/net/minecraft/server/BehaviorLookInteract.java @@ -7,7 +7,7 @@ import java.util.function.Predicate; @@ -6200,7 +6250,7 @@ index a33303c318..ce57e6a4ac 100644 return this.b.equals(entityliving.getEntityType()) && this.d.test(entityliving); } diff --git a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java -index 1f334d6328..4d1ac4e6b6 100644 +index 1f334d632..4d1ac4e6b 100644 --- a/src/main/java/net/minecraft/server/BlockBase.java +++ b/src/main/java/net/minecraft/server/BlockBase.java @@ -295,21 +295,23 @@ public abstract class BlockBase { @@ -6375,7 +6425,7 @@ index 1f334d6328..4d1ac4e6b6 100644 protected final boolean c; private final boolean[] j; diff --git a/src/main/java/net/minecraft/server/BlockChest.java b/src/main/java/net/minecraft/server/BlockChest.java -index 12a0230448..9e5e6de52e 100644 +index 12a023044..9e5e6de52 100644 --- a/src/main/java/net/minecraft/server/BlockChest.java +++ b/src/main/java/net/minecraft/server/BlockChest.java @@ -195,7 +195,7 @@ public class BlockChest extends BlockChestAbstract implements I @@ -6388,7 +6438,7 @@ index 12a0230448..9e5e6de52e 100644 if (tileentity instanceof IInventory) { InventoryUtils.dropInventory(world, blockposition, (IInventory) tileentity); diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java -index 2d887af902..2291135eae 100644 +index 2d887af90..2291135ea 100644 --- a/src/main/java/net/minecraft/server/BlockPosition.java +++ b/src/main/java/net/minecraft/server/BlockPosition.java @@ -449,10 +449,10 @@ public class BlockPosition extends BaseBlockPosition { @@ -6485,7 +6535,7 @@ index 2d887af902..2291135eae 100644 @Override public BlockPosition immutableCopy() { diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index dcbae1c451..96bdb95800 100644 +index dcbae1c45..96bdb9580 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -91,6 +91,175 @@ public class Chunk implements IChunkAccess { @@ -6747,7 +6797,7 @@ index dcbae1c451..96bdb95800 100644 int j = MathHelper.floor((axisalignedbb.maxY + 2.0D) / 16.0D); diff --git a/src/main/java/net/minecraft/server/ChunkCache.java b/src/main/java/net/minecraft/server/ChunkCache.java -index 8eecdcde51..831aaffaa1 100644 +index 8eecdcde5..187a63934 100644 --- a/src/main/java/net/minecraft/server/ChunkCache.java +++ b/src/main/java/net/minecraft/server/ChunkCache.java @@ -1,5 +1,6 @@ @@ -6867,23 +6917,23 @@ index 8eecdcde51..831aaffaa1 100644 + int maxZIterate; + + boolean sectionHasSpecial = section.hasSpecialCollidingBlocks(); -+ if (sectionHasSpecial && currChunkX == minChunkX) { ++ if (!sectionHasSpecial && currChunkX == minChunkX) { + minXIterate = minX + 1; + } else { + minXIterate = minX; + } -+ if (sectionHasSpecial && currChunkX == maxChunkX) { ++ if (!sectionHasSpecial && currChunkX == maxChunkX) { + maxXIterate = maxX - 1; + } else { + maxXIterate = maxX; + } + -+ if (sectionHasSpecial && currChunkZ == minChunkZ) { ++ if (!sectionHasSpecial && currChunkZ == minChunkZ) { + minZIterate = minZ + 1; + } else { + minZIterate = minZ; + } -+ if (sectionHasSpecial && currChunkZ == maxChunkZ) { ++ if (!sectionHasSpecial && currChunkZ == maxChunkZ) { + maxZIterate = maxZ - 1; + } else { + maxZIterate = maxZ; @@ -6975,7 +7025,7 @@ index 8eecdcde51..831aaffaa1 100644 this.e = world; this.a = blockposition.getX() >> 4; diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java -index 3c7b225edb..f1c686810f 100644 +index 3c7b225ed..f1c686810 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 { @@ -7158,7 +7208,7 @@ index 3c7b225edb..f1c686810f 100644 for (java.util.Iterator>>> 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 6acb5f05a0..84429f12d0 100644 +index 6acb5f05a..84429f12d 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 @@ -7575,7 +7625,7 @@ index 6acb5f05a0..84429f12d0 100644 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 8e7da2c5f3..64dd95292f 100644 +index 8e7da2c5f..64dd95292 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 { @@ -7727,7 +7777,7 @@ index 8e7da2c5f3..64dd95292f 100644 BiomeStorage biomestorage = ichunkaccess.getBiomeIndex(); diff --git a/src/main/java/net/minecraft/server/ChunkSection.java b/src/main/java/net/minecraft/server/ChunkSection.java -index e52df8096e..ea943e44ab 100644 +index e52df8096..ea943e44a 100644 --- a/src/main/java/net/minecraft/server/ChunkSection.java +++ b/src/main/java/net/minecraft/server/ChunkSection.java @@ -11,10 +11,45 @@ public class ChunkSection { @@ -7816,7 +7866,7 @@ index e52df8096e..ea943e44ab 100644 if (!iblockdata.isAir()) { diff --git a/src/main/java/net/minecraft/server/ChunkStatus.java b/src/main/java/net/minecraft/server/ChunkStatus.java -index f6c9bdbf52..51ea295d66 100644 +index f6c9bdbf5..51ea295d6 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 { @@ -7838,7 +7888,7 @@ index f6c9bdbf52..51ea295d66 100644 } diff --git a/src/main/java/net/minecraft/server/DataBits.java b/src/main/java/net/minecraft/server/DataBits.java -index 26b48b5ffa..353b61aa57 100644 +index 26b48b5ff..353b61aa5 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 { @@ -7866,7 +7916,7 @@ index 26b48b5ffa..353b61aa57 100644 //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 95ef962868..73163b417a 100644 +index 95ef96286..73163b417 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 implements DataPaletteExpandable { @@ -7878,7 +7928,7 @@ 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 5504facd2e..fcba187bbd 100644 +index 5504facd2..ecff0657e 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -169,6 +169,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer @@ -7889,8 +7939,17 @@ index 5504facd2e..fcba187bbd 100644 this.setPVP(dedicatedserverproperties.pvp); this.setAllowFlight(dedicatedserverproperties.allowFlight); +@@ -357,7 +358,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer + } + + if (this.q != null) { +- this.q.b(); ++ //this.q.b(); // Tuinity - do not wait for AWT, causes deadlock with sigint handler (AWT shutdown will properly clear our resources anyways) + } + + if (this.remoteControlListener != null) { diff --git a/src/main/java/net/minecraft/server/EULA.java b/src/main/java/net/minecraft/server/EULA.java -index 550232cb38..229c3b0f0c 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 { @@ -7903,7 +7962,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 e44e5652c1..8fdfec3b8e 100644 +index e44e5652c..d93db1049 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 @@ -8169,7 +8228,7 @@ index e44e5652c1..8fdfec3b8e 100644 + Vec3D vec3d3 = Entity.performCollisions(new Vec3D(0.0, stepHeight, 0.0), currBoundingBox.expand(moveVector.x, 0.0, moveVector.z), potentialCollisions); + + if (vec3d3.y < stepHeight) { -+ Vec3D vec3d4 = Entity.performCollisions(new Vec3D(moveVector.x, 0.0D, moveVector.z), currBoundingBox.offset(vec3d3), potentialCollisions); ++ Vec3D vec3d4 = Entity.performCollisions(new Vec3D(moveVector.x, 0.0D, moveVector.z), currBoundingBox.offset(vec3d3), potentialCollisions).add(vec3d3); + + if (Entity.getXZSquared(vec3d4) > Entity.getXZSquared(vec3d2)) { + vec3d2 = vec3d4; @@ -8287,6 +8346,15 @@ index e44e5652c1..8fdfec3b8e 100644 return false; } +@@ -2842,7 +3074,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke + this.cp().forEach((entity) -> { + worldserver.chunkCheck(entity); + entity.az = true; +- Iterator iterator = entity.passengers.iterator(); ++ Iterator iterator = new java.util.ArrayList<>(entity.passengers).iterator(); // Tuinity - copy list to guard against CME + + while (iterator.hasNext()) { + Entity entity1 = (Entity) iterator.next(); @@ -3300,12 +3532,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return this.locBlock; } @@ -8315,7 +8383,7 @@ index e44e5652c1..8fdfec3b8e 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 957a351c3f..57166a543a 100644 +index 957a351c3..57166a543 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 { @@ -8328,7 +8396,7 @@ index 957a351c3f..57166a543a 100644 this.setPersistent(); } diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index dcc5b098bf..7b32a1fb79 100644 +index dcc5b098b..7b32a1fb7 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -709,7 +709,13 @@ public abstract class EntityInsentient extends EntityLiving { @@ -8347,7 +8415,7 @@ index dcc5b098bf..7b32a1fb79 100644 if (entityhuman != null) { double d0 = entityhuman.h((Entity) this); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index b88bd19fc3..a0916a8836 100644 +index b88bd19fc..c57e7e1bc 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -2846,7 +2846,11 @@ public abstract class EntityLiving extends Entity { @@ -8357,7 +8425,7 @@ index b88bd19fc3..a0916a8836 100644 - List list = this.world.getEntities(this, this.getBoundingBox(), IEntitySelector.pushable(this, world.paperConfig.fixClimbingBypassingCrammingRule)); // Paper - fix climbing bypassing cramming rule + // Tuinity start - reduce memory allocation from collideNearby + List list = com.tuinity.tuinity.util.CachedLists.getTempGetEntitiesList(); -+ this.world.getEntities(this, this.getBoundingBox(), IEntitySelector.pushable(this, world.paperConfig.fixClimbingBypassingCrammingRule), list); ++ this.world.getEntities(this, this.getBoundingBox(), IEntitySelector.pushable(this, world.paperConfig.fixClimbingBypassingCrammingRule), list); // Paper - fix climbing bypassing cramming rule + try { + // Tuinity end - reduce memory allocation from collideNearby @@ -8374,7 +8442,7 @@ index b88bd19fc3..a0916a8836 100644 } diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java -index 976c44c8ee..27c368bf19 100644 +index 976c44c8e..27c368bf1 100644 --- a/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/src/main/java/net/minecraft/server/EntityPlayer.java @@ -525,6 +525,174 @@ public class EntityPlayer extends EntityHuman implements ICrafting { @@ -8553,7 +8621,7 @@ index 976c44c8ee..27c368bf19 100644 this.playerConnection.sendPacket(new PacketPlayOutUpdateHealth(this.getBukkitEntity().getScaledHealth(), this.foodData.getFoodLevel(), this.foodData.getSaturationLevel())); // CraftBukkit this.lastHealthSent = this.getHealth(); diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java -index 4efc40c01e..f322dccd83 100644 +index 4efc40c01..f322dccd8 100644 --- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java +++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java @@ -74,6 +74,7 @@ public class EntityTrackerEntry { @@ -8565,7 +8633,7 @@ index 4efc40c01e..f322dccd83 100644 if (!list.equals(this.p)) { diff --git a/src/main/java/net/minecraft/server/EnumDirection.java b/src/main/java/net/minecraft/server/EnumDirection.java -index 36aafc3b71..c9963c1989 100644 +index 36aafc3b7..c9963c198 100644 --- a/src/main/java/net/minecraft/server/EnumDirection.java +++ b/src/main/java/net/minecraft/server/EnumDirection.java @@ -160,8 +160,8 @@ public enum EnumDirection implements INamable { @@ -8580,7 +8648,7 @@ index 36aafc3b71..c9963c1989 100644 } diff --git a/src/main/java/net/minecraft/server/HeightMap.java b/src/main/java/net/minecraft/server/HeightMap.java -index 068b92c5c4..a43c4ca3ea 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 { @@ -8664,7 +8732,7 @@ index 068b92c5c4..a43c4ca3ea 100644 this.i = heightmap_use; this.j = predicate; diff --git a/src/main/java/net/minecraft/server/IBlockAccess.java b/src/main/java/net/minecraft/server/IBlockAccess.java -index c4a83448ed..5c3eb4fc7e 100644 +index c4a83448e..5c3eb4fc7 100644 --- a/src/main/java/net/minecraft/server/IBlockAccess.java +++ b/src/main/java/net/minecraft/server/IBlockAccess.java @@ -55,7 +55,7 @@ public interface IBlockAccess { @@ -8677,7 +8745,7 @@ index c4a83448ed..5c3eb4fc7e 100644 Vec3D vec3d1 = raytrace1.a(); VoxelShape voxelshape = raytrace1.a(iblockdata, this, blockposition); diff --git a/src/main/java/net/minecraft/server/IChunkAccess.java b/src/main/java/net/minecraft/server/IChunkAccess.java -index 180b6b58dc..46f9ca6647 100644 +index 180b6b58d..46f9ca664 100644 --- a/src/main/java/net/minecraft/server/IChunkAccess.java +++ b/src/main/java/net/minecraft/server/IChunkAccess.java @@ -24,6 +24,22 @@ public interface IChunkAccess extends IBlockAccess, IStructureAccess { @@ -8720,7 +8788,7 @@ index 180b6b58dc..46f9ca6647 100644 void b(boolean flag); diff --git a/src/main/java/net/minecraft/server/IChunkLoader.java b/src/main/java/net/minecraft/server/IChunkLoader.java -index 582a5695ba..5601088cd5 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 { @@ -8733,7 +8801,7 @@ index 582a5695ba..5601088cd5 100644 // Paper - nuke IOWorker } diff --git a/src/main/java/net/minecraft/server/ICollisionAccess.java b/src/main/java/net/minecraft/server/ICollisionAccess.java -index 25e54a1fad..cce0ac8a36 100644 +index 25e54a1fa..cce0ac8a3 100644 --- a/src/main/java/net/minecraft/server/ICollisionAccess.java +++ b/src/main/java/net/minecraft/server/ICollisionAccess.java @@ -28,6 +28,11 @@ public interface ICollisionAccess extends IBlockAccess { @@ -8761,7 +8829,7 @@ index 25e54a1fad..cce0ac8a36 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 2639c17b7f..cbaf18af10 100644 +index 2639c17b7..cbaf18af1 100644 --- a/src/main/java/net/minecraft/server/IEntityAccess.java +++ b/src/main/java/net/minecraft/server/IEntityAccess.java @@ -55,16 +55,26 @@ public interface IEntityAccess { @@ -8818,7 +8886,7 @@ index 2639c17b7f..cbaf18af10 100644 } diff --git a/src/main/java/net/minecraft/server/ILightAccess.java b/src/main/java/net/minecraft/server/ILightAccess.java -index be5384ee41..df28f7a6bf 100644 +index be5384ee4..df28f7a6b 100644 --- a/src/main/java/net/minecraft/server/ILightAccess.java +++ b/src/main/java/net/minecraft/server/ILightAccess.java @@ -4,9 +4,10 @@ import javax.annotation.Nullable; @@ -8835,7 +8903,7 @@ index be5384ee41..df28f7a6bf 100644 IBlockAccess getWorld(); diff --git a/src/main/java/net/minecraft/server/LightEngineGraphSection.java b/src/main/java/net/minecraft/server/LightEngineGraphSection.java -index 13d067f486..04afd7f285 100644 +index 13d067f48..04afd7f28 100644 --- a/src/main/java/net/minecraft/server/LightEngineGraphSection.java +++ b/src/main/java/net/minecraft/server/LightEngineGraphSection.java @@ -74,8 +74,10 @@ public abstract class LightEngineGraphSection extends LightEngineGraph { @@ -8850,7 +8918,7 @@ index 13d067f486..04afd7f285 100644 this.a(Long.MAX_VALUE, i, j, flag); } diff --git a/src/main/java/net/minecraft/server/LightEngineStorage.java b/src/main/java/net/minecraft/server/LightEngineStorage.java -index b98e60772b..e0bbfe1422 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> e @@ -8882,7 +8950,7 @@ index b98e60772b..e0bbfe1422 100644 while (objectiterator.hasNext()) { entry = (Entry) objectiterator.next(); diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java b/src/main/java/net/minecraft/server/LightEngineThreaded.java -index 2f9c97dd4e..d4902ed0d1 100644 +index 2f9c97dd4..d4902ed0d 100644 --- a/src/main/java/net/minecraft/server/LightEngineThreaded.java +++ b/src/main/java/net/minecraft/server/LightEngineThreaded.java @@ -2,6 +2,11 @@ package net.minecraft.server; @@ -9319,7 +9387,7 @@ index 2f9c97dd4e..d4902ed0d1 100644 public void a(int i) { diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java -index c61cd50df0..d987483255 100644 +index c61cd50df..d98748325 100644 --- a/src/main/java/net/minecraft/server/LoginListener.java +++ b/src/main/java/net/minecraft/server/LoginListener.java @@ -234,7 +234,7 @@ public class LoginListener implements PacketLoginInListener { @@ -9332,7 +9400,7 @@ index c61cd50df0..d987483255 100644 throw new IllegalStateException("Protocol error", cryptographyexception); } diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java -index ff74be1451..e79e773f22 100644 +index ff74be145..e79e773f2 100644 --- a/src/main/java/net/minecraft/server/MCUtil.java +++ b/src/main/java/net/minecraft/server/MCUtil.java @@ -38,6 +38,7 @@ import java.util.function.Consumer; @@ -9408,7 +9476,7 @@ index ff74be1451..e79e773f22 100644 public static void mergeSortedSets(final java.util.function.Consumer consumer, final java.util.Comparator comparator, final java.util.SortedSet...sets) { final ObjectRBTreeSet all = new ObjectRBTreeSet<>(comparator); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 172fc9ef9c..1ea1235a0a 100644 +index 172fc9ef9..2bb471086 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -156,6 +156,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant processQueue = new java.util.concurrent.ConcurrentLinkedQueue(); public int autosavePeriod; public boolean serverAutoSave = false; // Paper -@@ -952,6 +953,8 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant { @@ -10357,7 +10437,7 @@ index a22f0cccec..6cc4a035c8 100644 this.d &= ~(1 << k); if (nibblearray != null) { diff --git a/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java b/src/main/java/net/minecraft/server/PacketPlayOutMapChunk.java -index 5094a5d6fb..72fdbf1534 100644 +index 5094a5d6f..72fdbf153 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 { @@ -10502,7 +10582,7 @@ index 5094a5d6fb..72fdbf1534 100644 } } diff --git a/src/main/java/net/minecraft/server/PathType.java b/src/main/java/net/minecraft/server/PathType.java -index fb37f5b500..52a2d3db7d 100644 +index fb37f5b50..52a2d3db7 100644 --- a/src/main/java/net/minecraft/server/PathType.java +++ b/src/main/java/net/minecraft/server/PathType.java @@ -4,6 +4,8 @@ public enum PathType { @@ -10515,7 +10595,7 @@ index fb37f5b500..52a2d3db7d 100644 private PathType(float f) { diff --git a/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java b/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java -index 475c0764b9..9f48d476c0 100644 +index 475c0764b..9f48d476c 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java @@ -50,7 +50,7 @@ public class PathfinderGoalMoveThroughVillage extends PathfinderGoal { @@ -10537,7 +10617,7 @@ index 475c0764b9..9f48d476c0 100644 if (!optional.isPresent()) { return false; diff --git a/src/main/java/net/minecraft/server/PathfinderNormal.java b/src/main/java/net/minecraft/server/PathfinderNormal.java -index 74e81e1e4a..33804e6893 100644 +index 74e81e1e4..33804e689 100644 --- a/src/main/java/net/minecraft/server/PathfinderNormal.java +++ b/src/main/java/net/minecraft/server/PathfinderNormal.java @@ -421,6 +421,12 @@ public class PathfinderNormal extends PathfinderAbstract { @@ -10618,7 +10698,7 @@ index 74e81e1e4a..33804e6893 100644 Material material = iblockdata.getMaterial(); diff --git a/src/main/java/net/minecraft/server/PathfinderTargetCondition.java b/src/main/java/net/minecraft/server/PathfinderTargetCondition.java -index 253377c623..3ebe3d0dc4 100644 +index 253377c62..3ebe3d0dc 100644 --- a/src/main/java/net/minecraft/server/PathfinderTargetCondition.java +++ b/src/main/java/net/minecraft/server/PathfinderTargetCondition.java @@ -51,6 +51,7 @@ public class PathfinderTargetCondition { @@ -10630,7 +10710,7 @@ index 253377c623..3ebe3d0dc4 100644 if (entityliving == entityliving1) { return false; diff --git a/src/main/java/net/minecraft/server/PlayerChunk.java b/src/main/java/net/minecraft/server/PlayerChunk.java -index 11a67ca18f..35a569f61b 100644 +index 11a67ca18..35a569f61 100644 --- a/src/main/java/net/minecraft/server/PlayerChunk.java +++ b/src/main/java/net/minecraft/server/PlayerChunk.java @@ -56,6 +56,12 @@ public class PlayerChunk { @@ -10793,7 +10873,7 @@ index 11a67ca18f..35a569f61b 100644 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 6c399bcea0..d3bf356ea7 100644 +index 6c399bcea..d3bf356ea 100644 --- a/src/main/java/net/minecraft/server/PlayerChunkMap.java +++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java @@ -121,31 +121,28 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d { @@ -11142,7 +11222,7 @@ index 6c399bcea0..d3bf356ea7 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 0aac84e980..1c8b477f83 100644 +index 0aac84e98..1c8b477f8 100644 --- a/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java @@ -414,7 +414,9 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -11192,7 +11272,7 @@ index 0aac84e980..1c8b477f83 100644 } 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 7ea293f38d..e698dd2260 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 { @@ -11240,7 +11320,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 485b609bb5..614cfacb1e 100644 +index 485b609bb..614cfacb1 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 { @@ -11375,7 +11455,7 @@ index 485b609bb5..614cfacb1e 100644 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 5b0cd414ca..e2500821df 100644 +index 5b0cd414c..e2500821d 100644 --- a/src/main/java/net/minecraft/server/ProtoChunk.java +++ b/src/main/java/net/minecraft/server/ProtoChunk.java @@ -48,6 +48,31 @@ public class ProtoChunk implements IChunkAccess { @@ -11450,7 +11530,7 @@ index 5b0cd414ca..e2500821df 100644 } diff --git a/src/main/java/net/minecraft/server/ProtoChunkExtension.java b/src/main/java/net/minecraft/server/ProtoChunkExtension.java -index 300cbb8b01..60c57a2b50 100644 +index 300cbb8b0..60c57a2b5 100644 --- a/src/main/java/net/minecraft/server/ProtoChunkExtension.java +++ b/src/main/java/net/minecraft/server/ProtoChunkExtension.java @@ -8,7 +8,29 @@ import javax.annotation.Nullable; @@ -11485,7 +11565,7 @@ index 300cbb8b01..60c57a2b50 100644 public ProtoChunkExtension(Chunk chunk) { super(chunk.getPos(), ChunkConverter.a, chunk.world); // Paper - Anti-Xray - Add parameter diff --git a/src/main/java/net/minecraft/server/RegionFile.java b/src/main/java/net/minecraft/server/RegionFile.java -index 1751fb6934..1ffa213a81 100644 +index 1751fb693..1ffa213a8 100644 --- a/src/main/java/net/minecraft/server/RegionFile.java +++ b/src/main/java/net/minecraft/server/RegionFile.java @@ -5,6 +5,7 @@ import java.io.BufferedInputStream; @@ -12111,7 +12191,7 @@ index 1751fb6934..1ffa213a81 100644 ((java.nio.Buffer) this.g).position(0); this.dataFile.write(this.g, 0L); diff --git a/src/main/java/net/minecraft/server/RegionFileBitSet.java b/src/main/java/net/minecraft/server/RegionFileBitSet.java -index 1ebdf73cc9..cfa3ecb031 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; @@ -12159,7 +12239,7 @@ index 1ebdf73cc9..cfa3ecb031 100644 int j = 0; diff --git a/src/main/java/net/minecraft/server/RegionFileCache.java b/src/main/java/net/minecraft/server/RegionFileCache.java -index d64f7ad925..8b341c14e7 100644 +index d64f7ad92..8b341c14e 100644 --- a/src/main/java/net/minecraft/server/RegionFileCache.java +++ b/src/main/java/net/minecraft/server/RegionFileCache.java @@ -15,12 +15,43 @@ public class RegionFileCache implements AutoCloseable { // Paper - no final @@ -12251,7 +12331,7 @@ index d64f7ad925..8b341c14e7 100644 } diff --git a/src/main/java/net/minecraft/server/RegionFileCompression.java b/src/main/java/net/minecraft/server/RegionFileCompression.java -index 3382d678e6..3b7894256d 100644 +index 3382d678e..3b7894256 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; @@ -12291,7 +12371,7 @@ index 3382d678e6..3b7894256d 100644 return (InputStream) this.f.wrap(inputstream); } diff --git a/src/main/java/net/minecraft/server/RegionFileSection.java b/src/main/java/net/minecraft/server/RegionFileSection.java -index 04256a9510..79a11d17a2 100644 +index 04256a951..79a11d17a 100644 --- a/src/main/java/net/minecraft/server/RegionFileSection.java +++ b/src/main/java/net/minecraft/server/RegionFileSection.java @@ -25,8 +25,8 @@ public class RegionFileSection extends RegionFileCache implements AutoCloseab @@ -12367,7 +12447,7 @@ index 04256a9510..79a11d17a2 100644 if (!this.d.isEmpty()) { for (int i = 0; i < 16; ++i) { diff --git a/src/main/java/net/minecraft/server/SectionPosition.java b/src/main/java/net/minecraft/server/SectionPosition.java -index f95925f1c5..0bb3ad0bff 100644 +index f95925f1c..0bb3ad0bf 100644 --- a/src/main/java/net/minecraft/server/SectionPosition.java +++ b/src/main/java/net/minecraft/server/SectionPosition.java @@ -7,7 +7,7 @@ import java.util.stream.StreamSupport; @@ -12380,7 +12460,7 @@ index f95925f1c5..0bb3ad0bff 100644 } diff --git a/src/main/java/net/minecraft/server/SensorNearestBed.java b/src/main/java/net/minecraft/server/SensorNearestBed.java -index ad3609f2b8..d3d28f97f9 100644 +index ad3609f2b..d3d28f97f 100644 --- a/src/main/java/net/minecraft/server/SensorNearestBed.java +++ b/src/main/java/net/minecraft/server/SensorNearestBed.java @@ -40,15 +40,15 @@ public class SensorNearestBed extends Sensor { @@ -12403,7 +12483,7 @@ index ad3609f2b8..d3d28f97f9 100644 } else if (this.b < 5) { this.a.long2LongEntrySet().removeIf((entry) -> { diff --git a/src/main/java/net/minecraft/server/SensorNearestItems.java b/src/main/java/net/minecraft/server/SensorNearestItems.java -index 2e747158d4..1de170b9fe 100644 +index 2e747158d..1de170b9f 100644 --- a/src/main/java/net/minecraft/server/SensorNearestItems.java +++ b/src/main/java/net/minecraft/server/SensorNearestItems.java @@ -18,20 +18,23 @@ public class SensorNearestItems extends Sensor { @@ -12443,7 +12523,7 @@ index 2e747158d4..1de170b9fe 100644 behaviorcontroller.setMemory(MemoryModuleType.NEAREST_VISIBLE_WANTED_ITEM, optional); } diff --git a/src/main/java/net/minecraft/server/SensorNearestLivingEntities.java b/src/main/java/net/minecraft/server/SensorNearestLivingEntities.java -index f6568a54ab..4005df5ef3 100644 +index f6568a54a..4005df5ef 100644 --- a/src/main/java/net/minecraft/server/SensorNearestLivingEntities.java +++ b/src/main/java/net/minecraft/server/SensorNearestLivingEntities.java @@ -21,10 +21,17 @@ public class SensorNearestLivingEntities extends Sensor { @@ -12469,7 +12549,7 @@ index f6568a54ab..4005df5ef3 100644 @Override diff --git a/src/main/java/net/minecraft/server/SensorNearestPlayers.java b/src/main/java/net/minecraft/server/SensorNearestPlayers.java -index 904a6d5ac6..c8e43a9f2a 100644 +index 904a6d5ac..c8e43a9f2 100644 --- a/src/main/java/net/minecraft/server/SensorNearestPlayers.java +++ b/src/main/java/net/minecraft/server/SensorNearestPlayers.java @@ -19,22 +19,30 @@ public class SensorNearestPlayers extends Sensor { @@ -12519,7 +12599,7 @@ index 904a6d5ac6..c8e43a9f2a 100644 } } diff --git a/src/main/java/net/minecraft/server/SensorVillagerBabies.java b/src/main/java/net/minecraft/server/SensorVillagerBabies.java -index a367bbfde4..794b33a13b 100644 +index a367bbfde..794b33a13 100644 --- a/src/main/java/net/minecraft/server/SensorVillagerBabies.java +++ b/src/main/java/net/minecraft/server/SensorVillagerBabies.java @@ -17,11 +17,23 @@ public class SensorVillagerBabies extends Sensor { @@ -12549,7 +12629,7 @@ index a367bbfde4..794b33a13b 100644 private boolean b(EntityLiving entityliving) { diff --git a/src/main/java/net/minecraft/server/ServerConnection.java b/src/main/java/net/minecraft/server/ServerConnection.java -index 5f4dacf9c9..0668d383db 100644 +index 5f4dacf9c..0668d383d 100644 --- a/src/main/java/net/minecraft/server/ServerConnection.java +++ b/src/main/java/net/minecraft/server/ServerConnection.java @@ -74,6 +74,11 @@ public class ServerConnection { @@ -12565,7 +12645,7 @@ index 5f4dacf9c9..0668d383db 100644 protected void initChannel(Channel channel) throws Exception { try { diff --git a/src/main/java/net/minecraft/server/StructureManager.java b/src/main/java/net/minecraft/server/StructureManager.java -index f199368a6d..2598ae3710 100644 +index f199368a6..2598ae371 100644 --- a/src/main/java/net/minecraft/server/StructureManager.java +++ b/src/main/java/net/minecraft/server/StructureManager.java @@ -35,8 +35,13 @@ public class StructureManager { @@ -12598,7 +12678,7 @@ index f199368a6d..2598ae3710 100644 if (!flag) { return structurestart; diff --git a/src/main/java/net/minecraft/server/Ticket.java b/src/main/java/net/minecraft/server/Ticket.java -index e41cb8613e..c19ffb925a 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; @@ -12635,7 +12715,7 @@ index e41cb8613e..c19ffb925a 100644 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 5c789b25f1..3f942c6326 100644 +index 5c789b25f..3f942c632 100644 --- a/src/main/java/net/minecraft/server/TicketType.java +++ b/src/main/java/net/minecraft/server/TicketType.java @@ -26,8 +26,21 @@ public class TicketType { @@ -12662,7 +12742,7 @@ index 5c789b25f1..3f942c6326 100644 return new TicketType<>(s, comparator, 0L); } diff --git a/src/main/java/net/minecraft/server/UserCache.java b/src/main/java/net/minecraft/server/UserCache.java -index 2484293b12..1496c43fc9 100644 +index 2484293b1..1496c43fc 100644 --- a/src/main/java/net/minecraft/server/UserCache.java +++ b/src/main/java/net/minecraft/server/UserCache.java @@ -49,6 +49,11 @@ public class UserCache { @@ -12747,7 +12827,7 @@ index 2484293b12..1496c43fc9 100644 private static JsonElement a(UserCache.UserCacheEntry usercache_usercacheentry, DateFormat dateformat) { diff --git a/src/main/java/net/minecraft/server/Vec3D.java b/src/main/java/net/minecraft/server/Vec3D.java -index 7f05587d42..5af554870b 100644 +index 7f05587d4..5af554870 100644 --- a/src/main/java/net/minecraft/server/Vec3D.java +++ b/src/main/java/net/minecraft/server/Vec3D.java @@ -4,7 +4,7 @@ import java.util.EnumSet; @@ -12781,7 +12861,7 @@ index 7f05587d42..5af554870b 100644 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 b926cebd05..99778f80c0 100644 +index b926cebd0..99778f80c 100644 --- a/src/main/java/net/minecraft/server/VillagePlace.java +++ b/src/main/java/net/minecraft/server/VillagePlace.java @@ -4,6 +4,7 @@ import com.mojang.datafixers.DataFixer; @@ -13026,7 +13106,7 @@ index b926cebd05..99778f80c0 100644 return this.d; } diff --git a/src/main/java/net/minecraft/server/VillagePlaceRecord.java b/src/main/java/net/minecraft/server/VillagePlaceRecord.java -index 0b40c2f4da..6eaf9fc9cc 100644 +index 0b40c2f4d..6eaf9fc9c 100644 --- a/src/main/java/net/minecraft/server/VillagePlaceRecord.java +++ b/src/main/java/net/minecraft/server/VillagePlaceRecord.java @@ -6,7 +6,7 @@ import java.util.Objects; @@ -13039,7 +13119,7 @@ index 0b40c2f4da..6eaf9fc9cc 100644 private int c; private final Runnable d; diff --git a/src/main/java/net/minecraft/server/VillagePlaceSection.java b/src/main/java/net/minecraft/server/VillagePlaceSection.java -index 77c66bc995..f43bc1f7d6 100644 +index 77c66bc99..f43bc1f7d 100644 --- a/src/main/java/net/minecraft/server/VillagePlaceSection.java +++ b/src/main/java/net/minecraft/server/VillagePlaceSection.java @@ -23,12 +23,12 @@ public class VillagePlaceSection { @@ -13058,7 +13138,7 @@ index 77c66bc995..f43bc1f7d6 100644 return villageplacesection.e; }), VillagePlaceRecord.a(runnable).listOf().fieldOf("Records").forGetter((villageplacesection) -> { diff --git a/src/main/java/net/minecraft/server/VoxelShape.java b/src/main/java/net/minecraft/server/VoxelShape.java -index eb926b74e1..e3b72922e2 100644 +index eb926b74e..e3b72922e 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; @@ -13102,7 +13182,7 @@ index eb926b74e1..e3b72922e2 100644 List list = Lists.newArrayList(); diff --git a/src/main/java/net/minecraft/server/VoxelShapeArray.java b/src/main/java/net/minecraft/server/VoxelShapeArray.java -index 3c29cb1452..c14b7bd63e 100644 +index 3c29cb145..c14b7bd63 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; @@ -13223,7 +13303,7 @@ index 3c29cb1452..c14b7bd63e 100644 + // Tuinity end - optimise multi-aabb shapes } diff --git a/src/main/java/net/minecraft/server/VoxelShapeSpliterator.java b/src/main/java/net/minecraft/server/VoxelShapeSpliterator.java -index e841611bb7..259605daab 100644 +index e841611bb..259605daa 100644 --- a/src/main/java/net/minecraft/server/VoxelShapeSpliterator.java +++ b/src/main/java/net/minecraft/server/VoxelShapeSpliterator.java @@ -91,7 +91,7 @@ public class VoxelShapeSpliterator extends AbstractSpliterator { @@ -13236,7 +13316,7 @@ index e841611bb7..259605daab 100644 } diff --git a/src/main/java/net/minecraft/server/VoxelShapes.java b/src/main/java/net/minecraft/server/VoxelShapes.java -index e21c747b6c..636bbbc424 100644 +index e21c747b6..636bbbc42 100644 --- a/src/main/java/net/minecraft/server/VoxelShapes.java +++ b/src/main/java/net/minecraft/server/VoxelShapes.java @@ -17,18 +17,101 @@ public final class VoxelShapes { @@ -13429,7 +13509,7 @@ index e21c747b6c..636bbbc424 100644 @VisibleForTesting diff --git a/src/main/java/net/minecraft/server/WeightedList.java b/src/main/java/net/minecraft/server/WeightedList.java -index 5d9d58411f..f0fdfd6891 100644 +index 5d9d58411..f0fdfd689 100644 --- a/src/main/java/net/minecraft/server/WeightedList.java +++ b/src/main/java/net/minecraft/server/WeightedList.java @@ -14,7 +14,7 @@ import java.util.stream.Stream; @@ -13451,7 +13531,7 @@ index 5d9d58411f..f0fdfd6891 100644 private double c; diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java -index 9ed21f434c..59abca0fd2 100644 +index 9ed21f434..59abca0fd 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 { @@ -13715,7 +13795,7 @@ index 9ed21f434c..59abca0fd2 100644 public abstract Entity getEntity(int i); diff --git a/src/main/java/net/minecraft/server/WorldBorder.java b/src/main/java/net/minecraft/server/WorldBorder.java -index f011869880..0d10d317cd 100644 +index f01186988..0d10d317c 100644 --- a/src/main/java/net/minecraft/server/WorldBorder.java +++ b/src/main/java/net/minecraft/server/WorldBorder.java @@ -47,11 +47,59 @@ public class WorldBorder { @@ -13802,7 +13882,7 @@ index f011869880..0d10d317cd 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 5b0b6edfa7..bb310c7451 100644 +index 5b0b6edfa..800471d45 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -55,12 +55,13 @@ import org.bukkit.event.server.MapInitializeEvent; @@ -14077,23 +14157,23 @@ index 5b0b6edfa7..bb310c7451 100644 + int maxZIterate; + + boolean sectionHasSpecial = section.hasSpecialCollidingBlocks(); -+ if (sectionHasSpecial && currChunkX == minChunkX) { ++ if (!sectionHasSpecial && currChunkX == minChunkX) { + minXIterate = minX + 1; + } else { + minXIterate = minX; + } -+ if (sectionHasSpecial && currChunkX == maxChunkX) { ++ if (!sectionHasSpecial && currChunkX == maxChunkX) { + maxXIterate = maxX - 1; + } else { + maxXIterate = maxX; + } + -+ if (sectionHasSpecial && currChunkZ == minChunkZ) { ++ if (!sectionHasSpecial && currChunkZ == minChunkZ) { + minZIterate = minZ + 1; + } else { + minZIterate = minZ; + } -+ if (sectionHasSpecial && currChunkZ == maxChunkZ) { ++ if (!sectionHasSpecial && currChunkZ == maxChunkZ) { + maxZIterate = maxZ - 1; + } else { + maxZIterate = maxZ; @@ -14663,7 +14743,7 @@ index 5b0b6edfa7..bb310c7451 100644 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 5ccdc0b87b..888dae2d5e 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 { @@ -14675,8 +14755,21 @@ index 5ccdc0b87b..888dae2d5e 100644 Throwable throwable = null; try { +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java b/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java +index 7511e3813..e602efcb3 100644 +--- a/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java ++++ b/src/main/java/org/bukkit/craftbukkit/CraftCrashReport.java +@@ -37,7 +37,7 @@ public class CraftCrashReport implements CrashReportCallable { + value.append("\n Force Loaded Chunks: {"); + for (World world : Bukkit.getWorlds()) { + value.append(' ').append(world.getName()).append(": {"); +- for (Map.Entry> entry : world.getPluginChunkTickets().entrySet()) { ++ for (Map.Entry> entry : ((CraftWorld)world).getPluginChunkTicketsCoordinates().entrySet()) { // Tuinity - do not load chunks in crash reports + value.append(' ').append(entry.getKey().getDescription().getFullName()).append(": ").append(Integer.toString(entry.getValue().size())).append(','); + } + value.append("},"); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 0aa1da6cc1..89a654b472 100644 +index 0aa1da6cc..89a654b47 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -232,7 +232,7 @@ import javax.annotation.Nullable; // Paper @@ -14732,7 +14825,7 @@ index 0aa1da6cc1..89a654b472 100644 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 b71316cce3..ae2cc01c10 100644 +index b71316cce..a69b38f29 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -341,6 +341,14 @@ public class CraftWorld implements World { @@ -14774,7 +14867,38 @@ index b71316cce3..ae2cc01c10 100644 } return true; -@@ -2553,7 +2555,7 @@ public class CraftWorld implements World { +@@ -717,6 +719,30 @@ public class CraftWorld implements World { + return ret.entrySet().stream().collect(ImmutableMap.toImmutableMap(Map.Entry::getKey, (entry) -> entry.getValue().build())); + } + ++ // Tuinity start - don't load chunks for crash reports ++ public Map> getPluginChunkTicketsCoordinates() { ++ // Copied from above ++ Map> ret = new HashMap<>(); ++ ChunkMapDistance chunkDistanceManager = this.world.getChunkProvider().playerChunkMap.chunkDistanceManager; ++ ++ for (Long2ObjectMap.Entry>> chunkTickets : chunkDistanceManager.tickets.long2ObjectEntrySet()) { ++ long chunkKey = chunkTickets.getLongKey(); ++ ArraySetSorted> tickets = chunkTickets.getValue(); ++ ++ ChunkCoordIntPair chunk = new ChunkCoordIntPair(chunkKey); ++ for (Ticket ticket : tickets) { ++ if (ticket.getTicketType() != TicketType.PLUGIN_TICKET) { ++ continue; ++ } ++ ++ ret.computeIfAbsent((Plugin) ticket.identifier, (key) -> ImmutableList.builder()).add(chunk); ++ } ++ } ++ ++ return ret.entrySet().stream().collect(ImmutableMap.toImmutableMap(Map.Entry::getKey, (entry) -> entry.getValue().build())); ++ } ++ // Tuinity end - don't load chunks for crash reports ++ + @Override + public boolean isChunkForceLoaded(int x, int z) { + return getHandle().getForceLoadedChunks().contains(ChunkCoordIntPair.pair(x, z)); +@@ -2553,7 +2579,7 @@ public class CraftWorld implements World { } return this.world.getChunkProvider().getChunkAtAsynchronously(x, z, gen, urgent).thenComposeAsync((either) -> { net.minecraft.server.Chunk chunk = (net.minecraft.server.Chunk) either.left().orElse(null); @@ -14784,7 +14908,7 @@ index b71316cce3..ae2cc01c10 100644 }, MinecraftServer.getServer()); } diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 010f702ea4..d2ec9f7f10 100644 +index 010f702ea..d2ec9f7f1 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 { @@ -14811,7 +14935,7 @@ index 010f702ea4..d2ec9f7f10 100644 //Thread.sleep(TimeUnit.SECONDS.toMillis(20)); // Paper End diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 4ec0e9220d..1fe253bc72 100644 +index 4ec0e9220..1fe253bc7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -503,27 +503,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -14882,7 +15006,7 @@ index 4ec0e9220d..1fe253bc72 100644 public boolean teleport(org.bukkit.entity.Entity destination) { return teleport(destination.getLocation()); diff --git a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java -index fd32d1450a..c38e514b00 100644 +index fd32d1450..c38e514b0 100644 --- a/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java +++ b/src/main/java/org/bukkit/craftbukkit/scheduler/CraftAsyncTask.java @@ -25,6 +25,10 @@ class CraftAsyncTask extends CraftTask { @@ -14905,7 +15029,7 @@ index fd32d1450a..c38e514b00 100644 LinkedList getWorkers() { diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java -index 6fa2e271f7..3a9491e949 100644 +index 6fa2e271f..3a9491e94 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftScoreboardManager.java @@ -113,9 +113,18 @@ public final class CraftScoreboardManager implements ScoreboardManager { @@ -14928,7 +15052,7 @@ index 6fa2e271f7..3a9491e949 100644 } } diff --git a/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java b/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java -index f72c13beda..7c0d90552e 100644 +index f72c13bed..7c0d90552 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java +++ b/src/main/java/org/bukkit/craftbukkit/util/UnsafeList.java @@ -35,6 +35,13 @@ public class UnsafeList extends AbstractList implements List, RandomAcc @@ -14979,7 +15103,7 @@ index f72c13beda..7c0d90552e 100644 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 674096cab1..001b1e5197 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 { @@ -14992,7 +15116,7 @@ index 674096cab1..001b1e5197 100644 if (stream != null) { diff --git a/src/main/java/org/spigotmc/AsyncCatcher.java b/src/main/java/org/spigotmc/AsyncCatcher.java -index 9f7d2ef932..51e9c54cdd 100644 +index 9f7d2ef93..51e9c54cd 100644 --- a/src/main/java/org/spigotmc/AsyncCatcher.java +++ b/src/main/java/org/spigotmc/AsyncCatcher.java @@ -10,8 +10,9 @@ public class AsyncCatcher @@ -15007,7 +15131,7 @@ index 9f7d2ef932..51e9c54cdd 100644 } } diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index 513c1041c3..4d31090848 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 diff --git a/patches/server/0003-Purpur-config-files.patch b/patches/server/0003-Purpur-config-files.patch index c6ad10c05..886bddd89 100644 --- a/patches/server/0003-Purpur-config-files.patch +++ b/patches/server/0003-Purpur-config-files.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 03c95b30d..3b9b44851 100644 +index ac7f390cf..3b9b44851 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java @@ -585,7 +585,7 @@ public class Metrics { boolean logFailedRequests = config.getBoolean("logFailedRequests", false); // Only start Metrics, if it's enabled in the config if (config.getBoolean("enabled", true)) { -- Metrics metrics = new Metrics("Paper", serverUUID, logFailedRequests, Bukkit.getLogger()); +- Metrics metrics = new Metrics("Tuinity", serverUUID, logFailedRequests, Bukkit.getLogger()); // Tuinity - we have our own bstats page + Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Purpur metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> { @@ -22,7 +22,7 @@ index 03c95b30d..3b9b44851 100644 metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size())); - metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() || PaperConfig.isProxyOnlineMode() ? "online" : "offline")); -- metrics.addCustomChart(new Metrics.SimplePie("paper_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown")); +- metrics.addCustomChart(new Metrics.SimplePie("tuinity_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown")); // Tuinity - we have our own bstats page + metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : (PaperConfig.isProxyOnlineMode() ? "bungee" : "offline"))); // Purpur + metrics.addCustomChart(new Metrics.SimplePie("purpur_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown")); // Purpur @@ -45,7 +45,7 @@ index 6ab0a51b4..e21ef1bdc 100644 config.save(CONFIG_FILE); } catch (IOException ex) { diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java -index fcba187bb..c1eb8e867 100644 +index ecff0657e..3ee8d31c4 100644 --- a/src/main/java/net/minecraft/server/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/DedicatedServer.java @@ -167,6 +167,15 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer diff --git a/patches/server/0080-Add-5-second-tps-average-in-tps.patch b/patches/server/0080-Add-5-second-tps-average-in-tps.patch index f0f6b7aed..2b49060de 100644 --- a/patches/server/0080-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0080-Add-5-second-tps-average-in-tps.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add 5 second tps average in /tps diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0f9c6b964f..c339c57b07 100644 +index 2d01bc9c5..dd1e08328 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -167,7 +167,7 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant