diff --git a/patches/removed/1.17/0493-Optimize-Light-Engine.patch b/patches/server/0495-Optimize-Light-Engine.patch similarity index 51% rename from patches/removed/1.17/0493-Optimize-Light-Engine.patch rename to patches/server/0495-Optimize-Light-Engine.patch index 6b16fce1cd..123256ca51 100644 --- a/patches/removed/1.17/0493-Optimize-Light-Engine.patch +++ b/patches/server/0495-Optimize-Light-Engine.patch @@ -24,45 +24,43 @@ Massive update to light to improve performance and chunk loading/generation. 7) Buffer non urgent tasks even if queueUpdate is called multiple times to improve efficiency. 8) Fix NPE risk that crashes server in getting nibble data -1.17: Depends on chunk urgency patch as well - diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java -index 8260636da673ef095728c208db2d6237bab2db19..9e3629884709126574a52ad44fe7523f01dbcce9 100644 +index 4114c0fa58e41383b5469cbc6abb44416a7af247..e649e6a8b354be45eed808ee02082ca7c826b59b 100644 --- a/src/main/java/net/minecraft/server/level/ChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java -@@ -753,6 +753,7 @@ public class ChunkHolder { +@@ -771,6 +771,7 @@ public class ChunkHolder { ioPriority = com.destroystokyo.paper.io.PrioritizedTaskQueue.HIGH_PRIORITY; } chunkMap.level.asyncChunkTaskManager.raisePriority(pos.x, pos.z, ioPriority); -+ chunkMap.level.getChunkSource().getLightEngine().queue.changePriority(pos.toLong(), getCurrentPriority(), priority); ++ chunkMap.level.getChunkSource().getLightEngine().queue.changePriority(pos.toLong(), this.queueLevel, priority); // Paper } - if (getCurrentPriority() != priority) { - this.onLevelChange.onLevelChange(this.pos, this::getCurrentPriority, priority, this::setPriority); // use preferred priority + if (this.queueLevel != priority) { + this.onLevelChange.onLevelChange(this.pos, () -> this.queueLevel, priority, p -> this.queueLevel = p); // use preferred priority diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index acc566d14926dcf9e88f3e0837884e4c823d777c..f4dd30c8b3326db72d3b3068ee2291de6f15de7c 100644 +index 6ed95a0cff3e9c874f14bc90283f750e15765c67..5d57461d33f442e2ff0363348555357ba90f2f58 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -98,6 +98,7 @@ import net.minecraft.world.level.levelgen.structure.StructureStart; - import net.minecraft.world.level.levelgen.structure.templatesystem.StructureManager; +@@ -97,6 +97,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureMana import net.minecraft.world.level.storage.DimensionDataStorage; import net.minecraft.world.level.storage.LevelStorageSource; + import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.storage.PrimaryLevelData; import it.unimi.dsi.fastutil.objects.ObjectRBTreeSet; // Paper import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.logging.log4j.LogManager; -@@ -328,6 +329,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -338,6 +339,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } // Paper end -+ private final java.util.concurrent.ExecutorService lightThread; - public ChunkMap(ServerLevel worldserver, LevelStorageSource.LevelStorageAccess convertable_conversionsession, DataFixer dataFixer, StructureManager definedstructuremanager, Executor workerExecutor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, Supplier supplier, int i, boolean flag) { - super(new File(convertable_conversionsession.getDimensionPath(worldserver.dimension()), "region"), dataFixer, flag); ++ private final java.util.concurrent.ExecutorService lightThread; // Paper + public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureManager structureManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { + super(new File(session.getDimensionPath(world.dimension()), "region"), dataFixer, dsync); //this.visibleChunks = this.updatingChunks.clone(); // Paper - no more cloning -@@ -359,7 +361,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - ProcessorHandle mailbox = ProcessorHandle.of("main", mainThreadExecutor::tell); +@@ -370,7 +372,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.progressListener = worldGenerationProgressListener; -- ProcessorMailbox lightthreaded; ProcessorMailbox threadedmailbox1 = lightthreaded = ProcessorMailbox.create(workerExecutor, "light"); // Paper + this.chunkStatusListener = chunkStatusChangeListener; +- ProcessorMailbox lightthreaded; ProcessorMailbox threadedmailbox1 = lightthreaded = ProcessorMailbox.create(executor, "light"); // Paper + // Paper start - use light thread + ProcessorMailbox lightthreaded; ProcessorMailbox threadedmailbox1 = lightthreaded = ProcessorMailbox.create(lightThread = java.util.concurrent.Executors.newSingleThreadExecutor(r -> { + Thread thread = new Thread(r); @@ -73,17 +71,9 @@ index acc566d14926dcf9e88f3e0837884e4c823d777c..f4dd30c8b3326db72d3b3068ee2291de + }), "light"); + // Paper end - this.queueSorter = new ChunkTaskPriorityQueueSorter(ImmutableList.of(threadedmailbox, mailbox, threadedmailbox1), workerExecutor, Integer.MAX_VALUE); + this.queueSorter = new ChunkTaskPriorityQueueSorter(ImmutableList.of(threadedmailbox, mailbox, threadedmailbox1), executor, Integer.MAX_VALUE); this.worldgenMailbox = this.queueSorter.getProcessor(threadedmailbox, false); -@@ -705,6 +715,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - // Paper end - } - -+ protected final IntSupplier getPrioritySupplier(long i) { return getChunkQueueLevel(i); } // Paper - OBFHELPER - protected IntSupplier getChunkQueueLevel(long pos) { - return () -> { - ChunkHolder playerchunk = this.getVisibleChunkIfPresent(pos); -@@ -832,6 +843,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -879,6 +889,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider @Override public void close() throws IOException { try { @@ -92,17 +82,10 @@ index acc566d14926dcf9e88f3e0837884e4c823d777c..f4dd30c8b3326db72d3b3068ee2291de this.level.asyncChunkTaskManager.close(true); // Paper - Required since we're closing regionfiles in the next line this.poiManager.close(); diff --git a/src/main/java/net/minecraft/server/level/SectionTracker.java b/src/main/java/net/minecraft/server/level/SectionTracker.java -index 125ae965bb539ae24c60cb992eb7cfc35fd65b25..9fa6c290373b0e0cc0e7ed84c0c2363c8ad14dd3 100644 +index d3d6651eb51c852ed1d1eeb5689569d5308b246d..c2d36600a0081c78425868154bdcf7f42d549154 100644 --- a/src/main/java/net/minecraft/server/level/SectionTracker.java +++ b/src/main/java/net/minecraft/server/level/SectionTracker.java -@@ -1,6 +1,5 @@ - package net.minecraft.server.level; - --import net.minecraft.core.SectionPos; - import net.minecraft.world.level.lighting.DynamicGraphMinFixedPoint; - - public abstract class SectionTracker extends DynamicGraphMinFixedPoint { -@@ -16,14 +15,20 @@ public abstract class SectionTracker extends DynamicGraphMinFixedPoint { +@@ -15,13 +15,19 @@ public abstract class SectionTracker extends DynamicGraphMinFixedPoint { @Override protected void checkNeighborsAfterUpdate(long id, int level, boolean decrease) { @@ -111,43 +94,42 @@ index 125ae965bb539ae24c60cb992eb7cfc35fd65b25..9fa6c290373b0e0cc0e7ed84c0c2363c + int y = (int) (id << 44 >> 44); + int z = (int) (id << 22 >> 42); + // Paper end - for (int k = -1; k <= 1; ++k) { - for (int l = -1; l <= 1; ++l) { - for (int i1 = -1; i1 <= 1; ++i1) { -- long j1 = SectionPos.offset(id, k, l, i1); -+ if (k == 0 && l == 0 && i1 == 0) continue; // Paper -+ long j1 = (((long) (x + k) & 4194303L) << 42) | (((long) (y + l) & 1048575L)) | (((long) (z + i1) & 4194303L) << 20); // Paper - -- if (j1 != id) { -+ //if (j1 != i) { // Paper - checked above - this.checkNeighbor(id, j1, level, decrease); + for(int i = -1; i <= 1; ++i) { + for(int j = -1; j <= 1; ++j) { + for(int k = -1; k <= 1; ++k) { +- long l = SectionPos.offset(id, i, j, k); +- if (l != id) { ++ if (i == 0 && j == 0 && k == 0) continue; // Paper ++ long l = (((long) (x + i) & 4194303L) << 42) | (((long) (y + j) & 1048575L)) | (((long) (z + k) & 4194303L) << 20); ++ // if (l != id) { // Paper - checked above + this.checkNeighbor(id, l, level, decrease); - } + //} // Paper } } } -@@ -34,10 +39,15 @@ public abstract class SectionTracker extends DynamicGraphMinFixedPoint { +@@ -32,10 +38,15 @@ public abstract class SectionTracker extends DynamicGraphMinFixedPoint { protected int getComputedLevel(long id, long excludedId, int maxLevel) { - int l = maxLevel; + int i = maxLevel; + // Paper start + int x = (int) (id >> 42); + int y = (int) (id << 44 >> 44); + int z = (int) (id << 22 >> 42); + // Paper end - for (int i1 = -1; i1 <= 1; ++i1) { - for (int j1 = -1; j1 <= 1; ++j1) { - for (int k1 = -1; k1 <= 1; ++k1) { -- long l1 = SectionPos.offset(id, i1, j1, k1); -+ long l1 = (((long) (x + i1) & 4194303L) << 42) | (((long) (y + j1) & 1048575L)) | (((long) (z + k1) & 4194303L) << 20); // Paper - - if (l1 == id) { - l1 = Long.MAX_VALUE; + for(int j = -1; j <= 1; ++j) { + for(int k = -1; k <= 1; ++k) { + for(int l = -1; l <= 1; ++l) { +- long m = SectionPos.offset(id, j, k, l); ++ long m = (((long) (x + j) & 4194303L) << 42) | (((long) (y + k) & 1048575L)) | (((long) (z + l) & 4194303L) << 20); // Paper + if (m == id) { + m = Long.MAX_VALUE; + } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index f36badcafbad7fb4537ffdf54d9e266ae3d72459..7a615a18f1f297adfe7e046407a019d8933e9ed9 100644 +index 0b22fd8ac75146bc7b647cfbefc73ce890ccb033..f27160640c7c63075d41e52a74227c1168cce6b2 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -1072,7 +1072,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -1061,7 +1061,7 @@ public class ServerChunkCache extends ChunkSource { if (ServerChunkCache.this.runDistanceManagerUpdates()) { return true; } else { @@ -157,7 +139,7 @@ index f36badcafbad7fb4537ffdf54d9e266ae3d72459..7a615a18f1f297adfe7e046407a019d8 } } finally { diff --git a/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java b/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java -index cc4190b3a8904d1eaae0f542a3b3090583f5ff82..14835bfab300d305faee2db705d7386dc16427f5 100644 +index de228b677810ce49c4e953ca0b4e590413b20e45..f05e9dbb5f9b9fa23cf51f72f744c445c54234cd 100644 --- a/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java +++ b/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java @@ -1,6 +1,7 @@ @@ -176,11 +158,11 @@ index cc4190b3a8904d1eaae0f542a3b3090583f5ff82..14835bfab300d305faee2db705d7386d import net.minecraft.world.level.chunk.DataLayer; import net.minecraft.world.level.chunk.LevelChunkSection; import net.minecraft.world.level.chunk.LightChunkGetter; -@@ -27,15 +29,149 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl - +@@ -26,15 +28,149 @@ import org.apache.logging.log4j.Logger; + public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCloseable { private static final Logger LOGGER = LogManager.getLogger(); private final ProcessorMailbox taskMailbox; -- private final ObjectList> lightTasks = new ObjectArrayList(); +- private final ObjectList> lightTasks = new ObjectArrayList<>(); - private final ChunkMap chunkMap; + // Paper start + private static final int MAX_PRIORITIES = ChunkMap.MAX_CHUNK_DISTANCE + 2; @@ -191,7 +173,7 @@ index cc4190b3a8904d1eaae0f542a3b3090583f5ff82..14835bfab300d305faee2db705d7386d + return false; + } + ChunkStatus status = ChunkHolder.getStatus(playerChunk.getTicketLevel()); -+ return status != null && status.isAtLeastStatus(ChunkStatus.LIGHT); ++ return status != null && status.isOrAfter(ChunkStatus.LIGHT); + } + + static class ChunkLightQueue { @@ -329,7 +311,7 @@ index cc4190b3a8904d1eaae0f542a3b3090583f5ff82..14835bfab300d305faee2db705d7386d this.sorterMailbox = executor; this.taskMailbox = processor; } -@@ -122,13 +258,9 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl +@@ -120,13 +256,9 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl } private void addTask(int x, int z, IntSupplier completedLevelSupplier, ThreadedLevelLightEngine.TaskType stage, Runnable task) { @@ -346,17 +328,17 @@ index cc4190b3a8904d1eaae0f542a3b3090583f5ff82..14835bfab300d305faee2db705d7386d } @Override -@@ -145,8 +277,19 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl - public CompletableFuture lightChunk(ChunkAccess chunk, boolean excludeBlocks) { - ChunkPos chunkcoordintpair = chunk.getPos(); +@@ -142,8 +274,19 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl + public CompletableFuture lightChunk(ChunkAccess chunk, boolean excludeBlocks) { + ChunkPos chunkPos = chunk.getPos(); - chunk.setLightCorrect(false); -- this.addTask(chunkcoordintpair.x, chunkcoordintpair.z, ThreadedLevelLightEngine.TaskType.PRE_UPDATE, Util.name(() -> { +- this.addTask(chunkPos.x, chunkPos.z, ThreadedLevelLightEngine.TaskType.PRE_UPDATE, Util.name(() -> { + // Paper start + //ichunkaccess.b(false); // Don't need to disable this -+ long pair = chunkcoordintpair.toLong(); ++ long pair = chunkPos.toLong(); + CompletableFuture future = new CompletableFuture<>(); -+ IntSupplier prioritySupplier = playerChunkMap.getPrioritySupplier(pair); ++ IntSupplier prioritySupplier = playerChunkMap.getChunkQueueLevel(pair); + boolean[] skippedPre = {false}; + this.queue.addChunk(pair, prioritySupplier, Util.name(() -> { + if (!isChunkLightStatus(pair)) { @@ -365,28 +347,28 @@ index cc4190b3a8904d1eaae0f542a3b3090583f5ff82..14835bfab300d305faee2db705d7386d + return; + } + // Paper end - LevelChunkSection[] achunksection = chunk.getSections(); + LevelChunkSection[] levelChunkSections = chunk.getSections(); - for (int i = 0; i < 16; ++i) { -@@ -164,55 +307,48 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl + for(int i = 0; i < chunk.getSectionsCount(); ++i) { +@@ -161,53 +304,48 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl }); } -- this.chunkMap.releaseLightTicket(chunkcoordintpair); -+ // this.d.c(chunkcoordintpair); // Paper - move into post task below +- this.chunkMap.releaseLightTicket(chunkPos); ++ // this.chunkMap.releaseLightTicket(chunkPos); // Paper - move into post task below }, () -> { - return "lightChunk " + chunkcoordintpair + " " + excludeBlocks; + return "lightChunk " + chunkPos + " " + excludeBlocks; - })); - return CompletableFuture.supplyAsync(() -> { + // Paper start - merge the 2 together + }), () -> { -+ this.chunkMap.releaseLightTicket(chunkcoordintpair); // Paper - release light tickets as post task to ensure they stay loaded until fully done ++ this.chunkMap.releaseLightTicket(chunkPos); // Paper - release light tickets as post task to ensure they stay loaded until fully done + if (skippedPre[0]) return; // Paper - future's already complete chunk.setLightCorrect(true); - super.retainData(chunkcoordintpair, false); + super.retainData(chunkPos, false); - return chunk; - }, (runnable) -> { -- this.addTask(chunkcoordintpair.x, chunkcoordintpair.z, ThreadedLevelLightEngine.TaskType.POST_UPDATE, runnable); +- this.addTask(chunkPos.x, chunkPos.z, ThreadedLevelLightEngine.TaskType.POST_UPDATE, runnable); + // Paper start + future.complete(chunk); }); @@ -397,11 +379,11 @@ index cc4190b3a8904d1eaae0f542a3b3090583f5ff82..14835bfab300d305faee2db705d7386d public void tryScheduleUpdate() { - if ((!this.lightTasks.isEmpty() || super.hasLightWork()) && this.scheduled.compareAndSet(false, true)) { + if ((!this.queue.isEmpty() || super.hasLightWork()) && this.scheduled.compareAndSet(false, true)) { // Paper - this.taskMailbox.tell((() -> { // Paper - decompile error + this.taskMailbox.tell(() -> { this.runUpdate(); this.scheduled.set(false); + tryScheduleUpdate(); // Paper - if we still have work to do, do it! - })); + }); } } @@ -411,15 +393,13 @@ index cc4190b3a8904d1eaae0f542a3b3090583f5ff82..14835bfab300d305faee2db705d7386d + private final java.util.List post = new java.util.ArrayList<>(); private void runUpdate() { - int i = Math.min(this.lightTasks.size(), this.taskPerBatch); -- ObjectListIterator> objectlistiterator = this.lightTasks.iterator(); +- ObjectListIterator> objectListIterator = this.lightTasks.iterator(); - -- Pair pair; - int j; -- -- for (j = 0; objectlistiterator.hasNext() && j < i; ++j) { -- pair = (Pair) objectlistiterator.next(); +- for(j = 0; objectListIterator.hasNext() && j < i; ++j) { +- Pair pair = objectListIterator.next(); - if (pair.getFirst() == ThreadedLevelLightEngine.TaskType.PRE_UPDATE) { -- ((Runnable) pair.getSecond()).run(); +- pair.getSecond().run(); - } + if (queue.poll(pre, post)) { + pre.forEach(Runnable::run); @@ -432,43 +412,29 @@ index cc4190b3a8904d1eaae0f542a3b3090583f5ff82..14835bfab300d305faee2db705d7386d + super.runUpdates(Integer.MAX_VALUE, true, true); } - -- objectlistiterator.back(j); +- objectListIterator.back(j); - super.runUpdates(Integer.MAX_VALUE, true, true); - -- for (j = 0; objectlistiterator.hasNext() && j < i; ++j) { -- pair = (Pair) objectlistiterator.next(); -- if (pair.getFirst() == ThreadedLevelLightEngine.TaskType.POST_UPDATE) { -- ((Runnable) pair.getSecond()).run(); +- for(int var5 = 0; objectListIterator.hasNext() && var5 < i; ++var5) { +- Pair pair2 = objectListIterator.next(); +- if (pair2.getFirst() == ThreadedLevelLightEngine.TaskType.POST_UPDATE) { +- pair2.getSecond().run(); - } - -- objectlistiterator.remove(); +- objectListIterator.remove(); - } - + // Paper end } public void setTaskPerBatch(int taskBatchSize) { -diff --git a/src/main/java/net/minecraft/util/thread/ProcessorMailbox.java b/src/main/java/net/minecraft/util/thread/ProcessorMailbox.java -index c763aa0c0cf49dd844af94a820103258b49021ae..195535835bdc63f7cfdebeaa957dde590262ea42 100644 ---- a/src/main/java/net/minecraft/util/thread/ProcessorMailbox.java -+++ b/src/main/java/net/minecraft/util/thread/ProcessorMailbox.java -@@ -110,7 +110,8 @@ public class ProcessorMailbox implements ProcessorHandle, AutoCloseable, R - - } - -- @Override -+ -+ public final void queue(T t0) { tell(t0); } @Override // Paper - OBFHELPER - public void tell(T message) { - this.queue.push(message); - this.registerForExecution(); diff --git a/src/main/java/net/minecraft/world/level/chunk/DataLayer.java b/src/main/java/net/minecraft/world/level/chunk/DataLayer.java -index 83e9d8bff9a31fe13a0e22445cd6eecb7abe8561..1e8ce9894fd0a121da83020c6064b7833af1c5f2 100644 +index 25570730f376665ca6477263d3b3f94d725ecd21..0570adf7e3caf97be77c5400fb76c3ec31a0d679 100644 --- a/src/main/java/net/minecraft/world/level/chunk/DataLayer.java +++ b/src/main/java/net/minecraft/world/level/chunk/DataLayer.java -@@ -11,6 +11,13 @@ import net.minecraft.server.MCUtil; - public class DataLayer { - +@@ -13,6 +13,13 @@ public class DataLayer { + @Nullable + protected byte[] data; // Paper start + public static final DataLayer EMPTY_NIBBLE_ARRAY = new DataLayer() { + @Override @@ -481,173 +447,152 @@ index 83e9d8bff9a31fe13a0e22445cd6eecb7abe8561..1e8ce9894fd0a121da83020c6064b783 private static final int nibbleBucketSizeMultiplier = Integer.getInteger("Paper.nibbleBucketSize", 3072); private static final int maxPoolSize = Integer.getInteger("Paper.maxNibblePoolSize", (int) Math.min(6, Math.max(1, Runtime.getRuntime().maxMemory() / 1024 / 1024 / 1024)) * (nibbleBucketSizeMultiplier * 8)); diff --git a/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java b/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java -index 709fc42057f8a0282c3c942067e63abb874d9042..eaaaecb67966e5e366cf59f92674c82d1d87552e 100644 +index 37d7165dfd17da03428f8dbbbf95aa8005be289c..63fb8ccd47c21b4ef332daf418c9f70f2248be45 100644 --- a/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java +++ b/src/main/java/net/minecraft/world/level/lighting/BlockLightEngine.java -@@ -23,9 +23,11 @@ public final class BlockLightEngine extends LayerLightEngine> 38); -+ int k = (int) ((blockPos << 52) >> 52); -+ int l = (int) ((blockPos << 26) >> 38); ++ int i = (int) (blockPos >> 38); ++ int j = (int) ((blockPos << 52) >> 52); ++ int k = (int) ((blockPos << 26) >> 38); + // Paper end - BlockGetter iblockaccess = this.chunkSource.getChunkForLighting(j >> 4, l >> 4); - - return iblockaccess != null ? iblockaccess.getLightEmission(this.pos.set(j, k, l)) : 0; -@@ -40,25 +42,33 @@ public final class BlockLightEngine extends LayerLightEngine= 15) { return level; } else { -- int l = Integer.signum(BlockPos.getX(targetId) - BlockPos.getX(sourceId)); -- int i1 = Integer.signum(BlockPos.getY(targetId) - BlockPos.getY(sourceId)); -- int j1 = Integer.signum(BlockPos.getZ(targetId) - BlockPos.getZ(sourceId)); -+ // Paper start - reuse math - credit to JellySquid for idea -+ int jx = (int) (targetId >> 38); -+ int jy = (int) ((targetId << 52) >> 52); -+ int jz = (int) ((targetId << 26) >> 38); -+ int ix = (int) (sourceId >> 38); -+ int iy = (int) ((sourceId << 52) >> 52); -+ int iz = (int) ((sourceId << 26) >> 38); -+ int l = Integer.signum(jx - ix); -+ int i1 = Integer.signum(jy - iy); -+ int j1 = Integer.signum(jz - iz); +- int i = Integer.signum(BlockPos.getX(targetId) - BlockPos.getX(sourceId)); +- int j = Integer.signum(BlockPos.getY(targetId) - BlockPos.getY(sourceId)); +- int k = Integer.signum(BlockPos.getZ(targetId) - BlockPos.getZ(sourceId)); ++ // Paper start ++ int ix = (int) (targetId >> 38); ++ int iy = (int) ((targetId << 52) >> 52); ++ int iz = (int) ((targetId << 26) >> 38); ++ int jx = (int) (sourceId >> 38); ++ int jy = (int) ((sourceId << 52) >> 52); ++ int jz = (int) ((sourceId << 26) >> 38); ++ int i = Integer.signum(ix - jx); ++ int j = Integer.signum(iy - jy); ++ int k = Integer.signum(iz - jz); + // Paper end - Direction enumdirection = Direction.fromNormal(l, i1, j1); - - if (enumdirection == null) { + Direction direction = Direction.fromNormal(i, j, k); + if (direction == null) { return 15; } else { //MutableInt mutableint = new MutableInt(); // Paper - share mutableint, single threaded -- BlockState iblockdata = this.getStateAndOpacity(targetId, mutableint); -- -- if (mutableint.getValue() >= 15) { -+ BlockState iblockdata = this.getBlockOptimized(jx, jy, jz, mutableint); // Paper -+ int blockedLight = mutableint.getValue(); // Paper -+ if (blockedLight >= 15) { // Paper +- BlockState blockState = this.getStateAndOpacity(targetId, mutableInt); +- if (mutableInt.getValue() >= 15) { ++ // Paper start ++ BlockState blockState = this.getBlockOptimized(ix, iy, iz, mutableInt); ++ int blockdLight = mutableInt.getValue(); ++ if (blockdLight >= 15) { ++ // Paper end return 15; } else { -- BlockState iblockdata1 = this.getStateAndOpacity(sourceId, (MutableInt) null); -+ BlockState iblockdata1 = this.getBlockOptimized(ix, iy, iz); // Paper - VoxelShape voxelshape = this.getShape(iblockdata1, sourceId, enumdirection); - VoxelShape voxelshape1 = this.getShape(iblockdata, targetId, enumdirection.getOpposite()); - -- return Shapes.faceShapeOccludes(voxelshape, voxelshape1) ? 15 : level + Math.max(1, mutableint.getValue()); -+ return Shapes.faceShapeOccludes(voxelshape, voxelshape1) ? 15 : level + Math.max(1, blockedLight); // Paper +- BlockState blockState2 = this.getStateAndOpacity(sourceId, (MutableInt)null); ++ BlockState blockState2 = this.getBlockOptimized(jx, jy, jz); // Paper + VoxelShape voxelShape = this.getShape(blockState2, sourceId, direction); + VoxelShape voxelShape2 = this.getShape(blockState, targetId, direction.getOpposite()); +- return Shapes.faceShapeOccludes(voxelShape, voxelShape2) ? 15 : level + Math.max(1, mutableInt.getValue()); ++ return Shapes.faceShapeOccludes(voxelShape, voxelShape2) ? 15 : level + Math.max(1, blockdLight); // Paper } } } -@@ -66,14 +76,19 @@ public final class BlockLightEngine extends LayerLightEngine> 38); + int y = (int) ((id << 52) >> 52); + int z = (int) ((id << 26) >> 38); -+ long k = SectionPos.blockPosAsSectionLong(x, y, z); ++ long l = SectionPos.blockPosAsSectionLong(x, y, z); + // Paper end - Direction[] aenumdirection = BlockLightEngine.DIRECTIONS; - int l = aenumdirection.length; - for (int i1 = 0; i1 < l; ++i1) { - Direction enumdirection = aenumdirection[i1]; -- long j1 = BlockPos.offset(id, enumdirection); -- long k1 = SectionPos.blockToSection(j1); -+ long j1 = BlockPos.getAdjacent(x, y, z, enumdirection); // Paper -+ long k1 = SectionPos.blockToSection(j1); // Paper - - if (k == k1 || ((BlockLightSectionStorage) this.storage).storingLightForSection(k1)) { - this.checkNeighbor(id, j1, level, decrease); -@@ -98,27 +113,37 @@ public final class BlockLightEngine extends LayerLightEngine> 38); + int baseY = (int) ((id << 52) >> 52); + int baseZ = (int) ((id << 26) >> 38); -+ long j1 = SectionPos.blockPosAsSectionLong(baseX, baseY, baseZ); -+ DataLayer nibblearray = this.storage.updating.getUpdatingOptimized(j1); ++ long l = SectionPos.blockPosAsSectionLong(baseX, baseY, baseZ); ++ DataLayer dataLayer = this.storage.updating.getUpdatingOptimized(l); + // Paper end - Direction[] aenumdirection = BlockLightEngine.DIRECTIONS; - int k1 = aenumdirection.length; - for (int l1 = 0; l1 < k1; ++l1) { - Direction enumdirection = aenumdirection[l1]; -- long i2 = BlockPos.offset(id, enumdirection); + for(Direction direction : DIRECTIONS) { +- long m = BlockPos.offset(id, direction); + // Paper start -+ int newX = baseX + enumdirection.getStepX(); -+ int newY = baseY + enumdirection.getStepY(); -+ int newZ = baseZ + enumdirection.getStepZ(); -+ long i2 = BlockPos.asLong(newX, newY, newZ); - - if (i2 != excludedId) { -- long j2 = SectionPos.blockToSection(i2); -+ long j2 = SectionPos.blockPosAsSectionLong(newX, newY, newZ); ++ int newX = baseX + direction.getStepX(); ++ int newY = baseY + direction.getStepY(); ++ int newZ = baseZ + direction.getStepZ(); ++ long m = BlockPos.asLong(newX, newY, newZ); + if (m != excludedId) { +- long n = SectionPos.blockToSection(m); ++ long n = SectionPos.blockPosAsSectionLong(newX, newY, newZ); + // Paper end - DataLayer nibblearray1; - - if (j1 == j2) { - nibblearray1 = nibblearray; + DataLayer dataLayer2; + if (l == n) { + dataLayer2 = dataLayer; } else { -- nibblearray1 = ((BlockLightSectionStorage) this.storage).getDataLayer(j2, true); -+ nibblearray1 = ((BlockLightSectionStorage) this.storage).updating.getUpdatingOptimized(j2); // Paper +- dataLayer2 = this.storage.getDataLayer(n, true); ++ dataLayer2 = this.storage.updating.getUpdatingOptimized(n); // Paper } - if (nibblearray1 != null) { -- int k2 = this.computeLevelFromNeighbor(i2, id, this.getLevel(nibblearray1, i2)); -+ int k2 = this.computeLevelFromNeighbor(i2, id, this.getNibbleLightInverse(nibblearray1, newX, newY, newZ)); // Paper - - if (l > k2) { - l = k2; + if (dataLayer2 != null) { +- int k = this.computeLevelFromNeighbor(m, id, this.getLevel(dataLayer2, m)); ++ int k = this.computeLevelFromNeighbor(m, id, this.getLevel(dataLayer2, newX, newY, newZ)); // Paper + if (i > k) { + i = k; + } diff --git a/src/main/java/net/minecraft/world/level/lighting/BlockLightSectionStorage.java b/src/main/java/net/minecraft/world/level/lighting/BlockLightSectionStorage.java -index a1ad4d73ddaf6afe97a1f1ff7e0622b52fac8761..f771ef8d841567b421b6c0529af3f0713c79eb7c 100644 +index 314b46f0becd088d26956b45981217b128d539cb..d8e71e3759e02b3db5603302ad37656d0a72c2b2 100644 --- a/src/main/java/net/minecraft/world/level/lighting/BlockLightSectionStorage.java +++ b/src/main/java/net/minecraft/world/level/lighting/BlockLightSectionStorage.java -@@ -1,8 +1,6 @@ - package net.minecraft.world.level.lighting; - - import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; --import net.minecraft.core.BlockPos; --import net.minecraft.core.SectionPos; - import net.minecraft.world.level.LightLayer; - import net.minecraft.world.level.chunk.DataLayer; - import net.minecraft.world.level.chunk.LightChunkGetter; -@@ -15,10 +13,14 @@ public class BlockLightSectionStorage extends LayerLightSectionStorage> 38); + int baseY = (int) ((blockPos << 52) >> 52); + int baseZ = (int) ((blockPos << 26) >> 38); -+ long j = (((long) (baseX >> 4) & 4194303L) << 42) | (((long) (baseY >> 4) & 1048575L)) | (((long) (baseZ >> 4) & 4194303L) << 20); -+ DataLayer nibblearray = this.e_visible.lookup.apply(j); -+ return nibblearray == null ? 0 : nibblearray.get(baseX & 15, baseY & 15, baseZ & 15); ++ long l = net.minecraft.core.SectionPos.blockPosAsSectionLong(baseX, baseY, baseZ); ++ DataLayer dataLayer = this.e_visible.lookup.apply(l); ++ return dataLayer == null ? 0 : dataLayer.get(baseX & 15, baseY & 15, baseZ & 15); + // Paper end } - public static final class BlockDataLayerStorageMap extends DataLayerStorageMap { + protected static final class BlockDataLayerStorageMap extends DataLayerStorageMap { diff --git a/src/main/java/net/minecraft/world/level/lighting/DataLayerStorageMap.java b/src/main/java/net/minecraft/world/level/lighting/DataLayerStorageMap.java -index 54cca3b376e5ce02936edc8b9c17e67e17f07147..ed2ed6194670016086be580dc4514d5d3d1b235b 100644 +index 52682471adc13dffc0383fc4abacbd3397f3bb10..9d1bf2d68d8d630d5ecb0581df57a99eae9eff0d 100644 --- a/src/main/java/net/minecraft/world/level/lighting/DataLayerStorageMap.java +++ b/src/main/java/net/minecraft/world/level/lighting/DataLayerStorageMap.java -@@ -7,13 +7,18 @@ import net.minecraft.world.level.chunk.DataLayer; +@@ -6,13 +6,18 @@ import net.minecraft.world.level.chunk.DataLayer; public abstract class DataLayerStorageMap> { - + private static final int CACHE_SIZE = 2; - private final long[] lastSectionKeys = new long[2]; - private final DataLayer[] lastSections = new DataLayer[2]; + // private final long[] b = new long[2]; // Paper - unused @@ -666,7 +611,7 @@ index 54cca3b376e5ce02936edc8b9c17e67e17f07147..ed2ed6194670016086be580dc4514d5d // Paper start - avoid copying light data protected DataLayerStorageMap(com.destroystokyo.paper.util.map.QueuedChangesMapLong2Object data, boolean isVisible) { if (isVisible) { -@@ -21,12 +26,14 @@ public abstract class DataLayerStorageMap> { +@@ -20,12 +25,14 @@ public abstract class DataLayerStorageMap> { } this.data = data; this.isVisible = isVisible; @@ -683,7 +628,7 @@ index 54cca3b376e5ce02936edc8b9c17e67e17f07147..ed2ed6194670016086be580dc4514d5d this.clearCache(); this.cacheEnabled = true; } -@@ -36,7 +43,9 @@ public abstract class DataLayerStorageMap> { +@@ -35,7 +42,9 @@ public abstract class DataLayerStorageMap> { public void copyDataLayer(long pos) { if (this.isVisible) { throw new IllegalStateException("writing to visible data"); } // Paper - avoid copying light data DataLayer updating = this.data.getUpdating(pos); // Paper - pool nibbles @@ -691,47 +636,46 @@ index 54cca3b376e5ce02936edc8b9c17e67e17f07147..ed2ed6194670016086be580dc4514d5d + DataLayer nibblearray = new DataLayer().markPoolSafe(updating.getCloneIfSet()); // Paper + nibblearray.lightCacheKey = pos; // Paper + this.data.queueUpdate(pos, nibblearray); // Paper - avoid copying light data - pool safe clone - if (updating.cleaner != null) MCUtil.scheduleTask(2, updating.cleaner, "Light Engine Release"); // Paper - delay clean incase anything holding ref was still using it + if (updating.cleaner != null) net.minecraft.server.MCUtil.scheduleTask(2, updating.cleaner, "Light Engine Release"); // Paper - delay clean incase anything holding ref was still using it this.clearCache(); } -@@ -45,34 +54,34 @@ public abstract class DataLayerStorageMap> { +@@ -44,33 +53,34 @@ public abstract class DataLayerStorageMap> { return lookup.apply(chunkPos) != null; // Paper - avoid copying light data } - @Nullable - public final DataLayer getLayer(long chunkPos) { // Paper - final - if (this.cacheEnabled) { -- for (int j = 0; j < 2; ++j) { -- if (chunkPos == this.lastSectionKeys[j]) { -- return this.lastSections[j]; +- for(int i = 0; i < 2; ++i) { +- if (chunkPos == this.lastSectionKeys[i]) { +- return this.lastSections[i]; - } - } - } -- -- DataLayer nibblearray = lookup.apply(chunkPos); // Paper - avoid copying light data + // Paper start - less branching as we know we are using cache and updating -+ public final DataLayer getUpdatingOptimized(final long i) { // Paper - final ++ public final DataLayer getUpdatingOptimized(final long chunkPos) { // Paper - final + final DataLayer[] cache = this.cache; -+ if (cache[0].lightCacheKey == i) return cache[0]; -+ if (cache[1].lightCacheKey == i) return cache[1]; ++ if (cache[0].lightCacheKey == chunkPos) return cache[0]; ++ if (cache[1].lightCacheKey == chunkPos) return cache[1]; -+ final DataLayer nibblearray = this.lookup.apply(i); // Paper - avoid copying light data - if (nibblearray == null) { +- DataLayer dataLayer = lookup.apply(chunkPos); // Paper - avoid copying light data ++ final DataLayer dataLayer = this.lookup.apply(chunkPos); // Paper - avoid copying light data + if (dataLayer == null) { return null; } else { - if (this.cacheEnabled) { -- for (int k = 1; k > 0; --k) { -- this.lastSectionKeys[k] = this.lastSectionKeys[k - 1]; -- this.lastSections[k] = this.lastSections[k - 1]; +- for(int j = 1; j > 0; --j) { +- this.lastSectionKeys[j] = this.lastSectionKeys[j - 1]; +- this.lastSections[j] = this.lastSections[j - 1]; - } - - this.lastSectionKeys[0] = chunkPos; -- this.lastSections[0] = nibblearray; +- this.lastSections[0] = dataLayer; - } - + cache[1] = cache[0]; -+ cache[0] = nibblearray; - return nibblearray; ++ cache[0] = dataLayer; + return dataLayer; } } + // Paper end @@ -750,7 +694,7 @@ index 54cca3b376e5ce02936edc8b9c17e67e17f07147..ed2ed6194670016086be580dc4514d5d @Nullable public DataLayer removeLayer(long chunkPos) { -@@ -82,13 +91,14 @@ public abstract class DataLayerStorageMap> { +@@ -80,13 +90,14 @@ public abstract class DataLayerStorageMap> { public void setLayer(long pos, DataLayer data) { if (this.isVisible) { throw new IllegalStateException("writing to visible data"); } // Paper - avoid copying light data @@ -759,16 +703,16 @@ index 54cca3b376e5ce02936edc8b9c17e67e17f07147..ed2ed6194670016086be580dc4514d5d } public void clearCache() { - for (int i = 0; i < 2; ++i) { + for(int i = 0; i < 2; ++i) { - this.lastSectionKeys[i] = Long.MAX_VALUE; - this.lastSections[i] = null; + // this.b[i] = Long.MAX_VALUE; // Paper - Unused + this.lastSections[i] = DataLayer.EMPTY_NIBBLE_ARRAY; // Paper } - } + } diff --git a/src/main/java/net/minecraft/world/level/lighting/LayerLightEngine.java b/src/main/java/net/minecraft/world/level/lighting/LayerLightEngine.java -index 53f38fa95f4ffad12c73d94ab1d7ecf7ee78af09..088ea8a14f1bb264b59fcec626b1a28d7f6d7c47 100644 +index c5d0d8fb4c0344fbcc2ac87ba6d8027c29d51286..0952dde531aecd8ffc6eb72d4841362c5a6ebdcd 100644 --- a/src/main/java/net/minecraft/world/level/lighting/LayerLightEngine.java +++ b/src/main/java/net/minecraft/world/level/lighting/LayerLightEngine.java @@ -10,6 +10,7 @@ import net.minecraft.world.level.ChunkPos; @@ -779,34 +723,31 @@ index 53f38fa95f4ffad12c73d94ab1d7ecf7ee78af09..088ea8a14f1bb264b59fcec626b1a28d import net.minecraft.world.level.chunk.DataLayer; import net.minecraft.world.level.chunk.LightChunkGetter; import net.minecraft.world.phys.shapes.Shapes; -@@ -23,10 +24,37 @@ public abstract class LayerLightEngine, S exten - protected final LightLayer layer; - protected final S storage; - private boolean runningLightUpdates; -- protected final BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); -+ protected final BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); protected final BlockPos.MutableBlockPos pos = pos; // Paper +@@ -26,8 +27,35 @@ public abstract class LayerLightEngine, S exten + protected final BlockPos.MutableBlockPos pos = new BlockPos.MutableBlockPos(); + private static final int CACHE_SIZE = 2; private final long[] lastChunkPos = new long[2]; - private final BlockGetter[] lastChunk = new BlockGetter[2]; -+ private final ChunkAccess[] h = new ChunkAccess[2]; // Paper ++ private final ChunkAccess[] lastChunk = new ChunkAccess[2]; // Paper + // Paper start - see fully commented out method below (look for Bedrock) + // optimized method with less branching for when scenarios arent needed. + // avoid using mutable version if can + protected final BlockState getBlockOptimized(int x, int y, int z, MutableInt mutableint) { -+ ChunkAccess iblockaccess = this.a(x >> 4, z >> 4); ++ ChunkAccess iblockaccess = this.getChunk(x >> 4, z >> 4); + + if (iblockaccess == null) { + mutableint.setValue(16); + return Blocks.BEDROCK.defaultBlockState(); + } else { -+ this.pos.setValues(x, y, z); ++ this.pos.set(x, y, z); + BlockState iblockdata = iblockaccess.getType(x, y, z); + mutableint.setValue(iblockdata.getLightBlock(this.chunkSource.getLevel(), this.pos)); + return iblockdata.canOcclude() && iblockdata.useShapeForLightOcclusion() ? iblockdata : Blocks.AIR.defaultBlockState(); + } + } + protected final BlockState getBlockOptimized(int x, int y, int z) { -+ ChunkAccess iblockaccess = this.a(x >> 4, z >> 4); ++ ChunkAccess iblockaccess = this.getChunk(x >> 4, z >> 4); + + if (iblockaccess == null) { + return Blocks.BEDROCK.defaultBlockState(); @@ -819,115 +760,96 @@ index 53f38fa95f4ffad12c73d94ab1d7ecf7ee78af09..088ea8a14f1bb264b59fcec626b1a28d public LayerLightEngine(LightChunkGetter chunkProvider, LightLayer type, S lightStorage) { super(16, 256, 8192); this.chunkSource = chunkProvider; -@@ -45,63 +73,65 @@ public abstract class LayerLightEngine, S exten +@@ -46,7 +74,7 @@ public abstract class LayerLightEngine, S exten } @Nullable - private BlockGetter getChunk(int chunkX, int chunkZ) { -- long k = ChunkPos.asLong(chunkX, chunkZ); -+ private ChunkAccess a(int i, int j) { // Paper -+ long k = ChunkPos.asLong(i, j); ++ private ChunkAccess getChunk(int chunkX, int chunkZ) { // Paper + long l = ChunkPos.asLong(chunkX, chunkZ); - for (int l = 0; l < 2; ++l) { - if (k == this.lastChunkPos[l]) { -- return this.lastChunk[l]; -+ return this.h[l]; + for(int i = 0; i < 2; ++i) { +@@ -55,7 +83,7 @@ public abstract class LayerLightEngine, S exten } } -- BlockGetter iblockaccess = this.chunkSource.getChunkForLighting(chunkX, chunkZ); -+ ChunkAccess iblockaccess = (ChunkAccess) this.chunkSource.getChunkForLighting(i, j); // Paper +- BlockGetter blockGetter = this.chunkSource.getChunkForLighting(chunkX, chunkZ); ++ ChunkAccess blockGetter = (ChunkAccess) this.chunkSource.getChunkForLighting(chunkX, chunkZ); // Paper - for (int i1 = 1; i1 > 0; --i1) { - this.lastChunkPos[i1] = this.lastChunkPos[i1 - 1]; -- this.lastChunk[i1] = this.lastChunk[i1 - 1]; -+ this.h[i1] = this.h[i1 - 1]; - } - - this.lastChunkPos[0] = k; -- this.lastChunk[0] = iblockaccess; -+ this.h[0] = iblockaccess; - return iblockaccess; + for(int j = 1; j > 0; --j) { + this.lastChunkPos[j] = this.lastChunkPos[j - 1]; +@@ -72,35 +100,37 @@ public abstract class LayerLightEngine, S exten + Arrays.fill(this.lastChunk, (Object)null); } - private void clearCache() { - Arrays.fill(this.lastChunkPos, ChunkPos.INVALID_CHUNK_POS); -- Arrays.fill(this.lastChunk, (Object) null); -+ Arrays.fill(this.h, (Object) null); - } - -- protected BlockState getStateAndOpacity(long pos, @Nullable MutableInt mutableint) { +- protected BlockState getStateAndOpacity(long pos, @Nullable MutableInt mutableInt) { - if (pos == Long.MAX_VALUE) { -- if (mutableint != null) { -- mutableint.setValue(0); +- if (mutableInt != null) { +- mutableInt.setValue(0); - } - - return Blocks.AIR.defaultBlockState(); - } else { -- int j = SectionPos.blockToSectionCoord(BlockPos.getX(pos)); -- int k = SectionPos.blockToSectionCoord(BlockPos.getZ(pos)); -- BlockGetter iblockaccess = this.getChunk(j, k); -- -- if (iblockaccess == null) { -- if (mutableint != null) { -- mutableint.setValue(16); +- int i = SectionPos.blockToSectionCoord(BlockPos.getX(pos)); +- int j = SectionPos.blockToSectionCoord(BlockPos.getZ(pos)); +- BlockGetter blockGetter = this.getChunk(i, j); +- if (blockGetter == null) { +- if (mutableInt != null) { +- mutableInt.setValue(16); - } - - return Blocks.BEDROCK.defaultBlockState(); - } else { - this.pos.set(pos); -- BlockState iblockdata = iblockaccess.getBlockState(this.pos); -- boolean flag = iblockdata.canOcclude() && iblockdata.useShapeForLightOcclusion(); -- -- if (mutableint != null) { -- mutableint.setValue(iblockdata.getLightBlock(this.chunkSource.getLevel(), (BlockPos) this.pos)); +- BlockState blockState = blockGetter.getBlockState(this.pos); +- boolean bl = blockState.canOcclude() && blockState.useShapeForLightOcclusion(); +- if (mutableInt != null) { +- mutableInt.setValue(blockState.getLightBlock(this.chunkSource.getLevel(), this.pos)); - } - -- return flag ? iblockdata : Blocks.AIR.defaultBlockState(); +- return bl ? blockState : Blocks.AIR.defaultBlockState(); - } - } - } + // Paper start - comment out, see getBlockOptimized -+// protected IBlockData a(long i, @Nullable MutableInt mutableint) { -+// if (i == Long.MAX_VALUE) { -+// if (mutableint != null) { -+// mutableint.setValue(0); -+// } -+// -+// return Blocks.AIR.getBlockData(); -+// } else { -+// int j = SectionPosition.a(BlockPosition.b(i)); -+// int k = SectionPosition.a(BlockPosition.d(i)); -+// IBlockAccess iblockaccess = this.a(j, k); -+// -+// if (iblockaccess == null) { -+// if (mutableint != null) { -+// mutableint.setValue(16); -+// } -+// -+// return Blocks.BEDROCK.getBlockData(); -+// } else { -+// this.d.g(i); -+// IBlockData iblockdata = iblockaccess.getType(this.d); -+// boolean flag = iblockdata.l() && iblockdata.e(); -+// -+// if (mutableint != null) { -+// mutableint.setValue(iblockdata.b(this.a.getWorld(), (BlockPosition) this.d)); -+// } -+// -+// return flag ? iblockdata : Blocks.AIR.getBlockData(); -+// } -+// } -+// } ++ // protected BlockState getStateAndOpacity(long pos, @Nullable MutableInt mutableInt) { ++ // if (pos == Long.MAX_VALUE) { ++ // if (mutableInt != null) { ++ // mutableInt.setValue(0); ++ // } ++ // ++ // return Blocks.AIR.defaultBlockState(); ++ // } else { ++ // int i = SectionPos.blockToSectionCoord(BlockPos.getX(pos)); ++ // int j = SectionPos.blockToSectionCoord(BlockPos.getZ(pos)); ++ // BlockGetter blockGetter = this.getChunk(i, j); ++ // if (blockGetter == null) { ++ // if (mutableInt != null) { ++ // mutableInt.setValue(16); ++ // } ++ // ++ // return Blocks.BEDROCK.defaultBlockState(); ++ // } else { ++ // this.pos.set(pos); ++ // BlockState blockState = blockGetter.getBlockState(this.pos); ++ // boolean bl = blockState.canOcclude() && blockState.useShapeForLightOcclusion(); ++ // if (mutableInt != null) { ++ // mutableInt.setValue(blockState.getLightBlock(this.chunkSource.getLevel(), this.pos)); ++ // } ++ // ++ // return bl ? blockState : Blocks.AIR.defaultBlockState(); ++ // } ++ // } ++ // } + // Paper end protected VoxelShape getShape(BlockState world, long pos, Direction facing) { return world.canOcclude() ? world.getFaceOcclusionShape(this.chunkSource.getLevel(), this.pos.set(pos), facing) : Shapes.empty(); -@@ -136,8 +166,9 @@ public abstract class LayerLightEngine, S exten +@@ -133,8 +163,9 @@ public abstract class LayerLightEngine, S exten return id == Long.MAX_VALUE ? 0 : 15 - this.storage.getStoredLevel(id); } -+ protected int getNibbleLightInverse(DataLayer nibblearray, int x, int y, int z) { return 15 - nibblearray.get(x & 15, y & 15, z & 15); } // Paper - x/y/z version of below ++ protected int getLevel(DataLayer section, int x, int y, int z) { return 15 - section.get(x & 15, y & 15, z & 15); } // Paper - x/y/z version of below protected int getLevel(DataLayer section, long blockPos) { - return 15 - section.get(SectionPos.sectionRelative(BlockPos.getX(blockPos)), SectionPos.sectionRelative(BlockPos.getY(blockPos)), SectionPos.sectionRelative(BlockPos.getZ(blockPos))); + return 15 - section.get((int) (blockPos >> 38) & 15, (int) ((blockPos << 52) >> 52) & 15, (int) ((blockPos << 26) >> 38) & 15); // Paper @@ -935,22 +857,22 @@ index 53f38fa95f4ffad12c73d94ab1d7ecf7ee78af09..088ea8a14f1bb264b59fcec626b1a28d @Override diff --git a/src/main/java/net/minecraft/world/level/lighting/LayerLightSectionStorage.java b/src/main/java/net/minecraft/world/level/lighting/LayerLightSectionStorage.java -index 5757bcfded35f112d52a7c81586850ba50e0d8dd..17a6610b352af5d3e2cbcdf9b4d9b0d4d356b5cf 100644 +index fd1cdb6e2023713f947b9497c605cf6f4bae8994..4db3264c45736faf92d560c7d18d892c1200b15d 100644 --- a/src/main/java/net/minecraft/world/level/lighting/LayerLightSectionStorage.java +++ b/src/main/java/net/minecraft/world/level/lighting/LayerLightSectionStorage.java -@@ -27,9 +27,9 @@ public abstract class LayerLightSectionStorage> +@@ -29,9 +29,9 @@ public abstract class LayerLightSectionStorage> protected final LongSet toMarkNoData = new LongOpenHashSet(); protected final LongSet toMarkData = new LongOpenHashSet(); protected volatile M e_visible; protected final Object visibleUpdateLock = new Object(); // Paper - diff on change, should be "visible" - force compile fail on usage change -- protected final M updatingSectionData; // Paper - diff on change, should be "updating" +- protected final M updatingSectionData; + protected final M updatingSectionData; protected final M updating; // Paper - diff on change, should be "updating" protected final LongSet changedSections = new LongOpenHashSet(); - protected final LongSet sectionsAffectedByLightUpdates = new LongOpenHashSet(); + protected final LongSet sectionsAffectedByLightUpdates = new LongOpenHashSet(); LongSet dirty = sectionsAffectedByLightUpdates; // Paper - OBFHELPER - protected final Long2ObjectMap queuedSections = Long2ObjectMaps.synchronize(new Long2ObjectOpenHashMap()); + protected final Long2ObjectMap queuedSections = Long2ObjectMaps.synchronize(new Long2ObjectOpenHashMap<>()); private final LongSet untrustedSections = new LongOpenHashSet(); private final LongSet columnsToRetainQueuedDataFor = new LongOpenHashSet(); -@@ -37,33 +37,33 @@ public abstract class LayerLightSectionStorage> +@@ -39,33 +39,33 @@ public abstract class LayerLightSectionStorage> protected volatile boolean hasToRemove; protected LayerLightSectionStorage(LightLayer lightType, LightChunkGetter chunkProvider, M lightData) { @@ -960,8 +882,8 @@ index 5757bcfded35f112d52a7c81586850ba50e0d8dd..17a6610b352af5d3e2cbcdf9b4d9b0d4 this.chunkSource = chunkProvider; - this.updatingSectionData = lightData; + this.updatingSectionData = lightData; updating = lightData; // Paper - this.e_visible = lightData.copy(); // Paper - avoid copying light data - this.e_visible.disableCache(); // Paper - avoid copying light data + this.e_visible = lightData.copy(); // Paper - avoid copying light dat + this.e_visible.disableCache(); // Paper - avoid copying light dat } - protected boolean storingLightForSection(long sectionPos) { @@ -991,12 +913,13 @@ index 5757bcfded35f112d52a7c81586850ba50e0d8dd..17a6610b352af5d3e2cbcdf9b4d9b0d4 return storage.getLayer(sectionPos); } -@@ -77,27 +77,57 @@ public abstract class LayerLightSectionStorage> +@@ -78,24 +78,56 @@ public abstract class LayerLightSectionStorage> protected abstract int getLightValue(long blockPos); protected int getStoredLevel(long blockPos) { -- long j = SectionPos.blockToSection(blockPos); -- DataLayer nibblearray = this.getDataLayer(j, true); +- long l = SectionPos.blockToSection(blockPos); +- DataLayer dataLayer = this.getDataLayer(l, true); +- return dataLayer.get(SectionPos.sectionRelative(BlockPos.getX(blockPos)), SectionPos.sectionRelative(BlockPos.getY(blockPos)), SectionPos.sectionRelative(BlockPos.getZ(blockPos))); + // Paper start - reuse and inline math, use Optimized Updating path + final int x = (int) (blockPos >> 38); + final int y = (int) ((blockPos << 52) >> 52); @@ -1011,34 +934,31 @@ index 5757bcfded35f112d52a7c81586850ba50e0d8dd..17a6610b352af5d3e2cbcdf9b4d9b0d4 + System.err.println("Null nibble, preventing crash " + BlockPos.of(blockPos)); + return 0; + } - -- return nibblearray.get(SectionPos.sectionRelative(BlockPos.getX(blockPos)), SectionPos.sectionRelative(BlockPos.getY(blockPos)), SectionPos.sectionRelative(BlockPos.getZ(blockPos))); ++ + return nibblearray.get(x & 15, y & 15, z & 15); // Paper - inline operations + // Paper end } protected void setStoredLevel(long blockPos, int value) { -- long k = SectionPos.blockToSection(blockPos); +- long l = SectionPos.blockToSection(blockPos); + // Paper start - cache part of the math done in loop below + int x = (int) (blockPos >> 38); + int y = (int) ((blockPos << 52) >> 52); + int z = (int) ((blockPos << 26) >> 38); -+ long k = SectionPos.blockPosAsSectionLong(x, y, z); ++ long l = SectionPos.blockPosAsSectionLong(x, y, z); + // Paper end - - if (this.changedSections.add(k)) { - this.updatingSectionData.copyDataLayer(k); + if (this.changedSections.add(l)) { + this.updatingSectionData.copyDataLayer(l); } - DataLayer nibblearray = this.getDataLayer(k, true); + DataLayer dataLayer = this.getDataLayer(l, true); +- dataLayer.set(SectionPos.sectionRelative(BlockPos.getX(blockPos)), SectionPos.sectionRelative(BlockPos.getY(blockPos)), SectionPos.sectionRelative(BlockPos.getZ(blockPos)), value); - -- nibblearray.set(SectionPos.sectionRelative(BlockPos.getX(blockPos)), SectionPos.sectionRelative(BlockPos.getY(blockPos)), SectionPos.sectionRelative(BlockPos.getZ(blockPos)), value); -- -- for (int l = -1; l <= 1; ++l) { -- for (int i1 = -1; i1 <= 1; ++i1) { -- for (int j1 = -1; j1 <= 1; ++j1) { -- this.sectionsAffectedByLightUpdates.add(SectionPos.blockToSection(BlockPos.offset(blockPos, i1, j1, l))); -+ nibblearray.set(x & 15, y & 15, z & 15, value); // Paper - use already calculated x/y/z +- for(int i = -1; i <= 1; ++i) { +- for(int j = -1; j <= 1; ++j) { +- for(int k = -1; k <= 1; ++k) { +- this.sectionsAffectedByLightUpdates.add(SectionPos.blockToSection(BlockPos.offset(blockPos, j, k, i))); ++ dataLayer.set(x & 15, y & 15, z & 15, value); // Paper - use already calculated x/y/z + + // Paper start - credit to JellySquid for a major optimization here: + /* @@ -1060,24 +980,24 @@ index 5757bcfded35f112d52a7c81586850ba50e0d8dd..17a6610b352af5d3e2cbcdf9b4d9b0d4 } } } -@@ -129,17 +159,23 @@ public abstract class LayerLightSectionStorage> +@@ -136,17 +168,23 @@ public abstract class LayerLightSectionStorage> } - if (k >= 2 && level != 2) { + if (i >= 2 && level != 2) { - if (this.toRemove.contains(id)) { - this.toRemove.remove(id); - } else { + if (!this.toRemove.remove(id)) { // Paper - remove useless contains - credit to JellySquid -+ //this.p.remove(i); // Paper ++ //this.toRemove.remove(id); // Paper + //} else { // Paper this.updatingSectionData.setLayer(id, this.createDataLayer(id)); this.changedSections.add(id); this.onNodeAdded(id); -- for (int l = -1; l <= 1; ++l) { -- for (int i1 = -1; i1 <= 1; ++i1) { -- for (int j1 = -1; j1 <= 1; ++j1) { -- this.sectionsAffectedByLightUpdates.add(SectionPos.blockToSection(BlockPos.offset(id, i1, j1, l))); +- for(int j = -1; j <= 1; ++j) { +- for(int k = -1; k <= 1; ++k) { +- for(int l = -1; l <= 1; ++l) { +- this.sectionsAffectedByLightUpdates.add(SectionPos.blockToSection(BlockPos.offset(id, k, l, j))); + // Paper start - reuse x/y/z and only notify valid chunks - Credit to JellySquid (See above method for notes) + int x = (int) (id >> 38); + int y = (int) ((id << 52) >> 52); @@ -1091,97 +1011,58 @@ index 5757bcfded35f112d52a7c81586850ba50e0d8dd..17a6610b352af5d3e2cbcdf9b4d9b0d4 } } } -@@ -165,9 +201,9 @@ public abstract class LayerLightSectionStorage> - return SectionPos.blockToSection(j) == sectionPos; +@@ -171,9 +209,9 @@ public abstract class LayerLightSectionStorage> + return SectionPos.blockToSection(mx) == sectionPos; }); } else { -- int j = SectionPos.sectionToBlockCoord(SectionPos.x(sectionPos)); -- int k = SectionPos.sectionToBlockCoord(SectionPos.y(sectionPos)); -- int l = SectionPos.sectionToBlockCoord(SectionPos.z(sectionPos)); -+ int j = (int) (sectionPos >> 42) << 4; // Paper - inline -+ int k = (int) (sectionPos << 44 >> 44) << 4; // Paper - inline -+ int l = (int) (sectionPos << 22 >> 42) << 4; // Paper - inline +- int i = SectionPos.sectionToBlockCoord(SectionPos.x(sectionPos)); +- int j = SectionPos.sectionToBlockCoord(SectionPos.y(sectionPos)); +- int k = SectionPos.sectionToBlockCoord(SectionPos.z(sectionPos)); ++ int i = (int) (sectionPos >> 42) << 4; // Paper - inline ++ int j = (int) (sectionPos << 44 >> 44) << 4; // Paper - inline ++ int k = (int) (sectionPos << 22 >> 42) << 4; // Paper - inline - for (int i1 = 0; i1 < 16; ++i1) { - for (int j1 = 0; j1 < 16; ++j1) { -@@ -194,7 +230,7 @@ public abstract class LayerLightSectionStorage> - DataLayer nibblearray; - - while (longiterator.hasNext()) { -- i = (Long) longiterator.next(); -+ i = longiterator.nextLong(); // Paper - this.clearQueuedSectionBlocks(lightProvider, i); - DataLayer nibblearray1 = (DataLayer) this.queuedSections.remove(i); - -@@ -212,7 +248,7 @@ public abstract class LayerLightSectionStorage> - longiterator = this.toRemove.iterator(); - - while (longiterator.hasNext()) { -- i = (Long) longiterator.next(); -+ i = longiterator.nextLong(); // Paper - this.onNodeRemoved(i); - } - -@@ -223,12 +259,13 @@ public abstract class LayerLightSectionStorage> - Entry entry; - long j; + for(int l = 0; l < 16; ++l) { + for(int m = 0; m < 16; ++m) { +@@ -215,11 +253,12 @@ public abstract class LayerLightSectionStorage> + this.toRemove.clear(); + this.hasToRemove = false; + DataLayer test = null; // Paper - while (objectiterator.hasNext()) { - entry = (Entry) objectiterator.next(); - j = entry.getLongKey(); -- if (this.storingLightForSection(j)) { -+ if ((test = this.updating.getUpdatingOptimized(j)) != null) { // Paper - dont look up nibble twice - nibblearray = (DataLayer) entry.getValue(); -- if (this.updatingSectionData.getLayer(j) != nibblearray) { -+ if (test != nibblearray) { // Paper - this.clearQueuedSectionBlocks(lightProvider, j); - this.updatingSectionData.setLayer(j, nibblearray); - this.changedSections.add(j); -@@ -241,14 +278,14 @@ public abstract class LayerLightSectionStorage> - longiterator = this.queuedSections.keySet().iterator(); - - while (longiterator.hasNext()) { -- i = (Long) longiterator.next(); -+ i = longiterator.nextLong(); // Paper - this.checkEdgesForSection(lightProvider, i); - } - } else { - longiterator = this.untrustedSections.iterator(); - - while (longiterator.hasNext()) { -- i = (Long) longiterator.next(); -+ i = longiterator.nextLong(); // Paper - this.checkEdgesForSection(lightProvider, i); - } - } -@@ -269,15 +306,20 @@ public abstract class LayerLightSectionStorage> + for(Entry entry : this.queuedSections.long2ObjectEntrySet()) { + long n = entry.getLongKey(); +- if (this.storingLightForSection(n)) { ++ if ((test = this.updating.getUpdatingOptimized(n)) != null) { // Paper - dont look up data layer twice + DataLayer dataLayer3 = entry.getValue(); +- if (this.updatingSectionData.getLayer(n) != dataLayer3) { ++ if (test != dataLayer3) { // Paper + this.clearQueuedSectionBlocks(lightProvider, n); + this.updatingSectionData.setLayer(n, dataLayer3); + this.changedSections.add(n); +@@ -254,12 +293,17 @@ public abstract class LayerLightSectionStorage> private void checkEdgesForSection(LayerLightEngine lightProvider, long sectionPos) { if (this.storingLightForSection(sectionPos)) { -- int j = SectionPos.sectionToBlockCoord(SectionPos.x(sectionPos)); -- int k = SectionPos.sectionToBlockCoord(SectionPos.y(sectionPos)); -- int l = SectionPos.sectionToBlockCoord(SectionPos.z(sectionPos)); +- int i = SectionPos.sectionToBlockCoord(SectionPos.x(sectionPos)); +- int j = SectionPos.sectionToBlockCoord(SectionPos.y(sectionPos)); +- int k = SectionPos.sectionToBlockCoord(SectionPos.z(sectionPos)); + // Paper start + int secX = (int) (sectionPos >> 42); + int secY = (int) (sectionPos << 44 >> 44); + int secZ = (int) (sectionPos << 22 >> 42); -+ int j = secX << 4; // baseX -+ int k = secY << 4; // baseY -+ int l = secZ << 4; // baseZ ++ int i = secX << 4; // baseX ++ int j = secY << 4; // baseY ++ int k = secZ << 4; // baseZ + // Paper end - Direction[] aenumdirection = LayerLightSectionStorage.DIRECTIONS; - int i1 = aenumdirection.length; - for (int j1 = 0; j1 < i1; ++j1) { - Direction enumdirection = aenumdirection[j1]; -- long k1 = SectionPos.offset(sectionPos, enumdirection); -+ long k1 = SectionPos.getAdjacentFromSectionPos(secX, secY, secZ, enumdirection); // Paper - avoid extra unpacking - - if (!this.queuedSections.containsKey(k1) && this.storingLightForSection(k1)) { - for (int l1 = 0; l1 < 16; ++l1) { + for(Direction direction : DIRECTIONS) { +- long l = SectionPos.offset(sectionPos, direction); ++ long l = SectionPos.getAdjacentFromSectionPos(secX, secY, secZ, direction); + if (!this.queuedSections.containsKey(l) && this.storingLightForSection(l)) { + for(int m = 0; m < 16; ++m) { + for(int n = 0; n < 16; ++n) { diff --git a/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java b/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java -index ff1fbc46776b26ca56c3293e40ed55028230ec46..da4003aebc8d5ffce695071af9a27139568d773f 100644 +index d122475c1a9d340046c478087d3ff5bf1ff8932c..a3189dd7b537deb4a30a32c8e9891b07d04af540 100644 --- a/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java +++ b/src/main/java/net/minecraft/world/level/lighting/SkyLightEngine.java @@ -4,6 +4,7 @@ import net.minecraft.core.BlockPos; @@ -1192,275 +1073,247 @@ index ff1fbc46776b26ca56c3293e40ed55028230ec46..da4003aebc8d5ffce695071af9a27139 import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.DataLayer; import net.minecraft.world.level.chunk.LightChunkGetter; -@@ -38,21 +39,25 @@ public final class SkyLightEngine extends LayerLightEngine= 15) { +- BlockState blockState = this.getStateAndOpacity(targetId, mutableInt); +- if (mutableInt.getValue() >= 15) { + // Paper start - use x/y/z and optimized block lookup + int jx = (int) (targetId >> 38); + int jy = (int) ((targetId << 52) >> 52); + int jz = (int) ((targetId << 26) >> 38); -+ BlockState iblockdata = this.getBlockOptimized(jx, jy, jz, mutableint); -+ int blockedLight = mutableint.getValue(); ++ BlockState blockState = this.getBlockOptimized(jx, jy, jz, mutableInt); ++ int blockedLight = mutableInt.getValue(); + if (blockedLight >= 15) { + // Paper end return 15; } else { -- int l = BlockPos.getX(sourceId); -- int i1 = BlockPos.getY(sourceId); -- int j1 = BlockPos.getZ(sourceId); -- int k1 = BlockPos.getX(targetId); -- int l1 = BlockPos.getY(targetId); -- int i2 = BlockPos.getZ(targetId); -- boolean flag = l == k1 && j1 == i2; -- int j2 = Integer.signum(k1 - l); -- int k2 = Integer.signum(l1 - i1); -- int l2 = Integer.signum(i2 - j1); +- int i = BlockPos.getX(sourceId); +- int j = BlockPos.getY(sourceId); +- int k = BlockPos.getZ(sourceId); +- int l = BlockPos.getX(targetId); +- int m = BlockPos.getY(targetId); +- int n = BlockPos.getZ(targetId); +- int o = Integer.signum(l - i); +- int p = Integer.signum(m - j); +- int q = Integer.signum(n - k); + // Paper start - inline math -+ int ix = (int) (sourceId >> 38); -+ int iy = (int) ((sourceId << 52) >> 52); -+ int iz = (int) ((sourceId << 26) >> 38); -+ boolean flag = ix == jx && iz == jz; -+ int j2 = Integer.signum(jx - ix); -+ int k2 = Integer.signum(jy - iy); -+ int l2 = Integer.signum(jz - iz); ++ int i = (int) (sourceId >> 38); ++ int j = (int) ((sourceId << 52) >> 52); ++ int k = (int) ((sourceId << 26) >> 38); ++ boolean bl = i == jx && k == jz; ++ int o = Integer.signum(jx - i); ++ int p = Integer.signum(jy - j); ++ int q = Integer.signum(jz - k); + // Paper end - Direction enumdirection; - - if (sourceId == Long.MAX_VALUE) { -@@ -61,7 +66,7 @@ public final class SkyLightEngine extends LayerLightEngine m; +- return bl2 && level == 0 && mutableInt.getValue() == 0 ? 0 : level + Math.max(1, mutableInt.getValue()); ++ boolean bl2 = bl && j > jy; // Paper rename vars to jy from m ++ return bl2 && level == 0 && blockedLight == 0 ? 0 : level + Math.max(1, blockedLight); // Paper } } - -- boolean flag1 = sourceId == Long.MAX_VALUE || flag && i1 > l1; -+ boolean flag1 = sourceId == Long.MAX_VALUE || flag && iy > jy; // Paper rename vars to iy > jy - -- return flag1 && level == 0 && mutableint.getValue() == 0 ? 0 : level + Math.max(1, mutableint.getValue()); -+ return flag1 && level == 0 && blockedLight == 0 ? 0 : level + Math.max(1, blockedLight); // Paper } - } - } -@@ -101,10 +106,14 @@ public final class SkyLightEngine extends LayerLightEngine> 38); + int baseY = (int) ((id << 52) >> 52); + int baseZ = (int) ((id << 26) >> 38); -+ long k = SectionPos.blockPosAsSectionLong(baseX, baseY, baseZ); -+ int i1 = baseY & 15; -+ int j1 = baseY >> 4; ++ long l = SectionPos.blockPosAsSectionLong(baseX, baseY, baseZ); ++ int j = baseY & 15; ++ int k = baseY >> 4; + // Paper end - int k1; - - if (i1 != 0) { -@@ -119,15 +128,16 @@ public final class SkyLightEngine extends LayerLightEngine> 38); + int baseY = (int) ((id << 52) >> 52); + int baseZ = (int) ((id << 26) >> 38); -+ long j1 = SectionPos.blockPosAsSectionLong(baseX, baseY, baseZ); -+ DataLayer nibblearray = this.storage.updating.getUpdatingOptimized(j1); ++ long l = SectionPos.blockPosAsSectionLong(baseX, baseY, baseZ); ++ DataLayer dataLayer = this.storage.updating.getUpdatingOptimized(l); + // Paper end - Direction[] aenumdirection = SkyLightEngine.DIRECTIONS; - int k1 = aenumdirection.length; - for (int l1 = 0; l1 < k1; ++l1) { - Direction enumdirection = aenumdirection[l1]; -- long i2 = BlockPos.offset(id, enumdirection); -- long j2 = SectionPos.blockToSection(i2); + for(Direction direction : DIRECTIONS) { +- long m = BlockPos.offset(id, direction); + // Paper start -+ int newX = baseX + enumdirection.getStepX(); -+ int newY = baseY + enumdirection.getStepY(); -+ int newZ = baseZ + enumdirection.getStepZ(); -+ long i2 = BlockPos.asLong(newX, newY, newZ); -+ long j2 = SectionPos.blockPosAsSectionLong(newX, newY, newZ); -+ // Paper end - DataLayer nibblearray1; - - if (j1 == j2) { - nibblearray1 = nibblearray; - } else { -- nibblearray1 = ((SkyLightSectionStorage) this.storage).getDataLayer(j2, true); -+ nibblearray1 = ((SkyLightSectionStorage) this.storage).updating.getUpdatingOptimized(j2); // Paper - } - - if (nibblearray1 != null) { - if (i2 != excludedId) { -- int k2 = this.computeLevelFromNeighbor(i2, id, this.getLevel(nibblearray1, i2)); -+ int k2 = this.computeLevelFromNeighbor(i2, id, this.getNibbleLightInverse(nibblearray1, newX, newY, newZ)); // Paper - - if (l > k2) { - l = k2; -@@ -215,7 +235,7 @@ public final class SkyLightEngine extends LayerLightEngine> 38); -+ int baseY = (int) ((blockPos << 52) >> 52); -+ int baseZ = (int) ((blockPos << 26) >> 38); -+ long j = SectionPos.blockPosAsSectionLong(baseX, baseY, baseZ); ++ int baseX = (int) (l >> 38); ++ int baseY = (int) ((l << 52) >> 52); ++ int baseZ = (int) ((l << 26) >> 38); ++ long m = SectionPos.blockPosAsSectionLong(baseX, baseY, baseZ); + // Paper end - int k = SectionPos.y(j); + int i = SectionPos.y(m); synchronized (this.visibleUpdateLock) { // Paper - avoid copying light data - SkyLightSectionStorage.SkyDataLayerStorageMap lightenginestoragesky_a = (SkyLightSectionStorage.SkyDataLayerStorageMap) this.e_visible; // Paper - avoid copying light data - must be after lock acquire + SkyLightSectionStorage.SkyDataLayerStorageMap skyDataLayerStorageMap = (SkyLightSectionStorage.SkyDataLayerStorageMap) this.e_visible; // Paper - avoid copying light data - must be after lock acquire @@ -49,7 +54,7 @@ public class SkyLightSectionStorage extends LayerLightSectionStorage> 52) & 15, (int) baseZ & 15); // Paper - y changed above +- return dataLayer.get(SectionPos.sectionRelative(BlockPos.getX(l)), SectionPos.sectionRelative(BlockPos.getY(l)), SectionPos.sectionRelative(BlockPos.getZ(l))); ++ return dataLayer.get(baseX & 15, (int) ((l << 52) >> 52) & 15, (int) baseZ & 15); } else { - return 15; + return bl && !this.lightOnInSection(m) ? 0 : 15; } -@@ -168,7 +173,7 @@ public class SkyLightSectionStorage extends LayerLightSectionStorage> 42) << 4; // Paper -+ int baseY = (int) (i << 44 >> 44) << 4; // Paper -+ int baseZ = (int) (i << 22 >> 42) << 4; // Paper - j = this.getLevel(i); - if (j != 2 && !this.sectionsToRemoveSourcesFrom.contains(i) && this.sectionsWithSources.add(i)) { - int l; -@@ -203,10 +211,10 @@ public class SkyLightSectionStorage extends LayerLightSectionStorage> 42) << 4; // Paper ++ int baseY = (int) (l << 44 >> 44) << 4; // Paper ++ int baseZ = (int) (l << 22 >> 42) << 4; // Paper + int i = this.getLevel(l); + if (i != 2 && !this.sectionsToRemoveSourcesFrom.contains(l) && this.sectionsWithSources.add(l)) { + if (i == 1) { +@@ -182,13 +190,15 @@ public class SkyLightSectionStorage extends LayerLightSectionStorage> 42) << 4; // Paper -+ int baseY = (int) (i << 44 >> 44) << 4; // Paper -+ int baseZ = (int) (i << 22 >> 42) << 4; // Paper - if (this.sectionsWithSources.remove(i) && this.storingLightForSection(i)) { - for (j = 0; j < 16; ++j) { - for (k = 0; k < 16; ++k) { -- long l3 = BlockPos.asLong(SectionPos.sectionToBlockCoord(SectionPos.x(i)) + j, SectionPos.sectionToBlockCoord(SectionPos.y(i)) + 16 - 1, SectionPos.sectionToBlockCoord(SectionPos.z(i)) + k); -+ long l3 = BlockPos.asLong(baseX + j, baseY + 16 - 1, baseZ + k); // Paper - - lightProvider.checkEdge(Long.MAX_VALUE, l3, 15, false); } +@@ -240,10 +250,13 @@ public class SkyLightSectionStorage extends LayerLightSectionStorage> 42) << 4; // Paper ++ int baseY = (int) (af << 44 >> 44) << 4; // Paper ++ int baseZ = (int) (af << 22 >> 42) << 4; // Paper + if (this.sectionsWithSources.remove(af) && this.storingLightForSection(af)) { + for(int ag = 0; ag < 16; ++ag) { + for(int ah = 0; ah < 16; ++ah) { +- long ai = BlockPos.asLong(SectionPos.sectionToBlockCoord(SectionPos.x(af), ag), SectionPos.sectionToBlockCoord(SectionPos.y(af), 15), SectionPos.sectionToBlockCoord(SectionPos.z(af), ah)); ++ long ai = BlockPos.asLong(baseX + ag, baseY + 16 - 1, baseZ + ah); // Paper + lightProvider.checkEdge(Long.MAX_VALUE, ai, 15, false); + } + } diff --git a/patches/server/0495-Fix-SPIGOT-5989.patch b/patches/server/0496-Fix-SPIGOT-5989.patch similarity index 100% rename from patches/server/0495-Fix-SPIGOT-5989.patch rename to patches/server/0496-Fix-SPIGOT-5989.patch diff --git a/patches/server/0496-Fix-SPIGOT-5824-Bukkit-world-container-is-not-used.patch b/patches/server/0497-Fix-SPIGOT-5824-Bukkit-world-container-is-not-used.patch similarity index 100% rename from patches/server/0496-Fix-SPIGOT-5824-Bukkit-world-container-is-not-used.patch rename to patches/server/0497-Fix-SPIGOT-5824-Bukkit-world-container-is-not-used.patch diff --git a/patches/server/0497-Fix-SPIGOT-5885-Unable-to-disable-advancements.patch b/patches/server/0498-Fix-SPIGOT-5885-Unable-to-disable-advancements.patch similarity index 100% rename from patches/server/0497-Fix-SPIGOT-5885-Unable-to-disable-advancements.patch rename to patches/server/0498-Fix-SPIGOT-5885-Unable-to-disable-advancements.patch diff --git a/patches/server/0498-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch b/patches/server/0499-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch similarity index 100% rename from patches/server/0498-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch rename to patches/server/0499-Fix-AdvancementDataPlayer-leak-due-from-quitting-ear.patch diff --git a/patches/server/0499-Add-missing-strikeLighting-call-to-World-spigot-stri.patch b/patches/server/0500-Add-missing-strikeLighting-call-to-World-spigot-stri.patch similarity index 100% rename from patches/server/0499-Add-missing-strikeLighting-call-to-World-spigot-stri.patch rename to patches/server/0500-Add-missing-strikeLighting-call-to-World-spigot-stri.patch diff --git a/patches/server/0500-Incremental-player-saving.patch b/patches/server/0501-Incremental-player-saving.patch similarity index 100% rename from patches/server/0500-Incremental-player-saving.patch rename to patches/server/0501-Incremental-player-saving.patch diff --git a/patches/server/0501-Fix-some-rails-connecting-improperly.patch b/patches/server/0502-Fix-some-rails-connecting-improperly.patch similarity index 100% rename from patches/server/0501-Fix-some-rails-connecting-improperly.patch rename to patches/server/0502-Fix-some-rails-connecting-improperly.patch diff --git a/patches/server/0502-Fix-MC-187716-Use-configured-height.patch b/patches/server/0503-Fix-MC-187716-Use-configured-height.patch similarity index 100% rename from patches/server/0502-Fix-MC-187716-Use-configured-height.patch rename to patches/server/0503-Fix-MC-187716-Use-configured-height.patch diff --git a/patches/server/0503-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch b/patches/server/0504-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch similarity index 100% rename from patches/server/0503-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch rename to patches/server/0504-Fix-regex-mistake-in-CB-NBT-int-deserialization.patch diff --git a/patches/server/0504-Do-not-let-the-server-load-chunks-from-newer-version.patch b/patches/server/0505-Do-not-let-the-server-load-chunks-from-newer-version.patch similarity index 96% rename from patches/server/0504-Do-not-let-the-server-load-chunks-from-newer-version.patch rename to patches/server/0505-Do-not-let-the-server-load-chunks-from-newer-version.patch index 4f0b103ed2..e2d9b3d63a 100644 --- a/patches/server/0504-Do-not-let-the-server-load-chunks-from-newer-version.patch +++ b/patches/server/0505-Do-not-let-the-server-load-chunks-from-newer-version.patch @@ -9,7 +9,7 @@ the game, immediately stop the server to prevent data corruption. You can override this functionality at your own peril. diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java -index f4f41b8e807c462aa5f06aed6488b1ef52bae330..6ada9cbdc04ebde65c833b5c74a5cf2161c53a1a 100644 +index e9043403c0bd3edc11f8a4f55f3a512a630ec08b..f4c8b6485bd36241e1f0413140f04d7398848063 100644 --- a/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java +++ b/src/main/java/net/minecraft/world/level/chunk/storage/ChunkSerializer.java @@ -98,10 +98,25 @@ public class ChunkSerializer { diff --git a/patches/server/0505-Brand-support.patch b/patches/server/0506-Brand-support.patch similarity index 100% rename from patches/server/0505-Brand-support.patch rename to patches/server/0506-Brand-support.patch diff --git a/patches/server/0506-Add-setMaxPlayers-API.patch b/patches/server/0507-Add-setMaxPlayers-API.patch similarity index 100% rename from patches/server/0506-Add-setMaxPlayers-API.patch rename to patches/server/0507-Add-setMaxPlayers-API.patch diff --git a/patches/server/0507-Add-playPickupItemAnimation-to-LivingEntity.patch b/patches/server/0508-Add-playPickupItemAnimation-to-LivingEntity.patch similarity index 100% rename from patches/server/0507-Add-playPickupItemAnimation-to-LivingEntity.patch rename to patches/server/0508-Add-playPickupItemAnimation-to-LivingEntity.patch diff --git a/patches/server/0508-Don-t-require-FACING-data.patch b/patches/server/0509-Don-t-require-FACING-data.patch similarity index 100% rename from patches/server/0508-Don-t-require-FACING-data.patch rename to patches/server/0509-Don-t-require-FACING-data.patch diff --git a/patches/server/0509-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch b/patches/server/0510-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch similarity index 96% rename from patches/server/0509-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch rename to patches/server/0510-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch index fbc58bad89..85a069fb0d 100644 --- a/patches/server/0509-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch +++ b/patches/server/0510-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix SpawnChangeEvent not firing for all use-cases diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 4b8748d955fce10536847a44e22d53d6d491ac1d..82ec9d3a7844dd45433d07c3b48050b5de9b7377 100644 +index 73d8505a2ec101e1e98fdea54019a37d70d64b16..10c978bae5e50db2156cbf454140db0bd178afac 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1660,6 +1660,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl diff --git a/patches/server/0510-Add-moon-phase-API.patch b/patches/server/0511-Add-moon-phase-API.patch similarity index 100% rename from patches/server/0510-Add-moon-phase-API.patch rename to patches/server/0511-Add-moon-phase-API.patch diff --git a/patches/server/0511-Prevent-headless-pistons-from-being-created.patch b/patches/server/0512-Prevent-headless-pistons-from-being-created.patch similarity index 100% rename from patches/server/0511-Prevent-headless-pistons-from-being-created.patch rename to patches/server/0512-Prevent-headless-pistons-from-being-created.patch diff --git a/patches/server/0512-Add-BellRingEvent.patch b/patches/server/0513-Add-BellRingEvent.patch similarity index 100% rename from patches/server/0512-Add-BellRingEvent.patch rename to patches/server/0513-Add-BellRingEvent.patch diff --git a/patches/server/0513-Add-zombie-targets-turtle-egg-config.patch b/patches/server/0514-Add-zombie-targets-turtle-egg-config.patch similarity index 100% rename from patches/server/0513-Add-zombie-targets-turtle-egg-config.patch rename to patches/server/0514-Add-zombie-targets-turtle-egg-config.patch diff --git a/patches/server/0514-Buffer-joins-to-world.patch b/patches/server/0515-Buffer-joins-to-world.patch similarity index 100% rename from patches/server/0514-Buffer-joins-to-world.patch rename to patches/server/0515-Buffer-joins-to-world.patch diff --git a/patches/server/0515-Optimize-redstone-algorithm.patch b/patches/server/0516-Optimize-redstone-algorithm.patch similarity index 100% rename from patches/server/0515-Optimize-redstone-algorithm.patch rename to patches/server/0516-Optimize-redstone-algorithm.patch diff --git a/patches/server/0516-Fix-hex-colors-not-working-in-some-kick-messages.patch b/patches/server/0517-Fix-hex-colors-not-working-in-some-kick-messages.patch similarity index 100% rename from patches/server/0516-Fix-hex-colors-not-working-in-some-kick-messages.patch rename to patches/server/0517-Fix-hex-colors-not-working-in-some-kick-messages.patch diff --git a/patches/server/0517-PortalCreateEvent-needs-to-know-its-entity.patch b/patches/server/0518-PortalCreateEvent-needs-to-know-its-entity.patch similarity index 100% rename from patches/server/0517-PortalCreateEvent-needs-to-know-its-entity.patch rename to patches/server/0518-PortalCreateEvent-needs-to-know-its-entity.patch diff --git a/patches/server/0518-Fix-CraftTeam-null-check.patch b/patches/server/0519-Fix-CraftTeam-null-check.patch similarity index 100% rename from patches/server/0518-Fix-CraftTeam-null-check.patch rename to patches/server/0519-Fix-CraftTeam-null-check.patch diff --git a/patches/server/0519-Add-more-Evoker-API.patch b/patches/server/0520-Add-more-Evoker-API.patch similarity index 100% rename from patches/server/0519-Add-more-Evoker-API.patch rename to patches/server/0520-Add-more-Evoker-API.patch diff --git a/patches/server/0520-Add-a-way-to-get-translation-keys-for-blocks-entitie.patch b/patches/server/0521-Add-a-way-to-get-translation-keys-for-blocks-entitie.patch similarity index 100% rename from patches/server/0520-Add-a-way-to-get-translation-keys-for-blocks-entitie.patch rename to patches/server/0521-Add-a-way-to-get-translation-keys-for-blocks-entitie.patch diff --git a/patches/server/0521-Create-HoverEvent-from-ItemStack-Entity.patch b/patches/server/0522-Create-HoverEvent-from-ItemStack-Entity.patch similarity index 100% rename from patches/server/0521-Create-HoverEvent-from-ItemStack-Entity.patch rename to patches/server/0522-Create-HoverEvent-from-ItemStack-Entity.patch diff --git a/patches/server/0522-Cache-block-data-strings.patch b/patches/server/0523-Cache-block-data-strings.patch similarity index 100% rename from patches/server/0522-Cache-block-data-strings.patch rename to patches/server/0523-Cache-block-data-strings.patch diff --git a/patches/server/0523-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch b/patches/server/0524-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch similarity index 100% rename from patches/server/0523-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch rename to patches/server/0524-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch diff --git a/patches/server/0524-Add-additional-open-container-api-to-HumanEntity.patch b/patches/server/0525-Add-additional-open-container-api-to-HumanEntity.patch similarity index 100% rename from patches/server/0524-Add-additional-open-container-api-to-HumanEntity.patch rename to patches/server/0525-Add-additional-open-container-api-to-HumanEntity.patch diff --git a/patches/server/0525-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch b/patches/server/0526-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch similarity index 100% rename from patches/server/0525-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch rename to patches/server/0526-Cache-DataFixerUpper-Rewrite-Rules-on-demand.patch diff --git a/patches/server/0526-Extend-block-drop-capture-to-capture-all-items-added.patch b/patches/server/0527-Extend-block-drop-capture-to-capture-all-items-added.patch similarity index 96% rename from patches/server/0526-Extend-block-drop-capture-to-capture-all-items-added.patch rename to patches/server/0527-Extend-block-drop-capture-to-capture-all-items-added.patch index 7822a86337..dbcbbb0901 100644 --- a/patches/server/0526-Extend-block-drop-capture-to-capture-all-items-added.patch +++ b/patches/server/0527-Extend-block-drop-capture-to-capture-all-items-added.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Extend block drop capture to capture all items added to the diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 82ec9d3a7844dd45433d07c3b48050b5de9b7377..aae3c8d5cbbdc6d736257c7454d97ff985ae4187 100644 +index 10c978bae5e50db2156cbf454140db0bd178afac..04334cb457adc61fade27de45c677e27d9849b11 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1205,6 +1205,13 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl diff --git a/patches/server/0527-Don-t-mark-dirty-in-invalid-locations-SPIGOT-6086.patch b/patches/server/0528-Don-t-mark-dirty-in-invalid-locations-SPIGOT-6086.patch similarity index 89% rename from patches/server/0527-Don-t-mark-dirty-in-invalid-locations-SPIGOT-6086.patch rename to patches/server/0528-Don-t-mark-dirty-in-invalid-locations-SPIGOT-6086.patch index b9545882f0..7ee3b4458b 100644 --- a/patches/server/0527-Don-t-mark-dirty-in-invalid-locations-SPIGOT-6086.patch +++ b/patches/server/0528-Don-t-mark-dirty-in-invalid-locations-SPIGOT-6086.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Don't mark dirty in invalid locations (SPIGOT-6086) diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java -index 2d81fce2f5d9320b4cc9310fd0428b96318c7237..84f179b5df2e7106913bd17e5f9e5fdd484bce10 100644 +index e5f2b9286cd2a4764894029a4cb982eddde3c8da..5f5e4366c88ce6b0fdb92cd88917757de21829af 100644 --- a/src/main/java/net/minecraft/server/level/ChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java @@ -379,6 +379,7 @@ public class ChunkHolder { diff --git a/patches/server/0528-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch b/patches/server/0529-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch similarity index 100% rename from patches/server/0528-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch rename to patches/server/0529-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch diff --git a/patches/server/0529-Lazily-track-plugin-scoreboards-by-default.patch b/patches/server/0530-Lazily-track-plugin-scoreboards-by-default.patch similarity index 100% rename from patches/server/0529-Lazily-track-plugin-scoreboards-by-default.patch rename to patches/server/0530-Lazily-track-plugin-scoreboards-by-default.patch diff --git a/patches/server/0530-Entity-isTicking.patch b/patches/server/0531-Entity-isTicking.patch similarity index 100% rename from patches/server/0530-Entity-isTicking.patch rename to patches/server/0531-Entity-isTicking.patch diff --git a/patches/server/0531-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch b/patches/server/0532-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch similarity index 100% rename from patches/server/0531-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch rename to patches/server/0532-Fix-deop-kicking-non-whitelisted-player-when-white-l.patch diff --git a/patches/server/0532-Fix-CME-on-adding-a-passenger-in-CreatureSpawnEvent.patch b/patches/server/0533-Fix-CME-on-adding-a-passenger-in-CreatureSpawnEvent.patch similarity index 100% rename from patches/server/0532-Fix-CME-on-adding-a-passenger-in-CreatureSpawnEvent.patch rename to patches/server/0533-Fix-CME-on-adding-a-passenger-in-CreatureSpawnEvent.patch diff --git a/patches/server/0533-Fix-Concurrency-issue-in-WeightedList.patch b/patches/server/0534-Fix-Concurrency-issue-in-WeightedList.patch similarity index 100% rename from patches/server/0533-Fix-Concurrency-issue-in-WeightedList.patch rename to patches/server/0534-Fix-Concurrency-issue-in-WeightedList.patch diff --git a/patches/server/0534-Reset-Ender-Crystals-on-Dragon-Spawn.patch b/patches/server/0535-Reset-Ender-Crystals-on-Dragon-Spawn.patch similarity index 100% rename from patches/server/0534-Reset-Ender-Crystals-on-Dragon-Spawn.patch rename to patches/server/0535-Reset-Ender-Crystals-on-Dragon-Spawn.patch diff --git a/patches/server/0535-Fix-for-large-move-vectors-crashing-server.patch b/patches/server/0536-Fix-for-large-move-vectors-crashing-server.patch similarity index 100% rename from patches/server/0535-Fix-for-large-move-vectors-crashing-server.patch rename to patches/server/0536-Fix-for-large-move-vectors-crashing-server.patch diff --git a/patches/server/0536-Optimise-getType-calls.patch b/patches/server/0537-Optimise-getType-calls.patch similarity index 100% rename from patches/server/0536-Optimise-getType-calls.patch rename to patches/server/0537-Optimise-getType-calls.patch diff --git a/patches/server/0537-Villager-resetOffers.patch b/patches/server/0538-Villager-resetOffers.patch similarity index 100% rename from patches/server/0537-Villager-resetOffers.patch rename to patches/server/0538-Villager-resetOffers.patch diff --git a/patches/server/0538-Improve-inlinig-for-some-hot-IBlockData-methods.patch b/patches/server/0539-Improve-inlinig-for-some-hot-IBlockData-methods.patch similarity index 100% rename from patches/server/0538-Improve-inlinig-for-some-hot-IBlockData-methods.patch rename to patches/server/0539-Improve-inlinig-for-some-hot-IBlockData-methods.patch diff --git a/patches/server/0539-Retain-block-place-order-when-capturing-blockstates.patch b/patches/server/0540-Retain-block-place-order-when-capturing-blockstates.patch similarity index 100% rename from patches/server/0539-Retain-block-place-order-when-capturing-blockstates.patch rename to patches/server/0540-Retain-block-place-order-when-capturing-blockstates.patch diff --git a/patches/server/0540-Reduce-blockpos-allocation-from-pathfinding.patch b/patches/server/0541-Reduce-blockpos-allocation-from-pathfinding.patch similarity index 100% rename from patches/server/0540-Reduce-blockpos-allocation-from-pathfinding.patch rename to patches/server/0541-Reduce-blockpos-allocation-from-pathfinding.patch diff --git a/patches/server/0541-Fix-item-locations-dropped-from-campfires.patch b/patches/server/0542-Fix-item-locations-dropped-from-campfires.patch similarity index 100% rename from patches/server/0541-Fix-item-locations-dropped-from-campfires.patch rename to patches/server/0542-Fix-item-locations-dropped-from-campfires.patch diff --git a/patches/server/0542-Player-elytra-boost-API.patch b/patches/server/0543-Player-elytra-boost-API.patch similarity index 100% rename from patches/server/0542-Player-elytra-boost-API.patch rename to patches/server/0543-Player-elytra-boost-API.patch diff --git a/patches/server/0543-Fixed-TileEntityBell-memory-leak.patch b/patches/server/0544-Fixed-TileEntityBell-memory-leak.patch similarity index 100% rename from patches/server/0543-Fixed-TileEntityBell-memory-leak.patch rename to patches/server/0544-Fixed-TileEntityBell-memory-leak.patch diff --git a/patches/server/0544-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch b/patches/server/0545-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch similarity index 100% rename from patches/server/0544-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch rename to patches/server/0545-Avoid-error-bubbling-up-when-item-stack-is-empty-in-.patch diff --git a/patches/server/0545-Add-getOfflinePlayerIfCached-String.patch b/patches/server/0546-Add-getOfflinePlayerIfCached-String.patch similarity index 100% rename from patches/server/0545-Add-getOfflinePlayerIfCached-String.patch rename to patches/server/0546-Add-getOfflinePlayerIfCached-String.patch diff --git a/patches/server/0546-Add-ignore-discounts-API.patch b/patches/server/0547-Add-ignore-discounts-API.patch similarity index 100% rename from patches/server/0546-Add-ignore-discounts-API.patch rename to patches/server/0547-Add-ignore-discounts-API.patch diff --git a/patches/server/0547-Toggle-for-removing-existing-dragon.patch b/patches/server/0548-Toggle-for-removing-existing-dragon.patch similarity index 100% rename from patches/server/0547-Toggle-for-removing-existing-dragon.patch rename to patches/server/0548-Toggle-for-removing-existing-dragon.patch diff --git a/patches/server/0548-Fix-client-lag-on-advancement-loading.patch b/patches/server/0549-Fix-client-lag-on-advancement-loading.patch similarity index 100% rename from patches/server/0548-Fix-client-lag-on-advancement-loading.patch rename to patches/server/0549-Fix-client-lag-on-advancement-loading.patch diff --git a/patches/server/0549-Item-no-age-no-player-pickup.patch b/patches/server/0550-Item-no-age-no-player-pickup.patch similarity index 100% rename from patches/server/0549-Item-no-age-no-player-pickup.patch rename to patches/server/0550-Item-no-age-no-player-pickup.patch diff --git a/patches/server/0550-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch b/patches/server/0551-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch similarity index 100% rename from patches/server/0550-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch rename to patches/server/0551-Optimize-Pathfinder-Remove-Streams-Optimized-collect.patch diff --git a/patches/server/0551-Beacon-API-custom-effect-ranges.patch b/patches/server/0552-Beacon-API-custom-effect-ranges.patch similarity index 100% rename from patches/server/0551-Beacon-API-custom-effect-ranges.patch rename to patches/server/0552-Beacon-API-custom-effect-ranges.patch diff --git a/patches/server/0552-Add-API-for-quit-reason.patch b/patches/server/0553-Add-API-for-quit-reason.patch similarity index 100% rename from patches/server/0552-Add-API-for-quit-reason.patch rename to patches/server/0553-Add-API-for-quit-reason.patch diff --git a/patches/server/0553-Seed-based-feature-search.patch b/patches/server/0554-Seed-based-feature-search.patch similarity index 100% rename from patches/server/0553-Seed-based-feature-search.patch rename to patches/server/0554-Seed-based-feature-search.patch diff --git a/patches/server/0554-Add-Wandering-Trader-spawn-rate-config-options.patch b/patches/server/0555-Add-Wandering-Trader-spawn-rate-config-options.patch similarity index 100% rename from patches/server/0554-Add-Wandering-Trader-spawn-rate-config-options.patch rename to patches/server/0555-Add-Wandering-Trader-spawn-rate-config-options.patch diff --git a/patches/server/0555-Significantly-improve-performance-of-the-end-generat.patch b/patches/server/0556-Significantly-improve-performance-of-the-end-generat.patch similarity index 100% rename from patches/server/0555-Significantly-improve-performance-of-the-end-generat.patch rename to patches/server/0556-Significantly-improve-performance-of-the-end-generat.patch diff --git a/patches/server/0556-Expose-world-spawn-angle.patch b/patches/server/0557-Expose-world-spawn-angle.patch similarity index 100% rename from patches/server/0556-Expose-world-spawn-angle.patch rename to patches/server/0557-Expose-world-spawn-angle.patch diff --git a/patches/server/0557-Add-Destroy-Speed-API.patch b/patches/server/0558-Add-Destroy-Speed-API.patch similarity index 100% rename from patches/server/0557-Add-Destroy-Speed-API.patch rename to patches/server/0558-Add-Destroy-Speed-API.patch diff --git a/patches/server/0558-Fix-Player-spawnParticle-x-y-z-precision-loss.patch b/patches/server/0559-Fix-Player-spawnParticle-x-y-z-precision-loss.patch similarity index 100% rename from patches/server/0558-Fix-Player-spawnParticle-x-y-z-precision-loss.patch rename to patches/server/0559-Fix-Player-spawnParticle-x-y-z-precision-loss.patch diff --git a/patches/server/0559-Add-LivingEntity-clearActiveItem.patch b/patches/server/0560-Add-LivingEntity-clearActiveItem.patch similarity index 100% rename from patches/server/0559-Add-LivingEntity-clearActiveItem.patch rename to patches/server/0560-Add-LivingEntity-clearActiveItem.patch diff --git a/patches/server/0560-Add-PlayerItemCooldownEvent.patch b/patches/server/0561-Add-PlayerItemCooldownEvent.patch similarity index 100% rename from patches/server/0560-Add-PlayerItemCooldownEvent.patch rename to patches/server/0561-Add-PlayerItemCooldownEvent.patch diff --git a/patches/server/0561-More-lightning-API.patch b/patches/server/0562-More-lightning-API.patch similarity index 100% rename from patches/server/0561-More-lightning-API.patch rename to patches/server/0562-More-lightning-API.patch diff --git a/patches/server/0562-Climbing-should-not-bypass-cramming-gamerule.patch b/patches/server/0563-Climbing-should-not-bypass-cramming-gamerule.patch similarity index 100% rename from patches/server/0562-Climbing-should-not-bypass-cramming-gamerule.patch rename to patches/server/0563-Climbing-should-not-bypass-cramming-gamerule.patch diff --git a/patches/server/0563-Added-missing-default-perms-for-commands.patch b/patches/server/0564-Added-missing-default-perms-for-commands.patch similarity index 100% rename from patches/server/0563-Added-missing-default-perms-for-commands.patch rename to patches/server/0564-Added-missing-default-perms-for-commands.patch diff --git a/patches/server/0564-Add-PlayerShearBlockEvent.patch b/patches/server/0565-Add-PlayerShearBlockEvent.patch similarity index 100% rename from patches/server/0564-Add-PlayerShearBlockEvent.patch rename to patches/server/0565-Add-PlayerShearBlockEvent.patch diff --git a/patches/server/0565-Set-spigots-verbose-world-setting-to-false-by-def.patch b/patches/server/0566-Set-spigots-verbose-world-setting-to-false-by-def.patch similarity index 100% rename from patches/server/0565-Set-spigots-verbose-world-setting-to-false-by-def.patch rename to patches/server/0566-Set-spigots-verbose-world-setting-to-false-by-def.patch diff --git a/patches/server/0566-Fix-curing-zombie-villager-discount-exploit.patch b/patches/server/0567-Fix-curing-zombie-villager-discount-exploit.patch similarity index 100% rename from patches/server/0566-Fix-curing-zombie-villager-discount-exploit.patch rename to patches/server/0567-Fix-curing-zombie-villager-discount-exploit.patch diff --git a/patches/server/0567-Limit-recipe-packets.patch b/patches/server/0568-Limit-recipe-packets.patch similarity index 100% rename from patches/server/0567-Limit-recipe-packets.patch rename to patches/server/0568-Limit-recipe-packets.patch diff --git a/patches/server/0568-Fix-CraftSound-backwards-compatibility.patch b/patches/server/0569-Fix-CraftSound-backwards-compatibility.patch similarity index 100% rename from patches/server/0568-Fix-CraftSound-backwards-compatibility.patch rename to patches/server/0569-Fix-CraftSound-backwards-compatibility.patch diff --git a/patches/server/0569-MC-4-Fix-item-position-desync.patch b/patches/server/0570-MC-4-Fix-item-position-desync.patch similarity index 100% rename from patches/server/0569-MC-4-Fix-item-position-desync.patch rename to patches/server/0570-MC-4-Fix-item-position-desync.patch diff --git a/patches/server/0570-Player-Chunk-Load-Unload-Events.patch b/patches/server/0571-Player-Chunk-Load-Unload-Events.patch similarity index 100% rename from patches/server/0570-Player-Chunk-Load-Unload-Events.patch rename to patches/server/0571-Player-Chunk-Load-Unload-Events.patch diff --git a/patches/server/0571-Optimize-Dynamic-get-Missing-Keys.patch b/patches/server/0572-Optimize-Dynamic-get-Missing-Keys.patch similarity index 100% rename from patches/server/0571-Optimize-Dynamic-get-Missing-Keys.patch rename to patches/server/0572-Optimize-Dynamic-get-Missing-Keys.patch diff --git a/patches/server/0572-Expose-LivingEntity-hurt-direction.patch b/patches/server/0573-Expose-LivingEntity-hurt-direction.patch similarity index 100% rename from patches/server/0572-Expose-LivingEntity-hurt-direction.patch rename to patches/server/0573-Expose-LivingEntity-hurt-direction.patch diff --git a/patches/server/0573-Add-OBSTRUCTED-reason-to-BedEnterResult.patch b/patches/server/0574-Add-OBSTRUCTED-reason-to-BedEnterResult.patch similarity index 100% rename from patches/server/0573-Add-OBSTRUCTED-reason-to-BedEnterResult.patch rename to patches/server/0574-Add-OBSTRUCTED-reason-to-BedEnterResult.patch diff --git a/patches/server/0574-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch b/patches/server/0575-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch similarity index 100% rename from patches/server/0574-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch rename to patches/server/0575-Do-not-crash-from-invalid-ingredient-lists-in-Villag.patch diff --git a/patches/server/0575-added-PlayerTradeEvent.patch b/patches/server/0576-added-PlayerTradeEvent.patch similarity index 100% rename from patches/server/0575-added-PlayerTradeEvent.patch rename to patches/server/0576-added-PlayerTradeEvent.patch diff --git a/patches/server/0576-Implement-TargetHitEvent.patch b/patches/server/0577-Implement-TargetHitEvent.patch similarity index 100% rename from patches/server/0576-Implement-TargetHitEvent.patch rename to patches/server/0577-Implement-TargetHitEvent.patch diff --git a/patches/server/0577-Additional-Block-Material-API-s.patch b/patches/server/0578-Additional-Block-Material-API-s.patch similarity index 100% rename from patches/server/0577-Additional-Block-Material-API-s.patch rename to patches/server/0578-Additional-Block-Material-API-s.patch diff --git a/patches/server/0578-Fix-harming-potion-dupe.patch b/patches/server/0579-Fix-harming-potion-dupe.patch similarity index 100% rename from patches/server/0578-Fix-harming-potion-dupe.patch rename to patches/server/0579-Fix-harming-potion-dupe.patch diff --git a/patches/server/0579-Implement-API-to-get-Material-from-Boats-and-Minecar.patch b/patches/server/0580-Implement-API-to-get-Material-from-Boats-and-Minecar.patch similarity index 100% rename from patches/server/0579-Implement-API-to-get-Material-from-Boats-and-Minecar.patch rename to patches/server/0580-Implement-API-to-get-Material-from-Boats-and-Minecar.patch diff --git a/patches/server/0580-Cache-burn-durations.patch b/patches/server/0581-Cache-burn-durations.patch similarity index 100% rename from patches/server/0580-Cache-burn-durations.patch rename to patches/server/0581-Cache-burn-durations.patch diff --git a/patches/server/0581-Allow-disabling-mob-spawner-spawn-egg-transformation.patch b/patches/server/0582-Allow-disabling-mob-spawner-spawn-egg-transformation.patch similarity index 100% rename from patches/server/0581-Allow-disabling-mob-spawner-spawn-egg-transformation.patch rename to patches/server/0582-Allow-disabling-mob-spawner-spawn-egg-transformation.patch diff --git a/patches/server/0582-Fix-Not-a-string-Map-Conversion-spam.patch b/patches/server/0583-Fix-Not-a-string-Map-Conversion-spam.patch similarity index 100% rename from patches/server/0582-Fix-Not-a-string-Map-Conversion-spam.patch rename to patches/server/0583-Fix-Not-a-string-Map-Conversion-spam.patch diff --git a/patches/server/0583-Implement-PlayerFlowerPotManipulateEvent.patch b/patches/server/0584-Implement-PlayerFlowerPotManipulateEvent.patch similarity index 100% rename from patches/server/0583-Implement-PlayerFlowerPotManipulateEvent.patch rename to patches/server/0584-Implement-PlayerFlowerPotManipulateEvent.patch diff --git a/patches/server/0584-Fix-interact-event-not-being-called-in-adventure.patch b/patches/server/0585-Fix-interact-event-not-being-called-in-adventure.patch similarity index 100% rename from patches/server/0584-Fix-interact-event-not-being-called-in-adventure.patch rename to patches/server/0585-Fix-interact-event-not-being-called-in-adventure.patch diff --git a/patches/server/0585-Zombie-API-breaking-doors.patch b/patches/server/0586-Zombie-API-breaking-doors.patch similarity index 100% rename from patches/server/0585-Zombie-API-breaking-doors.patch rename to patches/server/0586-Zombie-API-breaking-doors.patch diff --git a/patches/server/0586-Fix-nerfed-slime-when-splitting.patch b/patches/server/0587-Fix-nerfed-slime-when-splitting.patch similarity index 89% rename from patches/server/0586-Fix-nerfed-slime-when-splitting.patch rename to patches/server/0587-Fix-nerfed-slime-when-splitting.patch index b6144ed23d..644a72d961 100644 --- a/patches/server/0586-Fix-nerfed-slime-when-splitting.patch +++ b/patches/server/0587-Fix-nerfed-slime-when-splitting.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix nerfed slime when splitting diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java -index e9d3e5eddaee0c8ae98755119b3c0734166cafa9..fdc01dee8a81f0376f3c0a154c4291d03ead7f8f 100644 +index 6ac78ec82b6176771ab024e0c928b0881f67ca05..e1a593b464c35f68b22e84a09f99ee72af73da32 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Slime.java +++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java @@ -241,6 +241,7 @@ public class Slime extends Mob implements Enemy { diff --git a/patches/server/0587-Add-EntityLoadCrossbowEvent.patch b/patches/server/0588-Add-EntityLoadCrossbowEvent.patch similarity index 100% rename from patches/server/0587-Add-EntityLoadCrossbowEvent.patch rename to patches/server/0588-Add-EntityLoadCrossbowEvent.patch diff --git a/patches/server/0588-Guardian-beam-workaround.patch b/patches/server/0589-Guardian-beam-workaround.patch similarity index 100% rename from patches/server/0588-Guardian-beam-workaround.patch rename to patches/server/0589-Guardian-beam-workaround.patch diff --git a/patches/server/0589-Added-WorldGameRuleChangeEvent.patch b/patches/server/0590-Added-WorldGameRuleChangeEvent.patch similarity index 100% rename from patches/server/0589-Added-WorldGameRuleChangeEvent.patch rename to patches/server/0590-Added-WorldGameRuleChangeEvent.patch diff --git a/patches/server/0590-Added-ServerResourcesReloadedEvent.patch b/patches/server/0591-Added-ServerResourcesReloadedEvent.patch similarity index 100% rename from patches/server/0590-Added-ServerResourcesReloadedEvent.patch rename to patches/server/0591-Added-ServerResourcesReloadedEvent.patch diff --git a/patches/server/0591-Added-world-settings-for-mobs-picking-up-loot.patch b/patches/server/0592-Added-world-settings-for-mobs-picking-up-loot.patch similarity index 100% rename from patches/server/0591-Added-world-settings-for-mobs-picking-up-loot.patch rename to patches/server/0592-Added-world-settings-for-mobs-picking-up-loot.patch diff --git a/patches/server/0592-Implemented-BlockFailedDispenseEvent.patch b/patches/server/0593-Implemented-BlockFailedDispenseEvent.patch similarity index 100% rename from patches/server/0592-Implemented-BlockFailedDispenseEvent.patch rename to patches/server/0593-Implemented-BlockFailedDispenseEvent.patch diff --git a/patches/server/0593-Added-PlayerLecternPageChangeEvent.patch b/patches/server/0594-Added-PlayerLecternPageChangeEvent.patch similarity index 100% rename from patches/server/0593-Added-PlayerLecternPageChangeEvent.patch rename to patches/server/0594-Added-PlayerLecternPageChangeEvent.patch diff --git a/patches/server/0594-Added-PlayerLoomPatternSelectEvent.patch b/patches/server/0595-Added-PlayerLoomPatternSelectEvent.patch similarity index 100% rename from patches/server/0594-Added-PlayerLoomPatternSelectEvent.patch rename to patches/server/0595-Added-PlayerLoomPatternSelectEvent.patch diff --git a/patches/server/0595-Configurable-door-breaking-difficulty.patch b/patches/server/0596-Configurable-door-breaking-difficulty.patch similarity index 100% rename from patches/server/0595-Configurable-door-breaking-difficulty.patch rename to patches/server/0596-Configurable-door-breaking-difficulty.patch diff --git a/patches/server/0596-Empty-commands-shall-not-be-dispatched.patch b/patches/server/0597-Empty-commands-shall-not-be-dispatched.patch similarity index 100% rename from patches/server/0596-Empty-commands-shall-not-be-dispatched.patch rename to patches/server/0597-Empty-commands-shall-not-be-dispatched.patch diff --git a/patches/server/0597-Implement-API-to-expose-exact-interaction-point.patch b/patches/server/0598-Implement-API-to-expose-exact-interaction-point.patch similarity index 100% rename from patches/server/0597-Implement-API-to-expose-exact-interaction-point.patch rename to patches/server/0598-Implement-API-to-expose-exact-interaction-point.patch diff --git a/patches/server/0598-Remove-stale-POIs.patch b/patches/server/0599-Remove-stale-POIs.patch similarity index 92% rename from patches/server/0598-Remove-stale-POIs.patch rename to patches/server/0599-Remove-stale-POIs.patch index 5fbf319318..1b92a6e785 100644 --- a/patches/server/0598-Remove-stale-POIs.patch +++ b/patches/server/0599-Remove-stale-POIs.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Remove stale POIs diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index aae3c8d5cbbdc6d736257c7454d97ff985ae4187..a194558e5dc0feb57681084240822a9d4b6b9bab 100644 +index 04334cb457adc61fade27de45c677e27d9849b11..021efe5bae6a7e95e9080ab28ed69607d03f2af0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1742,6 +1742,11 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl diff --git a/patches/server/0599-Fix-villager-boat-exploit.patch b/patches/server/0600-Fix-villager-boat-exploit.patch similarity index 100% rename from patches/server/0599-Fix-villager-boat-exploit.patch rename to patches/server/0600-Fix-villager-boat-exploit.patch diff --git a/patches/server/0600-Add-sendOpLevel-API.patch b/patches/server/0601-Add-sendOpLevel-API.patch similarity index 100% rename from patches/server/0600-Add-sendOpLevel-API.patch rename to patches/server/0601-Add-sendOpLevel-API.patch diff --git a/patches/server/0601-Add-StructureLocateEvent.patch b/patches/server/0602-Add-StructureLocateEvent.patch similarity index 100% rename from patches/server/0601-Add-StructureLocateEvent.patch rename to patches/server/0602-Add-StructureLocateEvent.patch diff --git a/patches/server/0602-Collision-option-for-requiring-a-player-participant.patch b/patches/server/0603-Collision-option-for-requiring-a-player-participant.patch similarity index 100% rename from patches/server/0602-Collision-option-for-requiring-a-player-participant.patch rename to patches/server/0603-Collision-option-for-requiring-a-player-participant.patch diff --git a/patches/server/0603-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch b/patches/server/0604-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch similarity index 100% rename from patches/server/0603-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch rename to patches/server/0604-Remove-ProjectileHitEvent-call-when-fireballs-dead.patch diff --git a/patches/server/0604-Return-chat-component-with-empty-text-instead-of-thr.patch b/patches/server/0605-Return-chat-component-with-empty-text-instead-of-thr.patch similarity index 100% rename from patches/server/0604-Return-chat-component-with-empty-text-instead-of-thr.patch rename to patches/server/0605-Return-chat-component-with-empty-text-instead-of-thr.patch diff --git a/patches/server/0605-Make-schedule-command-per-world.patch b/patches/server/0606-Make-schedule-command-per-world.patch similarity index 100% rename from patches/server/0605-Make-schedule-command-per-world.patch rename to patches/server/0606-Make-schedule-command-per-world.patch diff --git a/patches/server/0606-Configurable-max-leash-distance.patch b/patches/server/0607-Configurable-max-leash-distance.patch similarity index 100% rename from patches/server/0606-Configurable-max-leash-distance.patch rename to patches/server/0607-Configurable-max-leash-distance.patch diff --git a/patches/server/0607-Implement-BlockPreDispenseEvent.patch b/patches/server/0608-Implement-BlockPreDispenseEvent.patch similarity index 100% rename from patches/server/0607-Implement-BlockPreDispenseEvent.patch rename to patches/server/0608-Implement-BlockPreDispenseEvent.patch diff --git a/patches/server/0608-Added-Vanilla-Entity-Tags.patch b/patches/server/0609-Added-Vanilla-Entity-Tags.patch similarity index 100% rename from patches/server/0608-Added-Vanilla-Entity-Tags.patch rename to patches/server/0609-Added-Vanilla-Entity-Tags.patch diff --git a/patches/server/0609-added-Wither-API.patch b/patches/server/0610-added-Wither-API.patch similarity index 100% rename from patches/server/0609-added-Wither-API.patch rename to patches/server/0610-added-Wither-API.patch diff --git a/patches/server/0610-Added-firing-of-PlayerChangeBeaconEffectEvent.patch b/patches/server/0611-Added-firing-of-PlayerChangeBeaconEffectEvent.patch similarity index 100% rename from patches/server/0610-Added-firing-of-PlayerChangeBeaconEffectEvent.patch rename to patches/server/0611-Added-firing-of-PlayerChangeBeaconEffectEvent.patch diff --git a/patches/server/0611-Fix-console-spam-when-removing-chests-in-water.patch b/patches/server/0612-Fix-console-spam-when-removing-chests-in-water.patch similarity index 100% rename from patches/server/0611-Fix-console-spam-when-removing-chests-in-water.patch rename to patches/server/0612-Fix-console-spam-when-removing-chests-in-water.patch diff --git a/patches/server/0612-Add-toggle-for-always-placing-the-dragon-egg.patch b/patches/server/0613-Add-toggle-for-always-placing-the-dragon-egg.patch similarity index 100% rename from patches/server/0612-Add-toggle-for-always-placing-the-dragon-egg.patch rename to patches/server/0613-Add-toggle-for-always-placing-the-dragon-egg.patch diff --git a/patches/server/0613-Added-PlayerStonecutterRecipeSelectEvent.patch b/patches/server/0614-Added-PlayerStonecutterRecipeSelectEvent.patch similarity index 100% rename from patches/server/0613-Added-PlayerStonecutterRecipeSelectEvent.patch rename to patches/server/0614-Added-PlayerStonecutterRecipeSelectEvent.patch diff --git a/patches/server/0614-Add-dropLeash-variable-to-EntityUnleashEvent.patch b/patches/server/0615-Add-dropLeash-variable-to-EntityUnleashEvent.patch similarity index 100% rename from patches/server/0614-Add-dropLeash-variable-to-EntityUnleashEvent.patch rename to patches/server/0615-Add-dropLeash-variable-to-EntityUnleashEvent.patch diff --git a/patches/server/0615-Skip-distance-map-update-when-spawning-disabled.patch b/patches/server/0616-Skip-distance-map-update-when-spawning-disabled.patch similarity index 92% rename from patches/server/0615-Skip-distance-map-update-when-spawning-disabled.patch rename to patches/server/0616-Skip-distance-map-update-when-spawning-disabled.patch index c0cde2b209..3ee6974d73 100644 --- a/patches/server/0615-Skip-distance-map-update-when-spawning-disabled.patch +++ b/patches/server/0616-Skip-distance-map-update-when-spawning-disabled.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Skip distance map update when spawning disabled. diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 0b22fd8ac75146bc7b647cfbefc73ce890ccb033..82d3cfb2d346a8b929e9469ae09369f6a639f81d 100644 +index f27160640c7c63075d41e52a74227c1168cce6b2..8a8df01ff3990e4bb17e048575617b9254677cdf 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -811,7 +811,7 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/0616-Reset-shield-blocking-on-dimension-change.patch b/patches/server/0617-Reset-shield-blocking-on-dimension-change.patch similarity index 100% rename from patches/server/0616-Reset-shield-blocking-on-dimension-change.patch rename to patches/server/0617-Reset-shield-blocking-on-dimension-change.patch diff --git a/patches/server/0617-add-DragonEggFormEvent.patch b/patches/server/0618-add-DragonEggFormEvent.patch similarity index 100% rename from patches/server/0617-add-DragonEggFormEvent.patch rename to patches/server/0618-add-DragonEggFormEvent.patch diff --git a/patches/server/0618-EntityMoveEvent.patch b/patches/server/0619-EntityMoveEvent.patch similarity index 97% rename from patches/server/0618-EntityMoveEvent.patch rename to patches/server/0619-EntityMoveEvent.patch index 6792eecb18..28df990f98 100644 --- a/patches/server/0618-EntityMoveEvent.patch +++ b/patches/server/0619-EntityMoveEvent.patch @@ -17,7 +17,7 @@ index bbc96d35ffb0d6cd0f8964ea25e1d6585fbee1d7..127691d19e02ef5e725ce338d732fcce this.profiler.push(() -> { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a194558e5dc0feb57681084240822a9d4b6b9bab..e418bcda3d6b5f219fc8a6431b449ef4de9a8a4e 100644 +index 021efe5bae6a7e95e9080ab28ed69607d03f2af0..2f3dc805d3015ce083865050a4b99f2ba8d69bce 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -200,6 +200,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl diff --git a/patches/server/0619-added-option-to-disable-pathfinding-updates-on-block.patch b/patches/server/0620-added-option-to-disable-pathfinding-updates-on-block.patch similarity index 95% rename from patches/server/0619-added-option-to-disable-pathfinding-updates-on-block.patch rename to patches/server/0620-added-option-to-disable-pathfinding-updates-on-block.patch index 46e44f9106..c36022349d 100644 --- a/patches/server/0619-added-option-to-disable-pathfinding-updates-on-block.patch +++ b/patches/server/0620-added-option-to-disable-pathfinding-updates-on-block.patch @@ -20,7 +20,7 @@ index 7fc5bf095afa6d5881285b89091d2ff48ffb69f0..0eba516110b82d917c3374a9fe5bbf33 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e418bcda3d6b5f219fc8a6431b449ef4de9a8a4e..ecfa6089be3f81704a88877357e3aa0cf45ee332 100644 +index 2f3dc805d3015ce083865050a4b99f2ba8d69bce..b9588496dfc14eff48dddb747396cecc53d2bd44 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1339,6 +1339,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl diff --git a/patches/server/0620-Inline-shift-direction-fields.patch b/patches/server/0621-Inline-shift-direction-fields.patch similarity index 100% rename from patches/server/0620-Inline-shift-direction-fields.patch rename to patches/server/0621-Inline-shift-direction-fields.patch diff --git a/patches/server/0621-Allow-adding-items-to-BlockDropItemEvent.patch b/patches/server/0622-Allow-adding-items-to-BlockDropItemEvent.patch similarity index 100% rename from patches/server/0621-Allow-adding-items-to-BlockDropItemEvent.patch rename to patches/server/0622-Allow-adding-items-to-BlockDropItemEvent.patch diff --git a/patches/server/0622-Add-getMainThreadExecutor-to-BukkitScheduler.patch b/patches/server/0623-Add-getMainThreadExecutor-to-BukkitScheduler.patch similarity index 100% rename from patches/server/0622-Add-getMainThreadExecutor-to-BukkitScheduler.patch rename to patches/server/0623-Add-getMainThreadExecutor-to-BukkitScheduler.patch diff --git a/patches/server/0623-living-entity-allow-attribute-registration.patch b/patches/server/0624-living-entity-allow-attribute-registration.patch similarity index 100% rename from patches/server/0623-living-entity-allow-attribute-registration.patch rename to patches/server/0624-living-entity-allow-attribute-registration.patch diff --git a/patches/server/0624-fix-dead-slime-setSize-invincibility.patch b/patches/server/0625-fix-dead-slime-setSize-invincibility.patch similarity index 100% rename from patches/server/0624-fix-dead-slime-setSize-invincibility.patch rename to patches/server/0625-fix-dead-slime-setSize-invincibility.patch diff --git a/patches/server/0625-Merchant-getRecipes-should-return-an-immutable-list.patch b/patches/server/0626-Merchant-getRecipes-should-return-an-immutable-list.patch similarity index 100% rename from patches/server/0625-Merchant-getRecipes-should-return-an-immutable-list.patch rename to patches/server/0626-Merchant-getRecipes-should-return-an-immutable-list.patch diff --git a/patches/server/0626-misc-debugging-dumps.patch b/patches/server/0627-misc-debugging-dumps.patch similarity index 100% rename from patches/server/0626-misc-debugging-dumps.patch rename to patches/server/0627-misc-debugging-dumps.patch diff --git a/patches/server/0627-Add-support-for-hex-color-codes-in-console.patch b/patches/server/0628-Add-support-for-hex-color-codes-in-console.patch similarity index 100% rename from patches/server/0627-Add-support-for-hex-color-codes-in-console.patch rename to patches/server/0628-Add-support-for-hex-color-codes-in-console.patch diff --git a/patches/server/0628-Expose-Tracked-Players.patch b/patches/server/0629-Expose-Tracked-Players.patch similarity index 100% rename from patches/server/0628-Expose-Tracked-Players.patch rename to patches/server/0629-Expose-Tracked-Players.patch diff --git a/patches/server/0629-Remove-streams-from-SensorNearest.patch b/patches/server/0630-Remove-streams-from-SensorNearest.patch similarity index 100% rename from patches/server/0629-Remove-streams-from-SensorNearest.patch rename to patches/server/0630-Remove-streams-from-SensorNearest.patch diff --git a/patches/server/0630-MC-29274-Fix-Wither-hostility-towards-players.patch b/patches/server/0631-MC-29274-Fix-Wither-hostility-towards-players.patch similarity index 100% rename from patches/server/0630-MC-29274-Fix-Wither-hostility-towards-players.patch rename to patches/server/0631-MC-29274-Fix-Wither-hostility-towards-players.patch diff --git a/patches/server/0631-Throw-proper-exception-on-empty-JsonList-file.patch b/patches/server/0632-Throw-proper-exception-on-empty-JsonList-file.patch similarity index 100% rename from patches/server/0631-Throw-proper-exception-on-empty-JsonList-file.patch rename to patches/server/0632-Throw-proper-exception-on-empty-JsonList-file.patch diff --git a/patches/server/0632-Improve-ServerGUI.patch b/patches/server/0633-Improve-ServerGUI.patch similarity index 100% rename from patches/server/0632-Improve-ServerGUI.patch rename to patches/server/0633-Improve-ServerGUI.patch diff --git a/patches/server/0633-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch b/patches/server/0634-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch similarity index 100% rename from patches/server/0633-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch rename to patches/server/0634-stop-firing-pressure-plate-EntityInteractEvent-for-i.patch diff --git a/patches/server/0634-fix-converting-txt-to-json-file.patch b/patches/server/0635-fix-converting-txt-to-json-file.patch similarity index 100% rename from patches/server/0634-fix-converting-txt-to-json-file.patch rename to patches/server/0635-fix-converting-txt-to-json-file.patch diff --git a/patches/server/0635-Add-worldborder-events.patch b/patches/server/0636-Add-worldborder-events.patch similarity index 100% rename from patches/server/0635-Add-worldborder-events.patch rename to patches/server/0636-Add-worldborder-events.patch diff --git a/patches/server/0636-added-PlayerNameEntityEvent.patch b/patches/server/0637-added-PlayerNameEntityEvent.patch similarity index 100% rename from patches/server/0636-added-PlayerNameEntityEvent.patch rename to patches/server/0637-added-PlayerNameEntityEvent.patch diff --git a/patches/server/0637-Prevent-grindstones-from-overstacking-items.patch b/patches/server/0638-Prevent-grindstones-from-overstacking-items.patch similarity index 100% rename from patches/server/0637-Prevent-grindstones-from-overstacking-items.patch rename to patches/server/0638-Prevent-grindstones-from-overstacking-items.patch diff --git a/patches/server/0638-Add-recipe-to-cook-events.patch b/patches/server/0639-Add-recipe-to-cook-events.patch similarity index 100% rename from patches/server/0638-Add-recipe-to-cook-events.patch rename to patches/server/0639-Add-recipe-to-cook-events.patch diff --git a/patches/server/0639-Add-Block-isValidTool.patch b/patches/server/0640-Add-Block-isValidTool.patch similarity index 100% rename from patches/server/0639-Add-Block-isValidTool.patch rename to patches/server/0640-Add-Block-isValidTool.patch diff --git a/patches/server/0640-Allow-using-signs-inside-spawn-protection.patch b/patches/server/0641-Allow-using-signs-inside-spawn-protection.patch similarity index 100% rename from patches/server/0640-Allow-using-signs-inside-spawn-protection.patch rename to patches/server/0641-Allow-using-signs-inside-spawn-protection.patch diff --git a/patches/server/0641-Implement-Keyed-on-World.patch b/patches/server/0642-Implement-Keyed-on-World.patch similarity index 100% rename from patches/server/0641-Implement-Keyed-on-World.patch rename to patches/server/0642-Implement-Keyed-on-World.patch diff --git a/patches/server/0642-Add-fast-alternative-constructor-for-Rotations.patch b/patches/server/0643-Add-fast-alternative-constructor-for-Rotations.patch similarity index 100% rename from patches/server/0642-Add-fast-alternative-constructor-for-Rotations.patch rename to patches/server/0643-Add-fast-alternative-constructor-for-Rotations.patch diff --git a/patches/server/0643-Item-Rarity-API.patch b/patches/server/0644-Item-Rarity-API.patch similarity index 100% rename from patches/server/0643-Item-Rarity-API.patch rename to patches/server/0644-Item-Rarity-API.patch diff --git a/patches/server/0644-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch b/patches/server/0645-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch similarity index 100% rename from patches/server/0644-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch rename to patches/server/0645-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch diff --git a/patches/server/0645-copy-TESign-isEditable-from-snapshots.patch b/patches/server/0646-copy-TESign-isEditable-from-snapshots.patch similarity index 100% rename from patches/server/0645-copy-TESign-isEditable-from-snapshots.patch rename to patches/server/0646-copy-TESign-isEditable-from-snapshots.patch diff --git a/patches/server/0646-Drop-carried-item-when-player-has-disconnected.patch b/patches/server/0647-Drop-carried-item-when-player-has-disconnected.patch similarity index 100% rename from patches/server/0646-Drop-carried-item-when-player-has-disconnected.patch rename to patches/server/0647-Drop-carried-item-when-player-has-disconnected.patch diff --git a/patches/server/0647-forced-whitelist-use-configurable-kick-message.patch b/patches/server/0648-forced-whitelist-use-configurable-kick-message.patch similarity index 100% rename from patches/server/0647-forced-whitelist-use-configurable-kick-message.patch rename to patches/server/0648-forced-whitelist-use-configurable-kick-message.patch diff --git a/patches/server/0648-Don-t-ignore-result-of-PlayerEditBookEvent.patch b/patches/server/0649-Don-t-ignore-result-of-PlayerEditBookEvent.patch similarity index 100% rename from patches/server/0648-Don-t-ignore-result-of-PlayerEditBookEvent.patch rename to patches/server/0649-Don-t-ignore-result-of-PlayerEditBookEvent.patch diff --git a/patches/server/0649-Entity-load-save-limit-per-chunk.patch b/patches/server/0650-Entity-load-save-limit-per-chunk.patch similarity index 100% rename from patches/server/0649-Entity-load-save-limit-per-chunk.patch rename to patches/server/0650-Entity-load-save-limit-per-chunk.patch diff --git a/patches/server/0650-fix-cancelling-block-falling-causing-client-desync.patch b/patches/server/0651-fix-cancelling-block-falling-causing-client-desync.patch similarity index 100% rename from patches/server/0650-fix-cancelling-block-falling-causing-client-desync.patch rename to patches/server/0651-fix-cancelling-block-falling-causing-client-desync.patch diff --git a/patches/server/0651-Expose-protocol-version.patch b/patches/server/0652-Expose-protocol-version.patch similarity index 100% rename from patches/server/0651-Expose-protocol-version.patch rename to patches/server/0652-Expose-protocol-version.patch diff --git a/patches/server/0652-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch b/patches/server/0653-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch similarity index 100% rename from patches/server/0652-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch rename to patches/server/0653-Allow-for-Component-suggestion-tooltips-in-AsyncTabC.patch diff --git a/patches/server/0653-Enhance-console-tab-completions-for-brigadier-comman.patch b/patches/server/0654-Enhance-console-tab-completions-for-brigadier-comman.patch similarity index 100% rename from patches/server/0653-Enhance-console-tab-completions-for-brigadier-comman.patch rename to patches/server/0654-Enhance-console-tab-completions-for-brigadier-comman.patch diff --git a/patches/server/0654-Fix-PlayerItemConsumeEvent-cancelling-properly.patch b/patches/server/0655-Fix-PlayerItemConsumeEvent-cancelling-properly.patch similarity index 100% rename from patches/server/0654-Fix-PlayerItemConsumeEvent-cancelling-properly.patch rename to patches/server/0655-Fix-PlayerItemConsumeEvent-cancelling-properly.patch diff --git a/patches/server/0655-Add-bypass-host-check.patch b/patches/server/0656-Add-bypass-host-check.patch similarity index 100% rename from patches/server/0655-Add-bypass-host-check.patch rename to patches/server/0656-Add-bypass-host-check.patch diff --git a/patches/server/0656-Set-area-affect-cloud-rotation.patch b/patches/server/0657-Set-area-affect-cloud-rotation.patch similarity index 100% rename from patches/server/0656-Set-area-affect-cloud-rotation.patch rename to patches/server/0657-Set-area-affect-cloud-rotation.patch diff --git a/patches/server/0657-add-isDeeplySleeping-to-HumanEntity.patch b/patches/server/0658-add-isDeeplySleeping-to-HumanEntity.patch similarity index 100% rename from patches/server/0657-add-isDeeplySleeping-to-HumanEntity.patch rename to patches/server/0658-add-isDeeplySleeping-to-HumanEntity.patch diff --git a/patches/server/0658-Fix-duplicating-give-items-on-item-drop-cancel.patch b/patches/server/0659-Fix-duplicating-give-items-on-item-drop-cancel.patch similarity index 100% rename from patches/server/0658-Fix-duplicating-give-items-on-item-drop-cancel.patch rename to patches/server/0659-Fix-duplicating-give-items-on-item-drop-cancel.patch diff --git a/patches/server/0659-add-consumeFuel-to-FurnaceBurnEvent.patch b/patches/server/0660-add-consumeFuel-to-FurnaceBurnEvent.patch similarity index 100% rename from patches/server/0659-add-consumeFuel-to-FurnaceBurnEvent.patch rename to patches/server/0660-add-consumeFuel-to-FurnaceBurnEvent.patch diff --git a/patches/server/0660-add-get-set-drop-chance-to-EntityEquipment.patch b/patches/server/0661-add-get-set-drop-chance-to-EntityEquipment.patch similarity index 100% rename from patches/server/0660-add-get-set-drop-chance-to-EntityEquipment.patch rename to patches/server/0661-add-get-set-drop-chance-to-EntityEquipment.patch diff --git a/patches/server/0661-fix-PigZombieAngerEvent-cancellation.patch b/patches/server/0662-fix-PigZombieAngerEvent-cancellation.patch similarity index 100% rename from patches/server/0661-fix-PigZombieAngerEvent-cancellation.patch rename to patches/server/0662-fix-PigZombieAngerEvent-cancellation.patch diff --git a/patches/server/0662-Fix-checkReach-check-for-Shulker-boxes.patch b/patches/server/0663-Fix-checkReach-check-for-Shulker-boxes.patch similarity index 100% rename from patches/server/0662-Fix-checkReach-check-for-Shulker-boxes.patch rename to patches/server/0663-Fix-checkReach-check-for-Shulker-boxes.patch diff --git a/patches/server/0663-fix-PlayerItemHeldEvent-firing-twice.patch b/patches/server/0664-fix-PlayerItemHeldEvent-firing-twice.patch similarity index 100% rename from patches/server/0663-fix-PlayerItemHeldEvent-firing-twice.patch rename to patches/server/0664-fix-PlayerItemHeldEvent-firing-twice.patch diff --git a/patches/server/0664-Added-PlayerDeepSleepEvent.patch b/patches/server/0665-Added-PlayerDeepSleepEvent.patch similarity index 100% rename from patches/server/0664-Added-PlayerDeepSleepEvent.patch rename to patches/server/0665-Added-PlayerDeepSleepEvent.patch diff --git a/patches/server/0665-More-World-API.patch b/patches/server/0666-More-World-API.patch similarity index 100% rename from patches/server/0665-More-World-API.patch rename to patches/server/0666-More-World-API.patch diff --git a/patches/server/0666-Added-PlayerBedFailEnterEvent.patch b/patches/server/0667-Added-PlayerBedFailEnterEvent.patch similarity index 100% rename from patches/server/0666-Added-PlayerBedFailEnterEvent.patch rename to patches/server/0667-Added-PlayerBedFailEnterEvent.patch diff --git a/patches/server/0667-Implement-methods-to-convert-between-Component-and-B.patch b/patches/server/0668-Implement-methods-to-convert-between-Component-and-B.patch similarity index 100% rename from patches/server/0667-Implement-methods-to-convert-between-Component-and-B.patch rename to patches/server/0668-Implement-methods-to-convert-between-Component-and-B.patch diff --git a/patches/server/0668-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch b/patches/server/0669-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch similarity index 100% rename from patches/server/0668-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch rename to patches/server/0669-Fix-anchor-respawn-acting-as-a-bed-respawn-from-the-.patch diff --git a/patches/server/0669-Introduce-beacon-activation-deactivation-events.patch b/patches/server/0670-Introduce-beacon-activation-deactivation-events.patch similarity index 100% rename from patches/server/0669-Introduce-beacon-activation-deactivation-events.patch rename to patches/server/0670-Introduce-beacon-activation-deactivation-events.patch diff --git a/patches/server/0670-add-RespawnFlags-to-PlayerRespawnEvent.patch b/patches/server/0671-add-RespawnFlags-to-PlayerRespawnEvent.patch similarity index 100% rename from patches/server/0670-add-RespawnFlags-to-PlayerRespawnEvent.patch rename to patches/server/0671-add-RespawnFlags-to-PlayerRespawnEvent.patch diff --git a/patches/server/0671-Add-Channel-initialization-listeners.patch b/patches/server/0672-Add-Channel-initialization-listeners.patch similarity index 100% rename from patches/server/0671-Add-Channel-initialization-listeners.patch rename to patches/server/0672-Add-Channel-initialization-listeners.patch diff --git a/patches/server/0672-Send-empty-commands-if-tab-completion-is-disabled.patch b/patches/server/0673-Send-empty-commands-if-tab-completion-is-disabled.patch similarity index 100% rename from patches/server/0672-Send-empty-commands-if-tab-completion-is-disabled.patch rename to patches/server/0673-Send-empty-commands-if-tab-completion-is-disabled.patch diff --git a/patches/server/0673-Add-more-WanderingTrader-API.patch b/patches/server/0674-Add-more-WanderingTrader-API.patch similarity index 100% rename from patches/server/0673-Add-more-WanderingTrader-API.patch rename to patches/server/0674-Add-more-WanderingTrader-API.patch diff --git a/patches/server/0674-Add-EntityBlockStorage-clearEntities.patch b/patches/server/0675-Add-EntityBlockStorage-clearEntities.patch similarity index 100% rename from patches/server/0674-Add-EntityBlockStorage-clearEntities.patch rename to patches/server/0675-Add-EntityBlockStorage-clearEntities.patch diff --git a/patches/server/0675-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch b/patches/server/0676-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch similarity index 100% rename from patches/server/0675-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch rename to patches/server/0676-Add-Adventure-message-to-PlayerAdvancementDoneEvent.patch diff --git a/patches/server/0676-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch b/patches/server/0677-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch similarity index 100% rename from patches/server/0676-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch rename to patches/server/0677-Add-raw-address-to-AsyncPlayerPreLoginEvent.patch diff --git a/patches/server/0677-Inventory-close.patch b/patches/server/0678-Inventory-close.patch similarity index 100% rename from patches/server/0677-Inventory-close.patch rename to patches/server/0678-Inventory-close.patch diff --git a/patches/server/0678-call-PortalCreateEvent-players-and-end-platform.patch b/patches/server/0679-call-PortalCreateEvent-players-and-end-platform.patch similarity index 100% rename from patches/server/0678-call-PortalCreateEvent-players-and-end-platform.patch rename to patches/server/0679-call-PortalCreateEvent-players-and-end-platform.patch diff --git a/patches/server/0679-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch b/patches/server/0680-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch similarity index 100% rename from patches/server/0679-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch rename to patches/server/0680-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch diff --git a/patches/server/0680-Fix-CraftPotionBrewer-cache.patch b/patches/server/0681-Fix-CraftPotionBrewer-cache.patch similarity index 100% rename from patches/server/0680-Fix-CraftPotionBrewer-cache.patch rename to patches/server/0681-Fix-CraftPotionBrewer-cache.patch diff --git a/patches/server/0681-Add-basic-Datapack-API.patch b/patches/server/0682-Add-basic-Datapack-API.patch similarity index 100% rename from patches/server/0681-Add-basic-Datapack-API.patch rename to patches/server/0682-Add-basic-Datapack-API.patch diff --git a/patches/server/0682-Add-environment-variable-to-disable-server-gui.patch b/patches/server/0683-Add-environment-variable-to-disable-server-gui.patch similarity index 100% rename from patches/server/0682-Add-environment-variable-to-disable-server-gui.patch rename to patches/server/0683-Add-environment-variable-to-disable-server-gui.patch diff --git a/patches/server/0683-additions-to-PlayerGameModeChangeEvent.patch b/patches/server/0684-additions-to-PlayerGameModeChangeEvent.patch similarity index 100% rename from patches/server/0683-additions-to-PlayerGameModeChangeEvent.patch rename to patches/server/0684-additions-to-PlayerGameModeChangeEvent.patch diff --git a/patches/server/0684-Clear-SyncLoadInfo.patch b/patches/server/0685-Clear-SyncLoadInfo.patch similarity index 100% rename from patches/server/0684-Clear-SyncLoadInfo.patch rename to patches/server/0685-Clear-SyncLoadInfo.patch diff --git a/patches/server/0685-ItemStack-repair-check-API.patch b/patches/server/0686-ItemStack-repair-check-API.patch similarity index 100% rename from patches/server/0685-ItemStack-repair-check-API.patch rename to patches/server/0686-ItemStack-repair-check-API.patch diff --git a/patches/server/0686-More-Enchantment-API.patch b/patches/server/0687-More-Enchantment-API.patch similarity index 100% rename from patches/server/0686-More-Enchantment-API.patch rename to patches/server/0687-More-Enchantment-API.patch diff --git a/patches/server/0687-Add-command-line-option-to-load-extra-plugin-jars-no.patch b/patches/server/0688-Add-command-line-option-to-load-extra-plugin-jars-no.patch similarity index 100% rename from patches/server/0687-Add-command-line-option-to-load-extra-plugin-jars-no.patch rename to patches/server/0688-Add-command-line-option-to-load-extra-plugin-jars-no.patch diff --git a/patches/server/0688-Fix-and-optimise-world-force-upgrading.patch b/patches/server/0689-Fix-and-optimise-world-force-upgrading.patch similarity index 100% rename from patches/server/0688-Fix-and-optimise-world-force-upgrading.patch rename to patches/server/0689-Fix-and-optimise-world-force-upgrading.patch diff --git a/patches/server/0689-Add-Mob-lookAt-API.patch b/patches/server/0690-Add-Mob-lookAt-API.patch similarity index 100% rename from patches/server/0689-Add-Mob-lookAt-API.patch rename to patches/server/0690-Add-Mob-lookAt-API.patch diff --git a/patches/server/0690-Add-Unix-domain-socket-support.patch b/patches/server/0691-Add-Unix-domain-socket-support.patch similarity index 100% rename from patches/server/0690-Add-Unix-domain-socket-support.patch rename to patches/server/0691-Add-Unix-domain-socket-support.patch diff --git a/patches/server/0691-Add-EntityInsideBlockEvent.patch b/patches/server/0692-Add-EntityInsideBlockEvent.patch similarity index 100% rename from patches/server/0691-Add-EntityInsideBlockEvent.patch rename to patches/server/0692-Add-EntityInsideBlockEvent.patch diff --git a/patches/server/0692-Attributes-API-for-item-defaults.patch b/patches/server/0693-Attributes-API-for-item-defaults.patch similarity index 100% rename from patches/server/0692-Attributes-API-for-item-defaults.patch rename to patches/server/0693-Attributes-API-for-item-defaults.patch diff --git a/patches/server/0693-Have-CraftMerchantCustom-emit-PlayerPurchaseEvent.patch b/patches/server/0694-Have-CraftMerchantCustom-emit-PlayerPurchaseEvent.patch similarity index 100% rename from patches/server/0693-Have-CraftMerchantCustom-emit-PlayerPurchaseEvent.patch rename to patches/server/0694-Have-CraftMerchantCustom-emit-PlayerPurchaseEvent.patch diff --git a/patches/server/0694-Add-cause-to-Weather-ThunderChangeEvents.patch b/patches/server/0695-Add-cause-to-Weather-ThunderChangeEvents.patch similarity index 98% rename from patches/server/0694-Add-cause-to-Weather-ThunderChangeEvents.patch rename to patches/server/0695-Add-cause-to-Weather-ThunderChangeEvents.patch index 1fd63b7892..23ff3efd16 100644 --- a/patches/server/0694-Add-cause-to-Weather-ThunderChangeEvents.patch +++ b/patches/server/0695-Add-cause-to-Weather-ThunderChangeEvents.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add cause to Weather/ThunderChangeEvents diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index ecfa6089be3f81704a88877357e3aa0cf45ee332..746124647657d0ccfc9d6dc3db3657c05327d6ac 100644 +index b9588496dfc14eff48dddb747396cecc53d2bd44..b3312fa2fd218ffcfaa61d98584003c97fbda4ce 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -425,8 +425,8 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl diff --git a/patches/server/0695-More-Lidded-Block-API.patch b/patches/server/0696-More-Lidded-Block-API.patch similarity index 100% rename from patches/server/0695-More-Lidded-Block-API.patch rename to patches/server/0696-More-Lidded-Block-API.patch diff --git a/patches/server/0696-Limit-item-frame-cursors-on-maps.patch b/patches/server/0697-Limit-item-frame-cursors-on-maps.patch similarity index 100% rename from patches/server/0696-Limit-item-frame-cursors-on-maps.patch rename to patches/server/0697-Limit-item-frame-cursors-on-maps.patch diff --git a/patches/server/0697-Add-PufferFishStateChangeEvent.patch b/patches/server/0698-Add-PufferFishStateChangeEvent.patch similarity index 100% rename from patches/server/0697-Add-PufferFishStateChangeEvent.patch rename to patches/server/0698-Add-PufferFishStateChangeEvent.patch diff --git a/patches/server/0698-Add-PlayerKickEvent-causes.patch b/patches/server/0699-Add-PlayerKickEvent-causes.patch similarity index 100% rename from patches/server/0698-Add-PlayerKickEvent-causes.patch rename to patches/server/0699-Add-PlayerKickEvent-causes.patch diff --git a/patches/server/0699-Fix-PlayerBucketEmptyEvent-result-itemstack.patch b/patches/server/0700-Fix-PlayerBucketEmptyEvent-result-itemstack.patch similarity index 100% rename from patches/server/0699-Fix-PlayerBucketEmptyEvent-result-itemstack.patch rename to patches/server/0700-Fix-PlayerBucketEmptyEvent-result-itemstack.patch diff --git a/patches/server/0700-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch b/patches/server/0701-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch similarity index 100% rename from patches/server/0700-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch rename to patches/server/0701-Synchronize-PalettedContainer-instead-of-ReentrantLo.patch diff --git a/patches/server/0701-Add-option-to-fix-items-merging-through-walls.patch b/patches/server/0702-Add-option-to-fix-items-merging-through-walls.patch similarity index 100% rename from patches/server/0701-Add-option-to-fix-items-merging-through-walls.patch rename to patches/server/0702-Add-option-to-fix-items-merging-through-walls.patch diff --git a/patches/server/0702-Add-BellRevealRaiderEvent.patch b/patches/server/0703-Add-BellRevealRaiderEvent.patch similarity index 100% rename from patches/server/0702-Add-BellRevealRaiderEvent.patch rename to patches/server/0703-Add-BellRevealRaiderEvent.patch diff --git a/patches/server/0703-Fix-invulnerable-end-crystals.patch b/patches/server/0704-Fix-invulnerable-end-crystals.patch similarity index 100% rename from patches/server/0703-Fix-invulnerable-end-crystals.patch rename to patches/server/0704-Fix-invulnerable-end-crystals.patch diff --git a/patches/server/0704-Add-ElderGuardianAppearanceEvent.patch b/patches/server/0705-Add-ElderGuardianAppearanceEvent.patch similarity index 100% rename from patches/server/0704-Add-ElderGuardianAppearanceEvent.patch rename to patches/server/0705-Add-ElderGuardianAppearanceEvent.patch diff --git a/patches/server/0705-Reset-villager-inventory-on-cancelled-pickup-event.patch b/patches/server/0706-Reset-villager-inventory-on-cancelled-pickup-event.patch similarity index 100% rename from patches/server/0705-Reset-villager-inventory-on-cancelled-pickup-event.patch rename to patches/server/0706-Reset-villager-inventory-on-cancelled-pickup-event.patch diff --git a/patches/server/0706-Fix-dangerous-end-portal-logic.patch b/patches/server/0707-Fix-dangerous-end-portal-logic.patch similarity index 100% rename from patches/server/0706-Fix-dangerous-end-portal-logic.patch rename to patches/server/0707-Fix-dangerous-end-portal-logic.patch diff --git a/patches/server/0707-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch b/patches/server/0708-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch similarity index 100% rename from patches/server/0707-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch rename to patches/server/0708-Optimize-Biome-Mob-Lookups-for-Mob-Spawning.patch diff --git a/patches/server/0708-Make-item-validations-configurable.patch b/patches/server/0709-Make-item-validations-configurable.patch similarity index 100% rename from patches/server/0708-Make-item-validations-configurable.patch rename to patches/server/0709-Make-item-validations-configurable.patch diff --git a/patches/server/0709-Add-more-line-of-sight-methods.patch b/patches/server/0710-Add-more-line-of-sight-methods.patch similarity index 100% rename from patches/server/0709-Add-more-line-of-sight-methods.patch rename to patches/server/0710-Add-more-line-of-sight-methods.patch diff --git a/patches/server/0710-add-per-world-spawn-limits.patch b/patches/server/0711-add-per-world-spawn-limits.patch similarity index 100% rename from patches/server/0710-add-per-world-spawn-limits.patch rename to patches/server/0711-add-per-world-spawn-limits.patch diff --git a/patches/server/0711-Fix-PotionSplashEvent-for-water-splash-potions.patch b/patches/server/0712-Fix-PotionSplashEvent-for-water-splash-potions.patch similarity index 100% rename from patches/server/0711-Fix-PotionSplashEvent-for-water-splash-potions.patch rename to patches/server/0712-Fix-PotionSplashEvent-for-water-splash-potions.patch diff --git a/patches/server/0712-Fix-incorrect-status-dataconverter-for-pre-1.13-chun.patch b/patches/server/0713-Fix-incorrect-status-dataconverter-for-pre-1.13-chun.patch similarity index 100% rename from patches/server/0712-Fix-incorrect-status-dataconverter-for-pre-1.13-chun.patch rename to patches/server/0713-Fix-incorrect-status-dataconverter-for-pre-1.13-chun.patch diff --git a/patches/server/0713-Update-oshi-core-dependency.patch b/patches/server/0716-Update-oshi-core-dependency.patch similarity index 89% rename from patches/server/0713-Update-oshi-core-dependency.patch rename to patches/server/0716-Update-oshi-core-dependency.patch index ff5f3d5c62..fcd6657434 100644 --- a/patches/server/0713-Update-oshi-core-dependency.patch +++ b/patches/server/0716-Update-oshi-core-dependency.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Update oshi-core dependency This is fixed in Vanilla 1.17.1, so remove this patch when updating. diff --git a/build.gradle.kts b/build.gradle.kts -index 03521590dfcbb09416097e793fae5951c1ae3cc0..04938bb10c35d2e424043adb7ed8fec2e42bb816 100644 +index cf157f1ee695149057d361e2334efb982a52540f..1053799ea1f654e1885c46d34a145b9d9fd34a21 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -50,6 +50,8 @@ dependencies { diff --git a/patches/server/0716-Deobfuscate-stacktraces-in-log-messages-crash-report.patch b/patches/server/0717-Deobfuscate-stacktraces-in-log-messages-crash-report.patch similarity index 100% rename from patches/server/0716-Deobfuscate-stacktraces-in-log-messages-crash-report.patch rename to patches/server/0717-Deobfuscate-stacktraces-in-log-messages-crash-report.patch diff --git a/patches/server/0717-Missing-Entity-Behavior-API.patch b/patches/server/0718-Missing-Entity-Behavior-API.patch similarity index 100% rename from patches/server/0717-Missing-Entity-Behavior-API.patch rename to patches/server/0718-Missing-Entity-Behavior-API.patch diff --git a/patches/server/0718-Ensure-disconnect-for-book-edit-is-called-on-main.patch b/patches/server/0719-Ensure-disconnect-for-book-edit-is-called-on-main.patch similarity index 100% rename from patches/server/0718-Ensure-disconnect-for-book-edit-is-called-on-main.patch rename to patches/server/0719-Ensure-disconnect-for-book-edit-is-called-on-main.patch diff --git a/patches/server/0719-Add-git-branch-and-commit-to-manifest.patch b/patches/server/0720-Add-git-branch-and-commit-to-manifest.patch similarity index 100% rename from patches/server/0719-Add-git-branch-and-commit-to-manifest.patch rename to patches/server/0720-Add-git-branch-and-commit-to-manifest.patch diff --git a/patches/server/0720-Allow-explosions-under-0-height.patch b/patches/server/0721-Allow-explosions-under-0-height.patch similarity index 100% rename from patches/server/0720-Allow-explosions-under-0-height.patch rename to patches/server/0721-Allow-explosions-under-0-height.patch diff --git a/patches/server/0721-Improve-CraftChunk-getEntities.patch b/patches/server/0722-Improve-CraftChunk-getEntities.patch similarity index 100% rename from patches/server/0721-Improve-CraftChunk-getEntities.patch rename to patches/server/0722-Improve-CraftChunk-getEntities.patch diff --git a/patches/server/0722-Fix-return-value-of-Block-applyBoneMeal-always-being.patch b/patches/server/0723-Fix-return-value-of-Block-applyBoneMeal-always-being.patch similarity index 100% rename from patches/server/0722-Fix-return-value-of-Block-applyBoneMeal-always-being.patch rename to patches/server/0723-Fix-return-value-of-Block-applyBoneMeal-always-being.patch diff --git a/patches/server/0723-Don-t-complete-skull-lookups-on-main-thread-MC-22743.patch b/patches/server/0724-Don-t-complete-skull-lookups-on-main-thread-MC-22743.patch similarity index 100% rename from patches/server/0723-Don-t-complete-skull-lookups-on-main-thread-MC-22743.patch rename to patches/server/0724-Don-t-complete-skull-lookups-on-main-thread-MC-22743.patch diff --git a/patches/server/0724-Backport-MC-229191-ore-distribution-changes.patch b/patches/server/0725-Backport-MC-229191-ore-distribution-changes.patch similarity index 100% rename from patches/server/0724-Backport-MC-229191-ore-distribution-changes.patch rename to patches/server/0725-Backport-MC-229191-ore-distribution-changes.patch diff --git a/patches/server/0725-Use-getChunkIfLoadedImmediately-in-places.patch b/patches/server/0726-Use-getChunkIfLoadedImmediately-in-places.patch similarity index 100% rename from patches/server/0725-Use-getChunkIfLoadedImmediately-in-places.patch rename to patches/server/0726-Use-getChunkIfLoadedImmediately-in-places.patch