diff options
-rw-r--r-- | paper-server/patches/features/0018-Moonrise-optimisation-patches.patch | 1244 |
1 files changed, 622 insertions, 622 deletions
diff --git a/paper-server/patches/features/0018-Moonrise-optimisation-patches.patch b/paper-server/patches/features/0018-Moonrise-optimisation-patches.patch index 5373ef9f77..7f86f8c5a1 100644 --- a/paper-server/patches/features/0018-Moonrise-optimisation-patches.patch +++ b/paper-server/patches/features/0018-Moonrise-optimisation-patches.patch @@ -19,10 +19,10 @@ See https://github.com/Tuinity/Moonrise diff --git a/src/main/java/ca/spottedleaf/moonrise/common/misc/NearbyPlayers.java b/src/main/java/ca/spottedleaf/moonrise/common/misc/NearbyPlayers.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..7e440b4a46b040365df7317035e577d93e7d855d --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/common/misc/NearbyPlayers.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,273 @@ +package ca.spottedleaf.moonrise.common.misc; + +import ca.spottedleaf.moonrise.common.list.ReferenceList; @@ -297,10 +297,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } +} diff --git a/src/main/java/ca/spottedleaf/moonrise/common/util/ChunkSystem.java b/src/main/java/ca/spottedleaf/moonrise/common/util/ChunkSystem.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 58a99bc38e137431f10af36fa9e2d04fe61694aa..1d288e73fd8605676c0da676e068afb5b4b8abea 100644 --- a/src/main/java/ca/spottedleaf/moonrise/common/util/ChunkSystem.java +++ b/src/main/java/ca/spottedleaf/moonrise/common/util/ChunkSystem.java -@@ -0,0 +0,0 @@ package ca.spottedleaf.moonrise.common.util; +@@ -2,11 +2,17 @@ package ca.spottedleaf.moonrise.common.util; import ca.spottedleaf.concurrentutil.util.Priority; import ca.spottedleaf.moonrise.common.PlatformHooks; @@ -318,7 +318,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 import net.minecraft.world.entity.Entity; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.LevelChunk; -@@ -0,0 +0,0 @@ import java.util.function.Consumer; +@@ -18,203 +24,46 @@ import java.util.function.Consumer; public final class ChunkSystem { private static final Logger LOGGER = LogUtils.getLogger(); @@ -530,7 +530,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public static boolean hasAnyChunkHolders(final ServerLevel level) { -@@ -0,0 +0,0 @@ public final class ChunkSystem { +@@ -233,55 +82,96 @@ public final class ChunkSystem { } public static void onChunkHolderDelete(final ServerLevel level, final ChunkHolder holder) { @@ -645,10 +645,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private ChunkSystem() {} diff --git a/src/main/java/ca/spottedleaf/moonrise/common/util/ThreadUnsafeRandom.java b/src/main/java/ca/spottedleaf/moonrise/common/util/ThreadUnsafeRandom.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 12eb3add0931a4d77acdf6e875c42dda9c313dc3..5239993a681d6113eec99fa627b85508656ed7ac 100644 --- a/src/main/java/ca/spottedleaf/moonrise/common/util/ThreadUnsafeRandom.java +++ b/src/main/java/ca/spottedleaf/moonrise/common/util/ThreadUnsafeRandom.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.levelgen.PositionalRandomFactory; +@@ -9,7 +9,7 @@ import net.minecraft.world.level.levelgen.PositionalRandomFactory; /** * Avoid costly CAS of superclass */ @@ -658,10 +658,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static final long MULTIPLIER = 25214903917L; private static final long ADDEND = 11L; diff --git a/src/main/java/ca/spottedleaf/moonrise/paper/PaperHooks.java b/src/main/java/ca/spottedleaf/moonrise/paper/PaperHooks.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 11cfe9cc29666ce3a6a40281069fb9eb4fa0ded2..de22cfd2da4782072584d5140ce5567780d6feaa 100644 --- a/src/main/java/ca/spottedleaf/moonrise/paper/PaperHooks.java +++ b/src/main/java/ca/spottedleaf/moonrise/paper/PaperHooks.java -@@ -0,0 +0,0 @@ public final class PaperHooks implements PlatformHooks { +@@ -267,7 +267,7 @@ public final class PaperHooks implements PlatformHooks { @Override public void postLoadProtoChunk(final ServerLevel world, final ProtoChunk chunk) { @@ -672,10 +672,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/block_counting/BlockCountingBitStorage.java b/src/main/java/ca/spottedleaf/moonrise/patches/block_counting/BlockCountingBitStorage.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..93bc56daec4526f373c84763b8c7ccb4a30e800b --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/block_counting/BlockCountingBitStorage.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,10 @@ +package ca.spottedleaf.moonrise.patches.block_counting; + +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @@ -688,10 +688,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/block_counting/BlockCountingChunkSection.java b/src/main/java/ca/spottedleaf/moonrise/patches/block_counting/BlockCountingChunkSection.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..0d1443a113c07d7655e7b927a899447f70db8fa9 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/block_counting/BlockCountingChunkSection.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,11 @@ +package ca.spottedleaf.moonrise.patches.block_counting; + +import ca.spottedleaf.moonrise.common.list.ShortList; @@ -705,10 +705,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/blockstate_propertyaccess/PropertyAccess.java b/src/main/java/ca/spottedleaf/moonrise/patches/blockstate_propertyaccess/PropertyAccess.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..89e75b454695e174c5619104eeb15eb923a2d9a7 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/blockstate_propertyaccess/PropertyAccess.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,12 @@ +package ca.spottedleaf.moonrise.patches.blockstate_propertyaccess; + +public interface PropertyAccess<T> { @@ -723,10 +723,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/blockstate_propertyaccess/PropertyAccessStateHolder.java b/src/main/java/ca/spottedleaf/moonrise/patches/blockstate_propertyaccess/PropertyAccessStateHolder.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..01da52b9e8a786824f199a057b62ce0431ecbc43 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/blockstate_propertyaccess/PropertyAccessStateHolder.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,7 @@ +package ca.spottedleaf.moonrise.patches.blockstate_propertyaccess; + +public interface PropertyAccessStateHolder { @@ -736,10 +736,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/blockstate_propertyaccess/util/ZeroCollidingReferenceStateTable.java b/src/main/java/ca/spottedleaf/moonrise/patches/blockstate_propertyaccess/util/ZeroCollidingReferenceStateTable.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..866f38eb0f379ffbe2888023a7d1c290f521a231 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/blockstate_propertyaccess/util/ZeroCollidingReferenceStateTable.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,230 @@ +package ca.spottedleaf.moonrise.patches.blockstate_propertyaccess.util; + +import ca.spottedleaf.concurrentutil.util.IntegerUtil; @@ -972,10 +972,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ChunkSystemConverters.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ChunkSystemConverters.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..44bb25554634af2ec0b2e9b3d9231304d5dff034 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ChunkSystemConverters.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,39 @@ +package ca.spottedleaf.moonrise.patches.chunk_system; + +import ca.spottedleaf.moonrise.common.PlatformHooks; @@ -1017,10 +1017,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/entity/ChunkSystemEntity.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/entity/ChunkSystemEntity.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..c7da23900228aab3a5673eb5adfada5091140319 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/entity/ChunkSystemEntity.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,44 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.entity; + +import ca.spottedleaf.moonrise.patches.chunk_system.level.chunk.ChunkData; @@ -1067,10 +1067,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/ChunkSystemRegionFileStorage.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/ChunkSystemRegionFileStorage.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..a814512fcfb85312474ae2c2c21443843bf57831 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/ChunkSystemRegionFileStorage.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,31 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.io; + +import net.minecraft.nbt.CompoundTag; @@ -1104,10 +1104,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..1acea58838f057ab87efd103cbecb6f5aeaef393 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/MoonriseRegionFileIO.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,1700 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.io; + +import ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue; @@ -2810,10 +2810,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/datacontroller/ChunkDataController.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/datacontroller/ChunkDataController.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..a36ab89f5c37f5f9ab0152f087bb4cf3560f8581 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/datacontroller/ChunkDataController.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,50 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller; + +import ca.spottedleaf.moonrise.patches.chunk_system.io.ChunkSystemRegionFileStorage; @@ -2866,10 +2866,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/datacontroller/EntityDataController.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/datacontroller/EntityDataController.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..828c868f68c2a20bf90d0f7ec253fdeb591f15f6 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/datacontroller/EntityDataController.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,73 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller; + +import ca.spottedleaf.moonrise.patches.chunk_system.io.ChunkSystemRegionFileStorage; @@ -2945,10 +2945,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/datacontroller/PoiDataController.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/datacontroller/PoiDataController.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..bd0d782852f9cfe5bc0b5339ecf4d82c10332ec9 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/io/datacontroller/PoiDataController.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,45 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller; + +import ca.spottedleaf.moonrise.patches.chunk_system.io.ChunkSystemRegionFileStorage; @@ -2996,10 +2996,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemChunkMap.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemChunkMap.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..47a4d3376d08dde94a39254bec21473ff27f53e6 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemChunkMap.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,10 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level; + +import net.minecraft.world.level.ChunkPos; @@ -3012,10 +3012,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemLevel.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemLevel.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..5d4d650186b18eb00782429d53d861564d8e4ba9 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemLevel.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,33 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level; + +import ca.spottedleaf.moonrise.patches.chunk_system.level.chunk.ChunkData; @@ -3051,10 +3051,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemLevelReader.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemLevelReader.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..0b58701342d573fa43cdd06681534854a0e51d77 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemLevelReader.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,10 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level; + +import net.minecraft.world.level.chunk.ChunkAccess; @@ -3067,10 +3067,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemServerLevel.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemServerLevel.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..c278f8ef806f0b45c28cc3040c7db052cb51e053 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/ChunkSystemServerLevel.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,62 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level; + +import ca.spottedleaf.concurrentutil.util.Priority; @@ -3135,10 +3135,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkData.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkData.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..8b9dc582627b46843f4b5ea6f8c3df2d8cac46fa --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkData.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,21 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.chunk; + +import ca.spottedleaf.moonrise.common.misc.NearbyPlayers; @@ -3162,10 +3162,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemChunkHolder.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemChunkHolder.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..7d049d750df88762566f13a9c4fc7574a2df4825 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemChunkHolder.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,26 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.chunk; + +import ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder; @@ -3194,10 +3194,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemChunkStatus.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemChunkStatus.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..f4bc44bb266763345c4e6f859c89352c769a104d --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemChunkStatus.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,26 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.chunk; + +import net.minecraft.world.level.chunk.status.ChunkStatus; @@ -3226,10 +3226,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemDistanceManager.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemDistanceManager.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..aacd543f03b35908011d0c2891e978cc093ebcf5 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemDistanceManager.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,12 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.chunk; + +import ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager; @@ -3244,10 +3244,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemLevelChunk.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemLevelChunk.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..5b092bca7027e37aeee8f4b852ad896dd0d5febc --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/chunk/ChunkSystemLevelChunk.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,13 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.chunk; + +import net.minecraft.server.level.ServerChunkCache; @@ -3263,10 +3263,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..7aea4e343581b977d11af90f9f65eac3532eade1 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,569 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.entity; + +import ca.spottedleaf.moonrise.common.PlatformHooks; @@ -3838,10 +3838,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/EntityLookup.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/EntityLookup.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..7554c109c35397bc1a43dd80e87764fd78645bbf --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/EntityLookup.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,1002 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.entity; + +import ca.spottedleaf.concurrentutil.map.ConcurrentLong2ReferenceChainedHashTable; @@ -4846,10 +4846,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/client/ClientEntityLookup.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/client/ClientEntityLookup.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..a038215156a163b0b1cbc870ada5b4ac85ed1335 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/client/ClientEntityLookup.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,129 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.entity.client; + +import ca.spottedleaf.moonrise.common.PlatformHooks; @@ -4981,10 +4981,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/dfl/DefaultEntityLookup.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/dfl/DefaultEntityLookup.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..2ff58cf753c60913ee73aae015182e9c5560d529 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/dfl/DefaultEntityLookup.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,114 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.entity.dfl; + +import ca.spottedleaf.moonrise.common.util.CoordinateUtils; @@ -5101,10 +5101,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..58d9187adc188b693b6becc400f766e069bf1bf5 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,116 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.entity.server; + +import ca.spottedleaf.moonrise.common.PlatformHooks; @@ -5223,10 +5223,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/poi/ChunkSystemPoiManager.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/poi/ChunkSystemPoiManager.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..458d1fc5e1222912512e6c59b56f6fca347d9ee9 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/poi/ChunkSystemPoiManager.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,17 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.poi; + +import ca.spottedleaf.moonrise.patches.chunk_system.level.storage.ChunkSystemSectionStorage; @@ -5246,10 +5246,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/poi/ChunkSystemPoiSection.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/poi/ChunkSystemPoiSection.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..89b956b8fdf1a0d862a843104511005e2990a897 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/poi/ChunkSystemPoiSection.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,12 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.poi; + +import net.minecraft.world.entity.ai.village.poi.PoiSection; @@ -5264,10 +5264,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/poi/PoiChunk.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/poi/PoiChunk.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..bbf9d6c1c9525d97160806819a57be03eca290f1 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/poi/PoiChunk.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,204 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.poi; + +import ca.spottedleaf.moonrise.common.util.CoordinateUtils; @@ -5474,10 +5474,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/storage/ChunkSystemSectionStorage.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/storage/ChunkSystemSectionStorage.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..524752744e37a2db0e3ea089468bdf497129bfef --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/level/storage/ChunkSystemSectionStorage.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,13 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.level.storage; + +import net.minecraft.nbt.CompoundTag; @@ -5493,10 +5493,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/player/ChunkSystemServerPlayer.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/player/ChunkSystemServerPlayer.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..003a857e70ead858e8437e3c1bfaf22f4daba0df --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/player/ChunkSystemServerPlayer.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,15 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.player; + +public interface ChunkSystemServerPlayer { @@ -5514,10 +5514,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..dd2509996bfd08e8c3f9f2be042229eac6d7692d --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,1092 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.player; + +import ca.spottedleaf.concurrentutil.util.ConcurrentUtil; @@ -6612,10 +6612,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/queue/ChunkUnloadQueue.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/queue/ChunkUnloadQueue.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..7eafc5b7cba23d8dec92ecc1050afe3fd8c9e309 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/queue/ChunkUnloadQueue.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,144 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.queue; + +import ca.spottedleaf.concurrentutil.map.ConcurrentLong2ReferenceChainedHashTable; @@ -6763,10 +6763,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 \ No newline at end of file diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..3990834a41116682d6ae779a3bf24b0fd989d97d --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,1457 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling; + +import ca.spottedleaf.concurrentutil.lock.ReentrantAreaLock; @@ -8226,10 +8226,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..67532b85073b7978254a0b04caadfe822679e61f --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,1055 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling; + +import ca.spottedleaf.concurrentutil.executor.PrioritisedExecutor; @@ -9287,10 +9287,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..eafa4e6d55cd0f9314ac0f2b96a7f48fbb5e1a4c --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/NewChunkHolder.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,1998 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling; + +import ca.spottedleaf.concurrentutil.completable.CallbackCompletable; @@ -11291,10 +11291,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/PriorityHolder.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/PriorityHolder.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..6b468c621b74449a6218391f6477cf63cfc98c7c --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/PriorityHolder.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,215 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling; + +import ca.spottedleaf.concurrentutil.util.ConcurrentUtil; @@ -11512,10 +11512,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ThreadedTicketLevelPropagator.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ThreadedTicketLevelPropagator.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..310a8f80debadd64c2d962ebf83b7d0505ce6e42 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ThreadedTicketLevelPropagator.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,1457 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling; + +import ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue; @@ -12975,10 +12975,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/executor/RadiusAwarePrioritisedExecutor.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/executor/RadiusAwarePrioritisedExecutor.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..5f4b99d8c5453f8ad2e600a57ea4e7dafa2d45f8 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/executor/RadiusAwarePrioritisedExecutor.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,729 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling.executor; + +import ca.spottedleaf.concurrentutil.executor.PrioritisedExecutor; @@ -13710,10 +13710,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkFullTask.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkFullTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..6ab353b0d2465c3680bb3c8d0852ba0f65c00fd2 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkFullTask.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,151 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling.task; + +import ca.spottedleaf.concurrentutil.executor.PrioritisedExecutor; @@ -13867,10 +13867,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkLightTask.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkLightTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..4538ccfaea83d217ed85eaf16e82393c7f286489 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkLightTask.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,181 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling.task; + +import ca.spottedleaf.concurrentutil.util.Priority; @@ -14054,10 +14054,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkLoadTask.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkLoadTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..1440c9e2b106616884edcb20201113320817ed9f --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkLoadTask.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,494 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling.task; + +import ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue; @@ -14554,10 +14554,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkProgressionTask.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkProgressionTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..002ee365aa70d8e6a6e6bd5c95988bd17db4395a --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkProgressionTask.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,101 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling.task; + +import ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue; @@ -14662,10 +14662,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 \ No newline at end of file diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkUpgradeGenericStatusTask.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkUpgradeGenericStatusTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..25d8da4773dcee5096053e7e3788bfc224d705a7 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/ChunkUpgradeGenericStatusTask.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,218 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling.task; + +import ca.spottedleaf.concurrentutil.executor.PrioritisedExecutor; @@ -14886,10 +14886,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/GenericDataLoadTask.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/GenericDataLoadTask.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..bdcd1879457bafcca4e76523aac0555968f37c0b --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/task/GenericDataLoadTask.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,674 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.scheduling.task; + +import ca.spottedleaf.concurrentutil.completable.CallbackCompletable; @@ -15566,10 +15566,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/server/ChunkSystemMinecraftServer.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/server/ChunkSystemMinecraftServer.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..cb6af3712bf9f6f6b8f7a459c309c75dabe83a50 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/server/ChunkSystemMinecraftServer.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,9 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.server; + +public interface ChunkSystemMinecraftServer { @@ -15581,10 +15581,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/status/ChunkSystemChunkStep.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/status/ChunkSystemChunkStep.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..ea759ce6f10f2a5a4e107ab7528030fe931ba223 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/status/ChunkSystemChunkStep.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,9 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.status; + +import net.minecraft.world.level.chunk.status.ChunkStatus; @@ -15596,10 +15596,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/storage/ChunkSystemChunkBuffer.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/storage/ChunkSystemChunkBuffer.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..51c126735ace8fdde89ad97b5cab62f244212db0 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/storage/ChunkSystemChunkBuffer.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,12 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.storage; + +import net.minecraft.world.level.chunk.storage.RegionFile; @@ -15614,10 +15614,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/storage/ChunkSystemChunkStorage.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/storage/ChunkSystemChunkStorage.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..129a35ff2db5b3bb6736810fc180796ce55e1875 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/storage/ChunkSystemChunkStorage.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,9 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.storage; + +import net.minecraft.world.level.chunk.storage.RegionFileStorage; @@ -15629,10 +15629,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/storage/ChunkSystemRegionFile.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/storage/ChunkSystemRegionFile.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..3bd1b59250dbab15097a64d515999b278636795a --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/storage/ChunkSystemRegionFile.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,12 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.storage; + +import ca.spottedleaf.moonrise.patches.chunk_system.io.MoonriseRegionFileIO; @@ -15647,10 +15647,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ticket/ChunkSystemTicket.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ticket/ChunkSystemTicket.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..786e6ad17cd6216ef0aadaa7cf10044a0c19c933 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ticket/ChunkSystemTicket.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,9 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.ticket; + +public interface ChunkSystemTicket<T> { @@ -15662,10 +15662,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ticks/ChunkSystemLevelChunkTicks.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ticks/ChunkSystemLevelChunkTicks.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..2add7fd15a2210286aeb9af5024263333340d34c --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/ticks/ChunkSystemLevelChunkTicks.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,9 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.ticks; + +public interface ChunkSystemLevelChunkTicks { @@ -15677,10 +15677,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/util/ChunkSystemSortedArraySet.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/util/ChunkSystemSortedArraySet.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..ce3bb903c9ccb7efa0f004cf79b291dcb1cb7a23 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/util/ChunkSystemSortedArraySet.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,15 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.util; + +import net.minecraft.util.SortedArraySet; @@ -15698,10 +15698,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/util/ParallelSearchRadiusIteration.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/util/ParallelSearchRadiusIteration.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..93fd23027c00cef76562098306737272fda1350a --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/util/ParallelSearchRadiusIteration.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,321 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.util; + +import ca.spottedleaf.moonrise.common.util.CoordinateUtils; @@ -16025,10 +16025,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/util/stream/ExternalChunkStreamMarker.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/util/stream/ExternalChunkStreamMarker.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..7ef3dcca89ed7578c6c0f5565131889110063056 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/util/stream/ExternalChunkStreamMarker.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,37 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.util.stream; + +import java.io.DataInputStream; @@ -16068,10 +16068,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/world/ChunkSystemEntityGetter.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/world/ChunkSystemEntityGetter.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..ea6b6ed27b212719feb31610faac974899688839 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/world/ChunkSystemEntityGetter.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,12 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.world; + +import net.minecraft.world.entity.Entity; @@ -16086,10 +16086,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/world/ChunkSystemServerChunkCache.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/world/ChunkSystemServerChunkCache.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..4b9e2fa963c14f65f15407c1814c543c2999ea32 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/world/ChunkSystemServerChunkCache.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,11 @@ +package ca.spottedleaf.moonrise.patches.chunk_system.world; + +import net.minecraft.world.level.chunk.LevelChunk; @@ -16103,10 +16103,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_tick_iteration/ChunkTickConstants.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_tick_iteration/ChunkTickConstants.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..e97e7d276faf055c89207385d3820debffb06463 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_tick_iteration/ChunkTickConstants.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,7 @@ +package ca.spottedleaf.moonrise.patches.chunk_tick_iteration; + +public final class ChunkTickConstants { @@ -16116,10 +16116,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_tick_iteration/ChunkTickDistanceManager.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_tick_iteration/ChunkTickDistanceManager.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..f28fd0e01e2bdda0daf9d775e514a7253d32d8d0 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_tick_iteration/ChunkTickDistanceManager.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,16 @@ +package ca.spottedleaf.moonrise.patches.chunk_tick_iteration; + +import net.minecraft.core.SectionPos; @@ -16138,10 +16138,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_tick_iteration/ChunkTickServerLevel.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_tick_iteration/ChunkTickServerLevel.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..6af03fd7807d4c71dbf85028d18dc850978ef429 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_tick_iteration/ChunkTickServerLevel.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,19 @@ +package ca.spottedleaf.moonrise.patches.chunk_tick_iteration; + +import ca.spottedleaf.moonrise.common.list.ReferenceList; @@ -16163,10 +16163,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/CollisionUtil.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/CollisionUtil.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..e04bd54744335fb5398c6e4f7ce8b981f35bfb7d --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/CollisionUtil.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,2183 @@ +package ca.spottedleaf.moonrise.patches.collisions; + +import ca.spottedleaf.moonrise.common.util.WorldUtil; @@ -18352,10 +18352,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/ExplosionBlockCache.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/ExplosionBlockCache.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..35c8aaf0bfa42717f45eed1d1072e1614874de91 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/ExplosionBlockCache.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,28 @@ +package ca.spottedleaf.moonrise.patches.collisions; + +import net.minecraft.core.BlockPos; @@ -18386,10 +18386,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/block/CollisionBlockState.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/block/CollisionBlockState.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..a38ab583200ebf68ca68fdddf2d12077720b72b7 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/block/CollisionBlockState.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,29 @@ +package ca.spottedleaf.moonrise.patches.collisions.block; + +import net.minecraft.world.phys.shapes.VoxelShape; @@ -18421,10 +18421,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CachedShapeData.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CachedShapeData.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..5a6b16be4b8c0cc92d017bc592bc4818dba17da7 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CachedShapeData.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,10 @@ +package ca.spottedleaf.moonrise.patches.collisions.shape; + +public record CachedShapeData( @@ -18437,10 +18437,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CachedToAABBs.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CachedToAABBs.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..9d33ead3a97d86b371e4d9ad9fed80d789bed844 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CachedToAABBs.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,39 @@ +package ca.spottedleaf.moonrise.patches.collisions.shape; + +import net.minecraft.world.phys.AABB; @@ -18482,10 +18482,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CollisionDiscreteVoxelShape.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CollisionDiscreteVoxelShape.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..07fe5e02c2d0a27d2fe37bb45761654dc2d02e5d --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CollisionDiscreteVoxelShape.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,7 @@ +package ca.spottedleaf.moonrise.patches.collisions.shape; + +public interface CollisionDiscreteVoxelShape { @@ -18495,10 +18495,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CollisionVoxelShape.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CollisionVoxelShape.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..05d7b3f9d8659c259f3ed0537c57e6e43eb6e288 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/CollisionVoxelShape.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,40 @@ +package ca.spottedleaf.moonrise.patches.collisions.shape; + +import net.minecraft.core.Direction; @@ -18541,10 +18541,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/MergedORCache.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/MergedORCache.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..44831fc18efb7534dc6e4822f3c9b5cdc4dcc33e --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/shape/MergedORCache.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,10 @@ +package ca.spottedleaf.moonrise.patches.collisions.shape; + +import net.minecraft.world.phys.shapes.VoxelShape; @@ -18557,10 +18557,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/util/CollisionDirection.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/util/CollisionDirection.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..f62359e5d6aa9a9cdb015441dbdb6182dc302f02 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/util/CollisionDirection.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,9 @@ +package ca.spottedleaf.moonrise.patches.collisions.util; + +public interface CollisionDirection { @@ -18572,10 +18572,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/collisions/util/FluidOcclusionCacheKey.java b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/util/FluidOcclusionCacheKey.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..cf9ffdeff6bf0b62a45f7a44dbfe0dd7d17dc4f4 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/collisions/util/FluidOcclusionCacheKey.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,7 @@ +package ca.spottedleaf.moonrise.patches.collisions.util; + +import net.minecraft.core.Direction; @@ -18585,10 +18585,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/entity_tracker/EntityTrackerEntity.java b/src/main/java/ca/spottedleaf/moonrise/patches/entity_tracker/EntityTrackerEntity.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..5f5734c00ce8245a1ff69b2d4c3036579d5392e0 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/entity_tracker/EntityTrackerEntity.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,11 @@ +package ca.spottedleaf.moonrise.patches.entity_tracker; + +import net.minecraft.server.level.ChunkMap; @@ -18602,10 +18602,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/entity_tracker/EntityTrackerTrackedEntity.java b/src/main/java/ca/spottedleaf/moonrise/patches/entity_tracker/EntityTrackerTrackedEntity.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..8e7472157a98de607c03769a91f64c8369fd3ea6 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/entity_tracker/EntityTrackerTrackedEntity.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,15 @@ +package ca.spottedleaf.moonrise.patches.entity_tracker; + +import ca.spottedleaf.moonrise.common.misc.NearbyPlayers; @@ -18623,10 +18623,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/fast_palette/FastPalette.java b/src/main/java/ca/spottedleaf/moonrise/patches/fast_palette/FastPalette.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..4a7abd239a9c59aa98947e7993962d75e9051902 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/fast_palette/FastPalette.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,9 @@ +package ca.spottedleaf.moonrise.patches.fast_palette; + +public interface FastPalette<T> { @@ -18638,10 +18638,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/fast_palette/FastPaletteData.java b/src/main/java/ca/spottedleaf/moonrise/patches/fast_palette/FastPaletteData.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..4503f3495846a7d7ed082b9e24636044e4fbccd1 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/fast_palette/FastPaletteData.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,9 @@ +package ca.spottedleaf.moonrise.patches.fast_palette; + +public interface FastPaletteData<T> { @@ -18653,10 +18653,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/fluid/FluidFluidState.java b/src/main/java/ca/spottedleaf/moonrise/patches/fluid/FluidFluidState.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..107c97089354edd35f330582f5e0c8a18e792a6e --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/fluid/FluidFluidState.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,5 @@ +package ca.spottedleaf.moonrise.patches.fluid; + +public interface FluidFluidState { @@ -18664,10 +18664,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/getblock/GetBlockChunk.java b/src/main/java/ca/spottedleaf/moonrise/patches/getblock/GetBlockChunk.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..540c14a6d2c216cd3ef2a9c4056e15712bf8cb8c --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/getblock/GetBlockChunk.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,9 @@ +package ca.spottedleaf.moonrise.patches.getblock; + +import net.minecraft.world.level.block.state.BlockState; @@ -18679,10 +18679,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/blockstate/StarlightAbstractBlockState.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/blockstate/StarlightAbstractBlockState.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..8e6d79b7c10ef25f5478b72c53c555423d615a2f --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/blockstate/StarlightAbstractBlockState.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,7 @@ +package ca.spottedleaf.moonrise.patches.starlight.blockstate; + +public interface StarlightAbstractBlockState { @@ -18692,10 +18692,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/chunk/StarlightChunk.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/chunk/StarlightChunk.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..ed80017c8f257b981d626a37ffc5480d9b326558 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/chunk/StarlightChunk.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,18 @@ +package ca.spottedleaf.moonrise.patches.starlight.chunk; + +import ca.spottedleaf.moonrise.patches.starlight.light.SWMRNibbleArray; @@ -18716,10 +18716,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/BlockStarLightEngine.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/BlockStarLightEngine.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..fa7b784a89626e8528c249d7889a598bd7ee3d49 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/BlockStarLightEngine.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,280 @@ +package ca.spottedleaf.moonrise.patches.starlight.light; + +import ca.spottedleaf.moonrise.common.PlatformHooks; @@ -19002,10 +19002,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/SWMRNibbleArray.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/SWMRNibbleArray.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..4ca68a903e67606fc4ef0bfa9862a73797121c8b --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/SWMRNibbleArray.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,440 @@ +package ca.spottedleaf.moonrise.patches.starlight.light; + +import net.minecraft.world.level.chunk.DataLayer; @@ -19448,10 +19448,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/SkyStarLightEngine.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/SkyStarLightEngine.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..f9aef289e9a2d6f63c98c72c56ef32b8793f57f4 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/SkyStarLightEngine.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,681 @@ +package ca.spottedleaf.moonrise.patches.starlight.light; + +import ca.spottedleaf.moonrise.common.util.WorldUtil; @@ -20135,10 +20135,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightEngine.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightEngine.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..8aeb5fb87f94a35659347a09a638420699b52a6f --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightEngine.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,1438 @@ +package ca.spottedleaf.moonrise.patches.starlight.light; + +import ca.spottedleaf.concurrentutil.util.IntegerUtil; @@ -21579,10 +21579,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightInterface.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightInterface.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..571db5f9bf94745a8afe2cd313e593fb15db5e37 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightInterface.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,931 @@ +package ca.spottedleaf.moonrise.patches.starlight.light; + +import ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue; @@ -22516,10 +22516,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightLightingProvider.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightLightingProvider.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..7fe59ab70557aa6a484a02db2b2007fdd9e4bbb8 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/light/StarLightLightingProvider.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,29 @@ +package ca.spottedleaf.moonrise.patches.starlight.light; + +import net.minecraft.core.SectionPos; @@ -22551,10 +22551,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/storage/StarlightSectionData.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/storage/StarlightSectionData.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..40d004afdc6449530f5bb2d7c7638b8ee3e3a577 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/storage/StarlightSectionData.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,13 @@ +package ca.spottedleaf.moonrise.patches.starlight.storage; + +public interface StarlightSectionData { @@ -22570,10 +22570,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/starlight/util/SaveUtil.java b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/util/SaveUtil.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..689ce367164e79e0426eeecb81dbbc521d4bc742 --- /dev/null +++ b/src/main/java/ca/spottedleaf/moonrise/patches/starlight/util/SaveUtil.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,189 @@ +package ca.spottedleaf.moonrise.patches.starlight.util; + +import ca.spottedleaf.moonrise.common.util.WorldUtil; @@ -22764,10 +22764,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + private SaveUtil() {} +} diff --git a/src/main/java/io/papermc/paper/FeatureHooks.java b/src/main/java/io/papermc/paper/FeatureHooks.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index a6779295bff446ee79e7c9d41e405447becc2966..efc7f4071655201c59c912e9c84e35a8da66e34c 100644 --- a/src/main/java/io/papermc/paper/FeatureHooks.java +++ b/src/main/java/io/papermc/paper/FeatureHooks.java -@@ -0,0 +0,0 @@ +@@ -1,6 +1,8 @@ package io.papermc.paper; import io.papermc.paper.command.PaperSubcommand; @@ -22776,7 +22776,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import it.unimi.dsi.fastutil.longs.LongSet; import it.unimi.dsi.fastutil.longs.LongSets; -@@ -0,0 +0,0 @@ import org.bukkit.World; +@@ -29,9 +31,12 @@ import org.bukkit.World; public final class FeatureHooks { public static void initChunkTaskScheduler(final boolean useParallelGen) { @@ -22791,10 +22791,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static LevelChunkSection createSection(final Registry<Biome> biomeRegistry, final Level level, final ChunkPos chunkPos, final int chunkSection) { diff --git a/src/main/java/io/papermc/paper/command/subcommands/ChunkDebugCommand.java b/src/main/java/io/papermc/paper/command/subcommands/ChunkDebugCommand.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..2dca7afbd93cfbb8686f336fcd3b45dd01fba0fc --- /dev/null +++ b/src/main/java/io/papermc/paper/command/subcommands/ChunkDebugCommand.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,277 @@ +package io.papermc.paper.command.subcommands; + +import ca.spottedleaf.moonrise.common.util.JsonUtil; @@ -23074,10 +23074,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..85950a1aa732ab8c01ad28bec9e0de140e1a172e --- /dev/null +++ b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,116 @@ +package io.papermc.paper.command.subcommands; + +import ca.spottedleaf.moonrise.patches.starlight.light.StarLightLightingProvider; @@ -23196,10 +23196,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +} diff --git a/src/main/java/io/papermc/paper/threadedregions/TickRegions.java b/src/main/java/io/papermc/paper/threadedregions/TickRegions.java new file mode 100644 -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 +index 0000000000000000000000000000000000000000..8424cf9d4617b4732d44cc460d25b04481068989 --- /dev/null +++ b/src/main/java/io/papermc/paper/threadedregions/TickRegions.java -@@ -0,0 +0,0 @@ +@@ -0,0 +1,10 @@ +package io.papermc.paper.threadedregions; + +// placeholder class for Folia @@ -23211,10 +23211,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + +} diff --git a/src/main/java/net/minecraft/core/Direction.java b/src/main/java/net/minecraft/core/Direction.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 690e1d2394e68356c56a39ac083cc53ee0388d71..928f38fd6beb00753c92ae9f4678f7507519a39b 100644 --- a/src/main/java/net/minecraft/core/Direction.java +++ b/src/main/java/net/minecraft/core/Direction.java -@@ -0,0 +0,0 @@ import org.joml.Quaternionf; +@@ -28,7 +28,7 @@ import org.joml.Quaternionf; import org.joml.Vector3f; import org.joml.Vector4f; @@ -23223,7 +23223,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 DOWN(0, 1, -1, "down", Direction.AxisDirection.NEGATIVE, Direction.Axis.Y, new Vec3i(0, -1, 0)), UP(1, 0, -1, "up", Direction.AxisDirection.POSITIVE, Direction.Axis.Y, new Vec3i(0, 1, 0)), NORTH(2, 3, 2, "north", Direction.AxisDirection.NEGATIVE, Direction.Axis.Z, new Vec3i(0, 0, -1)), -@@ -0,0 +0,0 @@ public enum Direction implements StringRepresentable { +@@ -62,6 +62,46 @@ public enum Direction implements StringRepresentable { private final int adjY; private final int adjZ; // Paper end - Perf: Inline shift direction fields @@ -23270,7 +23270,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private Direction( final int id, -@@ -0,0 +0,0 @@ public enum Direction implements StringRepresentable { +@@ -147,14 +187,13 @@ public enum Direction implements StringRepresentable { } public Quaternionf getRotation() { @@ -23292,7 +23292,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public int get3DDataValue() { -@@ -0,0 +0,0 @@ public enum Direction implements StringRepresentable { +@@ -178,7 +217,7 @@ public enum Direction implements StringRepresentable { } public Direction getOpposite() { @@ -23301,7 +23301,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public Direction getClockWise(Direction.Axis axis) { -@@ -0,0 +0,0 @@ public enum Direction implements StringRepresentable { +@@ -600,4 +639,17 @@ public enum Direction implements StringRepresentable { return this.faces.length; } } @@ -23320,10 +23320,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end - optimise collisions } diff --git a/src/main/java/net/minecraft/core/MappedRegistry.java b/src/main/java/net/minecraft/core/MappedRegistry.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 063630c1ffcce099139c59d598fc5a210e21f640..a61153c5d99bdc26f37a10f33baf839e943e17e1 100644 --- a/src/main/java/net/minecraft/core/MappedRegistry.java +++ b/src/main/java/net/minecraft/core/MappedRegistry.java -@@ -0,0 +0,0 @@ public class MappedRegistry<T> implements WritableRegistry<T> { +@@ -50,6 +50,19 @@ public class MappedRegistry<T> implements WritableRegistry<T> { return this.getTags(); } @@ -23343,7 +23343,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public MappedRegistry(ResourceKey<? extends Registry<T>> key, Lifecycle lifecycle) { this(key, lifecycle, false); } -@@ -0,0 +0,0 @@ public class MappedRegistry<T> implements WritableRegistry<T> { +@@ -114,6 +127,7 @@ public class MappedRegistry<T> implements WritableRegistry<T> { this.toId.put(value, i); this.registrationInfos.put(key, info); this.registryLifecycle = this.registryLifecycle.add(info.lifecycle()); @@ -23352,10 +23352,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 731bdabd53fd4a3d17494f26781223097a5d6e16..42d46c7a7437bea5335a23cbee5708ac57131474 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java -@@ -0,0 +0,0 @@ public class Main { +@@ -322,6 +322,7 @@ public class Main { convertable_conversionsession.saveDataTag(iregistrycustom_dimension, savedata); */ @@ -23364,10 +23364,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 DedicatedServer dedicatedserver1 = new DedicatedServer(optionset, worldLoader.get(), thread, convertable_conversionsession, resourcepackrepository, worldstem, dedicatedserversettings, DataFixers.getDataFixer(), services, LoggerChunkProgressListener::createFromGameruleRadius); diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 807d05097f7313361eadb600187421d25e294413..5e7ba47247fc9b6bc8da86d8f67c6cd923cd0b1e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -0,0 +0,0 @@ import org.bukkit.event.server.ServerLoadEvent; +@@ -204,7 +204,7 @@ import org.bukkit.event.server.ServerLoadEvent; // CraftBukkit end @@ -23376,7 +23376,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static MinecraftServer SERVER; // Paper public static final Logger LOGGER = LogUtils.getLogger(); -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -333,7 +333,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa public static <S extends MinecraftServer> S spin(Function<Thread, S> serverFactory) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system AtomicReference<S> atomicreference = new AtomicReference(); @@ -23385,7 +23385,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ((MinecraftServer) atomicreference.get()).runServer(); }, "Server thread"); -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -352,6 +352,77 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa return s0; } @@ -23463,7 +23463,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public MinecraftServer(OptionSet options, WorldLoader.DataLoadContext worldLoader, Thread thread, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PackRepository resourcepackrepository, WorldStem worldstem, Proxy proxy, DataFixer datafixer, Services services, ChunkProgressListenerFactory worldloadlistenerfactory) { super("Server"); SERVER = this; // Paper - better singleton -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -672,7 +743,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa this.forceDifficulty(); for (ServerLevel worldserver : this.getAllLevels()) { this.prepareLevels(worldserver.getChunkSource().chunkMap.progressListener, worldserver); @@ -23472,7 +23472,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.server.getPluginManager().callEvent(new org.bukkit.event.world.WorldLoadEvent(worldserver.getWorld())); } -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -888,6 +959,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa public abstract boolean shouldRconBroadcast(); public boolean saveAllChunks(boolean suppressLogs, boolean flush, boolean force) { @@ -23484,7 +23484,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 boolean flag3 = false; for (Iterator iterator = this.getAllLevels().iterator(); iterator.hasNext(); flag3 = true) { -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -897,7 +973,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa MinecraftServer.LOGGER.info("Saving chunks for level '{}'/{}", worldserver, worldserver.dimension().location()); } @@ -23493,7 +23493,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // CraftBukkit start - moved to WorldServer.save -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -998,7 +1074,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa } } @@ -23502,7 +23502,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return worldserver1.getChunkSource().chunkMap.hasWork(); })) { this.nextTickTimeNanos = Util.getNanos() + TimeUtil.NANOSECONDS_PER_MILLISECOND; -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -1015,19 +1091,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa this.waitUntilNextTick(); } @@ -23523,7 +23523,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.isSaving = false; this.resources.close(); -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -1047,6 +1111,14 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa } // Spigot end @@ -23538,7 +23538,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public String getLocalIp() { -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -1228,6 +1300,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa this.tickServer(flag ? () -> { return false; } : this::haveTime); @@ -23552,7 +23552,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.tickFrame.end(); gameprofilerfiller.popPush("nextTickWait"); this.mayHaveDelayedTasks = true; -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -1432,6 +1511,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa private boolean pollTaskInternal() { if (super.pollTask()) { @@ -23560,7 +23560,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return true; } else { boolean ret = false; // Paper - force execution of all worlds, do not just bias the first -@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa +@@ -2713,6 +2793,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa } @@ -23575,10 +23575,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public boolean isDebugging() { return false; diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 2f47d95943c00020a24ea3ff1a49e64e114de675..0dd9ed7465d222505d5368781654ec4954f6e5c3 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -458,7 +458,33 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface return world.dimension() == net.minecraft.world.level.Level.NETHER ? this.getProperties().allowNether : true; } @@ -23613,10 +23613,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index b9ab241b930edc63a39dbbcf14cd0b5edacb9ea9..8dd9375f2ad2c65a773a3195aeff1f977e09e7e0 100644 --- a/src/main/java/net/minecraft/server/level/ChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.lighting.LevelLightEngine; +@@ -32,46 +32,125 @@ import net.minecraft.world.level.lighting.LevelLightEngine; import net.minecraft.server.MinecraftServer; // CraftBukkit end @@ -23764,7 +23764,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.setTicketLevel(level); this.changedBlocksPerSection = new ShortSet[world.getSectionsCount()]; } -@@ -0,0 +0,0 @@ public class ChunkHolder extends GenerationChunkHolder { +@@ -79,7 +158,7 @@ public class ChunkHolder extends GenerationChunkHolder { // CraftBukkit start public LevelChunk getFullChunkNow() { // Note: We use the oldTicketLevel for isLoaded checks. @@ -23773,7 +23773,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return this.getFullChunkNowUnchecked(); } -@@ -0,0 +0,0 @@ public class ChunkHolder extends GenerationChunkHolder { +@@ -89,64 +168,65 @@ public class ChunkHolder extends GenerationChunkHolder { // CraftBukkit end public CompletableFuture<ChunkResult<LevelChunk>> getTickingChunkFuture() { @@ -23862,7 +23862,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (chunk == null) { return false; -@@ -0,0 +0,0 @@ public class ChunkHolder extends GenerationChunkHolder { +@@ -172,7 +252,7 @@ public class ChunkHolder extends GenerationChunkHolder { return false; } else { ichunkaccess.markUnsaved(); @@ -23871,7 +23871,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (chunk == null) { return false; -@@ -0,0 +0,0 @@ public class ChunkHolder extends GenerationChunkHolder { +@@ -207,7 +287,7 @@ public class ChunkHolder extends GenerationChunkHolder { List list; if (!this.skyChangedLightSectionFilter.isEmpty() || !this.blockChangedLightSectionFilter.isEmpty()) { @@ -23880,7 +23880,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (!list.isEmpty()) { ClientboundLightUpdatePacket packetplayoutlightupdate = new ClientboundLightUpdatePacket(chunk.getPos(), this.lightEngine, this.skyChangedLightSectionFilter, this.blockChangedLightSectionFilter); -@@ -0,0 +0,0 @@ public class ChunkHolder extends GenerationChunkHolder { +@@ -219,7 +299,7 @@ public class ChunkHolder extends GenerationChunkHolder { } if (this.hasChangedSections) { @@ -23889,7 +23889,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 for (int i = 0; i < this.changedBlocksPerSection.length; ++i) { ShortSet shortset = this.changedBlocksPerSection[i]; -@@ -0,0 +0,0 @@ public class ChunkHolder extends GenerationChunkHolder { +@@ -285,201 +365,48 @@ public class ChunkHolder extends GenerationChunkHolder { @Override public int getTicketLevel() { @@ -24102,10 +24102,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @FunctionalInterface diff --git a/src/main/java/net/minecraft/server/level/ChunkLevel.java b/src/main/java/net/minecraft/server/level/ChunkLevel.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 11b30b6daa1d049634350e34502c701e9800add4..fae17a075d7efaf24d916877dd5968eb9652bb66 100644 --- a/src/main/java/net/minecraft/server/level/ChunkLevel.java +++ b/src/main/java/net/minecraft/server/level/ChunkLevel.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.chunk.status.ChunkStep; +@@ -7,8 +7,8 @@ import net.minecraft.world.level.chunk.status.ChunkStep; import org.jetbrains.annotations.Contract; public class ChunkLevel { @@ -24117,10 +24117,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static final ChunkStep FULL_CHUNK_STEP = ChunkPyramid.GENERATION_PYRAMID.getStepTo(ChunkStatus.FULL); public static final int RADIUS_AROUND_FULL_CHUNK = FULL_CHUNK_STEP.accumulatedDependencies().getRadius(); diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index e9b585387f6cbc454e7b16feb36a256e733c5488..67cfc3236a39008cfcf3acffefafda1a604b8573 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -0,0 +0,0 @@ import org.slf4j.Logger; +@@ -108,7 +108,7 @@ import org.slf4j.Logger; import org.bukkit.craftbukkit.generator.CustomChunkGenerator; // CraftBukkit end @@ -24129,7 +24129,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static final ChunkResult<List<ChunkAccess>> UNLOADED_CHUNK_LIST_RESULT = ChunkResult.error("Unloaded chunks found in range"); private static final CompletableFuture<ChunkResult<List<ChunkAccess>>> UNLOADED_CHUNK_LIST_FUTURE = CompletableFuture.completedFuture(ChunkMap.UNLOADED_CHUNK_LIST_RESULT); -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -123,10 +123,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public static final int MIN_VIEW_DISTANCE = 2; public static final int MAX_VIEW_DISTANCE = 32; public static final int FORCED_TICKET_LEVEL = ChunkLevel.byStatus(FullChunkStatus.ENTITY_TICKING); @@ -24141,7 +24141,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public final ServerLevel level; private final ThreadedLevelLightEngine lightEngine; private final BlockableEventLoop<Runnable> mainThreadExecutor; -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -136,22 +133,18 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider private final PoiManager poiManager; public final LongSet toDrop; private boolean modified; @@ -24168,7 +24168,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // CraftBukkit start - recursion-safe executor for Chunk loadCallback() and unloadCallback() public final CallbackExecutor callbackExecutor = new CallbackExecutor(); -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -176,24 +169,26 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper start public final ChunkHolder getUnloadingChunkHolder(int chunkX, int chunkZ) { @@ -24203,7 +24203,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 Path path = session.getDimensionPath(world.dimension()); this.storageName = path.getFileName().toString(); -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -221,18 +216,16 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.chunkStatusListener = chunkStatusChangeListener; ConsecutiveExecutor consecutiveexecutor1 = new ConsecutiveExecutor(executor, "light"); @@ -24225,7 +24225,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // Paper start -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -263,23 +256,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } boolean isChunkTracked(ServerPlayer player, int chunkX, int chunkZ) { @@ -24251,7 +24251,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } protected ThreadedLevelLightEngine getLightEngine() { -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -288,20 +269,22 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @Nullable protected ChunkHolder getUpdatingChunkIfPresent(long pos) { @@ -24281,7 +24281,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public String getChunkDebugData(ChunkPos chunkPos) { -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -330,56 +313,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } private CompletableFuture<ChunkResult<List<ChunkAccess>>> getChunkRangeFuture(ChunkHolder centerChunk, int margin, IntFunction<ChunkStatus> distanceToStatus) { @@ -24339,7 +24339,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public ReportedException debugFuturesAndCreateReportedException(IllegalStateException exception, String details) { -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -409,104 +343,30 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public CompletableFuture<ChunkResult<LevelChunk>> prepareEntityTickingChunk(ChunkHolder holder) { @@ -24453,7 +24453,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -524,143 +384,29 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public boolean hasWork() { @@ -24604,7 +24604,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private ChunkAccess handleChunkLoadFailure(Throwable throwable, ChunkPos chunkPos) { -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -716,139 +462,43 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @Override public GenerationChunkHolder acquireGeneration(long pos) { @@ -24753,7 +24753,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public int getTickingGenerated() { -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -856,144 +506,80 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } private boolean saveChunkIfNeeded(ChunkHolder chunkHolder, long currentTime) { @@ -24946,7 +24946,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Nullable public LevelChunk getChunkToSend(long pos) { ChunkHolder playerchunk = this.getVisibleChunkIfPresent(pos); -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1059,7 +645,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } // CraftBukkit start @@ -24955,7 +24955,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return this.upgradeChunkTag(this.level.getTypeKey(), this.overworldDataStorage, nbttagcompound, this.generator().getTypeNameForDataFixer(), chunkcoordintpair, this.level); // CraftBukkit end } -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1069,7 +655,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider while (longiterator.hasNext()) { long i = longiterator.nextLong(); @@ -24964,7 +24964,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (playerchunk != null && this.anyPlayerCloseEnoughForSpawningInternal(playerchunk.getPos())) { callback.accept(playerchunk); -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1084,7 +670,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } boolean anyPlayerCloseEnoughForSpawning(ChunkPos chunkcoordintpair, boolean reducedRange) { @@ -24973,7 +24973,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Spigot end } -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1096,16 +682,20 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider private boolean anyPlayerCloseEnoughForSpawningInternal(ChunkPos chunkcoordintpair, boolean reducedRange) { double blockRange; // Paper - use from event // Spigot end @@ -25002,7 +25002,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Paper start - PlayerNaturallySpawnCreaturesEvent com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent event; blockRange = 16384.0D; -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1115,33 +705,47 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider blockRange = (double) ((event.getSpawnRadius() << 4) * (event.getSpawnRadius() << 4)); } // Paper end - PlayerNaturallySpawnCreaturesEvent @@ -25065,7 +25065,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (entityplayer.isSpectator()) { return false; } else { -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1164,19 +768,21 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.updatePlayerPos(player); if (!flag1) { this.distanceManager.addPlayer(SectionPos.of((EntityAccess) player), player); @@ -25089,7 +25089,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1188,17 +794,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public void move(ServerPlayer player) { @@ -25108,7 +25108,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 SectionPos sectionposition = player.getLastSectionPos(); SectionPos sectionposition1 = SectionPos.of((EntityAccess) player); -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1208,6 +804,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider if (flag2 || flag != flag1) { this.updatePlayerPos(player); @@ -25116,7 +25116,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (!flag) { this.distanceManager.removePlayer(sectionposition, player); } -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1224,70 +821,30 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.playerMap.unIgnorePlayer(player); } @@ -25198,7 +25198,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void addEntity(Entity entity) { -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1314,6 +871,12 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider ChunkMap.TrackedEntity playerchunkmap_entitytracker = new ChunkMap.TrackedEntity(entity, i, j, entitytypes.trackDeltas()); this.entityMap.put(entity.getId(), playerchunkmap_entitytracker); @@ -25211,7 +25211,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 playerchunkmap_entitytracker.updatePlayers(this.level.players()); if (entity instanceof ServerPlayer) { ServerPlayer entityplayer = (ServerPlayer) entity; -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1354,16 +917,38 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider playerchunkmap_entitytracker1.broadcastRemoved(); } @@ -25255,7 +25255,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 List<ServerPlayer> list = Lists.newArrayList(); List<ServerPlayer> list1 = this.level.players(); -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1466,27 +1051,25 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } public void waitForLightBeforeSending(ChunkPos centerPos, int radius) { @@ -25293,7 +25293,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Nullable -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1502,7 +1085,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } } @@ -25302,7 +25302,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public final ServerEntity serverEntity; final Entity entity; -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1510,6 +1093,89 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider SectionPos lastSectionPos; public final Set<ServerPlayerConnection> seenBy = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<>(); // Paper - Perf: optimise map impl @@ -25392,7 +25392,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public TrackedEntity(final Entity entity, final int i, final int j, final boolean flag) { this.serverEntity = new ServerEntity(ChunkMap.this.level, entity, j, flag, this::broadcast, this.seenBy); // CraftBukkit this.entity = entity; -@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1612,20 +1278,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } private int getEffectiveRange() { @@ -25428,10 +25428,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void updatePlayers(List<ServerPlayer> players) { diff --git a/src/main/java/net/minecraft/server/level/DistanceManager.java b/src/main/java/net/minecraft/server/level/DistanceManager.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index f7c2c03749d6be25bf33afd61e1da120770b3432..746f61661e22d22f2acbbe54a5933e57fbca45b2 100644 --- a/src/main/java/net/minecraft/server/level/DistanceManager.java +++ b/src/main/java/net/minecraft/server/level/DistanceManager.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.ChunkPos; +@@ -34,58 +34,57 @@ import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.chunk.LevelChunk; import org.slf4j.Logger; @@ -25525,7 +25525,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } -@@ -0,0 +0,0 @@ public abstract class DistanceManager { +@@ -102,105 +101,15 @@ public abstract class DistanceManager { protected abstract ChunkHolder updateChunkScheduling(long pos, int level, @Nullable ChunkHolder holder, int k); public boolean runAllUpdates(ChunkMap chunkLoadingManager) { @@ -25634,7 +25634,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public <T> void addTicket(TicketType<T> type, ChunkPos pos, int level, T argument) { -@@ -0,0 +0,0 @@ public abstract class DistanceManager { +@@ -219,13 +128,7 @@ public abstract class DistanceManager { } public <T> boolean addRegionTicketAtDistance(TicketType<T> tickettype, ChunkPos chunkcoordintpair, int i, T t0) { @@ -25649,7 +25649,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public <T> void removeRegionTicket(TicketType<T> type, ChunkPos pos, int radius, T argument) { -@@ -0,0 +0,0 @@ public abstract class DistanceManager { +@@ -234,32 +137,21 @@ public abstract class DistanceManager { } public <T> boolean removeRegionTicketAtDistance(TicketType<T> tickettype, ChunkPos chunkcoordintpair, int i, T t0) { @@ -25688,7 +25688,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } -@@ -0,0 +0,0 @@ public abstract class DistanceManager { +@@ -270,9 +162,8 @@ public abstract class DistanceManager { ((ObjectSet) this.playersPerChunk.computeIfAbsent(i, (j) -> { return new ObjectOpenHashSet(); })).add(player); @@ -25700,7 +25700,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void removePlayer(SectionPos pos, ServerPlayer player) { -@@ -0,0 +0,0 @@ public abstract class DistanceManager { +@@ -284,160 +175,93 @@ public abstract class DistanceManager { if (objectset != null) objectset.remove(player); // Paper - some state corruption happens here, don't crash, clean up gracefully if (objectset == null || objectset.isEmpty()) { // Paper this.playersPerChunk.remove(i); @@ -25890,7 +25890,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private class ChunkTicketTracker extends ChunkTracker { private static final int MAX_LEVEL = ChunkLevel.MAX_LEVEL + 1; -@@ -0,0 +0,0 @@ public abstract class DistanceManager { +@@ -483,7 +307,7 @@ public abstract class DistanceManager { public int runDistanceUpdates(int distance) { return this.runUpdates(distance); } @@ -25899,7 +25899,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private class FixedPlayerDistanceChunkTracker extends ChunkTracker { -@@ -0,0 +0,0 @@ public abstract class DistanceManager { +@@ -563,6 +387,7 @@ public abstract class DistanceManager { } } @@ -25907,7 +25907,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private class PlayerTicketTracker extends DistanceManager.FixedPlayerDistanceChunkTracker { private int viewDistance = 0; -@@ -0,0 +0,0 @@ public abstract class DistanceManager { +@@ -657,5 +482,5 @@ public abstract class DistanceManager { private boolean haveTicketFor(int distance) { return distance <= this.viewDistance; } @@ -25915,10 +25915,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + }*/ // Paper - rewrite chunk system } diff --git a/src/main/java/net/minecraft/server/level/GenerationChunkHolder.java b/src/main/java/net/minecraft/server/level/GenerationChunkHolder.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 65206fdfa5b94eaca139e433b4865c16b16641f3..bf4463bcb5dc439ac5a3fa08dd60845a5fd7489a 100644 --- a/src/main/java/net/minecraft/server/level/GenerationChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/GenerationChunkHolder.java -@@ -0,0 +0,0 @@ public abstract class GenerationChunkHolder { +@@ -27,13 +27,7 @@ public abstract class GenerationChunkHolder { public static final ChunkResult<ChunkAccess> UNLOADED_CHUNK = ChunkResult.error("Unloaded chunk"); public static final CompletableFuture<ChunkResult<ChunkAccess>> UNLOADED_CHUNK_FUTURE = CompletableFuture.completedFuture(UNLOADED_CHUNK); protected final ChunkPos pos; @@ -25933,7 +25933,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public GenerationChunkHolder(ChunkPos pos) { this.pos = pos; -@@ -0,0 +0,0 @@ public abstract class GenerationChunkHolder { +@@ -43,243 +37,96 @@ public abstract class GenerationChunkHolder { } public CompletableFuture<ChunkResult<ChunkAccess>> scheduleChunkGenerationTask(ChunkStatus requestedStatus, ChunkMap chunkLoadingManager) { @@ -26206,7 +26206,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public ChunkPos getPos() { -@@ -0,0 +0,0 @@ public abstract class GenerationChunkHolder { +@@ -287,7 +134,7 @@ public abstract class GenerationChunkHolder { } public FullChunkStatus getFullStatus() { @@ -26215,7 +26215,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public abstract int getTicketLevel(); -@@ -0,0 +0,0 @@ public abstract class GenerationChunkHolder { +@@ -296,26 +143,15 @@ public abstract class GenerationChunkHolder { @VisibleForDebug public List<Pair<ChunkStatus, CompletableFuture<ChunkResult<ChunkAccess>>>> getAllFutures() { @@ -26248,10 +26248,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 6a2af3cd3aebe525a5ff41a801929547d59b8fec..d7382fc1498a33db909c343d8d07c5aa7130c20f 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.storage.DimensionDataStorage; +@@ -52,7 +52,7 @@ import net.minecraft.world.level.storage.DimensionDataStorage; import net.minecraft.world.level.storage.LevelStorageSource; import org.slf4j.Logger; @@ -26260,7 +26260,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static final Logger LOGGER = LogUtils.getLogger(); private final DistanceManager distanceManager; -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -81,6 +81,107 @@ public class ServerChunkCache extends ChunkSource { } long chunkFutureAwaitCounter; // Paper end @@ -26368,7 +26368,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public ServerChunkCache(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor workerExecutor, ChunkGenerator chunkGenerator, int viewDistance, int simulationDistance, boolean dsync, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier<DimensionDataStorage> persistentStateManagerFactory) { this.level = world; -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -112,13 +213,7 @@ public class ServerChunkCache extends ChunkSource { } // CraftBukkit end // Paper start @@ -26383,7 +26383,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Nullable public ChunkAccess getChunkAtImmediately(int x, int z) { -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -189,59 +284,42 @@ public class ServerChunkCache extends ChunkSource { @Nullable @Override public ChunkAccess getChunk(int x, int z, ChunkStatus leastStatus, boolean create) { @@ -26469,7 +26469,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private void clearCache() { -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -272,56 +350,59 @@ public class ServerChunkCache extends ChunkSource { } private CompletableFuture<ChunkResult<ChunkAccess>> getChunkFutureMainThread(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create) { @@ -26567,7 +26567,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -334,30 +415,18 @@ public class ServerChunkCache extends ChunkSource { } public boolean runDistanceManagerUpdates() { // Paper - public @@ -26604,7 +26604,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.chunkMap.saveAllChunks(flush); } -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -368,17 +437,15 @@ public class ServerChunkCache extends ChunkSource { } public void close(boolean save) throws IOException { @@ -26625,7 +26625,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ProfilerFiller gameprofilerfiller = Profiler.get(); gameprofilerfiller.push("purge"); -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -403,6 +470,7 @@ public class ServerChunkCache extends ChunkSource { this.runDistanceManagerUpdates(); gameprofilerfiller.popPush("chunks"); if (tickChunks) { @@ -26633,7 +26633,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.tickChunks(); this.chunkMap.tick(); } -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -429,7 +497,10 @@ public class ServerChunkCache extends ChunkSource { gameprofilerfiller.push("filteringTickingChunks"); this.collectTickingChunks(list); gameprofilerfiller.popPush("shuffleChunks"); @@ -26645,7 +26645,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.tickChunks(gameprofilerfiller, j, list); gameprofilerfiller.pop(); } finally { -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -448,7 +519,7 @@ public class ServerChunkCache extends ChunkSource { while (iterator.hasNext()) { ChunkHolder playerchunk = (ChunkHolder) iterator.next(); @@ -26654,7 +26654,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (chunk != null) { playerchunk.broadcastChanges(chunk); -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -460,14 +531,26 @@ public class ServerChunkCache extends ChunkSource { } private void collectTickingChunks(List<LevelChunk> chunks) { @@ -26686,7 +26686,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private void tickChunks(ProfilerFiller profiler, long timeDelta, List<LevelChunk> chunks) { -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -508,7 +591,7 @@ public class ServerChunkCache extends ChunkSource { NaturalSpawner.spawnForChunk(this.level, chunk, spawnercreature_d, list1); } @@ -26695,7 +26695,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.level.tickChunk(chunk, k); } } -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -521,11 +604,13 @@ public class ServerChunkCache extends ChunkSource { } private void getFullChunk(long pos, Consumer<LevelChunk> chunkConsumer) { @@ -26713,7 +26713,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -619,6 +704,12 @@ public class ServerChunkCache extends ChunkSource { this.chunkMap.setServerViewDistance(watchDistance); } @@ -26726,7 +26726,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void setSimulationDistance(int simulationDistance) { this.distanceManager.updateSimulationDistance(simulationDistance); } -@@ -0,0 +0,0 @@ public class ServerChunkCache extends ChunkSource { +@@ -710,21 +801,19 @@ public class ServerChunkCache extends ChunkSource { @Override // CraftBukkit start - process pending Chunk loadCallback() and unloadCallback() after each run task public boolean pollTask() { @@ -26755,10 +26755,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index d5bc702f2676b1b7a32c8f3a4a349fc2710ee825..301e8d6599d200cb0f1328f0e386af2f9a619939 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -0,0 +0,0 @@ public class ServerEntity { +@@ -101,6 +101,11 @@ public class ServerEntity { } public void sendChanges() { @@ -26771,10 +26771,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (!list.equals(this.lastPassengers)) { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 6c71ef3c7430623900a7021f853d2bb514273e4d..cf692267c6376ed8484478dc90f4f905d8325618 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -0,0 +0,0 @@ import org.bukkit.event.weather.LightningStrikeEvent; +@@ -186,7 +186,7 @@ import org.bukkit.event.weather.LightningStrikeEvent; import org.bukkit.event.world.TimeSkipEvent; // CraftBukkit end @@ -26783,7 +26783,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static final BlockPos END_SPAWN_POINT = new BlockPos(100, 50, 0); public static final IntProvider RAIN_DELAY = UniformInt.of(12000, 180000); -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -202,7 +202,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe public final PrimaryLevelData serverLevelData; // CraftBukkit - type private int lastSpawnChunkRadius; final EntityTickList entityTickList = new EntityTickList(); @@ -26792,7 +26792,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final GameEventDispatcher gameEventDispatcher; public boolean noSave; private final SleepStatus sleepStatus; -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -273,12 +273,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe public final void loadChunksForMoveAsync(AABB axisalignedbb, ca.spottedleaf.concurrentutil.util.Priority priority, java.util.function.Consumer<List<net.minecraft.world.level.chunk.ChunkAccess>> onLoad) { @@ -26806,7 +26806,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 int minBlockX = Mth.floor(axisalignedbb.minX - 1.0E-7D) - 3; int minBlockZ = Mth.floor(axisalignedbb.minZ - 1.0E-7D) - 3; -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -297,32 +292,159 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe public final void loadChunks(int minChunkX, int minChunkZ, int maxChunkX, int maxChunkZ, ca.spottedleaf.concurrentutil.util.Priority priority, java.util.function.Consumer<List<net.minecraft.world.level.chunk.ChunkAccess>> onLoad) { @@ -26982,7 +26982,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } } -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -330,22 +452,137 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe for (int cx = minChunkX; cx <= maxChunkX; ++cx) { for (int cz = minChunkZ; cz <= maxChunkZ; ++cz) { @@ -27130,7 +27130,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Add env and gen to constructor, IWorldDataServer -> WorldDataServer public ServerLevel(MinecraftServer minecraftserver, Executor executor, LevelStorageSource.LevelStorageAccess convertable_conversionsession, PrimaryLevelData iworlddataserver, ResourceKey<Level> resourcekey, LevelStem worlddimension, ChunkProgressListener worldloadlistener, boolean flag, long i, List<CustomSpawner> list, boolean flag1, @Nullable RandomSequences randomsequences, org.bukkit.World.Environment env, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider) { -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -379,14 +616,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe DataFixer datafixer = minecraftserver.getFixerUpper(); EntityPersistentStorage<Entity> entitypersistentstorage = new EntityStorage(new SimpleRegionStorage(new RegionStorageInfo(convertable_conversionsession.getLevelId(), resourcekey, "entities"), convertable_conversionsession.getDimensionPath(resourcekey).resolve("entities"), datafixer, flag2, DataFixTypes.ENTITY_CHUNK), this, minecraftserver); @@ -27148,7 +27148,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return minecraftserver.overworld().getDataStorage(); }); this.chunkSource.getGeneratorState().ensureStructuresGenerated(); -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -414,6 +650,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.randomSequences = (RandomSequences) Objects.requireNonNullElseGet(randomsequences, () -> { return (RandomSequences) this.getDataStorage().computeIfAbsent(RandomSequences.factory(l), "random_sequences"); }); @@ -27169,7 +27169,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit } -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -536,7 +786,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe gameprofilerfiller.push("checkDespawn"); entity.checkDespawn(); gameprofilerfiller.pop(); @@ -27178,7 +27178,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 Entity entity1 = entity.getVehicle(); if (entity1 != null) { -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -559,13 +809,16 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } gameprofilerfiller.push("entityManagement"); @@ -27197,7 +27197,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } protected void tickTime() { -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -605,7 +858,60 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe }); } @@ -27258,7 +27258,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ChunkPos chunkcoordintpair = chunk.getPos(); boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -613,7 +919,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe ProfilerFiller gameprofilerfiller = Profiler.get(); gameprofilerfiller.push("thunder"); @@ -27267,7 +27267,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 BlockPos blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); if (this.isRainingAt(blockposition)) { -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -645,7 +951,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow for (int l = 0; l < randomTickSpeed; ++l) { @@ -27276,7 +27276,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.tickPrecipitation(this.getBlockRandomPos(j, 0, k, 15)); } } -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -653,35 +959,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe gameprofilerfiller.popPush("tickBlocks"); if (randomTickSpeed > 0) { @@ -27313,7 +27313,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } gameprofilerfiller.pop(); -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -954,6 +1232,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (fluid1.is(fluid)) { fluid1.tick(this, pos, iblockdata); } @@ -27325,7 +27325,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -963,6 +1246,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (iblockdata.is(block)) { iblockdata.tick(this, pos, this.random); } @@ -27337,7 +27337,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1041,6 +1329,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } public void save(@Nullable ProgressListener progressListener, boolean flush, boolean savingDisabled) { @@ -27349,7 +27349,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ServerChunkCache chunkproviderserver = this.getChunkSource(); if (!savingDisabled) { -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1054,14 +1347,19 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -27375,7 +27375,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // CraftBukkit start - moved from MinecraftServer.saveChunks ServerLevel worldserver1 = this; -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1201,7 +1499,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.removePlayerImmediately((ServerPlayer) entity, Entity.RemovalReason.DISCARDED); } @@ -27384,7 +27384,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // CraftBukkit start -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1232,7 +1530,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } // CraftBukkit end @@ -27393,7 +27393,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1243,11 +1541,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe public boolean tryAddFreshEntityWithPassengers(Entity entity, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) { // CraftBukkit end @@ -27406,7 +27406,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return false; } else { this.addFreshEntityWithPassengers(entity, reason); // CraftBukkit -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1924,7 +2218,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } } @@ -27415,7 +27415,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 bufferedwriter.write(String.format(Locale.ROOT, "block_entity_tickers: %d\n", this.blockEntityTickers.size())); bufferedwriter.write(String.format(Locale.ROOT, "block_ticks: %d\n", this.getBlockTicks().count())); bufferedwriter.write(String.format(Locale.ROOT, "fluid_ticks: %d\n", this.getFluidTicks().count())); -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1973,7 +2267,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe BufferedWriter bufferedwriter2 = Files.newBufferedWriter(path1); try { @@ -27424,7 +27424,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } catch (Throwable throwable4) { if (bufferedwriter2 != null) { try { -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1994,7 +2288,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe BufferedWriter bufferedwriter3 = Files.newBufferedWriter(path2); try { @@ -27433,7 +27433,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } catch (Throwable throwable6) { if (bufferedwriter3 != null) { try { -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2136,7 +2430,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @VisibleForTesting public String getWatchdogStats() { @@ -27442,7 +27442,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return BuiltInRegistries.ENTITY_TYPE.getKey(entity.getType()).toString(); }), this.blockEntityTickers.size(), ServerLevel.getTypeCount(this.blockEntityTickers, TickingBlockEntity::getType), this.getBlockTicks().count(), this.getFluidTicks().count(), this.gatherChunkSourceStats()); } -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2166,15 +2460,25 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Override public LevelEntityGetter<Entity> getEntities() { org.spigotmc.AsyncCatcher.catchOp("Chunk getEntities call"); // Spigot @@ -27471,7 +27471,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void startTickingChunk(LevelChunk chunk) { -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2194,34 +2498,47 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Override public void close() throws IOException { super.close(); @@ -27526,7 +27526,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override -@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2277,7 +2594,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe CrashReportCategory crashreportsystemdetails = super.fillReportDetails(report); crashreportsystemdetails.setDetail("Loaded entity count", () -> { @@ -27536,10 +27536,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return crashreportsystemdetails; } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index f6e3073e1f1ff99f6917d84974a18e3e756fa9ea..ba873bcc183f9b3f64ba39be08cb88a95ff52b0e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -0,0 +0,0 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; +@@ -217,7 +217,7 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.inventory.MainHand; // CraftBukkit end @@ -27548,7 +27548,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static final Logger LOGGER = LogUtils.getLogger(); private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_XZ = 32; -@@ -0,0 +0,0 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { +@@ -322,6 +322,36 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { public @Nullable String clientBrandName = null; // Paper - Brand support public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event @@ -27586,10 +27586,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); this.chatVisibility = ChatVisiblity.FULL; diff --git a/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java b/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 39d34f3728ae8d845d1bffc09f3ab8b64eb4d48b..3e82adf061bd0ec0100ca4d16ec9b157bddf99a7 100644 --- a/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java +++ b/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.chunk.LightChunkGetter; +@@ -22,23 +22,134 @@ import net.minecraft.world.level.chunk.LightChunkGetter; import net.minecraft.world.level.lighting.LevelLightEngine; import org.slf4j.Logger; @@ -27731,7 +27731,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override -@@ -0,0 +0,0 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl +@@ -52,164 +163,73 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl @Override public void checkBlock(BlockPos pos) { @@ -27920,10 +27920,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 static enum TaskType { diff --git a/src/main/java/net/minecraft/server/level/Ticket.java b/src/main/java/net/minecraft/server/level/Ticket.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index eba83b085435150e5954fd5d41dda9ce1d0601ad..daf543b51d8875b374688957ae4bc466f5512bcd 100644 --- a/src/main/java/net/minecraft/server/level/Ticket.java +++ b/src/main/java/net/minecraft/server/level/Ticket.java -@@ -0,0 +0,0 @@ package net.minecraft.server.level; +@@ -2,13 +2,25 @@ package net.minecraft.server.level; import java.util.Objects; @@ -27952,7 +27952,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.type = type; this.ticketLevel = level; this.key = argument; -@@ -0,0 +0,0 @@ public final class Ticket<T> implements Comparable<Ticket<?>> { +@@ -41,7 +53,7 @@ public final class Ticket<T> implements Comparable<Ticket<?>> { @Override public String toString() { @@ -27961,7 +27961,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public TicketType<T> getType() { -@@ -0,0 +0,0 @@ public final class Ticket<T> implements Comparable<Ticket<?>> { +@@ -53,11 +65,10 @@ public final class Ticket<T> implements Comparable<Ticket<?>> { } protected void setCreatedTick(long tickCreated) { @@ -27976,10 +27976,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index b7d29389a357f142237cecd75f8ca91cf1eb6b5b..e4b0dc3121101d54394a0c3a413dabf8103b2ea6 100644 --- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java +++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -@@ -0,0 +0,0 @@ public class WorldGenRegion implements WorldGenLevel { +@@ -85,6 +85,36 @@ public class WorldGenRegion implements WorldGenLevel { private final AtomicLong subTickCount = new AtomicLong(); private static final ResourceLocation WORLDGEN_REGION_RANDOM = ResourceLocation.withDefaultNamespace("worldgen_region_random"); @@ -28017,10 +28017,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.generatingStep = generationStep; this.cache = chunks; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index c68040a59fa8aa9b8b9f1e0b4fdded565ea592d9..7913c41aac1f9dd53a2b49da2a17fd894bcb6b3a 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -0,0 +0,0 @@ public abstract class PlayerList { +@@ -1426,7 +1426,7 @@ public abstract class PlayerList { public void setViewDistance(int viewDistance) { this.viewDistance = viewDistance; @@ -28029,7 +28029,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 Iterator iterator = this.server.getAllLevels().iterator(); while (iterator.hasNext()) { -@@ -0,0 +0,0 @@ public abstract class PlayerList { +@@ -1441,7 +1441,7 @@ public abstract class PlayerList { public void setSimulationDistance(int simulationDistance) { this.simulationDistance = simulationDistance; @@ -28039,10 +28039,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/util/BitStorage.java b/src/main/java/net/minecraft/util/BitStorage.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 68648c5a5e3ff079f832092af0f2f801c42d1ede..e4e153cb8899e70273aa150b8ea26907cf68b15c 100644 --- a/src/main/java/net/minecraft/util/BitStorage.java +++ b/src/main/java/net/minecraft/util/BitStorage.java -@@ -0,0 +0,0 @@ package net.minecraft.util; +@@ -2,7 +2,7 @@ package net.minecraft.util; import java.util.function.IntConsumer; @@ -28051,7 +28051,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 int getAndSet(int index, int value); void set(int index, int value); -@@ -0,0 +0,0 @@ public interface BitStorage { +@@ -20,4 +20,22 @@ public interface BitStorage { void unpack(int[] out); BitStorage copy(); @@ -28075,10 +28075,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end - block counting } diff --git a/src/main/java/net/minecraft/util/CrudeIncrementalIntIdentityHashBiMap.java b/src/main/java/net/minecraft/util/CrudeIncrementalIntIdentityHashBiMap.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 61dee55417bc802e25b9ba2f271d32d8c12844a9..a8a260a3caaa8e5004069b833ecc8b17b2fc8db5 100644 --- a/src/main/java/net/minecraft/util/CrudeIncrementalIntIdentityHashBiMap.java +++ b/src/main/java/net/minecraft/util/CrudeIncrementalIntIdentityHashBiMap.java -@@ -0,0 +0,0 @@ import java.util.Iterator; +@@ -7,7 +7,7 @@ import java.util.Iterator; import javax.annotation.Nullable; import net.minecraft.core.IdMap; @@ -28087,7 +28087,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static final int NOT_FOUND = -1; private static final Object EMPTY_SLOT = null; private static final float LOADFACTOR = 0.8F; -@@ -0,0 +0,0 @@ public class CrudeIncrementalIntIdentityHashBiMap<K> implements IdMap<K> { +@@ -17,6 +17,16 @@ public class CrudeIncrementalIntIdentityHashBiMap<K> implements IdMap<K> { private int nextId; private int size; @@ -28104,7 +28104,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private CrudeIncrementalIntIdentityHashBiMap(int size) { this.keys = (K[])(new Object[size]); this.values = new int[size]; -@@ -0,0 +0,0 @@ public class CrudeIncrementalIntIdentityHashBiMap<K> implements IdMap<K> { +@@ -88,6 +98,12 @@ public class CrudeIncrementalIntIdentityHashBiMap<K> implements IdMap<K> { this.byId = crudeIncrementalIntIdentityHashBiMap.byId; this.nextId = crudeIncrementalIntIdentityHashBiMap.nextId; this.size = crudeIncrementalIntIdentityHashBiMap.size; @@ -28118,10 +28118,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void addMapping(K value, int id) { diff --git a/src/main/java/net/minecraft/util/SimpleBitStorage.java b/src/main/java/net/minecraft/util/SimpleBitStorage.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 9f438d9c6eb05e43d24e4af68188a3d4c46a938c..d99ec470b4653beab630999a5b2c1a6428b20c38 100644 --- a/src/main/java/net/minecraft/util/SimpleBitStorage.java +++ b/src/main/java/net/minecraft/util/SimpleBitStorage.java -@@ -0,0 +0,0 @@ public class SimpleBitStorage implements BitStorage { +@@ -208,6 +208,20 @@ public class SimpleBitStorage implements BitStorage { private final int divideAdd; private final long divideAddUnsigned; // Paper - Perf: Optimize SimpleBitStorage private final int divideShift; @@ -28142,7 +28142,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public SimpleBitStorage(int elementBits, int size, int[] data) { this(elementBits, size); int i = 0; -@@ -0,0 +0,0 @@ public class SimpleBitStorage implements BitStorage { +@@ -261,6 +275,13 @@ public class SimpleBitStorage implements BitStorage { } else { this.data = new long[j]; } @@ -28156,7 +28156,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private int cellIndex(int index) { -@@ -0,0 +0,0 @@ public class SimpleBitStorage implements BitStorage { +@@ -273,31 +294,54 @@ public class SimpleBitStorage implements BitStorage { public final int getAndSet(int index, int value) { // Paper - Perf: Optimize SimpleBitStorage //Validate.inclusiveBetween(0L, (long)(this.size - 1), (long)index); // Paper - Perf: Optimize SimpleBitStorage //Validate.inclusiveBetween(0L, this.mask, (long)value); // Paper - Perf: Optimize SimpleBitStorage @@ -28225,7 +28225,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override -@@ -0,0 +0,0 @@ public class SimpleBitStorage implements BitStorage { +@@ -362,6 +406,67 @@ public class SimpleBitStorage implements BitStorage { return new SimpleBitStorage(this.bits, this.size, (long[])this.data.clone()); } @@ -28294,10 +28294,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 InitializationException(String message) { super(message); diff --git a/src/main/java/net/minecraft/util/SortedArraySet.java b/src/main/java/net/minecraft/util/SortedArraySet.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index ea72dcb064a35bc6245bc5c94d592efedd8faf41..87ee8e51dfa7657ed7d83fcbceef48bf857043e1 100644 --- a/src/main/java/net/minecraft/util/SortedArraySet.java +++ b/src/main/java/net/minecraft/util/SortedArraySet.java -@@ -0,0 +0,0 @@ import java.util.Iterator; +@@ -8,12 +8,89 @@ import java.util.Iterator; import java.util.NoSuchElementException; import javax.annotation.Nullable; @@ -28389,10 +28389,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.comparator = comparator; if (initialCapacity < 0) { diff --git a/src/main/java/net/minecraft/util/ZeroBitStorage.java b/src/main/java/net/minecraft/util/ZeroBitStorage.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 50040c497a819cd1229042ab3cb057d34a32cacc..1f9c436a632e4f110be61cf76fcfc3b7eb80334e 100644 --- a/src/main/java/net/minecraft/util/ZeroBitStorage.java +++ b/src/main/java/net/minecraft/util/ZeroBitStorage.java -@@ -0,0 +0,0 @@ public class ZeroBitStorage implements BitStorage { +@@ -62,4 +62,22 @@ public class ZeroBitStorage implements BitStorage { public BitStorage copy() { return this; } @@ -28416,10 +28416,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end - block counting } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 766031d1482b0f49b196326b820d5ce9ae1c7c06..1f54752a4ea0788e73279cd99c7c35e3b5d9b6ce 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -0,0 +0,0 @@ import org.bukkit.event.player.PlayerTeleportEvent; +@@ -176,7 +176,7 @@ import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.plugin.PluginManager; // CraftBukkit end @@ -28428,7 +28428,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // CraftBukkit start private static final int CURRENT_LEVEL = 2; -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -187,7 +187,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // Paper start - Share random for entities to make them more random public static RandomSource SHARED_RANDOM = new RandomRandomSource(); @@ -28447,7 +28447,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private boolean locked = false; @Override -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -200,61 +210,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -28510,7 +28510,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // Paper end - Share random for entities to make them more random public org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason; // Paper - Entity#getEntitySpawnReason -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -462,6 +418,156 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.dimensions.makeBoundingBox(x, y, z); } // Paper end @@ -28667,7 +28667,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public Entity(EntityType<?> type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1387,41 +1493,76 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } private Vec3 collide(Vec3 movement) { @@ -28772,7 +28772,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private static float[] collectCandidateStepUpHeights(AABB collisionBox, List<VoxelShape> collisions, float f, float stepHeight) { -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2821,18 +2962,110 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean isInWall() { @@ -28890,7 +28890,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public InteractionResult interact(Player player, InteractionHand hand) { -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4310,14 +4543,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public Iterable<Entity> getIndirectPassengers() { @@ -28915,7 +28915,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private Iterable<Entity> getIndirectPassengers_old() { // Paper end - Optimize indirect passenger iteration -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4475,82 +4711,136 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Mth.lerp(delta, this.yRotO, this.yRot); } @@ -29110,7 +29110,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public boolean touchingUnloadedChunk() { AABB axisalignedbb = this.getBoundingBox().inflate(1.0D); -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4702,6 +4992,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setPosRaw(x, y, z, false); } public final void setPosRaw(double x, double y, double z, boolean forceBoundingBoxUpdate) { @@ -29126,7 +29126,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (!checkPosition(this, x, y, z)) { return; } -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4831,6 +5130,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @Override public final void setRemoved(Entity.RemovalReason entity_removalreason, EntityRemoveEvent.Cause cause) { @@ -29139,7 +29139,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 CraftEventFactory.callEntityRemoveEvent(this, cause); // CraftBukkit end final boolean alreadyRemoved = this.removalReason != null; // Paper - Folia schedulers -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4842,7 +5147,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.stopRiding(); } @@ -29148,7 +29148,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.levelCallback.onRemove(entity_removalreason); this.onRemoval(entity_removalreason); // Paper start - Folia schedulers -@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4874,7 +5179,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @Override public boolean shouldBeSaved() { @@ -29158,10 +29158,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override diff --git a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 96bc0ba60195e5e666d47b3a0b943b733986d96a..5930a430983061afddf20e3208ff2462ca1b78cd 100644 --- a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java +++ b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.chunk.storage.RegionStorageInfo; +@@ -38,12 +38,137 @@ import net.minecraft.world.level.chunk.storage.RegionStorageInfo; import net.minecraft.world.level.chunk.storage.SectionStorage; import net.minecraft.world.level.chunk.storage.SimpleRegionStorage; @@ -29300,7 +29300,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public PoiManager( RegionStorageInfo storageKey, Path directory, -@@ -0,0 +0,0 @@ public class PoiManager extends SectionStorage<PoiSection, PoiSection.Packed> { +@@ -64,6 +189,7 @@ public class PoiManager extends SectionStorage<PoiSection, PoiSection.Packed> { world ); this.distanceTracker = new PoiManager.DistanceTracker(); @@ -29308,7 +29308,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void add(BlockPos pos, Holder<PoiType> type) { -@@ -0,0 +0,0 @@ public class PoiManager extends SectionStorage<PoiSection, PoiSection.Packed> { +@@ -197,8 +323,10 @@ public class PoiManager extends SectionStorage<PoiSection, PoiSection.Packed> { } public int sectionsToVillage(SectionPos pos) { @@ -29321,7 +29321,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } boolean isVillageCenter(long pos) { -@@ -0,0 +0,0 @@ public class PoiManager extends SectionStorage<PoiSection, PoiSection.Packed> { +@@ -212,19 +340,26 @@ public class PoiManager extends SectionStorage<PoiSection, PoiSection.Packed> { @Override public void tick(BooleanSupplier shouldKeepTicking) { @@ -29354,7 +29354,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void checkConsistencyWithBlocks(SectionPos sectionPos, LevelChunkSection chunkSection) { -@@ -0,0 +0,0 @@ public class PoiManager extends SectionStorage<PoiSection, PoiSection.Packed> { +@@ -263,7 +398,7 @@ public class PoiManager extends SectionStorage<PoiSection, PoiSection.Packed> { .map(sectionPos -> Pair.of(sectionPos, this.getOrLoad(sectionPos.asLong()))) .filter(pair -> !pair.getSecond().map(PoiSection::isValid).orElse(false)) .map(pair -> pair.getFirst().chunk()) @@ -29364,10 +29364,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } diff --git a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiSection.java b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiSection.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index b9e0bc8f1e948614d986335de1f3d2df199eea81..712cbfc100e8aaf612d1d651dae64f57f892a768 100644 --- a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiSection.java +++ b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiSection.java -@@ -0,0 +0,0 @@ import net.minecraft.core.SectionPos; +@@ -23,13 +23,27 @@ import net.minecraft.core.SectionPos; import net.minecraft.util.VisibleForDebug; import org.slf4j.Logger; @@ -29397,10 +29397,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this(updateListener, true, ImmutableList.of()); } diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 63f02cdc67d9e88cc6998d0ae9d139c83e85b447..70b8023c3badc745f342d5b0ab54699e3923826a 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -0,0 +0,0 @@ public class ArmorStand extends LivingEntity { +@@ -364,7 +364,7 @@ public class ArmorStand extends LivingEntity { @Override protected void pushEntities() { if (!this.level().paperConfig().entities.armorStands.doCollisionEntityLookups) return; // Paper - Option to prevent armor stands from doing entity lookups @@ -29410,10 +29410,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/world/level/ClipContext.java b/src/main/java/net/minecraft/world/level/ClipContext.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 3fa2964b979053ecbefc946c7fe76828de86d8f1..28bf0518f7d17099d7e4990defbeda6757b4477c 100644 --- a/src/main/java/net/minecraft/world/level/ClipContext.java +++ b/src/main/java/net/minecraft/world/level/ClipContext.java -@@ -0,0 +0,0 @@ public class ClipContext { +@@ -18,7 +18,7 @@ public class ClipContext { private final Vec3 from; private final Vec3 to; private final ClipContext.Block block; @@ -29423,10 +29423,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public ClipContext(Vec3 start, Vec3 end, ClipContext.Block shapeType, ClipContext.Fluid fluidHandling, Entity entity) { diff --git a/src/main/java/net/minecraft/world/level/EntityGetter.java b/src/main/java/net/minecraft/world/level/EntityGetter.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index e185a33b5b1f8e8e0a0e666b24ba3e9186a8a7ff..5d7a6e4b73f032db356e7ec369b150013e940ee6 100644 --- a/src/main/java/net/minecraft/world/level/EntityGetter.java +++ b/src/main/java/net/minecraft/world/level/EntityGetter.java -@@ -0,0 +0,0 @@ import net.minecraft.world.phys.shapes.BooleanOp; +@@ -15,7 +15,7 @@ import net.minecraft.world.phys.shapes.BooleanOp; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; @@ -29435,7 +29435,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 List<Entity> getEntities(@Nullable Entity except, AABB box, Predicate<? super Entity> predicate); <T extends Entity> List<T> getEntities(EntityTypeTest<Entity, T> filter, AABB box, Predicate<? super T> predicate); -@@ -0,0 +0,0 @@ public interface EntityGetter { +@@ -30,21 +30,44 @@ public interface EntityGetter { return this.getEntities(except, box, EntitySelector.NO_SPECTATORS); } @@ -29491,7 +29491,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } default <T extends Entity> List<T> getEntitiesOfClass(Class<T> entityClass, AABB box) { -@@ -0,0 +0,0 @@ public interface EntityGetter { +@@ -52,23 +75,41 @@ public interface EntityGetter { } default List<VoxelShape> getEntityCollisions(@Nullable Entity entity, AABB box) { @@ -29547,10 +29547,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Paper start - Affects Spawning API diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 2a078293332efe4369f314ab021dfa16f63f7f3f..f477c5817f022ce7c4ad25e9b827401434bcfff1 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.storage.LevelData; +@@ -84,6 +84,7 @@ import net.minecraft.world.level.storage.LevelData; import net.minecraft.world.level.storage.WritableLevelData; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; @@ -29558,7 +29558,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 import net.minecraft.world.scores.Scoreboard; // CraftBukkit start -@@ -0,0 +0,0 @@ import org.bukkit.entity.SpawnCategory; +@@ -105,7 +106,7 @@ import org.bukkit.entity.SpawnCategory; import org.bukkit.event.block.BlockPhysicsEvent; // CraftBukkit end @@ -29567,7 +29567,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static final Codec<ResourceKey<Level>> RESOURCE_KEY_CODEC = ResourceKey.codec(Registries.DIMENSION); public static final ResourceKey<Level> OVERWORLD = ResourceKey.create(Registries.DIMENSION, ResourceLocation.withDefaultNamespace("overworld")); -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -131,7 +132,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public float rainLevel; protected float oThunderLevel; public float thunderLevel; @@ -29576,7 +29576,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 /** @deprecated */ @Deprecated private final RandomSource threadSafeRandom = RandomSource.createThreadSafe(); -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -207,7 +208,639 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public abstract ResourceKey<LevelStem> getTypeKey(); @@ -30216,7 +30216,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config this.generator = gen; -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -288,6 +921,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.entityLimiter = new org.spigotmc.TickLimiter(this.spigotConfig.entityMaxTickTime); this.tileLimiter = new org.spigotmc.TickLimiter(this.spigotConfig.tileMaxTickTime); this.chunkPacketBlockController = this.paperConfig().anticheat.antiXray.enabled ? new com.destroystokyo.paper.antixray.ChunkPacketBlockControllerAntiXray(this, executor) : com.destroystokyo.paper.antixray.ChunkPacketBlockController.NO_OPERATION_INSTANCE; // Paper - Anti-Xray @@ -30224,7 +30224,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // Paper start - Cancel hit for vanished players -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -557,7 +1191,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.setBlocksDirty(blockposition, iblockdata1, iblockdata2); } @@ -30233,7 +30233,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.sendBlockUpdated(blockposition, iblockdata1, iblockdata, i); } -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -820,6 +1454,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { // Iterator<TickingBlockEntity> iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); @@ -30242,7 +30242,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 int tilesThisCycle = 0; var toRemove = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<TickingBlockEntity>(); // Paper - Fix MC-117075; use removeAll toRemove.add(null); // Paper - Fix MC-117075 -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -835,6 +1471,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable { // Spigot end } else if (flag && this.shouldTickBlocksAt(tickingblockentity.getPos())) { tickingblockentity.tick(); @@ -30254,7 +30254,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -855,12 +1496,20 @@ public abstract class Level implements LevelAccessor, AutoCloseable { entity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD); // Paper end - Prevent block entity and entity crashes } @@ -30276,7 +30276,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // Paper end - Option to prevent armor stands from doing entity lookups -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -912,7 +1561,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } // Paper end - Perf: Optimize capturedTileEntities lookup // CraftBukkit end @@ -30285,7 +30285,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void setBlockEntity(BlockEntity blockEntity) { -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1004,23 +1653,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { Profiler.get().incrementCounter("getEntities"); List<Entity> list = Lists.newArrayList(); @@ -30315,7 +30315,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override -@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1035,36 +1676,94 @@ public abstract class Level implements LevelAccessor, AutoCloseable { this.getEntities(filter, box, predicate, result, Integer.MAX_VALUE); } @@ -30432,10 +30432,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Nullable public abstract Entity getEntity(int id); diff --git a/src/main/java/net/minecraft/world/level/LevelReader.java b/src/main/java/net/minecraft/world/level/LevelReader.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 5eb8982678110fabb82a93c5ec67c666b7fde017..ade435de0af4ee3566fa4a490df53cddd2f6531c 100644 --- a/src/main/java/net/minecraft/world/level/LevelReader.java +++ b/src/main/java/net/minecraft/world/level/LevelReader.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.dimension.DimensionType; +@@ -22,7 +22,18 @@ import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.phys.AABB; @@ -30456,10 +30456,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ChunkAccess getChunk(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create); diff --git a/src/main/java/net/minecraft/world/level/ServerExplosion.java b/src/main/java/net/minecraft/world/level/ServerExplosion.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index b8ffe547ad29645b65c3df8bd6ccb7c20985711d..685ccfb73bf7125585ef90b6a0f51b2f81daa428 100644 --- a/src/main/java/net/minecraft/world/level/ServerExplosion.java +++ b/src/main/java/net/minecraft/world/level/ServerExplosion.java -@@ -0,0 +0,0 @@ public class ServerExplosion implements Explosion { +@@ -64,6 +64,249 @@ public class ServerExplosion implements Explosion { public float yield; // CraftBukkit end public boolean excludeSourceFromDamage = true; // Paper - Allow explosions to damage source @@ -30709,7 +30709,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public ServerExplosion(ServerLevel world, @Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, Vec3 pos, float power, boolean createFire, Explosion.BlockInteraction destructionType) { this.level = world; -@@ -0,0 +0,0 @@ public class ServerExplosion implements Explosion { +@@ -127,65 +370,101 @@ public class ServerExplosion implements Explosion { } private List<BlockPos> calculateExplodedPositions() { @@ -30860,7 +30860,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private void hurtEntities() { -@@ -0,0 +0,0 @@ public class ServerExplosion implements Explosion { +@@ -391,6 +670,14 @@ public class ServerExplosion implements Explosion { return; } // CraftBukkit end @@ -30875,7 +30875,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.level.gameEvent(this.source, (Holder) GameEvent.EXPLODE, this.center); List<BlockPos> list = this.calculateExplodedPositions(); -@@ -0,0 +0,0 @@ public class ServerExplosion implements Explosion { +@@ -406,6 +693,13 @@ public class ServerExplosion implements Explosion { if (this.fire) { this.createFire(list); } @@ -30889,7 +30889,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } -@@ -0,0 +0,0 @@ public class ServerExplosion implements Explosion { +@@ -499,12 +793,12 @@ public class ServerExplosion implements Explosion { // Paper start - Optimize explosions private float getBlockDensity(Vec3 vec3d, Entity entity) { if (!this.level.paperConfig().environment.optimizeExplosions) { @@ -30905,10 +30905,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } diff --git a/src/main/java/net/minecraft/world/level/biome/Biome.java b/src/main/java/net/minecraft/world/level/biome/Biome.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 9f86b69d8c93a63e0b408ea52519f1fc2e798226..78afd8e51e03cd53c12b64db8a817da457f81bef 100644 --- a/src/main/java/net/minecraft/world/level/biome/Biome.java +++ b/src/main/java/net/minecraft/world/level/biome/Biome.java -@@ -0,0 +0,0 @@ public final class Biome { +@@ -113,20 +113,7 @@ public final class Biome { @Deprecated public float getTemperature(BlockPos blockPos, int seaLevel) { @@ -30931,10 +30931,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public boolean shouldFreeze(LevelReader world, BlockPos blockPos) { diff --git a/src/main/java/net/minecraft/world/level/biome/BiomeManager.java b/src/main/java/net/minecraft/world/level/biome/BiomeManager.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 01352cc83b25eb0e30b7e0ff521fc7c1b3d5155b..90f8360f547ce709fd13ee34f8e67d8bfa94b498 100644 --- a/src/main/java/net/minecraft/world/level/biome/BiomeManager.java +++ b/src/main/java/net/minecraft/world/level/biome/BiomeManager.java -@@ -0,0 +0,0 @@ public class BiomeManager { +@@ -98,8 +98,7 @@ public class BiomeManager { } private static double getFiddle(long l) { @@ -30945,10 +30945,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public interface NoiseBiomeSource { diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 1aa69f4a7005242925124c74b8229e6fa7362717..c0b1f903962b25d8ff6c2b4fcd2be0e45de09b35 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -0,0 +0,0 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -271,7 +271,7 @@ public class Block extends BlockBehaviour implements ItemLike { } public static boolean isShapeFullBlock(VoxelShape shape) { @@ -30958,10 +30958,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void animateTick(BlockState state, Level world, BlockPos pos, RandomSource random) {} diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index b1101156b281d800f18b25208018722bbecded9f..8c0f332a1a0918f60226d969918ae7fe4fe74166 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -0,0 +0,0 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -797,7 +797,7 @@ public abstract class BlockBehaviour implements FeatureElement { boolean test(BlockState state, BlockGetter world, BlockPos pos); } @@ -30970,7 +30970,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static final Direction[] DIRECTIONS = Direction.values(); private static final VoxelShape[] EMPTY_OCCLUSION_SHAPES = (VoxelShape[]) Util.make(new VoxelShape[BlockBehaviour.BlockStateBase.DIRECTIONS.length], (avoxelshape) -> { -@@ -0,0 +0,0 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -841,6 +841,76 @@ public abstract class BlockBehaviour implements FeatureElement { private boolean propagatesSkylightDown; private int lightBlock; @@ -31047,7 +31047,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 protected BlockStateBase(Block block, Reference2ObjectArrayMap<Property<?>, Comparable<?>> propertyMap, MapCodec<BlockState> codec) { super(block, propertyMap, codec); this.fluidState = Fluids.EMPTY.defaultFluidState(); -@@ -0,0 +0,0 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -925,6 +995,41 @@ public abstract class BlockBehaviour implements FeatureElement { this.propagatesSkylightDown = ((Block) this.owner).propagatesSkylightDown(this.asState()); this.lightBlock = ((Block) this.owner).getLightBlock(this.asState()); @@ -31090,10 +31090,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public Block getBlock() { diff --git a/src/main/java/net/minecraft/world/level/block/state/StateHolder.java b/src/main/java/net/minecraft/world/level/block/state/StateHolder.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 422b364764e0df16ca250b4939d7b226e69c0840..815ee11aa5ed3448ff255e9c36d769478de477bd 100644 --- a/src/main/java/net/minecraft/world/level/block/state/StateHolder.java +++ b/src/main/java/net/minecraft/world/level/block/state/StateHolder.java -@@ -0,0 +0,0 @@ import java.util.stream.Collectors; +@@ -15,7 +15,7 @@ import java.util.stream.Collectors; import javax.annotation.Nullable; import net.minecraft.world.level.block.state.properties.Property; @@ -31102,7 +31102,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static final String NAME_TAG = "Name"; public static final String PROPERTIES_TAG = "Properties"; public static final Function<Entry<Property<?>, Comparable<?>>, String> PROPERTY_ENTRY_TO_STRING_FUNCTION = new Function<Entry<Property<?>, Comparable<?>>, String>() { -@@ -0,0 +0,0 @@ public abstract class StateHolder<O, S> { +@@ -34,14 +34,28 @@ public abstract class StateHolder<O, S> { } }; protected final O owner; @@ -31132,7 +31132,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public <T extends Comparable<T>> S cycle(Property<T> property) { -@@ -0,0 +0,0 @@ public abstract class StateHolder<O, S> { +@@ -67,20 +81,21 @@ public abstract class StateHolder<O, S> { } public Collection<Property<?>> getProperties() { @@ -31161,7 +31161,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public <T extends Comparable<T>> Optional<T> getOptionalValue(Property<T> property) { -@@ -0,0 +0,0 @@ public abstract class StateHolder<O, S> { +@@ -93,22 +108,30 @@ public abstract class StateHolder<O, S> { @Nullable public <T extends Comparable<T>> T getNullableValue(Property<T> property) { @@ -31201,7 +31201,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private <T extends Comparable<T>, V extends T> S setValueInternal(Property<T> property, V newValue, Comparable<?> oldValue) { -@@ -0,0 +0,0 @@ public abstract class StateHolder<O, S> { +@@ -125,18 +148,27 @@ public abstract class StateHolder<O, S> { } public void populateNeighbours(Map<Map<Property<?>, Comparable<?>>, S> states) { @@ -31238,7 +31238,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private Map<Property<?>, Comparable<?>> makeNeighbourValues(Property<?> property, Comparable<?> value) { -@@ -0,0 +0,0 @@ public abstract class StateHolder<O, S> { +@@ -146,7 +178,11 @@ public abstract class StateHolder<O, S> { } public Map<Property<?>, Comparable<?>> getValues() { @@ -31252,10 +31252,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 protected static <O, S extends StateHolder<O, S>> Codec<S> codec(Codec<O> codec, Function<O, S> ownerToStateFunction) { diff --git a/src/main/java/net/minecraft/world/level/block/state/properties/BooleanProperty.java b/src/main/java/net/minecraft/world/level/block/state/properties/BooleanProperty.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index ea76aa490358e9e1d13350ba0ea246ec2c423894..98058505d36baf74008da08339afc196713b14a7 100644 --- a/src/main/java/net/minecraft/world/level/block/state/properties/BooleanProperty.java +++ b/src/main/java/net/minecraft/world/level/block/state/properties/BooleanProperty.java -@@ -0,0 +0,0 @@ package net.minecraft.world.level.block.state.properties; +@@ -3,13 +3,23 @@ package net.minecraft.world.level.block.state.properties; import java.util.List; import java.util.Optional; @@ -31281,10 +31281,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override diff --git a/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java b/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 85a197232be9377c0313ec00e8f935551e2c60e0..30b2fce9e47ffcc3de1542b1d0f073f5640127a7 100644 --- a/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java +++ b/src/main/java/net/minecraft/world/level/block/state/properties/EnumProperty.java -@@ -0,0 +0,0 @@ import java.util.function.Predicate; +@@ -10,11 +10,39 @@ import java.util.function.Predicate; import java.util.stream.Collectors; import net.minecraft.util.StringRepresentable; @@ -31325,7 +31325,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private EnumProperty(String name, Class<T> type, List<T> values) { super(name, type); if (values.isEmpty()) { -@@ -0,0 +0,0 @@ public final class EnumProperty<T extends Enum<T> & StringRepresentable> extends +@@ -37,6 +65,7 @@ public final class EnumProperty<T extends Enum<T> & StringRepresentable> extends this.names = builder.buildOrThrow(); } @@ -31334,10 +31334,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override diff --git a/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java b/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 55a87592a99105dbf57b26fb6ccba695295fce24..986365acc9983331a7982ea2e1eac2b0efe1506d 100644 --- a/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java +++ b/src/main/java/net/minecraft/world/level/block/state/properties/IntegerProperty.java -@@ -0,0 +0,0 @@ import java.util.List; +@@ -5,11 +5,33 @@ import java.util.List; import java.util.Optional; import java.util.stream.IntStream; @@ -31372,7 +31372,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private IntegerProperty(String name, int min, int max) { super(name, Integer.class); if (min < 0) { -@@ -0,0 +0,0 @@ public final class IntegerProperty extends Property<Integer> { +@@ -21,6 +43,7 @@ public final class IntegerProperty extends Property<Integer> { this.max = max; this.values = IntImmutableList.toList(IntStream.range(min, max + 1)); } @@ -31381,10 +31381,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override diff --git a/src/main/java/net/minecraft/world/level/block/state/properties/Property.java b/src/main/java/net/minecraft/world/level/block/state/properties/Property.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index fcf04c5c58ff35d38c5bf0df562ae2f8dc98a0ee..0b116160924300a9d62ad5948bfaf276f0386e4d 100644 --- a/src/main/java/net/minecraft/world/level/block/state/properties/Property.java +++ b/src/main/java/net/minecraft/world/level/block/state/properties/Property.java -@@ -0,0 +0,0 @@ import java.util.stream.Stream; +@@ -10,7 +10,7 @@ import java.util.stream.Stream; import javax.annotation.Nullable; import net.minecraft.world.level.block.state.StateHolder; @@ -31393,7 +31393,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final Class<T> clazz; private final String name; @Nullable -@@ -0,0 +0,0 @@ public abstract class Property<T extends Comparable<T>> { +@@ -24,9 +24,38 @@ public abstract class Property<T extends Comparable<T>> { ); private final Codec<Property.Value<T>> valueCodec = this.codec.xmap(this::value, Property.Value::value); @@ -31433,10 +31433,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public Property.Value<T> value(T value) { diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java b/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 9d240aa87101662480cdd510839e017aa9c58fcd..f87abb22dd161b2b74401086de80dc95c9ac2dbb 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java -@@ -0,0 +0,0 @@ import net.minecraft.world.ticks.SavedTick; +@@ -57,7 +57,7 @@ import net.minecraft.world.ticks.SavedTick; import net.minecraft.world.ticks.TickContainerAccess; import org.slf4j.Logger; @@ -31445,7 +31445,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static final int NO_FILLED_SECTION = -1; private static final Logger LOGGER = LogUtils.getLogger(); -@@ -0,0 +0,0 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh +@@ -77,7 +77,7 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh @Nullable protected BlendingData blendingData; public final Map<Heightmap.Types, Heightmap> heightmaps = Maps.newEnumMap(Heightmap.Types.class); @@ -31454,7 +31454,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final Map<Structure, StructureStart> structureStarts = Maps.newHashMap(); private final Map<Structure, LongSet> structuresRefences = Maps.newHashMap(); protected final Map<BlockPos, CompoundTag> pendingBlockEntities = Maps.newHashMap(); -@@ -0,0 +0,0 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh +@@ -90,6 +90,57 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh public org.bukkit.craftbukkit.persistence.DirtyCraftPersistentDataContainer persistentDataContainer = new org.bukkit.craftbukkit.persistence.DirtyCraftPersistentDataContainer(ChunkAccess.DATA_TYPE_REGISTRY); // CraftBukkit end @@ -31512,7 +31512,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public ChunkAccess(ChunkPos pos, UpgradeData upgradeData, LevelHeightAccessor heightLimitView, Registry<Biome> biomeRegistry, long inhabitedTime, @Nullable LevelChunkSection[] sectionArray, @Nullable BlendingData blendingData) { this.locX = pos.x; this.locZ = pos.z; // Paper - reduce need for field lookups this.chunkPos = pos; this.coordinateKey = ChunkPos.asLong(locX, locZ); // Paper - cache long key -@@ -0,0 +0,0 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh +@@ -99,7 +150,7 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh this.inhabitedTime = inhabitedTime; this.postProcessing = new ShortList[heightLimitView.getSectionsCount()]; this.blendingData = blendingData; @@ -31521,7 +31521,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (sectionArray != null) { if (this.sections.length == sectionArray.length) { System.arraycopy(sectionArray, 0, this.sections, 0, this.sections.length); -@@ -0,0 +0,0 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh +@@ -111,6 +162,16 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh this.replaceMissingSections(biomeRegistry, this.sections); // Paper - Anti-Xray - make it a non-static method // CraftBukkit start this.biomeRegistry = biomeRegistry; @@ -31538,7 +31538,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public final Registry<Biome> biomeRegistry; // CraftBukkit end -@@ -0,0 +0,0 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh +@@ -457,22 +518,22 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh @Override public Holder<Biome> getNoiseBiome(int biomeX, int biomeY, int biomeZ) { @@ -31576,7 +31576,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // CraftBukkit start -@@ -0,0 +0,0 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh +@@ -529,12 +590,12 @@ public abstract class ChunkAccess implements BiomeManager.NoiseBiomeSource, Ligh } public void initializeLightSources() { @@ -31592,10 +31592,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static record PackedTicks(List<SavedTick<Block>> blocks, List<SavedTick<Fluid>> fluids) { diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index ca6928f959eb63ac9183ba6c95738609839a7d32..e0cb360ece042c4fc6aa0d10106923fe25288f5c 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java -@@ -0,0 +0,0 @@ public abstract class ChunkGenerator { +@@ -120,7 +120,7 @@ public abstract class ChunkGenerator { return CompletableFuture.supplyAsync(() -> { chunk.fillBiomesFromNoise(this.biomeSource, noiseConfig.sampler()); return chunk; @@ -31604,7 +31604,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public abstract void applyCarvers(WorldGenRegion chunkRegion, long seed, RandomState noiseConfig, BiomeManager biomeAccess, StructureManager structureAccessor, ChunkAccess chunk); -@@ -0,0 +0,0 @@ public abstract class ChunkGenerator { +@@ -315,7 +315,7 @@ public abstract class ChunkGenerator { return Pair.of(placement.getLocatePos(pos), holder); } @@ -31614,10 +31614,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 structurestart = structureAccessor.getStartForStructure(SectionPos.bottomOf(ichunkaccess), (Structure) holder.value(), ichunkaccess); } while (structurestart == null); diff --git a/src/main/java/net/minecraft/world/level/chunk/EmptyLevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/EmptyLevelChunk.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index dcc0acd259920463a4464213b9a5e793603852f9..ef4161884574d3d137e12591d983dc95a960cb19 100644 --- a/src/main/java/net/minecraft/world/level/chunk/EmptyLevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/EmptyLevelChunk.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.block.state.BlockState; +@@ -13,7 +13,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; @@ -31626,7 +31626,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final Holder<Biome> biome; public EmptyLevelChunk(Level world, ChunkPos pos, Holder<Biome> biomeEntry) { -@@ -0,0 +0,0 @@ public class EmptyLevelChunk extends LevelChunk { +@@ -21,6 +21,40 @@ public class EmptyLevelChunk extends LevelChunk { this.biome = biomeEntry; } @@ -31668,10 +31668,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public BlockState getBlockState(BlockPos pos) { return Blocks.VOID_AIR.defaultBlockState(); diff --git a/src/main/java/net/minecraft/world/level/chunk/HashMapPalette.java b/src/main/java/net/minecraft/world/level/chunk/HashMapPalette.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 98dbeaf8bde15940e5b5d5d1f13fd4bb32f0a10d..7beea075b5a7ef738a4ac0558b99f4c5708f2c4a 100644 --- a/src/main/java/net/minecraft/world/level/chunk/HashMapPalette.java +++ b/src/main/java/net/minecraft/world/level/chunk/HashMapPalette.java -@@ -0,0 +0,0 @@ import net.minecraft.network.FriendlyByteBuf; +@@ -8,12 +8,19 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.VarInt; import net.minecraft.util.CrudeIncrementalIntIdentityHashBiMap; @@ -31693,10 +31693,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this(idList, bits, listener); entries.forEach(this.values::add); diff --git a/src/main/java/net/minecraft/world/level/chunk/ImposterProtoChunk.java b/src/main/java/net/minecraft/world/level/chunk/ImposterProtoChunk.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index f38700e5fbeeb8a913272d4464b8aa325d511dac..1eb8022f3e31603322e6c56516304afc9a11bbec 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ImposterProtoChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/ImposterProtoChunk.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.material.FluidState; +@@ -30,7 +30,7 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.ticks.BlackholeTickAccess; import net.minecraft.world.ticks.TickContainerAccess; @@ -31705,7 +31705,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final LevelChunk wrapped; private final boolean allowWrites; -@@ -0,0 +0,0 @@ public class ImposterProtoChunk extends ProtoChunk { +@@ -46,6 +46,48 @@ public class ImposterProtoChunk extends ProtoChunk { this.allowWrites = propagateToWrapped; } @@ -31755,10 +31755,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override public BlockEntity getBlockEntity(BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 0ade64bbdec563e555c981cee2208e6c72afe249..134d63076f231791988e67a5bdf191005112080b 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -0,0 +0,0 @@ import net.minecraft.world.ticks.LevelChunkTicks; +@@ -55,7 +55,7 @@ import net.minecraft.world.ticks.LevelChunkTicks; import net.minecraft.world.ticks.TickContainerAccess; import org.slf4j.Logger; @@ -31767,7 +31767,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 static final Logger LOGGER = LogUtils.getLogger(); private static final TickingBlockEntity NULL_TICKER = new TickingBlockEntity() { -@@ -0,0 +0,0 @@ public class LevelChunk extends ChunkAccess { +@@ -114,6 +114,14 @@ public class LevelChunk extends ChunkAccess { this.postLoad = entityLoader; this.blockTicks = blockTickScheduler; this.fluidTicks = fluidTickScheduler; @@ -31782,7 +31782,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // CraftBukkit start -@@ -0,0 +0,0 @@ public class LevelChunk extends ChunkAccess { +@@ -124,6 +132,39 @@ public class LevelChunk extends ChunkAccess { // Paper start boolean loadedTicketLevel; // Paper end @@ -31822,7 +31822,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public LevelChunk(ServerLevel world, ProtoChunk protoChunk, @Nullable LevelChunk.PostLoadProcessor entityLoader) { this(world, protoChunk.getPos(), protoChunk.getUpgradeData(), protoChunk.unpackBlockTicks(), protoChunk.unpackFluidTicks(), protoChunk.getInhabitedTime(), protoChunk.getSections(), entityLoader, protoChunk.getBlendingData()); -@@ -0,0 +0,0 @@ public class LevelChunk extends ChunkAccess { +@@ -157,13 +198,19 @@ public class LevelChunk extends ChunkAccess { } } @@ -31843,7 +31843,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void setUnsavedListener(LevelChunk.UnsavedListener unsavedListener) { -@@ -0,0 +0,0 @@ public class LevelChunk extends ChunkAccess { +@@ -366,7 +413,7 @@ public class LevelChunk extends ChunkAccess { ProfilerFiller gameprofilerfiller = Profiler.get(); gameprofilerfiller.push("updateSkyLightSources"); @@ -31852,7 +31852,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 gameprofilerfiller.popPush("queueCheckLight"); this.level.getChunkSource().getLightEngine().checkBlock(blockposition); gameprofilerfiller.pop(); -@@ -0,0 +0,0 @@ public class LevelChunk extends ChunkAccess { +@@ -632,11 +679,12 @@ public class LevelChunk extends ChunkAccess { // CraftBukkit start public void loadCallback() { @@ -31866,7 +31866,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (server != null) { /* * If it's a new world, the first few chunks are generated inside -@@ -0,0 +0,0 @@ public class LevelChunk extends ChunkAccess { +@@ -645,6 +693,7 @@ public class LevelChunk extends ChunkAccess { */ org.bukkit.Chunk bukkitChunk = new org.bukkit.craftbukkit.CraftChunk(this); server.getPluginManager().callEvent(new org.bukkit.event.world.ChunkLoadEvent(bukkitChunk, this.needsDecoration)); @@ -31874,7 +31874,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (this.needsDecoration) { this.needsDecoration = false; -@@ -0,0 +0,0 @@ public class LevelChunk extends ChunkAccess { +@@ -671,13 +720,15 @@ public class LevelChunk extends ChunkAccess { } public void unloadCallback() { @@ -31892,7 +31892,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Paper start this.loadedTicketLevel = false; // Paper end -@@ -0,0 +0,0 @@ public class LevelChunk extends ChunkAccess { +@@ -685,8 +736,31 @@ public class LevelChunk extends ChunkAccess { @Override public boolean isUnsaved() { @@ -31925,7 +31925,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // CraftBukkit end public boolean isEmpty() { -@@ -0,0 +0,0 @@ public class LevelChunk extends ChunkAccess { +@@ -794,6 +868,7 @@ public class LevelChunk extends ChunkAccess { this.pendingBlockEntities.clear(); this.upgradeData.upgrade(this); @@ -31934,10 +31934,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Nullable diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 3dab36d00ea48101807ba40c7a7358b7eed12747..e4ae25c83ab9dd1aaa530a5456275ef63cdb8511 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunkSection.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.block.Blocks; +@@ -13,7 +13,7 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.FluidState; @@ -31946,7 +31946,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static final int SECTION_WIDTH = 16; public static final int SECTION_HEIGHT = 16; -@@ -0,0 +0,0 @@ public class LevelChunkSection { +@@ -25,6 +25,30 @@ public class LevelChunkSection { public final PalettedContainer<BlockState> states; private PalettedContainer<Holder<Biome>> biomes; // CraftBukkit - read/write @@ -31977,7 +31977,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private LevelChunkSection(LevelChunkSection section) { this.nonEmptyBlockCount = section.nonEmptyBlockCount; this.tickingBlockCount = section.tickingBlockCount; -@@ -0,0 +0,0 @@ public class LevelChunkSection { +@@ -67,6 +91,45 @@ public class LevelChunkSection { return this.setBlockState(x, y, z, state, true); } @@ -32023,7 +32023,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public BlockState setBlockState(int x, int y, int z, BlockState state, boolean lock) { BlockState iblockdata1; -@@ -0,0 +0,0 @@ public class LevelChunkSection { +@@ -86,7 +149,7 @@ public class LevelChunkSection { } } @@ -32032,7 +32032,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --this.tickingFluidCount; } -@@ -0,0 +0,0 @@ public class LevelChunkSection { +@@ -97,10 +160,12 @@ public class LevelChunkSection { } } @@ -32046,7 +32046,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return iblockdata1; } -@@ -0,0 +0,0 @@ public class LevelChunkSection { +@@ -121,40 +186,70 @@ public class LevelChunkSection { } public void recalcBlockCounts() { @@ -32138,7 +32138,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public PalettedContainer<BlockState> getStates() { -@@ -0,0 +0,0 @@ public class LevelChunkSection { +@@ -172,6 +267,11 @@ public class LevelChunkSection { datapaletteblock.read(buf); this.biomes = datapaletteblock; @@ -32151,10 +32151,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public void readBiomes(FriendlyByteBuf buf) { diff --git a/src/main/java/net/minecraft/world/level/chunk/LinearPalette.java b/src/main/java/net/minecraft/world/level/chunk/LinearPalette.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index bc4d9452bbeb05a691fd285603e49491f41d3ad2..f8d9892970c9092f7cc84434d4fbf34354ce1195 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LinearPalette.java +++ b/src/main/java/net/minecraft/world/level/chunk/LinearPalette.java -@@ -0,0 +0,0 @@ import net.minecraft.network.FriendlyByteBuf; +@@ -7,13 +7,20 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.VarInt; import org.apache.commons.lang3.Validate; @@ -32177,10 +32177,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.registry = idList; this.values = (T[])(new Object[1 << bits]); diff --git a/src/main/java/net/minecraft/world/level/chunk/Palette.java b/src/main/java/net/minecraft/world/level/chunk/Palette.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index b8922e4a13df535cdc5701e893a6e460b33ff90d..100807f8b8337f56f49cdb818ccc75be2f08ecd1 100644 --- a/src/main/java/net/minecraft/world/level/chunk/Palette.java +++ b/src/main/java/net/minecraft/world/level/chunk/Palette.java -@@ -0,0 +0,0 @@ import java.util.function.Predicate; +@@ -5,7 +5,7 @@ import java.util.function.Predicate; import net.minecraft.core.IdMap; import net.minecraft.network.FriendlyByteBuf; @@ -32190,10 +32190,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 boolean maybeHas(Predicate<T> predicate); diff --git a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 69d6f203366df658e1ade55d917f0aa2b8a49be9..8b84bf2272556ac3321cbf16361d7f48a1cc6873 100644 --- a/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java +++ b/src/main/java/net/minecraft/world/level/chunk/PalettedContainer.java -@@ -0,0 +0,0 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer +@@ -29,7 +29,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer private final PaletteResize<T> dummyPaletteResize = (newSize, added) -> 0; public final IdMap<T> registry; private final T @org.jetbrains.annotations.Nullable [] presetValues; // Paper - Anti-Xray - Add preset values @@ -32202,7 +32202,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final PalettedContainer.Strategy strategy; // private final ThreadingDetector threadingDetector = new ThreadingDetector("PalettedContainer"); // Paper - unused -@@ -0,0 +0,0 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer +@@ -77,6 +77,33 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer ); } @@ -32236,7 +32236,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Paper start - Anti-Xray - Add preset values @Deprecated @io.papermc.paper.annotation.DoNotUse public PalettedContainer(IdMap<T> idList, PalettedContainer.Strategy paletteProvider, PalettedContainer.Configuration<T> dataProvider, BitStorage storage, List<T> paletteEntries) { this(idList, paletteProvider, dataProvider, storage, paletteEntries, null, null); } public PalettedContainer( -@@ -0,0 +0,0 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer +@@ -113,6 +140,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer } } // Paper end @@ -32244,7 +32244,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // Paper start - Anti-Xray - Add preset values -@@ -0,0 +0,0 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer +@@ -122,6 +150,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer this.registry = idList; this.strategy = paletteProvider; this.data = data; @@ -32252,7 +32252,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private PalettedContainer(PalettedContainer<T> container, T @org.jetbrains.annotations.Nullable [] presetValues) { // Paper - Anti-Xray - Add preset values -@@ -0,0 +0,0 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer +@@ -140,6 +169,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer this.registry = idList; this.data = this.createOrReuseData(null, 0); this.data.palette.idFor(object); @@ -32260,7 +32260,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private PalettedContainer.Data<T> createOrReuseData(@Nullable PalettedContainer.Data<T> previousData, int bits) { -@@ -0,0 +0,0 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer +@@ -166,6 +196,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer data2.copyFrom(data.palette, data.storage); this.data = data2; this.addPresetValues(); @@ -32268,7 +32268,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return object == null ? -1 : data2.palette.idFor(object); // Paper end } -@@ -0,0 +0,0 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer +@@ -198,9 +229,12 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer } private synchronized T getAndSet(int index, T value) { // Paper - synchronize @@ -32284,7 +32284,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void set(int x, int y, int z, T value) { -@@ -0,0 +0,0 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer +@@ -223,9 +257,11 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer return this.get(this.strategy.getIndex(x, y, z)); } @@ -32299,7 +32299,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override -@@ -0,0 +0,0 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer +@@ -246,6 +282,7 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer buf.readLongArray(data.storage.getRaw()); this.data = data; this.addPresetValues(); // Paper - Anti-Xray - Add preset values (inefficient, but this isn't used by the server) @@ -32307,7 +32307,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } finally { this.release(); } -@@ -0,0 +0,0 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer +@@ -394,7 +431,44 @@ public class PalettedContainer<T> implements PaletteResize<T>, PalettedContainer void accept(T object, int count); } @@ -32354,10 +32354,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 for (int i = 0; i < storage.getSize(); i++) { T object = palette.valueFor(storage.get(i)); diff --git a/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java b/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 15e14f5d006389c823fa6baf8c1a4f22804d4aa8..759adee51bad99bd4bbee4f44247e8c8486cfbd6 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/ProtoChunk.java -@@ -0,0 +0,0 @@ public class ProtoChunk extends ChunkAccess { +@@ -149,7 +149,7 @@ public class ProtoChunk extends ChunkAccess { } if (LightEngine.hasDifferentLightProperties(blockState, state)) { @@ -32367,10 +32367,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } diff --git a/src/main/java/net/minecraft/world/level/chunk/SingleValuePalette.java b/src/main/java/net/minecraft/world/level/chunk/SingleValuePalette.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index a45e6410600afc5464e5d29932c193786ce0a6fb..a1ba68c95c2cdebdc0d7782cce7895529918073c 100644 --- a/src/main/java/net/minecraft/world/level/chunk/SingleValuePalette.java +++ b/src/main/java/net/minecraft/world/level/chunk/SingleValuePalette.java -@@ -0,0 +0,0 @@ import net.minecraft.network.FriendlyByteBuf; +@@ -8,12 +8,24 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.VarInt; import org.apache.commons.lang3.Validate; @@ -32396,7 +32396,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public SingleValuePalette(IdMap<T> idList, PaletteResize<T> listener, List<T> entries) { this.registry = idList; this.resizeHandler = listener; -@@ -0,0 +0,0 @@ public class SingleValuePalette<T> implements Palette<T> { +@@ -33,6 +45,11 @@ public class SingleValuePalette<T> implements Palette<T> { return this.resizeHandler.onResize(1, object); } else { this.value = object; @@ -32408,7 +32408,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return 0; } } -@@ -0,0 +0,0 @@ public class SingleValuePalette<T> implements Palette<T> { +@@ -58,6 +75,11 @@ public class SingleValuePalette<T> implements Palette<T> { @Override public void read(FriendlyByteBuf buf) { this.value = this.registry.byIdOrThrow(buf.readVarInt()); @@ -32421,10 +32421,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override diff --git a/src/main/java/net/minecraft/world/level/chunk/status/ChunkPyramid.java b/src/main/java/net/minecraft/world/level/chunk/status/ChunkPyramid.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index b1058bf0dcda544a074f4d3772d7899b94f98927..b7bf82f6b6023bd628d3e7ea84d2d6755a0d931a 100644 --- a/src/main/java/net/minecraft/world/level/chunk/status/ChunkPyramid.java +++ b/src/main/java/net/minecraft/world/level/chunk/status/ChunkPyramid.java -@@ -0,0 +0,0 @@ public record ChunkPyramid(ImmutableList<ChunkStep> steps) { +@@ -54,7 +54,7 @@ public record ChunkPyramid(ImmutableList<ChunkStep> steps) { .step(ChunkStatus.CARVERS, builder -> builder) .step(ChunkStatus.FEATURES, builder -> builder) .step(ChunkStatus.INITIALIZE_LIGHT, builder -> builder.setTask(ChunkStatusTasks::initializeLight)) @@ -32434,10 +32434,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 .step(ChunkStatus.FULL, builder -> builder.setTask(ChunkStatusTasks::full)) .build(); diff --git a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatus.java b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatus.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 4f84ff9cdb3303251e035a12ce9d8b9a0b58f46e..d80b7d555e02d1d4b82945373d383eaedbf4b976 100644 --- a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatus.java +++ b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatus.java -@@ -0,0 +0,0 @@ import net.minecraft.resources.ResourceLocation; +@@ -11,7 +11,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.levelgen.Heightmap; import org.jetbrains.annotations.VisibleForTesting; @@ -32446,7 +32446,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static final int MAX_STRUCTURE_DISTANCE = 8; private static final EnumSet<Heightmap.Types> WORLDGEN_HEIGHTMAPS = EnumSet.of(Heightmap.Types.OCEAN_FLOOR_WG, Heightmap.Types.WORLD_SURFACE_WG); public static final EnumSet<Heightmap.Types> FINAL_HEIGHTMAPS = EnumSet.of( -@@ -0,0 +0,0 @@ public class ChunkStatus { +@@ -51,8 +51,68 @@ public class ChunkStatus { return list; } @@ -32516,10 +32516,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.chunkType = chunkType; this.heightmapsAfter = heightMapTypes; diff --git a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatusTasks.java b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatusTasks.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 3d8a35d8cf29447ee7ac750dbc6ffcdb0f89b81b..9a3900e970f22892d8a3da8a28f922aa9b62765f 100644 --- a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatusTasks.java +++ b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStatusTasks.java -@@ -0,0 +0,0 @@ public class ChunkStatusTasks { +@@ -152,7 +152,7 @@ public class ChunkStatusTasks { chunk1 = protochunkextension.getWrapped(); } else { chunk1 = new LevelChunk(worldserver, protochunk, ($) -> { // Paper - decompile fix @@ -32528,7 +32528,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 }); generationchunkholder.replaceProtoChunk(new ImposterProtoChunk(chunk1, false)); } -@@ -0,0 +0,0 @@ public class ChunkStatusTasks { +@@ -168,7 +168,7 @@ public class ChunkStatusTasks { }, context.mainThreadExecutor()); } @@ -32537,7 +32537,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (!entities.isEmpty()) { // CraftBukkit start - these are spawned serialized (DefinedStructure) and we don't call an add event below at the moment due to ordering complexities world.addWorldGenChunkEntities(EntityType.loadEntitiesRecursive(entities, world, EntitySpawnReason.LOAD).filter((entity) -> { -@@ -0,0 +0,0 @@ public class ChunkStatusTasks { +@@ -180,7 +180,7 @@ public class ChunkStatusTasks { } checkDupeUUID(world, entity); // Paper - duplicate uuid resolving return !needsRemoval; @@ -32547,10 +32547,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } diff --git a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 3d37a0372cdd99e806a9651cc1cabaefa9338065..f9aad1b8c02b70e620efdc2a58cadf4fff0f3ed5 100644 --- a/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java +++ b/src/main/java/net/minecraft/world/level/chunk/status/ChunkStep.java -@@ -0,0 +0,0 @@ import net.minecraft.util.profiling.jfr.callback.ProfiledDuration; +@@ -11,9 +11,50 @@ import net.minecraft.util.profiling.jfr.callback.ProfiledDuration; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ProtoChunk; @@ -32604,7 +32604,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public int getAccumulatedRadiusOf(ChunkStatus status) { return status == this.targetStatus ? 0 : this.accumulatedDependencies.getRadiusOf(status); } -@@ -0,0 +0,0 @@ public record ChunkStep( +@@ -39,6 +80,56 @@ public record ChunkStep( return chunk; } @@ -32662,10 +32662,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final ChunkStatus status; @Nullable diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 092f7b6bba4e1291f76c2c09155f33803e93eb04..46f4b6706a1ca24ff6fc28960ad01a067109819f 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkStorage.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.dimension.LevelStem; +@@ -28,21 +28,31 @@ import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.levelgen.structure.LegacyStructureDataHandler; import net.minecraft.world.level.storage.DimensionDataStorage; @@ -32701,7 +32701,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // CraftBukkit start -@@ -0,0 +0,0 @@ public class ChunkStorage implements AutoCloseable { +@@ -102,7 +112,9 @@ public class ChunkStorage implements AutoCloseable { if (nbttagcompound.getCompound("Level").getBoolean("hasLegacyStructureData")) { LegacyStructureDataHandler persistentstructurelegacy = this.getLegacyStructureHandler(resourcekey, supplier); @@ -32711,7 +32711,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } -@@ -0,0 +0,0 @@ public class ChunkStorage implements AutoCloseable { +@@ -169,7 +181,13 @@ public class ChunkStorage implements AutoCloseable { } public CompletableFuture<Optional<CompoundTag>> read(ChunkPos chunkPos) { @@ -32726,7 +32726,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public CompletableFuture<Void> write(ChunkPos chunkPos, Supplier<CompoundTag> nbtSupplier) { -@@ -0,0 +0,0 @@ public class ChunkStorage implements AutoCloseable { +@@ -185,29 +203,54 @@ public class ChunkStorage implements AutoCloseable { }; // Paper end - guard against possible chunk pos desync this.handleLegacyStructureIndex(chunkPos); @@ -32788,10 +32788,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index a0cbccd2cf1ac785745d86c42b6f58fb8bad7ffa..16ca1c8672e5f0a27f8a30498c754a81cdec5191 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/EntityStorage.java -@@ -0,0 +0,0 @@ public class EntityStorage implements EntityPersistentStorage<Entity> { +@@ -71,12 +71,12 @@ public class EntityStorage implements EntityPersistentStorage<Entity> { } } @@ -32807,10 +32807,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/IOWorker.java b/src/main/java/net/minecraft/world/level/chunk/storage/IOWorker.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 1f2997cf5367200084f32c437f77040c8c6a18e6..a8a9e59a9721a76e34f78c1baa5026e5fe1d2bda 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/IOWorker.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/IOWorker.java -@@ -0,0 +0,0 @@ public class IOWorker implements ChunkScanAccess, AutoCloseable { +@@ -30,7 +30,7 @@ public class IOWorker implements ChunkScanAccess, AutoCloseable { private static final Logger LOGGER = LogUtils.getLogger(); private final AtomicBoolean shutdownRequested = new AtomicBoolean(); private final PriorityConsecutiveExecutor consecutiveExecutor; @@ -32820,10 +32820,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final Long2ObjectLinkedOpenHashMap<CompletableFuture<BitSet>> regionCacheForBlender = new Long2ObjectLinkedOpenHashMap<>(); private static final int REGION_CACHE_SIZE = 1024; diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 863960ead8deaa0553be1c98e4fa09f07fcb8ef0..057875cbbdc92ba49b429f9a129514760edb32a2 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFile.java -@@ -0,0 +0,0 @@ import net.minecraft.nbt.NbtIo; // Paper +@@ -28,7 +28,7 @@ import net.minecraft.nbt.NbtIo; // Paper import net.minecraft.world.level.ChunkPos; import org.slf4j.Logger; @@ -32832,7 +32832,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static final Logger LOGGER = LogUtils.getLogger(); private static final int SECTOR_BYTES = 4096; -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { +@@ -52,6 +52,21 @@ public class RegionFile implements AutoCloseable { @VisibleForTesting protected final RegionBitmap usedSectors; @@ -32854,7 +32854,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public RegionFile(RegionStorageInfo storageKey, Path directory, Path path, boolean dsync) throws IOException { this(storageKey, directory, path, RegionFileVersion.getCompressionFormat(), dsync); // Paper - Configurable region compression format } -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { +@@ -224,6 +239,16 @@ public class RegionFile implements AutoCloseable { @Nullable private DataInputStream createExternalChunkInputStream(ChunkPos pos, byte flags) throws IOException { @@ -32871,7 +32871,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 Path path = this.getExternalChunkPath(pos); if (!Files.isRegularFile(path, new LinkOption[0])) { -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { +@@ -514,10 +539,29 @@ public class RegionFile implements AutoCloseable { } // Paper end @@ -32902,7 +32902,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public ChunkBuffer(final ChunkPos chunkcoordintpair) { super(8096); super.write(0); -@@ -0,0 +0,0 @@ public class RegionFile implements AutoCloseable { +@@ -534,7 +578,7 @@ public class RegionFile implements AutoCloseable { JvmProfiler.INSTANCE.onRegionFileWrite(RegionFile.this.info, this.pos, RegionFile.this.version, i); bytebuffer.putInt(0, i); @@ -32912,10 +32912,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index e6abe35d6c43b7f76cf3da129ec9552e7b82453e..fdf8e18d24442178b52397acb482ffa3306a32e3 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/RegionFileStorage.java -@@ -0,0 +0,0 @@ import net.minecraft.nbt.StreamTagVisitor; +@@ -17,7 +17,7 @@ import net.minecraft.nbt.StreamTagVisitor; import net.minecraft.util.ExceptionCollector; import net.minecraft.world.level.ChunkPos; @@ -32924,7 +32924,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static final String ANVIL_EXTENSION = ".mca"; private static final int MAX_CACHE_SIZE = 256; -@@ -0,0 +0,0 @@ public final class RegionFileStorage implements AutoCloseable { +@@ -26,33 +26,219 @@ public final class RegionFileStorage implements AutoCloseable { private final Path folder; private final boolean sync; @@ -33160,7 +33160,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // Paper start -@@ -0,0 +0,0 @@ public final class RegionFileStorage implements AutoCloseable { +@@ -175,8 +361,14 @@ public final class RegionFileStorage implements AutoCloseable { } @@ -33177,7 +33177,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (nbt == null) { regionfile.clear(pos); -@@ -0,0 +0,0 @@ public final class RegionFileStorage implements AutoCloseable { +@@ -206,30 +398,37 @@ public final class RegionFileStorage implements AutoCloseable { } public void close() throws IOException { @@ -33233,10 +33233,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 75b2cf0e13c23a8348b7ff55e72e5ee755aa7460..c3beb7fcad46a917d2b61bd0a0e98e5106056728 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.ChunkPos; +@@ -40,10 +40,10 @@ import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.LevelHeightAccessor; import org.slf4j.Logger; @@ -33249,7 +33249,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final Long2ObjectMap<Optional<R>> storage = new Long2ObjectOpenHashMap<>(); private final LongLinkedOpenHashSet dirtyChunks = new LongLinkedOpenHashSet(); private final Codec<P> codec; -@@ -0,0 +0,0 @@ public class SectionStorage<R, P> implements AutoCloseable { +@@ -57,6 +57,18 @@ public class SectionStorage<R, P> implements AutoCloseable { private final Long2ObjectMap<CompletableFuture<Optional<SectionStorage.PackedChunk<P>>>> pendingLoads = new Long2ObjectOpenHashMap<>(); private final Object loadLock = new Object(); @@ -33268,7 +33268,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public SectionStorage( SimpleRegionStorage storageAccess, Codec<P> codec, -@@ -0,0 +0,0 @@ public class SectionStorage<R, P> implements AutoCloseable { +@@ -67,7 +79,7 @@ public class SectionStorage<R, P> implements AutoCloseable { ChunkIOErrorReporter errorHandler, LevelHeightAccessor world ) { @@ -33277,7 +33277,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.codec = codec; this.packer = serializer; this.unpacker = deserializer; -@@ -0,0 +0,0 @@ public class SectionStorage<R, P> implements AutoCloseable { +@@ -75,6 +87,7 @@ public class SectionStorage<R, P> implements AutoCloseable { this.registryAccess = registryManager; this.errorReporter = errorHandler; this.levelHeightAccessor = world; @@ -33285,7 +33285,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } protected void tick(BooleanSupplier shouldKeepTicking) { -@@ -0,0 +0,0 @@ public class SectionStorage<R, P> implements AutoCloseable { +@@ -188,64 +201,15 @@ public class SectionStorage<R, P> implements AutoCloseable { } private CompletableFuture<Optional<SectionStorage.PackedChunk<P>>> tryRead(ChunkPos chunkPos) { @@ -33353,7 +33353,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private <T> Dynamic<T> writeChunk(ChunkPos chunkPos, DynamicOps<T> ops) { -@@ -0,0 +0,0 @@ public class SectionStorage<R, P> implements AutoCloseable { +@@ -281,7 +245,7 @@ public class SectionStorage<R, P> implements AutoCloseable { protected void onSectionLoad(long pos) { } @@ -33362,7 +33362,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 Optional<R> optional = this.storage.get(pos); if (optional != null && !optional.isEmpty()) { this.dirtyChunks.add(ChunkPos.asLong(SectionPos.x(pos), SectionPos.z(pos))); -@@ -0,0 +0,0 @@ public class SectionStorage<R, P> implements AutoCloseable { +@@ -302,7 +266,7 @@ public class SectionStorage<R, P> implements AutoCloseable { @Override public void close() throws IOException { @@ -33372,10 +33372,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 static record PackedChunk<T>(Int2ObjectMap<T> sectionsByY, boolean versionChanged) { diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/SerializableChunkData.java b/src/main/java/net/minecraft/world/level/chunk/storage/SerializableChunkData.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 4bc7fa3324e9af3abce2acf960c7b0650aca2e36..0296f52fb2c871adbf2ce73a64d8f77fab826cd7 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/SerializableChunkData.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/SerializableChunkData.java -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -129,7 +129,7 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun long j = nbt.getLong("InhabitedTime"); ChunkStatus chunkstatus = ChunkStatus.byName(nbt.getString("Status")); UpgradeData chunkconverter = nbt.contains("UpgradeData", 10) ? new UpgradeData(nbt.getCompound("UpgradeData"), world) : UpgradeData.EMPTY; @@ -33384,7 +33384,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 DataResult dataresult; Logger logger; BlendingData.Packed blendingdata_d; -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -246,7 +246,17 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun DataLayer nibblearray = nbttagcompound3.contains("BlockLight", 7) ? new DataLayer(nbttagcompound3.getByteArray("BlockLight")) : null; DataLayer nibblearray1 = nbttagcompound3.contains("SkyLight", 7) ? new DataLayer(nbttagcompound3.getByteArray("SkyLight")) : null; @@ -33403,7 +33403,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } // CraftBukkit - ChunkBukkitValues -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -254,6 +264,59 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun } } @@ -33463,7 +33463,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public ProtoChunk read(ServerLevel world, PoiManager poiStorage, RegionStorageInfo key, ChunkPos expectedPos) { if (!Objects.equals(expectedPos, this.chunkPos)) { SerializableChunkData.LOGGER.error("Chunk file at {} is in the wrong location; relocating. (Expected {}, got {})", new Object[]{expectedPos, expectedPos, this.chunkPos}); -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -275,7 +338,7 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun if (serializablechunkdata_b.chunkSection != null) { achunksection[world.getSectionIndexFromSectionY(serializablechunkdata_b.y)] = serializablechunkdata_b.chunkSection; @@ -33472,7 +33472,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } boolean flag2 = serializablechunkdata_b.blockLight != null; -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -352,7 +415,7 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun } if (chunktype == ChunkType.LEVELCHUNK) { @@ -33481,7 +33481,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } else { ProtoChunk protochunk1 = (ProtoChunk) object; Iterator iterator2 = this.entities.iterator(); -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -382,7 +445,7 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun protochunk1.setCarvingMask(new CarvingMask(this.carvingMask, ((ChunkAccess) object).getMinY())); } @@ -33490,7 +33490,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -405,24 +468,48 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun throw new IllegalArgumentException("Chunk can't be serialized: " + String.valueOf(chunk)); } else { ChunkPos chunkcoordintpair = chunk.getPos(); @@ -33550,7 +33550,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 List<CompoundTag> list1 = new ArrayList(chunk.getBlockEntitiesPos().size()); Iterator iterator = chunk.getBlockEntitiesPos().iterator(); -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -521,8 +608,8 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun Iterator iterator = this.sectionData.iterator(); while (iterator.hasNext()) { @@ -33561,7 +33561,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 LevelChunkSection chunksection = serializablechunkdata_b.chunkSection; if (chunksection != null) { -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -538,6 +625,19 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun nbttagcompound1.putByteArray("SkyLight", serializablechunkdata_b.skyLight.getData()); } @@ -33581,7 +33581,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (!nbttagcompound1.isEmpty()) { nbttagcompound1.putByte("Y", (byte) serializablechunkdata_b.y); nbttaglist.add(nbttagcompound1); -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -577,6 +677,14 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun nbttagcompound.put("ChunkBukkitValues", this.persistentDataContainer); } // CraftBukkit end @@ -33596,7 +33596,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return nbttagcompound; } -@@ -0,0 +0,0 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun +@@ -763,7 +871,67 @@ public record SerializableChunkData(Registry<Biome> biomeRegistry, ChunkPos chun return nbttaglist; } @@ -33666,10 +33666,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/SimpleRegionStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/SimpleRegionStorage.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 578d270d5b7efb9ac8f5dde539170f6021e2b786..c5085ebf4e801837010f3750c5e89576bb0c27a5 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/SimpleRegionStorage.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/SimpleRegionStorage.java -@@ -0,0 +0,0 @@ import net.minecraft.util.datafix.DataFixTypes; +@@ -14,7 +14,7 @@ import net.minecraft.util.datafix.DataFixTypes; import net.minecraft.world.level.ChunkPos; public class SimpleRegionStorage implements AutoCloseable { @@ -33679,10 +33679,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final DataFixTypes dataFixType; diff --git a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 74a285b8b018a9c94ccea519f1ce8b9e2ef3cb64..d8b4196adf955f8d414688dc451caac2d9c609d9 100644 --- a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java +++ b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java -@@ -0,0 +0,0 @@ import javax.annotation.Nullable; +@@ -9,52 +9,38 @@ import javax.annotation.Nullable; import net.minecraft.world.entity.Entity; public class EntityTickList { @@ -33751,10 +33751,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } diff --git a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 1fcc2b287ed723cf51720f80e68f18f4a15cf429..3f39d6c786d9dfdd9ad591e08ff05fcbb41a1df6 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java +++ b/src/main/java/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java -@@ -0,0 +0,0 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { +@@ -86,7 +86,7 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { return CompletableFuture.supplyAsync(() -> { this.doCreateBiomes(blender, noiseConfig, structureAccessor, chunk); return chunk; @@ -33763,7 +33763,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private void doCreateBiomes(Blender blender, RandomState noiseConfig, StructureManager structureAccessor, ChunkAccess chunk) { -@@ -0,0 +0,0 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { +@@ -311,7 +311,7 @@ public final class NoiseBasedChunkGenerator extends ChunkGenerator { } return ichunkaccess1; @@ -33773,10 +33773,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private ChunkAccess doFill(Blender blender, StructureManager structureAccessor, RandomState noiseConfig, ChunkAccess chunk, int minimumCellY, int cellHeight) { diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java b/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index c3586281c9594769593a6027ea0a78f7c76c0262..decdb275e83fa6244aa3a24458872b42c49d04ed 100644 --- a/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java +++ b/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java -@@ -0,0 +0,0 @@ public class StructureCheck { +@@ -47,8 +47,13 @@ public class StructureCheck { private final BiomeSource biomeSource; private final long seed; private final DataFixer fixerUpper; @@ -33792,7 +33792,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public StructureCheck( ChunkScanAccess chunkIoWorker, -@@ -0,0 +0,0 @@ public class StructureCheck { +@@ -90,7 +95,7 @@ public class StructureCheck { public StructureCheckResult checkStart(ChunkPos pos, Structure type, StructurePlacement placement, boolean skipReferencedStructures) { long l = pos.toLong(); @@ -33801,7 +33801,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (object2IntMap != null) { return this.checkStructureInfo(object2IntMap, type, skipReferencedStructures); } else { -@@ -0,0 +0,0 @@ public class StructureCheck { +@@ -100,9 +105,11 @@ public class StructureCheck { } else if (!placement.applyAdditionalChunkRestrictions(pos.x, pos.z, this.seed, this.getSaltOverride(type))) { // Paper - add missing structure seed configs return StructureCheckResult.START_NOT_PRESENT; } else { @@ -33816,7 +33816,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return !bl ? StructureCheckResult.START_NOT_PRESENT : StructureCheckResult.CHUNK_LOAD_NEEDED; } } -@@ -0,0 +0,0 @@ public class StructureCheck { +@@ -228,15 +235,25 @@ public class StructureCheck { } private void storeFullResults(long pos, Object2IntMap<Structure> referencesByStructure) { @@ -33847,10 +33847,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 referencesByStructure.computeInt(structure, (feature, references) -> references == null ? 1 : references + 1); return referencesByStructure; diff --git a/src/main/java/net/minecraft/world/level/lighting/LevelLightEngine.java b/src/main/java/net/minecraft/world/level/lighting/LevelLightEngine.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 8d90e783967280025d711c709facbcc87f611f8a..987e3397503cd07d3a2f172cede341297bc58dba 100644 --- a/src/main/java/net/minecraft/world/level/lighting/LevelLightEngine.java +++ b/src/main/java/net/minecraft/world/level/lighting/LevelLightEngine.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.LightLayer; +@@ -9,151 +9,111 @@ import net.minecraft.world.level.LightLayer; import net.minecraft.world.level.chunk.DataLayer; import net.minecraft.world.level.chunk.LightChunkGetter; @@ -34053,10 +34053,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public int getLightSectionCount() { diff --git a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 261e5994d13f8bc30490b86691c80c0a21e7640a..f4fbcbb8ff6d2677af1a02a0801a323c06dce9b1 100644 --- a/src/main/java/net/minecraft/world/level/material/FlowingFluid.java +++ b/src/main/java/net/minecraft/world/level/material/FlowingFluid.java -@@ -0,0 +0,0 @@ public abstract class FlowingFluid extends Fluid { +@@ -55,6 +55,48 @@ public abstract class FlowingFluid extends Fluid { }); private final Map<FluidState, VoxelShape> shapes = Maps.newIdentityHashMap(); @@ -34105,7 +34105,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public FlowingFluid() {} @Override -@@ -0,0 +0,0 @@ public abstract class FlowingFluid extends Fluid { +@@ -246,65 +288,70 @@ public abstract class FlowingFluid extends Fluid { } } @@ -34217,10 +34217,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 protected abstract boolean canConvertToSource(ServerLevel world); diff --git a/src/main/java/net/minecraft/world/level/material/FluidState.java b/src/main/java/net/minecraft/world/level/material/FluidState.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 87adfe152abd1b8b4d547034576883c5d1cdf134..2d50d72bf026d0cf9c546a3c6fc1859379bfd805 100644 --- a/src/main/java/net/minecraft/world/level/material/FluidState.java +++ b/src/main/java/net/minecraft/world/level/material/FluidState.java -@@ -0,0 +0,0 @@ import net.minecraft.world.level.block.state.properties.Property; +@@ -22,12 +22,30 @@ import net.minecraft.world.level.block.state.properties.Property; import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.shapes.VoxelShape; @@ -34252,7 +34252,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public FluidState(Fluid fluid, Reference2ObjectArrayMap<Property<?>, Comparable<?>> propertyMap, MapCodec<FluidState> codec) { super(fluid, propertyMap, codec); this.isEmpty = fluid.isEmpty(); // Paper - Perf: moved from isEmpty() -@@ -0,0 +0,0 @@ public final class FluidState extends StateHolder<Fluid, FluidState> { +@@ -38,11 +56,11 @@ public final class FluidState extends StateHolder<Fluid, FluidState> { } public boolean isSource() { @@ -34266,7 +34266,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public boolean isEmpty() { -@@ -0,0 +0,0 @@ public final class FluidState extends StateHolder<Fluid, FluidState> { +@@ -54,11 +72,11 @@ public final class FluidState extends StateHolder<Fluid, FluidState> { } public float getOwnHeight() { @@ -34280,7 +34280,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public boolean shouldRenderBackwardUpFace(BlockGetter world, BlockPos pos) { -@@ -0,0 +0,0 @@ public final class FluidState extends StateHolder<Fluid, FluidState> { +@@ -84,7 +102,7 @@ public final class FluidState extends StateHolder<Fluid, FluidState> { } public boolean isRandomlyTicking() { @@ -34289,7 +34289,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void randomTick(ServerLevel world, BlockPos pos, RandomSource random) { -@@ -0,0 +0,0 @@ public final class FluidState extends StateHolder<Fluid, FluidState> { +@@ -96,7 +114,12 @@ public final class FluidState extends StateHolder<Fluid, FluidState> { } public BlockState createLegacyBlock() { @@ -34304,10 +34304,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Nullable diff --git a/src/main/java/net/minecraft/world/phys/AABB.java b/src/main/java/net/minecraft/world/phys/AABB.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 5dc2674b537f4a61b2e21a21bdb2e8dc090d3a3c..6cf6d4ec7b9e43c7b2b4c0e2fb080964ff588130 100644 --- a/src/main/java/net/minecraft/world/phys/AABB.java +++ b/src/main/java/net/minecraft/world/phys/AABB.java -@@ -0,0 +0,0 @@ public class AABB { +@@ -331,7 +331,7 @@ public class AABB { } @Nullable @@ -34317,10 +34317,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ) { return getDirection( diff --git a/src/main/java/net/minecraft/world/phys/shapes/ArrayVoxelShape.java b/src/main/java/net/minecraft/world/phys/shapes/ArrayVoxelShape.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 4fee67f7214b464b9e09862778e3ef187fcb8b72..31a54af04ab072a433d6df9fe37beb12243fea80 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/ArrayVoxelShape.java +++ b/src/main/java/net/minecraft/world/phys/shapes/ArrayVoxelShape.java -@@ -0,0 +0,0 @@ public class ArrayVoxelShape extends VoxelShape { +@@ -20,7 +20,7 @@ public class ArrayVoxelShape extends VoxelShape { ); } @@ -34329,7 +34329,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 super(shape); int i = shape.getXSize() + 1; int j = shape.getYSize() + 1; -@@ -0,0 +0,0 @@ public class ArrayVoxelShape extends VoxelShape { +@@ -34,6 +34,7 @@ public class ArrayVoxelShape extends VoxelShape { new IllegalArgumentException("Lengths of point arrays must be consistent with the size of the VoxelShape.") ); } @@ -34338,10 +34338,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override diff --git a/src/main/java/net/minecraft/world/phys/shapes/BitSetDiscreteVoxelShape.java b/src/main/java/net/minecraft/world/phys/shapes/BitSetDiscreteVoxelShape.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index e8f3307727e7e3da9a7629cafc6e1ee53790b75d..97ef481156ec5d821779f126ab98a8f28cbaf30b 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/BitSetDiscreteVoxelShape.java +++ b/src/main/java/net/minecraft/world/phys/shapes/BitSetDiscreteVoxelShape.java -@@ -0,0 +0,0 @@ import java.util.BitSet; +@@ -4,13 +4,13 @@ import java.util.BitSet; import net.minecraft.core.Direction; public final class BitSetDiscreteVoxelShape extends DiscreteVoxelShape { @@ -34362,7 +34362,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public BitSetDiscreteVoxelShape(int sizeX, int sizeY, int sizeZ) { super(sizeX, sizeY, sizeZ); -@@ -0,0 +0,0 @@ public final class BitSetDiscreteVoxelShape extends DiscreteVoxelShape { +@@ -150,47 +150,109 @@ public final class BitSetDiscreteVoxelShape extends DiscreteVoxelShape { return bitSetDiscreteVoxelShape; } @@ -34500,10 +34500,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private boolean isZStripFull(int z1, int z2, int x, int y) { return x < this.xSize && y < this.ySize && this.storage.nextClearBit(this.getIndex(x, y, z1)) >= this.getIndex(x, y, z2); diff --git a/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java b/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index d812949c7329ae2696b38dc792fa011ba87decb9..7743495c7ec3fc5e17947144457cef7bbe0f4b38 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java +++ b/src/main/java/net/minecraft/world/phys/shapes/CubeVoxelShape.java -@@ -0,0 +0,0 @@ import net.minecraft.util.Mth; +@@ -7,6 +7,7 @@ import net.minecraft.util.Mth; public final class CubeVoxelShape extends VoxelShape { protected CubeVoxelShape(DiscreteVoxelShape voxels) { super(voxels); @@ -34512,10 +34512,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override diff --git a/src/main/java/net/minecraft/world/phys/shapes/DiscreteVoxelShape.java b/src/main/java/net/minecraft/world/phys/shapes/DiscreteVoxelShape.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 01693ba050b12b9debcdaefceeff9cbcd503b369..fbe0c4b0fdbb992b7002f6afe1e74d63cbb420f2 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/DiscreteVoxelShape.java +++ b/src/main/java/net/minecraft/world/phys/shapes/DiscreteVoxelShape.java -@@ -0,0 +0,0 @@ package net.minecraft.world.phys.shapes; +@@ -3,12 +3,79 @@ package net.minecraft.world.phys.shapes; import net.minecraft.core.AxisCycle; import net.minecraft.core.Direction; @@ -34597,10 +34597,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 if (sizeX >= 0 && sizeY >= 0 && sizeZ >= 0) { this.xSize = sizeX; diff --git a/src/main/java/net/minecraft/world/phys/shapes/OffsetDoubleList.java b/src/main/java/net/minecraft/world/phys/shapes/OffsetDoubleList.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 7ec02a7849437a18860aa0df7d9ddd71b2447d4c..5e45e49ab09344cb95736f4124b1c6e002ef5b82 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/OffsetDoubleList.java +++ b/src/main/java/net/minecraft/world/phys/shapes/OffsetDoubleList.java -@@ -0,0 +0,0 @@ import it.unimi.dsi.fastutil.doubles.AbstractDoubleList; +@@ -4,8 +4,8 @@ import it.unimi.dsi.fastutil.doubles.AbstractDoubleList; import it.unimi.dsi.fastutil.doubles.DoubleList; public class OffsetDoubleList extends AbstractDoubleList { @@ -34612,10 +34612,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public OffsetDoubleList(DoubleList oldList, double offset) { this.delegate = oldList; diff --git a/src/main/java/net/minecraft/world/phys/shapes/Shapes.java b/src/main/java/net/minecraft/world/phys/shapes/Shapes.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 76d7435e6fe81a3f1d24b35eae72d06232a1792b..ca3a2419252721bb3b3b719eb19afb5f175394c0 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/Shapes.java +++ b/src/main/java/net/minecraft/world/phys/shapes/Shapes.java -@@ -0,0 +0,0 @@ public final class Shapes { +@@ -16,9 +16,15 @@ public final class Shapes { public static final double EPSILON = 1.0E-7; public static final double BIG_EPSILON = 1.0E-6; private static final VoxelShape BLOCK = Util.make(() -> { @@ -34634,7 +34634,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 }); public static final VoxelShape INFINITY = box( Double.NEGATIVE_INFINITY, -@@ -0,0 +0,0 @@ public final class Shapes { +@@ -43,6 +49,30 @@ public final class Shapes { return BLOCK; } @@ -34665,7 +34665,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public static VoxelShape box(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) { if (!(minX > maxX) && !(minY > maxY) && !(minZ > maxZ)) { return create(minX, minY, minZ, maxX, maxY, maxZ); -@@ -0,0 +0,0 @@ public final class Shapes { +@@ -52,39 +82,42 @@ public final class Shapes { } public static VoxelShape create(double minX, double minY, double minZ, double maxX, double maxY, double maxZ) { @@ -34734,7 +34734,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public static VoxelShape create(AABB box) { -@@ -0,0 +0,0 @@ public final class Shapes { +@@ -119,80 +152,54 @@ public final class Shapes { return join(first, second, BooleanOp.OR); } @@ -34854,7 +34854,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } private static boolean joinIsNotEmpty( -@@ -0,0 +0,0 @@ public final class Shapes { +@@ -219,51 +226,116 @@ public final class Shapes { return maxDist; } @@ -35006,10 +35006,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @VisibleForTesting diff --git a/src/main/java/net/minecraft/world/phys/shapes/SliceShape.java b/src/main/java/net/minecraft/world/phys/shapes/SliceShape.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index b07f1c58e00d232e7c83e6df3499e4b677645609..b88c71f27996d24d29048e06a69a004617eb53a2 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/SliceShape.java +++ b/src/main/java/net/minecraft/world/phys/shapes/SliceShape.java -@@ -0,0 +0,0 @@ public class SliceShape extends VoxelShape { +@@ -12,6 +12,7 @@ public class SliceShape extends VoxelShape { super(makeSlice(shape.shape, axis, sliceWidth)); this.delegate = shape; this.axis = axis; @@ -35018,10 +35018,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private static DiscreteVoxelShape makeSlice(DiscreteVoxelShape voxelSet, Direction.Axis axis, int sliceWidth) { diff --git a/src/main/java/net/minecraft/world/phys/shapes/VoxelShape.java b/src/main/java/net/minecraft/world/phys/shapes/VoxelShape.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index bcb79462c8b3309ae8701cba4753b27a9d22eb2e..6182f1d37c7a63479f6c6e7c37a7edc9cffc3071 100644 --- a/src/main/java/net/minecraft/world/phys/shapes/VoxelShape.java +++ b/src/main/java/net/minecraft/world/phys/shapes/VoxelShape.java -@@ -0,0 +0,0 @@ import net.minecraft.world.phys.AABB; +@@ -15,61 +15,546 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.Vec3; @@ -35597,7 +35597,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public VoxelShape move(Vec3 vec3d) { -@@ -0,0 +0,0 @@ public abstract class VoxelShape { +@@ -77,24 +562,96 @@ public abstract class VoxelShape { } public VoxelShape move(double x, double y, double z) { @@ -35709,7 +35709,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public void forAllEdges(Shapes.DoubleLineConsumer consumer) { -@@ -0,0 +0,0 @@ public abstract class VoxelShape { +@@ -131,9 +688,24 @@ public abstract class VoxelShape { } public List<AABB> toAabbs() { @@ -35737,7 +35737,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public double min(Direction.Axis axis, double from, double to) { -@@ -0,0 +0,0 @@ public abstract class VoxelShape { +@@ -155,46 +727,92 @@ public abstract class VoxelShape { } protected int findIndex(Direction.Axis axis, double coord) { @@ -35860,7 +35860,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public VoxelShape getFaceShape(Direction facing) { -@@ -0,0 +0,0 @@ public abstract class VoxelShape { +@@ -216,20 +834,24 @@ public abstract class VoxelShape { } } @@ -35897,7 +35897,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } protected boolean isCubeLike() { -@@ -0,0 +0,0 @@ public abstract class VoxelShape { +@@ -249,9 +871,30 @@ public abstract class VoxelShape { && DoubleMath.fuzzyEquals(doubleList.getDouble(1), 1.0, 1.0E-7); } @@ -35931,10 +35931,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 protected double collideX(AxisCycle axisCycle, AABB box, double maxDist) { if (this.isEmpty()) { diff --git a/src/main/java/net/minecraft/world/ticks/LevelChunkTicks.java b/src/main/java/net/minecraft/world/ticks/LevelChunkTicks.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 26620c06d26a2c0eb957fbadc6ac3d7a309bff46..3858c83c58e78435a6e29de84c33faa2f26d593d 100644 --- a/src/main/java/net/minecraft/world/ticks/LevelChunkTicks.java +++ b/src/main/java/net/minecraft/world/ticks/LevelChunkTicks.java -@@ -0,0 +0,0 @@ import net.minecraft.core.BlockPos; +@@ -17,7 +17,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.nbt.ListTag; import net.minecraft.world.level.ChunkPos; @@ -35943,7 +35943,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 private final Queue<ScheduledTick<T>> tickQueue = new PriorityQueue<>(ScheduledTick.DRAIN_ORDER); @Nullable private List<SavedTick<T>> pendingTicks; -@@ -0,0 +0,0 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon +@@ -25,6 +25,30 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon @Nullable private BiConsumer<LevelChunkTicks<T>, ScheduledTick<T>> onTickAdded; @@ -35974,7 +35974,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 public LevelChunkTicks() { } -@@ -0,0 +0,0 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon +@@ -49,7 +73,7 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon public ScheduledTick<T> poll() { ScheduledTick<T> scheduledTick = this.tickQueue.poll(); if (scheduledTick != null) { @@ -35983,7 +35983,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } return scheduledTick; -@@ -0,0 +0,0 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon +@@ -58,7 +82,7 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon @Override public void schedule(ScheduledTick<T> orderedTick) { if (this.ticksPerPosition.add(orderedTick)) { @@ -35992,7 +35992,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } } -@@ -0,0 +0,0 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon +@@ -80,7 +104,7 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon while (iterator.hasNext()) { ScheduledTick<T> scheduledTick = iterator.next(); if (predicate.test(scheduledTick)) { @@ -36001,7 +36001,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.ticksPerPosition.remove(scheduledTick); } } -@@ -0,0 +0,0 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon +@@ -110,6 +134,7 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon } public ListTag save(long time, Function<T, String> typeToNameFunction) { @@ -36009,7 +36009,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ListTag listTag = new ListTag(); for (SavedTick<T> savedTick : this.pack(time)) { -@@ -0,0 +0,0 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon +@@ -121,6 +146,7 @@ public class LevelChunkTicks<T> implements SerializableTickContainer<T>, TickCon public void unpack(long time) { if (this.pendingTicks != null) { @@ -36018,10 +36018,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 for (SavedTick<T> savedTick : this.pendingTicks) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index f3ab07e44e2e912ea66c6148cfdb2a4a528741b2..c2bffe3450ee9f768e00a23ec09df74d7a06d49b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java -@@ -0,0 +0,0 @@ public class CraftChunk implements Chunk { +@@ -83,6 +83,12 @@ public class CraftChunk implements Chunk { } public ChunkAccess getHandle(ChunkStatus chunkStatus) { @@ -36034,7 +36034,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 ChunkAccess chunkAccess = this.worldServer.getChunk(this.x, this.z, chunkStatus); // SPIGOT-7332: Get unwrapped extension -@@ -0,0 +0,0 @@ public class CraftChunk implements Chunk { +@@ -117,60 +123,12 @@ public class CraftChunk implements Chunk { @Override public boolean isEntitiesLoaded() { @@ -36098,10 +36098,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 5b64111bc8baca45ecc7bfa384e5f8a004163a0b..97b5d6ba2b19a7c730730c74175a29157aed1840 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -0,0 +0,0 @@ public final class CraftServer implements Server { +@@ -1448,7 +1448,7 @@ public final class CraftServer implements Server { // Paper - Put world into worldlist before initing the world; move up this.getServer().prepareLevels(internal.getChunkSource().chunkMap.progressListener, internal); @@ -36110,7 +36110,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 this.pluginManager.callEvent(new WorldLoadEvent(internal.getWorld())); return internal.getWorld(); -@@ -0,0 +0,0 @@ public final class CraftServer implements Server { +@@ -1493,7 +1493,7 @@ public final class CraftServer implements Server { } handle.getChunkSource().close(save); @@ -36119,7 +36119,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 handle.convertable.close(); } catch (Exception ex) { this.getLogger().log(Level.SEVERE, null, ex); -@@ -0,0 +0,0 @@ public final class CraftServer implements Server { +@@ -2531,7 +2531,7 @@ public final class CraftServer implements Server { @Override public boolean isPrimaryThread() { @@ -36129,10 +36129,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Paper start - Adventure diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index ca62105a0ff0aa69385cbf2018f8fe6a4bb69fd4..92d9f0ea8f7810ae20d3996f49aefa539b4bcb69 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -507,15 +507,17 @@ public class CraftWorld extends CraftRegionAccessor implements World { ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z)); if (playerChunk == null) return false; @@ -36156,7 +36156,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return true; } -@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -618,20 +620,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public Collection<Plugin> getPluginChunkTickets(int x, int z) { DistanceManager chunkDistanceManager = this.world.getChunkSource().chunkMap.distanceManager; @@ -36178,7 +36178,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override -@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -639,7 +629,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { Map<Plugin, ImmutableList.Builder<Chunk>> ret = new HashMap<>(); DistanceManager chunkDistanceManager = this.world.getChunkSource().chunkMap.distanceManager; @@ -36187,7 +36187,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 long chunkKey = chunkTickets.getLongKey(); SortedArraySet<Ticket<?>> tickets = chunkTickets.getValue(); -@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1342,12 +1332,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public int getViewDistance() { @@ -36202,7 +36202,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } public BlockMetadataStore getBlockMetadata() { -@@ -0,0 +0,0 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2486,17 +2476,20 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void setSimulationDistance(final int simulationDistance) { @@ -36227,10 +36227,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Paper start - implement pointers diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index e9df37ff66700278bc94ea1e42135b92d97d03f7..6a647cab8b2e476987931486e290703b8726f2c7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3527,7 +3527,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setViewDistance(final int viewDistance) { @@ -36241,7 +36241,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override -@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3537,7 +3539,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setSimulationDistance(final int simulationDistance) { @@ -36252,7 +36252,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } @Override -@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3547,7 +3551,9 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setSendViewDistance(final int viewDistance) { @@ -36264,10 +36264,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 // Paper start - entity effect API diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 39377ba0739f9660567b38475f101672f7b5e035..c025a4ff42257a4e84f0f9574b84f6987ef8ac11 100644 --- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java +++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java -@@ -0,0 +0,0 @@ public class CustomChunkGenerator extends InternalChunkGenerator { +@@ -264,7 +264,7 @@ public class CustomChunkGenerator extends InternalChunkGenerator { return ichunkaccess1; }; @@ -36277,10 +36277,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/util/DelegatedGeneratorAccess.java b/src/main/java/org/bukkit/craftbukkit/util/DelegatedGeneratorAccess.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index 54c4434662d057a08800918641b95708cda61207..37458e8fd5d57acbf90a6bea4e66797cb07f69fa 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/DelegatedGeneratorAccess.java +++ b/src/main/java/org/bukkit/craftbukkit/util/DelegatedGeneratorAccess.java -@@ -0,0 +0,0 @@ public abstract class DelegatedGeneratorAccess implements WorldGenLevel { +@@ -810,6 +810,13 @@ public abstract class DelegatedGeneratorAccess implements WorldGenLevel { public ChunkAccess getChunkIfLoadedImmediately(final int x, final int z) { return this.handle.getChunkIfLoadedImmediately(x, z); } @@ -36295,10 +36295,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 } diff --git a/src/main/java/org/spigotmc/AsyncCatcher.java b/src/main/java/org/spigotmc/AsyncCatcher.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index ef2598760458833021ef1bee92137f42c9fe591f..1f23e775eba1c34e01145bd91b0ce26fed6ca9de 100644 --- a/src/main/java/org/spigotmc/AsyncCatcher.java +++ b/src/main/java/org/spigotmc/AsyncCatcher.java -@@ -0,0 +0,0 @@ public class AsyncCatcher +@@ -9,7 +9,7 @@ public class AsyncCatcher public static void catchOp(String reason) { @@ -36308,10 +36308,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 MinecraftServer.LOGGER.error("Thread " + Thread.currentThread().getName() + " failed main thread check: " + reason, new Throwable()); // Paper throw new IllegalStateException( "Asynchronous " + reason + "!" ); diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +index ad282d34919716b75acd10426cd071da9d064a51..529df2a41dd93d6e1505053bd04032dbf0cdaa31 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java -@@ -0,0 +0,0 @@ import java.util.logging.Logger; +@@ -8,7 +8,7 @@ import java.util.logging.Logger; import net.minecraft.server.MinecraftServer; import org.bukkit.Bukkit; @@ -36320,7 +36320,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 { private static WatchdogThread instance; -@@ -0,0 +0,0 @@ public class WatchdogThread extends Thread +@@ -115,6 +115,7 @@ public class WatchdogThread extends Thread // Paper end - Different message for short timeout log.log( Level.SEVERE, "------------------------------" ); log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Paper!):" ); // Paper |