diff --git a/patches/server/0009-MC-Utils.patch b/patches/server/0009-MC-Utils.patch index 07be511340..560798b0f5 100644 --- a/patches/server/0009-MC-Utils.patch +++ b/patches/server/0009-MC-Utils.patch @@ -2662,10 +2662,10 @@ index 0000000000000000000000000000000000000000..a5f706d6f716b2a463ae58adcde69d9e +} diff --git a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java new file mode 100644 -index 0000000000000000000000000000000000000000..8a5e93961dac4d87c81c0e70b6f4124a1f1d2556 +index 0000000000000000000000000000000000000000..95eac2e12a16938d81ab512b00e90c5234b42834 --- /dev/null +++ b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java -@@ -0,0 +1,294 @@ +@@ -0,0 +1,295 @@ +package io.papermc.paper.chunk.system; + +import ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor; @@ -2675,6 +2675,7 @@ index 0000000000000000000000000000000000000000..8a5e93961dac4d87c81c0e70b6f4124a +import io.papermc.paper.util.CoordinateUtils; +import net.minecraft.server.level.ChunkHolder; +import net.minecraft.server.level.ChunkMap; ++import net.minecraft.server.level.FullChunkStatus; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.level.TicketType; @@ -2787,7 +2788,7 @@ index 0000000000000000000000000000000000000000..8a5e93961dac4d87c81c0e70b6f4124a + } + + public static void scheduleTickingState(final ServerLevel level, final int chunkX, final int chunkZ, -+ final ChunkHolder.FullChunkStatus toStatus, final boolean addTicket, ++ final FullChunkStatus toStatus, final boolean addTicket, + final PrioritisedExecutor.Priority priority, final Consumer onComplete) { + if (toStatus == ChunkHolder.FullChunkStatus.INACCESSIBLE) { + throw new IllegalArgumentException("Cannot wait for INACCESSIBLE status"); diff --git a/patches/server/0019-Rewrite-chunk-system.patch b/patches/server/0019-Rewrite-chunk-system.patch index a51942bebb..ee161f439c 100644 --- a/patches/server/0019-Rewrite-chunk-system.patch +++ b/patches/server/0019-Rewrite-chunk-system.patch @@ -2500,10 +2500,10 @@ index 0000000000000000000000000000000000000000..562630db2cf5f923bf5b611b828a365e + } +} diff --git a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java -index 8a5e93961dac4d87c81c0e70b6f4124a1f1d2556..97edd4e8d3524c839a1765b6515deacae112ff4b 100644 +index 95eac2e12a16938d81ab512b00e90c5234b42834..8f7bf1f0400aeab8b7801d113d244d0716c5eb84 100644 --- a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java +++ b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java -@@ -31,191 +31,41 @@ public final class ChunkSystem { +@@ -32,191 +32,41 @@ public final class ChunkSystem { } public static void scheduleChunkTask(final ServerLevel level, final int chunkX, final int chunkZ, final Runnable run, final PrioritisedExecutor.Priority priority) { @@ -2599,7 +2599,7 @@ index 8a5e93961dac4d87c81c0e70b6f4124a1f1d2556..97edd4e8d3524c839a1765b6515deaca } public static void scheduleTickingState(final ServerLevel level, final int chunkX, final int chunkZ, - final ChunkHolder.FullChunkStatus toStatus, final boolean addTicket, + final FullChunkStatus toStatus, final boolean addTicket, final PrioritisedExecutor.Priority priority, final Consumer onComplete) { - if (toStatus == ChunkHolder.FullChunkStatus.INACCESSIBLE) { - throw new IllegalArgumentException("Cannot wait for INACCESSIBLE status"); @@ -2704,7 +2704,7 @@ index 8a5e93961dac4d87c81c0e70b6f4124a1f1d2556..97edd4e8d3524c839a1765b6515deaca } public static boolean hasAnyChunkHolders(final ServerLevel level) { -@@ -269,23 +119,15 @@ public final class ChunkSystem { +@@ -270,23 +120,15 @@ public final class ChunkSystem { } public static int getSendViewDistance(final ServerPlayer player) { @@ -4156,10 +4156,10 @@ index 0000000000000000000000000000000000000000..48bfee5b9db501fcdba4ddb1e4bff271 +} diff --git a/src/main/java/io/papermc/paper/chunk/system/entity/EntityLookup.java b/src/main/java/io/papermc/paper/chunk/system/entity/EntityLookup.java new file mode 100644 -index 0000000000000000000000000000000000000000..61c170555c8854b102c640b0b6a615f9f732edbf +index 0000000000000000000000000000000000000000..82ccaf612548a7dbab7e5aeffb6eb8db84367477 --- /dev/null +++ b/src/main/java/io/papermc/paper/chunk/system/entity/EntityLookup.java -@@ -0,0 +1,839 @@ +@@ -0,0 +1,840 @@ +package io.papermc.paper.chunk.system.entity; + +import com.destroystokyo.paper.util.maplist.EntityList; @@ -4182,6 +4182,7 @@ index 0000000000000000000000000000000000000000..61c170555c8854b102c640b0b6a615f9 +import net.minecraft.world.level.entity.EntityInLevelCallback; +import net.minecraft.world.level.entity.EntityTypeTest; +import net.minecraft.world.level.entity.LevelCallback; ++import net.minecraft.server.level.FullChunkStatus; +import net.minecraft.world.level.entity.LevelEntityGetter; +import net.minecraft.world.level.entity.Visibility; +import net.minecraft.world.phys.AABB; @@ -4462,7 +4463,7 @@ index 0000000000000000000000000000000000000000..61c170555c8854b102c640b0b6a615f9 + } + } + -+ public void chunkStatusChange(final int x, final int z, final ChunkHolder.FullChunkStatus newStatus) { ++ public void chunkStatusChange(final int x, final int z, final FullChunkStatus newStatus) { + this.getChunk(x, z).updateStatus(newStatus, this); + } + @@ -4492,8 +4493,8 @@ index 0000000000000000000000000000000000000000..61c170555c8854b102c640b0b6a615f9 + if (entity.isAlwaysTicking()) { + return Visibility.TICKING; + } -+ final ChunkHolder.FullChunkStatus entityStatus = entity.chunkStatus; -+ return Visibility.fromFullChunkStatus(entityStatus == null ? ChunkHolder.FullChunkStatus.INACCESSIBLE : entityStatus); ++ final FullChunkStatus entityStatus = entity.chunkStatus; ++ return Visibility.fromFullChunkStatus(entityStatus == null ? FullChunkStatus.INACCESSIBLE : entityStatus); + } + + private boolean addEntity(final Entity entity, final boolean fromDisk) { @@ -4649,7 +4650,7 @@ index 0000000000000000000000000000000000000000..61c170555c8854b102c640b0b6a615f9 + for (int currZ = minZ; currZ <= maxZ; ++currZ) { + for (int currX = minX; currX <= maxX; ++currX) { + final ChunkEntitySlices chunk = region.get(currX | (currZ << REGION_SHIFT)); -+ if (chunk == null || !chunk.status.isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) { ++ if (chunk == null || !chunk.status.isOrAfter(FullChunkStatus.FULL)) { + continue; + } + @@ -4688,7 +4689,7 @@ index 0000000000000000000000000000000000000000..61c170555c8854b102c640b0b6a615f9 + for (int currZ = minZ; currZ <= maxZ; ++currZ) { + for (int currX = minX; currX <= maxX; ++currX) { + final ChunkEntitySlices chunk = region.get(currX | (currZ << REGION_SHIFT)); -+ if (chunk == null || !chunk.status.isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) { ++ if (chunk == null || !chunk.status.isOrAfter(FullChunkStatus.FULL)) { + continue; + } + @@ -4727,7 +4728,7 @@ index 0000000000000000000000000000000000000000..61c170555c8854b102c640b0b6a615f9 + for (int currZ = minZ; currZ <= maxZ; ++currZ) { + for (int currX = minX; currX <= maxX; ++currX) { + final ChunkEntitySlices chunk = region.get(currX | (currZ << REGION_SHIFT)); -+ if (chunk == null || !chunk.status.isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) { ++ if (chunk == null || !chunk.status.isOrAfter(FullChunkStatus.FULL)) { + continue; + } + @@ -4767,7 +4768,7 @@ index 0000000000000000000000000000000000000000..61c170555c8854b102c640b0b6a615f9 + for (int currZ = minZ; currZ <= maxZ; ++currZ) { + for (int currX = minX; currX <= maxX; ++currX) { + final ChunkEntitySlices chunk = region.get(currX | (currZ << REGION_SHIFT)); -+ if (chunk == null || !chunk.status.isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) { ++ if (chunk == null || !chunk.status.isOrAfter(FullChunkStatus.FULL)) { + continue; + } + @@ -4807,7 +4808,7 @@ index 0000000000000000000000000000000000000000..61c170555c8854b102c640b0b6a615f9 + for (int currZ = minZ; currZ <= maxZ; ++currZ) { + for (int currX = minX; currX <= maxX; ++currX) { + final ChunkEntitySlices chunk = region.get(currX | (currZ << REGION_SHIFT)); -+ if (chunk == null || !chunk.status.isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) { ++ if (chunk == null || !chunk.status.isOrAfter(FullChunkStatus.FULL)) { + continue; + } + @@ -6994,10 +6995,10 @@ index 0000000000000000000000000000000000000000..300700477ee34bc22b31315825c0e40f +} diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java new file mode 100644 -index 0000000000000000000000000000000000000000..718c1dd7b52fb9a501d552fdbcb3f9ff79d127d8 +index 0000000000000000000000000000000000000000..4054bf71486734d722a6a3c7b0b4638188798609 --- /dev/null +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java -@@ -0,0 +1,1371 @@ +@@ -0,0 +1,1373 @@ +package io.papermc.paper.chunk.system.scheduling; + +import ca.spottedleaf.concurrentutil.collection.MultiThreadedQueue; @@ -7027,7 +7028,9 @@ index 0000000000000000000000000000000000000000..718c1dd7b52fb9a501d552fdbcb3f9ff +import io.papermc.paper.chunk.system.ChunkSystem; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ChunkHolder; ++import net.minecraft.server.level.ChunkLevel; +import net.minecraft.server.level.ChunkMap; ++import net.minecraft.server.level.FullChunkStatus; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.Ticket; +import net.minecraft.server.level.TicketType; @@ -7061,7 +7064,7 @@ index 0000000000000000000000000000000000000000..718c1dd7b52fb9a501d552fdbcb3f9ff + public static final int FULL_LOADED_TICKET_LEVEL = 33; + public static final int BLOCK_TICKING_TICKET_LEVEL = 32; + public static final int ENTITY_TICKING_TICKET_LEVEL = 31; -+ public static final int MAX_TICKET_LEVEL = ChunkMap.MAX_CHUNK_DISTANCE; // inclusive ++ public static final int MAX_TICKET_LEVEL = ChunkLevel.MAX_LEVEL; // inclusive + + private static final long NO_TIMEOUT_MARKER = -1L; + @@ -7190,13 +7193,13 @@ index 0000000000000000000000000000000000000000..718c1dd7b52fb9a501d552fdbcb3f9ff + ++autoSaved; + } + -+ if (holder.getChunkStatus().isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) { ++ if (holder.getChunkStatus().isOrAfter(FullChunkStatus.FULL)) { + reschedule.add(holder); + } + } + + for (final NewChunkHolder holder : reschedule) { -+ if (holder.getChunkStatus().isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) { ++ if (holder.getChunkStatus().isOrAfter(FullChunkStatus.FULL)) { + this.autoSaveQueue.add(holder); + } + } @@ -7293,7 +7296,7 @@ index 0000000000000000000000000000000000000000..718c1dd7b52fb9a501d552fdbcb3f9ff + // and the levels we get out of the propagator + + public static int convertBetweenTicketLevels(final int level) { -+ return ChunkMap.MAX_CHUNK_DISTANCE - level + 1; ++ return ChunkLevel.MAX_LEVEL - level + 1; + } + + public boolean hasTickets() { @@ -7353,7 +7356,7 @@ index 0000000000000000000000000000000000000000..718c1dd7b52fb9a501d552fdbcb3f9ff + } + + protected final void updateTicketLevel(final long coordinate, final int ticketLevel) { -+ if (ticketLevel > ChunkMap.MAX_CHUNK_DISTANCE) { ++ if (ticketLevel > ChunkLevel.MAX_LEVEL) { + this.ticketLevelPropagator.removeSource(coordinate); + } else { + this.ticketLevelPropagator.setSource(coordinate, convertBetweenTicketLevels(ticketLevel)); @@ -9158,20 +9161,22 @@ index 0000000000000000000000000000000000000000..322675a470eacbf0e5452f4009c643f2 +} diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java new file mode 100644 -index 0000000000000000000000000000000000000000..d2bb266a5ed344507058778a94a8a4dcac61ba17 +index 0000000000000000000000000000000000000000..39411cc2e4af6edf767cc06bbca8335b2c744abc --- /dev/null +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java -@@ -0,0 +1,770 @@ +@@ -0,0 +1,774 @@ +package io.papermc.paper.chunk.system.scheduling; + +import ca.spottedleaf.concurrentutil.executor.standard.PrioritisedExecutor; +import ca.spottedleaf.concurrentutil.executor.standard.PrioritisedThreadPool; ++import ca.spottedleaf.concurrentutil.executor.standard.PrioritisedThreadedTaskQueue; +import ca.spottedleaf.concurrentutil.util.ConcurrentUtil; +import com.mojang.logging.LogUtils; +import io.papermc.paper.chunk.system.scheduling.queue.RadiusAwarePrioritisedExecutor; +import io.papermc.paper.configuration.GlobalConfiguration; +import io.papermc.paper.util.CoordinateUtils; +import io.papermc.paper.util.TickThread; ++import java.util.function.BooleanSupplier; +import net.minecraft.CrashReport; +import net.minecraft.CrashReportCategory; +import net.minecraft.ReportedException; @@ -9179,12 +9184,14 @@ index 0000000000000000000000000000000000000000..d2bb266a5ed344507058778a94a8a4dc +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ChunkHolder; +import net.minecraft.server.level.ChunkMap; ++import net.minecraft.server.level.FullChunkStatus; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.TicketType; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.ChunkStatus; +import net.minecraft.world.level.chunk.LevelChunk; ++import org.bukkit.Bukkit; +import org.slf4j.Logger; +import java.io.File; +import java.util.ArrayDeque; @@ -9420,7 +9427,7 @@ index 0000000000000000000000000000000000000000..d2bb266a5ed344507058778a94a8a4dc + + private final AtomicLong chunkLoadCounter = new AtomicLong(); + -+ public void scheduleTickingState(final int chunkX, final int chunkZ, final ChunkHolder.FullChunkStatus toStatus, ++ public void scheduleTickingState(final int chunkX, final int chunkZ, final FullChunkStatus toStatus, + final boolean addTicket, final PrioritisedExecutor.Priority priority, + final Consumer onComplete) { + if (!TickThread.isTickThread()) { @@ -9436,7 +9443,7 @@ index 0000000000000000000000000000000000000000..d2bb266a5ed344507058778a94a8a4dc + throw new IllegalStateException("Cannot schedule chunk loading recursively"); + } + -+ if (toStatus == ChunkHolder.FullChunkStatus.INACCESSIBLE) { ++ if (toStatus == FullChunkStatus.INACCESSIBLE) { + throw new IllegalArgumentException("Cannot wait for INACCESSIBLE status"); + } + @@ -9475,7 +9482,7 @@ index 0000000000000000000000000000000000000000..d2bb266a5ed344507058778a94a8a4dc + scheduled = false; + chunk = null; + } else { -+ final ChunkHolder.FullChunkStatus currStatus = chunkHolder.getChunkStatus(); ++ final FullChunkStatus currStatus = chunkHolder.getChunkStatus(); + if (currStatus.isOrAfter(toStatus)) { + scheduled = false; + chunk = (LevelChunk)chunkHolder.getCurrentChunk(); @@ -9552,7 +9559,7 @@ index 0000000000000000000000000000000000000000..d2bb266a5ed344507058778a94a8a4dc + } + + if (toStatus == ChunkStatus.FULL) { -+ this.scheduleTickingState(chunkX, chunkZ, ChunkHolder.FullChunkStatus.BORDER, addTicket, priority, (Consumer)onComplete); ++ this.scheduleTickingState(chunkX, chunkZ, FullChunkStatus.FULL, addTicket, priority, (Consumer)onComplete); + return; + } + @@ -10904,10 +10911,10 @@ index 0000000000000000000000000000000000000000..396d72c00e47cf1669ae20dc839c1c96 +} diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java new file mode 100644 -index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea6ab71129 +index 0000000000000000000000000000000000000000..72c813e1d359486fe8d6776aa82986586b8022f5 --- /dev/null +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/NewChunkHolder.java -@@ -0,0 +1,2099 @@ +@@ -0,0 +1,2100 @@ +package io.papermc.paper.chunk.system.scheduling; + +import ca.spottedleaf.concurrentutil.completable.Completable; @@ -10933,6 +10940,7 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ChunkHolder; +import net.minecraft.server.level.ChunkMap; ++import net.minecraft.server.level.FullChunkStatus; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.TicketType; +import net.minecraft.world.entity.Entity; @@ -11994,58 +12002,58 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + // upper 16 bits are pending status, lower 16 bits are current status + private volatile long chunkStatus; + private static final long PENDING_STATUS_MASK = Long.MIN_VALUE >> 31; -+ private static final ChunkHolder.FullChunkStatus[] CHUNK_STATUS_BY_ID = ChunkHolder.FullChunkStatus.values(); ++ private static final FullChunkStatus[] CHUNK_STATUS_BY_ID = FullChunkStatus.values(); + private static final VarHandle CHUNK_STATUS_HANDLE = ConcurrentUtil.getVarHandle(NewChunkHolder.class, "chunkStatus", long.class); + -+ public static ChunkHolder.FullChunkStatus getCurrentChunkStatus(final long encoded) { ++ public static FullChunkStatus getCurrentChunkStatus(final long encoded) { + return CHUNK_STATUS_BY_ID[(int)encoded]; + } + -+ public static ChunkHolder.FullChunkStatus getPendingChunkStatus(final long encoded) { ++ public static FullChunkStatus getPendingChunkStatus(final long encoded) { + return CHUNK_STATUS_BY_ID[(int)(encoded >>> 32)]; + } + -+ public ChunkHolder.FullChunkStatus getChunkStatus() { ++ public FullChunkStatus getChunkStatus() { + return getCurrentChunkStatus(((long)CHUNK_STATUS_HANDLE.getVolatile((NewChunkHolder)this))); + } + + public boolean isEntityTickingReady() { -+ return this.getChunkStatus().isOrAfter(ChunkHolder.FullChunkStatus.ENTITY_TICKING); ++ return this.getChunkStatus().isOrAfter(FullChunkStatus.ENTITY_TICKING); + } + + public boolean isTickingReady() { -+ return this.getChunkStatus().isOrAfter(ChunkHolder.FullChunkStatus.TICKING); ++ return this.getChunkStatus().isOrAfter(FullChunkStatus.BLOCK_TICKING); + } + + public boolean isFullChunkReady() { -+ return this.getChunkStatus().isOrAfter(ChunkHolder.FullChunkStatus.BORDER); ++ return this.getChunkStatus().isOrAfter(FullChunkStatus.FULL); + } + -+ private static ChunkHolder.FullChunkStatus getStatusForBitset(final long bitset) { ++ private static FullChunkStatus getStatusForBitset(final long bitset) { + if (areNeighboursFullLoaded(bitset, 2)) { -+ return ChunkHolder.FullChunkStatus.ENTITY_TICKING; ++ return FullChunkStatus.ENTITY_TICKING; + } else if (areNeighboursFullLoaded(bitset, 1)) { -+ return ChunkHolder.FullChunkStatus.TICKING; ++ return FullChunkStatus.BLOCK_TICKING; + } else if (areNeighboursFullLoaded(bitset, 0)) { -+ return ChunkHolder.FullChunkStatus.BORDER; ++ return FullChunkStatus.FULL; + } else { -+ return ChunkHolder.FullChunkStatus.INACCESSIBLE; ++ return FullChunkStatus.INACCESSIBLE; + } + } + + // note: only while updating ticket level, so holds ticket update lock + scheduling lock -+ protected final boolean onTicketUpdate(final ChunkHolder.FullChunkStatus oldState, final ChunkHolder.FullChunkStatus newState) { ++ protected final boolean onTicketUpdate(final FullChunkStatus oldState, final FullChunkStatus newState) { + if (oldState == newState) { + return false; + } + + // preserve border request after full status complete, as it does not set anything in the bitset -+ ChunkHolder.FullChunkStatus byNeighbours = getStatusForBitset(this.fullNeighbourChunksLoadedBitset); -+ if (byNeighbours == ChunkHolder.FullChunkStatus.INACCESSIBLE && newState.isOrAfter(ChunkHolder.FullChunkStatus.BORDER) && this.currentGenStatus == ChunkStatus.FULL) { -+ byNeighbours = ChunkHolder.FullChunkStatus.BORDER; ++ FullChunkStatus byNeighbours = getStatusForBitset(this.fullNeighbourChunksLoadedBitset); ++ if (byNeighbours == FullChunkStatus.INACCESSIBLE && newState.isOrAfter(FullChunkStatus.FULL) && this.currentGenStatus == ChunkStatus.FULL) { ++ byNeighbours = FullChunkStatus.FULL; + } + -+ final ChunkHolder.FullChunkStatus toSet; ++ final FullChunkStatus toSet; + + if (newState.isOrAfter(byNeighbours)) { + // must clamp to neighbours level, even though we have the ticket level @@ -12077,9 +12085,9 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + } + + protected final boolean onNeighbourChange(final long bitsetBefore, final long bitsetAfter) { -+ ChunkHolder.FullChunkStatus oldState = getStatusForBitset(bitsetBefore); -+ ChunkHolder.FullChunkStatus newState = getStatusForBitset(bitsetAfter); -+ final ChunkHolder.FullChunkStatus currStateTicketLevel = ChunkHolder.getFullChunkStatus(this.oldTicketLevel); ++ FullChunkStatus oldState = getStatusForBitset(bitsetBefore); ++ FullChunkStatus newState = getStatusForBitset(bitsetAfter); ++ final FullChunkStatus currStateTicketLevel = ChunkHolder.getFullChunkStatus(this.oldTicketLevel); + if (oldState.isOrAfter(currStateTicketLevel)) { + oldState = currStateTicketLevel; + } @@ -12087,8 +12095,8 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + newState = currStateTicketLevel; + } + // preserve border request after full status complete, as it does not set anything in the bitset -+ if (newState == ChunkHolder.FullChunkStatus.INACCESSIBLE && currStateTicketLevel.isOrAfter(ChunkHolder.FullChunkStatus.BORDER) && this.currentGenStatus == ChunkStatus.FULL) { -+ newState = ChunkHolder.FullChunkStatus.BORDER; ++ if (newState == FullChunkStatus.INACCESSIBLE && currStateTicketLevel.isOrAfter(FullChunkStatus.FULL) && this.currentGenStatus == ChunkStatus.FULL) { ++ newState = FullChunkStatus.FULL; + } + + if (oldState == newState) { @@ -12110,13 +12118,13 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + } + + private boolean queueBorderFullStatus(final boolean loaded, final List changedFullStatus) { -+ final ChunkHolder.FullChunkStatus toStatus = loaded ? ChunkHolder.FullChunkStatus.BORDER : ChunkHolder.FullChunkStatus.INACCESSIBLE; ++ final FullChunkStatus toStatus = loaded ? FullChunkStatus.FULL : FullChunkStatus.INACCESSIBLE; + + int failures = 0; + for (long curr = (long)CHUNK_STATUS_HANDLE.getVolatile((NewChunkHolder)this);;) { -+ final ChunkHolder.FullChunkStatus currPending = getPendingChunkStatus(curr); -+ if (loaded && currPending != ChunkHolder.FullChunkStatus.INACCESSIBLE) { -+ throw new IllegalStateException("Expected " + ChunkHolder.FullChunkStatus.INACCESSIBLE + " for pending, but got " + currPending); ++ final FullChunkStatus currPending = getPendingChunkStatus(curr); ++ if (loaded && currPending != FullChunkStatus.INACCESSIBLE) { ++ throw new IllegalStateException("Expected " + FullChunkStatus.INACCESSIBLE + " for pending, but got " + currPending); + } + + final long update = (curr & ~PENDING_STATUS_MASK) | ((long)toStatus.ordinal() << 32); @@ -12153,7 +12161,7 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + } + } + -+ private ChunkHolder.FullChunkStatus updateCurrentState(final ChunkHolder.FullChunkStatus to) { ++ private FullChunkStatus updateCurrentState(final FullChunkStatus to) { + int failures = 0; + for (long curr = (long)CHUNK_STATUS_HANDLE.getVolatile((NewChunkHolder)this);;) { + final long update = (curr & PENDING_STATUS_MASK) | (long)to.ordinal(); @@ -12168,7 +12176,7 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + } + } + -+ private void changeEntityChunkStatus(final ChunkHolder.FullChunkStatus toStatus) { ++ private void changeEntityChunkStatus(final FullChunkStatus toStatus) { + this.world.getEntityLookup().chunkStatusChange(this.chunkX, this.chunkZ, toStatus); + } + @@ -12211,10 +12219,10 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + try { + for (;;) { + final long currStateEncoded = (long)CHUNK_STATUS_HANDLE.getOpaque((NewChunkHolder)this); -+ final ChunkHolder.FullChunkStatus currState = getCurrentChunkStatus(currStateEncoded); -+ ChunkHolder.FullChunkStatus nextState = getPendingChunkStatus(currStateEncoded); ++ final FullChunkStatus currState = getCurrentChunkStatus(currStateEncoded); ++ FullChunkStatus nextState = getPendingChunkStatus(currStateEncoded); + if (currState == nextState) { -+ if (nextState == ChunkHolder.FullChunkStatus.INACCESSIBLE) { ++ if (nextState == FullChunkStatus.INACCESSIBLE) { + this.scheduler.schedulingLock.lock(); + try { + this.checkUnload(); @@ -12235,47 +12243,47 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + // of the chunk system load callbacks are invoked + if (nextState.isOrAfter(currState)) { + // state upgrade -+ if (!currState.isOrAfter(ChunkHolder.FullChunkStatus.BORDER) && nextState.isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) { -+ nextState = this.updateCurrentState(ChunkHolder.FullChunkStatus.BORDER); ++ if (!currState.isOrAfter(FullChunkStatus.FULL) && nextState.isOrAfter(FullChunkStatus.FULL)) { ++ nextState = this.updateCurrentState(FullChunkStatus.FULL); + holderManager.ensureInAutosave(this); + chunk.pushChunkIntoLoadedMap(); -+ this.changeEntityChunkStatus(ChunkHolder.FullChunkStatus.BORDER); ++ this.changeEntityChunkStatus(FullChunkStatus.FULL); + chunk.onChunkLoad(this); + this.onFullChunkLoadChange(true, changedFullStatus); -+ this.completeFullStatusConsumers(ChunkHolder.FullChunkStatus.BORDER, chunk); ++ this.completeFullStatusConsumers(FullChunkStatus.FULL, chunk); + } + -+ if (!currState.isOrAfter(ChunkHolder.FullChunkStatus.TICKING) && nextState.isOrAfter(ChunkHolder.FullChunkStatus.TICKING)) { -+ nextState = this.updateCurrentState(ChunkHolder.FullChunkStatus.TICKING); -+ this.changeEntityChunkStatus(ChunkHolder.FullChunkStatus.TICKING); ++ if (!currState.isOrAfter(FullChunkStatus.BLOCK_TICKING) && nextState.isOrAfter(FullChunkStatus.BLOCK_TICKING)) { ++ nextState = this.updateCurrentState(FullChunkStatus.BLOCK_TICKING); ++ this.changeEntityChunkStatus(FullChunkStatus.BLOCK_TICKING); + chunk.onChunkTicking(this); -+ this.completeFullStatusConsumers(ChunkHolder.FullChunkStatus.TICKING, chunk); ++ this.completeFullStatusConsumers(FullChunkStatus.BLOCK_TICKING, chunk); + } + -+ if (!currState.isOrAfter(ChunkHolder.FullChunkStatus.ENTITY_TICKING) && nextState.isOrAfter(ChunkHolder.FullChunkStatus.ENTITY_TICKING)) { -+ nextState = this.updateCurrentState(ChunkHolder.FullChunkStatus.ENTITY_TICKING); -+ this.changeEntityChunkStatus(ChunkHolder.FullChunkStatus.ENTITY_TICKING); ++ if (!currState.isOrAfter(FullChunkStatus.ENTITY_TICKING) && nextState.isOrAfter(FullChunkStatus.ENTITY_TICKING)) { ++ nextState = this.updateCurrentState(FullChunkStatus.ENTITY_TICKING); ++ this.changeEntityChunkStatus(FullChunkStatus.ENTITY_TICKING); + chunk.onChunkEntityTicking(this); -+ this.completeFullStatusConsumers(ChunkHolder.FullChunkStatus.ENTITY_TICKING, chunk); ++ this.completeFullStatusConsumers(FullChunkStatus.ENTITY_TICKING, chunk); + } + } else { -+ if (currState.isOrAfter(ChunkHolder.FullChunkStatus.ENTITY_TICKING) && !nextState.isOrAfter(ChunkHolder.FullChunkStatus.ENTITY_TICKING)) { -+ this.changeEntityChunkStatus(ChunkHolder.FullChunkStatus.TICKING); ++ if (currState.isOrAfter(FullChunkStatus.ENTITY_TICKING) && !nextState.isOrAfter(FullChunkStatus.ENTITY_TICKING)) { ++ this.changeEntityChunkStatus(FullChunkStatus.BLOCK_TICKING); + chunk.onChunkNotEntityTicking(this); -+ nextState = this.updateCurrentState(ChunkHolder.FullChunkStatus.TICKING); ++ nextState = this.updateCurrentState(FullChunkStatus.BLOCK_TICKING); + } + -+ if (currState.isOrAfter(ChunkHolder.FullChunkStatus.TICKING) && !nextState.isOrAfter(ChunkHolder.FullChunkStatus.TICKING)) { -+ this.changeEntityChunkStatus(ChunkHolder.FullChunkStatus.BORDER); ++ if (currState.isOrAfter(FullChunkStatus.BLOCK_TICKING) && !nextState.isOrAfter(FullChunkStatus.BLOCK_TICKING)) { ++ this.changeEntityChunkStatus(FullChunkStatus.FULL); + chunk.onChunkNotTicking(this); -+ nextState = this.updateCurrentState(ChunkHolder.FullChunkStatus.BORDER); ++ nextState = this.updateCurrentState(FullChunkStatus.FULL); + } + -+ if (currState.isOrAfter(ChunkHolder.FullChunkStatus.BORDER) && !nextState.isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) { ++ if (currState.isOrAfter(FullChunkStatus.FULL) && !nextState.isOrAfter(FullChunkStatus.FULL)) { + this.onFullChunkLoadChange(false, changedFullStatus); -+ this.changeEntityChunkStatus(ChunkHolder.FullChunkStatus.INACCESSIBLE); ++ this.changeEntityChunkStatus(FullChunkStatus.INACCESSIBLE); + chunk.onChunkUnload(this); -+ nextState = this.updateCurrentState(ChunkHolder.FullChunkStatus.INACCESSIBLE); ++ nextState = this.updateCurrentState(FullChunkStatus.INACCESSIBLE); + } + } + @@ -12357,17 +12365,17 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + }, PrioritisedExecutor.Priority.HIGHEST); + } + -+ private final Reference2ObjectOpenHashMap>> fullStatusWaiters = new Reference2ObjectOpenHashMap<>(); ++ private final Reference2ObjectOpenHashMap>> fullStatusWaiters = new Reference2ObjectOpenHashMap<>(); + -+ void addFullStatusConsumer(final ChunkHolder.FullChunkStatus status, final Consumer consumer) { -+ this.fullStatusWaiters.computeIfAbsent(status, (final ChunkHolder.FullChunkStatus keyInMap) -> { ++ void addFullStatusConsumer(final FullChunkStatus status, final Consumer consumer) { ++ this.fullStatusWaiters.computeIfAbsent(status, (final FullChunkStatus keyInMap) -> { + return new ArrayList<>(4); + }).add(consumer); + } + -+ private void completeFullStatusConsumers(ChunkHolder.FullChunkStatus status, final LevelChunk chunk) { ++ private void completeFullStatusConsumers(FullChunkStatus status, final LevelChunk chunk) { + // need to tell future statuses to complete if cancelled -+ final ChunkHolder.FullChunkStatus max = CHUNK_STATUS_BY_ID[CHUNK_STATUS_BY_ID.length - 1]; ++ final FullChunkStatus max = CHUNK_STATUS_BY_ID[CHUNK_STATUS_BY_ID.length - 1]; + + for (;;) { + this.completeFullStatusConsumers0(status, chunk); @@ -12378,7 +12386,7 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + } + } + -+ private void completeFullStatusConsumers0(final ChunkHolder.FullChunkStatus status, final LevelChunk chunk) { ++ private void completeFullStatusConsumers0(final FullChunkStatus status, final LevelChunk chunk) { + final List> consumers; + consumers = this.fullStatusWaiters.remove(status); + @@ -12525,7 +12533,7 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + this.lockPriority(); + // must use oldTicketLevel, we hold the schedule lock but not the ticket level lock + // however, schedule lock needs to be held for ticket level callback, so we're fine here -+ if (ChunkHolder.getFullChunkStatus(this.oldTicketLevel).isOrAfter(ChunkHolder.FullChunkStatus.BORDER)) { ++ if (ChunkHolder.getFullChunkStatus(this.oldTicketLevel).isOrAfter(FullChunkStatus.FULL)) { + this.queueBorderFullStatus(true, changedLoadStatus); + } + } @@ -12884,8 +12892,8 @@ index 0000000000000000000000000000000000000000..efc9b7a304f10b6a23a36cffb0a4aaea + final long chunkStatus = this.chunkStatus; + final int fullChunkStatus = (int)chunkStatus; + final int pendingChunkStatus = (int)(chunkStatus >>> 32); -+ final ChunkHolder.FullChunkStatus currentFullStatus = fullChunkStatus < 0 || fullChunkStatus >= CHUNK_STATUS_BY_ID.length ? null : CHUNK_STATUS_BY_ID[fullChunkStatus]; -+ final ChunkHolder.FullChunkStatus pendingFullStatus = pendingChunkStatus < 0 || pendingChunkStatus >= CHUNK_STATUS_BY_ID.length ? null : CHUNK_STATUS_BY_ID[pendingChunkStatus]; ++ final FullChunkStatus currentFullStatus = fullChunkStatus < 0 || fullChunkStatus >= CHUNK_STATUS_BY_ID.length ? null : CHUNK_STATUS_BY_ID[fullChunkStatus]; ++ final FullChunkStatus pendingFullStatus = pendingChunkStatus < 0 || pendingChunkStatus >= CHUNK_STATUS_BY_ID.length ? null : CHUNK_STATUS_BY_ID[pendingChunkStatus]; + return "NewChunkHolder{" + + "world=" + this.world.getWorld().getName() + + ", chunkX=" + this.chunkX + @@ -14509,10 +14517,10 @@ index d59885ee9c8b29d5bac34dce0597e345e5358c77..fc57850b80303fcade89ca95794f6391 } diff --git a/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java b/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java new file mode 100644 -index 0000000000000000000000000000000000000000..f597d65d56964297eeeed6c7e77703764178fee0 +index 0000000000000000000000000000000000000000..ce449b7b6f615f2c8240e4207f06d4e54ae0083e --- /dev/null +++ b/src/main/java/io/papermc/paper/world/ChunkEntitySlices.java -@@ -0,0 +1,601 @@ +@@ -0,0 +1,602 @@ +package io.papermc.paper.world; + +import com.destroystokyo.paper.util.maplist.EntityList; @@ -14522,6 +14530,7 @@ index 0000000000000000000000000000000000000000..f597d65d56964297eeeed6c7e7770376 +import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ChunkHolder; ++import net.minecraft.server.level.FullChunkStatus; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; @@ -14552,7 +14561,7 @@ index 0000000000000000000000000000000000000000..f597d65d56964297eeeed6c7e7770376 + protected final Reference2ObjectOpenHashMap, EntityCollectionBySection> entitiesByClass; + protected final EntityList entities = new EntityList(); + -+ public ChunkHolder.FullChunkStatus status; ++ public FullChunkStatus status; + + protected boolean isTransient; + @@ -14566,7 +14575,7 @@ index 0000000000000000000000000000000000000000..f597d65d56964297eeeed6c7e7770376 + + // TODO implement container search optimisations + -+ public ChunkEntitySlices(final ServerLevel world, final int chunkX, final int chunkZ, final ChunkHolder.FullChunkStatus status, ++ public ChunkEntitySlices(final ServerLevel world, final int chunkX, final int chunkZ, final FullChunkStatus status, + final int minSection, final int maxSection) { // inclusive, inclusive + this.minSection = minSection; + this.maxSection = maxSection; @@ -14694,7 +14703,7 @@ index 0000000000000000000000000000000000000000..f597d65d56964297eeeed6c7e7770376 + this.preventStatusUpdates = prev; + } + -+ public void updateStatus(final ChunkHolder.FullChunkStatus status, final EntityLookup lookup) { ++ public void updateStatus(final FullChunkStatus status, final EntityLookup lookup) { + this.status = status; + + final Entity[] entities = this.entities.getRawData(); @@ -15382,7 +15391,7 @@ index 51eac8b7177db66c005e4eaca689cf96d10edeaa..4f55f04812fe0306acfc4be45189f1f6 } diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java -index 4620e64d8eb81520b75fbfbc64603e5887c7b016..4b87f5d899e5ac033d78ccdbca21c9c50c46dcef 100644 +index 4620e64d8eb81520b75fbfbc64603e5887c7b016..84e4aea3d44cd7d5405ffc970a0568337ee5b0a7 100644 --- a/src/main/java/net/minecraft/server/level/ChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java @@ -48,17 +48,15 @@ public class ChunkHolder { @@ -15391,7 +15400,7 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..4b87f5d899e5ac033d78ccdbca21c9c5 private static final List CHUNK_STATUSES = ChunkStatus.getStatusList(); - private final AtomicReferenceArray>> futures; + // Paper - rewrite chunk system -+ private static final ChunkHolder.FullChunkStatus[] FULL_CHUNK_STATUSES = ChunkHolder.FullChunkStatus.values(); ++ private static final FullChunkStatus[] FULL_CHUNK_STATUSES = FullChunkStatus.values(); + private static final int BLOCKS_BEFORE_RESEND_FUDGE = 64; + // Paper - rewrite chunk system private final LevelHeightAccessor levelHeightAccessor; @@ -15792,8 +15801,8 @@ index 4620e64d8eb81520b75fbfbc64603e5887c7b016..4b87f5d899e5ac033d78ccdbca21c9c5 - public void setTicketLevel(int level) { - this.ticketLevel = level; -+ public static ChunkHolder.FullChunkStatus getFullChunkStatus(int distance) { -+ return ChunkHolder.FULL_CHUNK_STATUSES[Mth.clamp(33 - distance + 1, 0, ChunkHolder.FULL_CHUNK_STATUSES.length - 1)]; ++ public static FullChunkStatus getFullChunkStatus(int distance) { ++ return ChunkHolder.FULL_CHUNK_STATUSES[net.minecraft.util.Mth.clamp(33 - distance + 1, 0, ChunkHolder.FULL_CHUNK_STATUSES.length - 1)]; } - private void scheduleFullChunkPromotion(ChunkMap playerchunkmap, CompletableFuture> completablefuture, Executor executor, FullChunkStatus fullchunkstatus) { @@ -18728,7 +18737,7 @@ index 12e72ad737b1219fcdf88d344d41621d9fd5feec..e0bfeebeaac1aaea64bc07cdfdf7790e if (flag1) { ++this.converted; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f668a80c6bff67bf766207985c1af73f09e1bd1c..7f6a90fab14d6880f2784e1c62eb2f3c9da404b5 100644 +index f668a80c6bff67bf766207985c1af73f09e1bd1c..eac86eb8b1b0175c0d84230176cf5fffb23a7ea8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -327,6 +327,58 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { @@ -18778,7 +18787,7 @@ index f668a80c6bff67bf766207985c1af73f09e1bd1c..7f6a90fab14d6880f2784e1c62eb2f3c + return this.hardCollides; + } + -+ public net.minecraft.server.level.ChunkHolder.FullChunkStatus chunkStatus; ++ public net.minecraft.server.level.FullChunkStatus chunkStatus; + + public int sectionX = Integer.MIN_VALUE; + public int sectionY = Integer.MIN_VALUE; diff --git a/patches/server/0033-Entity-Origin-API.patch b/patches/server/0033-Entity-Origin-API.patch index 620d912727..3d635f0485 100644 --- a/patches/server/0033-Entity-Origin-API.patch +++ b/patches/server/0033-Entity-Origin-API.patch @@ -25,7 +25,7 @@ index 62a95a0fac59683948f34b202e6e3859b6652d6d..d47e99ac96e622296d045cfcf93b53dd public void onTrackingEnd(Entity entity) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7f6a90fab14d6880f2784e1c62eb2f3c9da404b5..193b466e5dc52b9ecc878c4a680f88b8ce05e632 100644 +index eac86eb8b1b0175c0d84230176cf5fffb23a7ea8..4a5bb3615797ac03050cd1dc469612b24288e995 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -312,7 +312,27 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0035-Configurable-top-of-nether-void-damage.patch b/patches/server/0035-Configurable-top-of-nether-void-damage.patch index 3f3e08458d..5b0e832a7d 100644 --- a/patches/server/0035-Configurable-top-of-nether-void-damage.patch +++ b/patches/server/0035-Configurable-top-of-nether-void-damage.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Configurable top of nether void damage Co-authored-by: Jake Potrebic diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 193b466e5dc52b9ecc878c4a680f88b8ce05e632..3088cdbb55b3054394fd3405797539f58a46f70c 100644 +index 4a5bb3615797ac03050cd1dc469612b24288e995..e48e42d7029dcb45a999433542719cfdd353d6fe 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -715,7 +715,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0057-Add-configurable-portal-search-radius.patch b/patches/server/0057-Add-configurable-portal-search-radius.patch index 4666a75e15..9513465390 100644 --- a/patches/server/0057-Add-configurable-portal-search-radius.patch +++ b/patches/server/0057-Add-configurable-portal-search-radius.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add configurable portal search radius diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3088cdbb55b3054394fd3405797539f58a46f70c..756b8be27488c81172fe05fa0361ef3866f99bee 100644 +index e48e42d7029dcb45a999433542719cfdd353d6fe..5a72cd0ac9073b29db532f3b60d8e1ac2a3f3932 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3174,7 +3174,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0062-Disable-Scoreboards-for-non-players-by-default.patch b/patches/server/0062-Disable-Scoreboards-for-non-players-by-default.patch index 9fe22804ea..27a52f75cc 100644 --- a/patches/server/0062-Disable-Scoreboards-for-non-players-by-default.patch +++ b/patches/server/0062-Disable-Scoreboards-for-non-players-by-default.patch @@ -11,7 +11,7 @@ So avoid looking up scoreboards and short circuit to the "not on a team" logic which is most likely to be true. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 756b8be27488c81172fe05fa0361ef3866f99bee..194c0f9e8b537d415d7cdedf9cd5d4870b60fb08 100644 +index 5a72cd0ac9073b29db532f3b60d8e1ac2a3f3932..a42e71e2dde3c5dd2d7864f58cb9901fd1d5b6b7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2805,6 +2805,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0074-Use-a-Shared-Random-for-Entities.patch b/patches/server/0074-Use-a-Shared-Random-for-Entities.patch index b6820a110f..441359808d 100644 --- a/patches/server/0074-Use-a-Shared-Random-for-Entities.patch +++ b/patches/server/0074-Use-a-Shared-Random-for-Entities.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Use a Shared Random for Entities Reduces memory usage and provides ensures more randomness, Especially since a lot of garbage entity objects get created. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 194c0f9e8b537d415d7cdedf9cd5d4870b60fb08..3f8b0124e5c2a01f1cf3a344b8dd4075817cb001 100644 +index a42e71e2dde3c5dd2d7864f58cb9901fd1d5b6b7..324d8f5697d840291fb3052b59a8c4620f5ca2ab 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -162,6 +162,79 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0095-LootTable-API-Replenishable-Lootables-Feature.patch b/patches/server/0095-LootTable-API-Replenishable-Lootables-Feature.patch index 3232d21e93..0175a523ad 100644 --- a/patches/server/0095-LootTable-API-Replenishable-Lootables-Feature.patch +++ b/patches/server/0095-LootTable-API-Replenishable-Lootables-Feature.patch @@ -490,7 +490,7 @@ index 0000000000000000000000000000000000000000..9cfa5d36a6991067a3866e0d437749fa + } +} diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3f8b0124e5c2a01f1cf3a344b8dd4075817cb001..f331c9ff4cc341c981515210d3f4bd92faa8fdc9 100644 +index 324d8f5697d840291fb3052b59a8c4620f5ca2ab..a47fca185b839a4ffb7070fcd436c03319ce5bcd 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -235,6 +235,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0126-Don-t-allow-entities-to-ride-themselves-572.patch b/patches/server/0126-Don-t-allow-entities-to-ride-themselves-572.patch index 5782de9ec6..9dbd5a0f30 100644 --- a/patches/server/0126-Don-t-allow-entities-to-ride-themselves-572.patch +++ b/patches/server/0126-Don-t-allow-entities-to-ride-themselves-572.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Don't allow entities to ride themselves - #572 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f331c9ff4cc341c981515210d3f4bd92faa8fdc9..9dcdfeaa4be508a5f59a0fae54494e743e13caf7 100644 +index a47fca185b839a4ffb7070fcd436c03319ce5bcd..37ee25336b180e3830b8cfe2aa374ddd1b766a37 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2537,6 +2537,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0128-Cap-Entity-Collisions.patch b/patches/server/0128-Cap-Entity-Collisions.patch index 6034a3cf3d..b0c6a64db7 100644 --- a/patches/server/0128-Cap-Entity-Collisions.patch +++ b/patches/server/0128-Cap-Entity-Collisions.patch @@ -12,7 +12,7 @@ just as it does in Vanilla, but entity pushing logic will be capped. You can set this to 0 to disable collisions. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9dcdfeaa4be508a5f59a0fae54494e743e13caf7..d0d4e1e24aa518a258bdc66046ff44f03649ee84 100644 +index 37ee25336b180e3830b8cfe2aa374ddd1b766a37..b0156ae16f6828a4a0f4320a01d6dd47ab09058f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -387,6 +387,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0145-Entity-fromMobSpawner.patch b/patches/server/0145-Entity-fromMobSpawner.patch index 7c225ff609..176b1c8667 100644 --- a/patches/server/0145-Entity-fromMobSpawner.patch +++ b/patches/server/0145-Entity-fromMobSpawner.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity#fromMobSpawner() diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d0d4e1e24aa518a258bdc66046ff44f03649ee84..68db2023ae7cc07ffbee0aee05f010991c2167ad 100644 +index b0156ae16f6828a4a0f4320a01d6dd47ab09058f..f9b795a4fe2b7e1802c2fc6c7f8905d787ccc600 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -388,6 +388,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0210-Implement-EntityKnockbackByEntityEvent-and-EntityPus.patch b/patches/server/0210-Implement-EntityKnockbackByEntityEvent-and-EntityPus.patch index ad4af07917..76fa069998 100644 --- a/patches/server/0210-Implement-EntityKnockbackByEntityEvent-and-EntityPus.patch +++ b/patches/server/0210-Implement-EntityKnockbackByEntityEvent-and-EntityPus.patch @@ -9,7 +9,7 @@ Co-authored-by: aerulion This event is called when an entity receives knockback by another entity. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 68db2023ae7cc07ffbee0aee05f010991c2167ad..46658e1a607af5831caa4b61b1a7e0434e8ab603 100644 +index f9b795a4fe2b7e1802c2fc6c7f8905d787ccc600..88ae93a011b46d59bb731195ac607c1a17cfdfa9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1894,8 +1894,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0220-add-more-information-to-Entity.toString.patch b/patches/server/0220-add-more-information-to-Entity.toString.patch index 47c766af24..44e0f6c1b4 100644 --- a/patches/server/0220-add-more-information-to-Entity.toString.patch +++ b/patches/server/0220-add-more-information-to-Entity.toString.patch @@ -6,7 +6,7 @@ Subject: [PATCH] add more information to Entity.toString() UUID, ticks lived, valid, dead diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 46658e1a607af5831caa4b61b1a7e0434e8ab603..5887ddef705e8da4154311a0e1b44f8a80e0c079 100644 +index 88ae93a011b46d59bb731195ac607c1a17cfdfa9..15ad72d1cf64bd65f0e38562937c8fede5d6a054 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3148,7 +3148,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0236-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch b/patches/server/0236-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch index bf5513220a..7e6181fa53 100644 --- a/patches/server/0236-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch +++ b/patches/server/0236-Add-Debug-Entities-option-to-debug-dupe-uuid-issues.patch @@ -72,7 +72,7 @@ index 0dd9b622f652cc67e365032a948df4c40c315a80..203dcc314b20a427a827eabc1713dc3a return false; } else { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5887ddef705e8da4154311a0e1b44f8a80e0c079..dd2d79f12f3a9e108da360a818ad87846d6326d7 100644 +index 15ad72d1cf64bd65f0e38562937c8fede5d6a054..040ffbaa7c7f5b05e2af5a32f28cc943526fb1b0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -238,6 +238,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0285-force-entity-dismount-during-teleportation.patch b/patches/server/0285-force-entity-dismount-during-teleportation.patch index eed3ffd1f0..3b10a8dc8e 100644 --- a/patches/server/0285-force-entity-dismount-during-teleportation.patch +++ b/patches/server/0285-force-entity-dismount-during-teleportation.patch @@ -20,7 +20,7 @@ this is going to be the best soultion all around. Improvements/suggestions welcome! diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index dd2d79f12f3a9e108da360a818ad87846d6326d7..90de2e4e398c8454ad02f95fcbc303c9ab98c9d8 100644 +index 040ffbaa7c7f5b05e2af5a32f28cc943526fb1b0..8e08e7989fe6b249dfb55c2180fd6f79576f5b72 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2542,11 +2542,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0301-Entity-getEntitySpawnReason.patch b/patches/server/0301-Entity-getEntitySpawnReason.patch index 9bcae865df..ca058c9d85 100644 --- a/patches/server/0301-Entity-getEntitySpawnReason.patch +++ b/patches/server/0301-Entity-getEntitySpawnReason.patch @@ -47,7 +47,7 @@ index 13d19946c5051ec876698626dcea18c28e47ff19..110cb6ca8abe4fa1b07dc69004cd4377 }); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 90de2e4e398c8454ad02f95fcbc303c9ab98c9d8..2d7b8dcd5db2ac32d398d59bca479dafe002e671 100644 +index 8e08e7989fe6b249dfb55c2180fd6f79576f5b72..37c2b12ae045847dea05cda9c6790018d4011fd2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -234,6 +234,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0328-Duplicate-UUID-Resolve-Option.patch b/patches/server/0328-Duplicate-UUID-Resolve-Option.patch index 600864270e..3a2fd55e74 100644 --- a/patches/server/0328-Duplicate-UUID-Resolve-Option.patch +++ b/patches/server/0328-Duplicate-UUID-Resolve-Option.patch @@ -33,10 +33,10 @@ But for those who are ok with leaving this inconsistent behavior, you may use WA It is recommended you regenerate the entities, as these were legit entities, and deserve your love. diff --git a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java -index 97edd4e8d3524c839a1765b6515deacae112ff4b..1f72755124302fc3f6b5685b85ad9d44bc8010e8 100644 +index 8f7bf1f0400aeab8b7801d113d244d0716c5eb84..fccb8d7a99bef076838ebefa233f2f00a1364c30 100644 --- a/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java +++ b/src/main/java/io/papermc/paper/chunk/system/ChunkSystem.java -@@ -73,7 +73,17 @@ public final class ChunkSystem { +@@ -74,7 +74,17 @@ public final class ChunkSystem { } public static void onEntityPreAdd(final ServerLevel level, final Entity entity) { diff --git a/patches/server/0336-Entity-Activation-Range-2.0.patch b/patches/server/0336-Entity-Activation-Range-2.0.patch index d371498f64..0649dba1a6 100644 --- a/patches/server/0336-Entity-Activation-Range-2.0.patch +++ b/patches/server/0336-Entity-Activation-Range-2.0.patch @@ -112,7 +112,7 @@ index 15fdb6d6307bad251be9272d44bea9fbad90e55f..826634d50d8d537b01c1cfa545e82c92 } else { passenger.stopRiding(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2d7b8dcd5db2ac32d398d59bca479dafe002e671..5220fd92c0cf84a6b4f233561eb7447027079319 100644 +index 37c2b12ae045847dea05cda9c6790018d4011fd2..631be6012d0fd7a5a52910aba64c03c68027d9c0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -390,6 +390,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0339-Fix-items-vanishing-through-end-portal.patch b/patches/server/0339-Fix-items-vanishing-through-end-portal.patch index 30e5da063e..48d6bfe5ea 100644 --- a/patches/server/0339-Fix-items-vanishing-through-end-portal.patch +++ b/patches/server/0339-Fix-items-vanishing-through-end-portal.patch @@ -13,7 +13,7 @@ Quickly loading the exact world spawn chunk before searching the heightmap resolves the issue without having to load all spawn chunks. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5220fd92c0cf84a6b4f233561eb7447027079319..714d724a9a1c3c4f915dc5f5882be1dc6fecd404 100644 +index 631be6012d0fd7a5a52910aba64c03c68027d9c0..9169a388f87bcbd8fd99235fe16c1ba26f9ace33 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3353,6 +3353,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0348-Add-option-to-nerf-pigmen-from-nether-portals.patch b/patches/server/0348-Add-option-to-nerf-pigmen-from-nether-portals.patch index 53a8b783a2..724cd8c488 100644 --- a/patches/server/0348-Add-option-to-nerf-pigmen-from-nether-portals.patch +++ b/patches/server/0348-Add-option-to-nerf-pigmen-from-nether-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to nerf pigmen from nether portals diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 714d724a9a1c3c4f915dc5f5882be1dc6fecd404..ec2d15356774b34bbc6d9eb9c5b2c085e27848ae 100644 +index 9169a388f87bcbd8fd99235fe16c1ba26f9ace33..4016a25357d59a8b8a6cc7e098d050aee7cc9a6c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -392,6 +392,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0365-Optimize-Collision-to-not-load-chunks.patch b/patches/server/0365-Optimize-Collision-to-not-load-chunks.patch index 38a66bad16..92572d4997 100644 --- a/patches/server/0365-Optimize-Collision-to-not-load-chunks.patch +++ b/patches/server/0365-Optimize-Collision-to-not-load-chunks.patch @@ -26,7 +26,7 @@ index 9bfbd2ca9d70ac25fa86e35217289cbc9f09c199..16982a16639a07e31456aa1e27c1058f entityplayer1.setPos(entityplayer1.getX(), entityplayer1.getY() + 1.0D, entityplayer1.getZ()); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ec2d15356774b34bbc6d9eb9c5b2c085e27848ae..3a652296716a327943c334d10fd52a086250c75f 100644 +index 4016a25357d59a8b8a6cc7e098d050aee7cc9a6c..9d59bf4b66b66e73360ce20949f0bfacaf025760 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -237,6 +237,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0377-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch b/patches/server/0377-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch index 384dde6a3e..f4e8782fb9 100644 --- a/patches/server/0377-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch +++ b/patches/server/0377-Move-player-to-spawn-point-if-spawn-in-unloaded-worl.patch @@ -7,7 +7,7 @@ The code following this has better support for null worlds to move them back to the world spawn. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3a652296716a327943c334d10fd52a086250c75f..32aa93c30ef64a1bfdadec9ff79473dd9eac47dd 100644 +index 9d59bf4b66b66e73360ce20949f0bfacaf025760..0c755d9e594a95b60253f6f720d41ec9f398e9f4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2319,9 +2319,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0381-Fix-numerous-item-duplication-issues-and-teleport-is.patch b/patches/server/0381-Fix-numerous-item-duplication-issues-and-teleport-is.patch index 62221c20a0..9747769658 100644 --- a/patches/server/0381-Fix-numerous-item-duplication-issues-and-teleport-is.patch +++ b/patches/server/0381-Fix-numerous-item-duplication-issues-and-teleport-is.patch @@ -16,7 +16,7 @@ So even if something NEW comes up, it would be impossible to drop the same item twice because the source was destroyed. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 32aa93c30ef64a1bfdadec9ff79473dd9eac47dd..6854c5a07f1f899aabe58bf33b2def2762678d23 100644 +index 0c755d9e594a95b60253f6f720d41ec9f398e9f4..caeb6896cc2e297e43d7161bd7bbde1222fc4480 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2449,11 +2449,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0416-Ensure-Entity-AABB-s-are-never-invalid.patch b/patches/server/0416-Ensure-Entity-AABB-s-are-never-invalid.patch index 81e8201128..e7462f0d5a 100644 --- a/patches/server/0416-Ensure-Entity-AABB-s-are-never-invalid.patch +++ b/patches/server/0416-Ensure-Entity-AABB-s-are-never-invalid.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ensure Entity AABB's are never invalid diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6854c5a07f1f899aabe58bf33b2def2762678d23..324c205f0e895511034c1f985863a87e0975a272 100644 +index caeb6896cc2e297e43d7161bd7bbde1222fc4480..4ac82c68294fce60079b4d3a6eddda7d26d3ce86 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -688,8 +688,8 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0463-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch b/patches/server/0463-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch index d1181391b2..f273144a51 100644 --- a/patches/server/0463-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch +++ b/patches/server/0463-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch @@ -31,7 +31,7 @@ index 600758b91ed8197ef615368e1ef5315dfa9666c6..e178effe00488139a250937a17144f77 } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 324c205f0e895511034c1f985863a87e0975a272..0dd174071f9ef9412a9b4dc5af9aefaa581ec46d 100644 +index 4ac82c68294fce60079b4d3a6eddda7d26d3ce86..6bf424563eb27023a4a489d5b8d0a8d8895726a0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -158,6 +158,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0467-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch b/patches/server/0467-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch index 4d85a2c899..73b5cd7974 100644 --- a/patches/server/0467-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch +++ b/patches/server/0467-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Expose the Entity Counter to allow plugins to use valid and diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0dd174071f9ef9412a9b4dc5af9aefaa581ec46d..b2cfd1e59f5f8fe81a8bdfd1a1891420c2bc778f 100644 +index 6bf424563eb27023a4a489d5b8d0a8d8895726a0..ef8073268fb99f12a93000f8e475aeaa5b21a8d2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4411,4 +4411,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0469-Entity-isTicking.patch b/patches/server/0469-Entity-isTicking.patch index 84db93ab32..7225f2ff2e 100644 --- a/patches/server/0469-Entity-isTicking.patch +++ b/patches/server/0469-Entity-isTicking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity#isTicking diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b2cfd1e59f5f8fe81a8bdfd1a1891420c2bc778f..e92c817cbe7d45a1f000f3365131995b368744e3 100644 +index ef8073268fb99f12a93000f8e475aeaa5b21a8d2..0e2330f70900c6b98b3bfecf8e2be6f8788dbcf0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4416,5 +4416,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0498-Climbing-should-not-bypass-cramming-gamerule.patch b/patches/server/0498-Climbing-should-not-bypass-cramming-gamerule.patch index b817ce6fb6..7ce228683b 100644 --- a/patches/server/0498-Climbing-should-not-bypass-cramming-gamerule.patch +++ b/patches/server/0498-Climbing-should-not-bypass-cramming-gamerule.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Climbing should not bypass cramming gamerule diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e92c817cbe7d45a1f000f3365131995b368744e3..31f47c6edbed52d31eba0d51b39bdb4c89cfffc9 100644 +index 0e2330f70900c6b98b3bfecf8e2be6f8788dbcf0..dbe9223233fdd6b3a2d3f03ce0ca7811983508ea 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2016,6 +2016,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0511-MC-4-Fix-item-position-desync.patch b/patches/server/0511-MC-4-Fix-item-position-desync.patch index 8942228017..5b0ed7f5dc 100644 --- a/patches/server/0511-MC-4-Fix-item-position-desync.patch +++ b/patches/server/0511-MC-4-Fix-item-position-desync.patch @@ -28,7 +28,7 @@ index 5ca3ad7b3d7606accd0a58b3c708fadb349608f7..4b6e0fe2fabcc55007fd8979e81f66df public Vec3 decode(long x, long y, long z) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 31f47c6edbed52d31eba0d51b39bdb4c89cfffc9..95517820247467e21e503347310a3c44480ec63c 100644 +index dbe9223233fdd6b3a2d3f03ce0ca7811983508ea..04a67c91a65fa0b4d1680e18b4b88e18e74f8da1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4199,6 +4199,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0537-Collision-option-for-requiring-a-player-participant.patch b/patches/server/0537-Collision-option-for-requiring-a-player-participant.patch index 84580a0f13..67a7f05240 100644 --- a/patches/server/0537-Collision-option-for-requiring-a-player-participant.patch +++ b/patches/server/0537-Collision-option-for-requiring-a-player-participant.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Collision option for requiring a player participant diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 95517820247467e21e503347310a3c44480ec63c..56a7cca5ac9e7f1b600efaf6f23e40903bf741cc 100644 +index 04a67c91a65fa0b4d1680e18b4b88e18e74f8da1..f1d5f4d1d3b699e91c664462ccf554c7e4ce4b0b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1886,6 +1886,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0623-Fix-dangerous-end-portal-logic.patch b/patches/server/0623-Fix-dangerous-end-portal-logic.patch index 9f74c45025..0c691a196c 100644 --- a/patches/server/0623-Fix-dangerous-end-portal-logic.patch +++ b/patches/server/0623-Fix-dangerous-end-portal-logic.patch @@ -11,7 +11,7 @@ Move the tick logic into the post tick, where portaling was designed to happen in the first place. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 56a7cca5ac9e7f1b600efaf6f23e40903bf741cc..b15fed51ee86290cb1e5bbb58c3ad2dc80c0cb08 100644 +index f1d5f4d1d3b699e91c664462ccf554c7e4ce4b0b..814955a922af1a9bd979d9f62c027f3883bcec42 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -482,6 +482,36 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0656-Optimize-indirect-passenger-iteration.patch b/patches/server/0656-Optimize-indirect-passenger-iteration.patch index 74a2aed0f1..3e85f510e2 100644 --- a/patches/server/0656-Optimize-indirect-passenger-iteration.patch +++ b/patches/server/0656-Optimize-indirect-passenger-iteration.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Optimize indirect passenger iteration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b15fed51ee86290cb1e5bbb58c3ad2dc80c0cb08..ed58ede6a929ec635e01d91cec04972b50c5c04f 100644 +index 814955a922af1a9bd979d9f62c027f3883bcec42..90b9ae45baf10eef998df4dbef3d8f328aa4ae04 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3860,20 +3860,34 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0665-Add-back-EntityPortalExitEvent.patch b/patches/server/0665-Add-back-EntityPortalExitEvent.patch index 1bdbc9d6b7..5d73e6cdc5 100644 --- a/patches/server/0665-Add-back-EntityPortalExitEvent.patch +++ b/patches/server/0665-Add-back-EntityPortalExitEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add back EntityPortalExitEvent diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ed58ede6a929ec635e01d91cec04972b50c5c04f..4978e5779edd7bc66e297bca89a87b9f3b3f991f 100644 +index 90b9ae45baf10eef998df4dbef3d8f328aa4ae04..dc96497fd06be1ba4f7b154db4832014fd64ad84 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3307,6 +3307,23 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0676-Add-Raw-Byte-Entity-Serialization.patch b/patches/server/0676-Add-Raw-Byte-Entity-Serialization.patch index e370ae24f2..ed10ee36a3 100644 --- a/patches/server/0676-Add-Raw-Byte-Entity-Serialization.patch +++ b/patches/server/0676-Add-Raw-Byte-Entity-Serialization.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add Raw Byte Entity Serialization diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4978e5779edd7bc66e297bca89a87b9f3b3f991f..fe750fd202f9a2a02f07752a11b1a4a8368afa5e 100644 +index dc96497fd06be1ba4f7b154db4832014fd64ad84..81996be21aeaaf390dd8d5a7969f56c200c66c75 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2105,6 +2105,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0685-Optimize-anyPlayerCloseEnoughForSpawning-to-use-dist.patch b/patches/server/0685-Optimize-anyPlayerCloseEnoughForSpawning-to-use-dist.patch index c5fba4edcb..074eb59fa2 100644 --- a/patches/server/0685-Optimize-anyPlayerCloseEnoughForSpawning-to-use-dist.patch +++ b/patches/server/0685-Optimize-anyPlayerCloseEnoughForSpawning-to-use-dist.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimize anyPlayerCloseEnoughForSpawning to use distance maps Use a distance map to find the players in range quickly diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java -index 4b87f5d899e5ac033d78ccdbca21c9c50c46dcef..b705545ecaef9203ef2ff067ed947ad4aa86dc89 100644 +index 84e4aea3d44cd7d5405ffc970a0568337ee5b0a7..e7c81056e9f4da0f89cf411afd446444bb40958c 100644 --- a/src/main/java/net/minecraft/server/level/ChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java @@ -86,16 +86,29 @@ public class ChunkHolder { diff --git a/patches/server/0686-Optimise-chunk-tick-iteration.patch b/patches/server/0686-Optimise-chunk-tick-iteration.patch index 4857a6e559..764c7adeae 100644 --- a/patches/server/0686-Optimise-chunk-tick-iteration.patch +++ b/patches/server/0686-Optimise-chunk-tick-iteration.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Optimise chunk tick iteration Use a dedicated list of entity ticking chunks to reduce the cost diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java -index b705545ecaef9203ef2ff067ed947ad4aa86dc89..3914fae62d3e0c0a9aeb8fd2bd48e76889c25a3a 100644 +index e7c81056e9f4da0f89cf411afd446444bb40958c..ec0419e2d895d08d4ba069c98f994839d9da6a05 100644 --- a/src/main/java/net/minecraft/server/level/ChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java @@ -91,6 +91,11 @@ public class ChunkHolder { diff --git a/patches/server/0690-Detail-more-information-in-watchdog-dumps.patch b/patches/server/0690-Detail-more-information-in-watchdog-dumps.patch index 8197773cfb..7b29783f58 100644 --- a/patches/server/0690-Detail-more-information-in-watchdog-dumps.patch +++ b/patches/server/0690-Detail-more-information-in-watchdog-dumps.patch @@ -122,7 +122,7 @@ index 418bf659d31c5810d786064a76779cfa39943020..f8bcf1239c18a6334936cec483f2ae31 private void tickPassenger(Entity vehicle, Entity passenger) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index fe750fd202f9a2a02f07752a11b1a4a8368afa5e..6b428686941a7fd6644ca1d08ca14e8bb3cef54b 100644 +index 81996be21aeaaf390dd8d5a7969f56c200c66c75..4652f5b25bab9d6f44e1481aea47cf42fe381a07 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -991,7 +991,42 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0692-Distance-manager-tick-timings.patch b/patches/server/0692-Distance-manager-tick-timings.patch index 0979a62834..898d2c8806 100644 --- a/patches/server/0692-Distance-manager-tick-timings.patch +++ b/patches/server/0692-Distance-manager-tick-timings.patch @@ -19,10 +19,10 @@ index efbf77024d235d8af9f7efc938c17afd76a51b0c..670dcfa32d003870091b75937f1603a5 public static final Timing midTickChunkTasks = Timings.ofSafe("Mid Tick Chunk Tasks"); diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java -index 718c1dd7b52fb9a501d552fdbcb3f9ff79d127d8..3ea7a4b8de338610399d5fe4ff6cf07251916448 100644 +index 4054bf71486734d722a6a3c7b0b4638188798609..ae0c01539e068e2cc851d2ad52baccf5ebc9545f 100644 --- a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java -@@ -1080,7 +1080,9 @@ public final class ChunkHolderManager { +@@ -1082,7 +1082,9 @@ public final class ChunkHolderManager { } public boolean processTicketUpdates() { diff --git a/patches/server/0706-Optimise-nearby-player-lookups.patch b/patches/server/0706-Optimise-nearby-player-lookups.patch index f4eb0cfd1d..7cbacdd7c8 100644 --- a/patches/server/0706-Optimise-nearby-player-lookups.patch +++ b/patches/server/0706-Optimise-nearby-player-lookups.patch @@ -9,7 +9,7 @@ since the penalty of a map lookup could outweigh the benefits of searching less players (as it basically did in the outside range patch). diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java -index 3914fae62d3e0c0a9aeb8fd2bd48e76889c25a3a..25f983442b844465bde333131972d15df8e14415 100644 +index ec0419e2d895d08d4ba069c98f994839d9da6a05..ed6a7cd6874e6692c60c5faedd2a86ef9c9425ed 100644 --- a/src/main/java/net/minecraft/server/level/ChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java @@ -96,6 +96,12 @@ public class ChunkHolder { diff --git a/patches/server/0721-Update-head-rotation-in-missing-places.patch b/patches/server/0721-Update-head-rotation-in-missing-places.patch index f0f3a534a2..7de5c23590 100644 --- a/patches/server/0721-Update-head-rotation-in-missing-places.patch +++ b/patches/server/0721-Update-head-rotation-in-missing-places.patch @@ -8,7 +8,7 @@ This is because bukkit uses a separate head rotation field for yaw. This issue only applies to players. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6b428686941a7fd6644ca1d08ca14e8bb3cef54b..6349845508772092ac91919063a97c6d605d2a64 100644 +index 4652f5b25bab9d6f44e1481aea47cf42fe381a07..8ec9177c328695932d7e768f3a6d8dab736f4f32 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1870,6 +1870,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0730-don-t-attempt-to-teleport-dead-entities.patch b/patches/server/0730-don-t-attempt-to-teleport-dead-entities.patch index bdc7e2e2b2..e5451fbdc1 100644 --- a/patches/server/0730-don-t-attempt-to-teleport-dead-entities.patch +++ b/patches/server/0730-don-t-attempt-to-teleport-dead-entities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] don't attempt to teleport dead entities diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6349845508772092ac91919063a97c6d605d2a64..19fe9bc6f4eafb18f8f215a24d8bcd52627cabf0 100644 +index 8ec9177c328695932d7e768f3a6d8dab736f4f32..a3d13ab12fecee4b110f1018c8614ed1de81fe35 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -754,7 +754,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0742-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch b/patches/server/0742-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch index 6462f64d9f..3d781067e8 100644 --- a/patches/server/0742-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch +++ b/patches/server/0742-Highly-optimise-single-and-multi-AABB-VoxelShapes-an.patch @@ -1215,7 +1215,7 @@ index 5f957a28e9d30144f724ebdc581d5f0b80bf6dc1..23ab7960120c1e2a76880f634787a089 } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 19fe9bc6f4eafb18f8f215a24d8bcd52627cabf0..84686bb4938d40771a578b475d34b2528bd4fadf 100644 +index a3d13ab12fecee4b110f1018c8614ed1de81fe35..22f43e41b0df81097c241606c7b76586134b8eac 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1177,9 +1177,44 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0748-Forward-CraftEntity-in-teleport-command.patch b/patches/server/0748-Forward-CraftEntity-in-teleport-command.patch index 9f2743f0ec..671aa75d31 100644 --- a/patches/server/0748-Forward-CraftEntity-in-teleport-command.patch +++ b/patches/server/0748-Forward-CraftEntity-in-teleport-command.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Forward CraftEntity in teleport command diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 84686bb4938d40771a578b475d34b2528bd4fadf..70b9ce108506b636fe33885664806ba8313d15fc 100644 +index 22f43e41b0df81097c241606c7b76586134b8eac..539f90c550b48b868e926249b1c19902cec11718 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3422,6 +3422,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0772-Freeze-Tick-Lock-API.patch b/patches/server/0772-Freeze-Tick-Lock-API.patch index f1e5801c54..268b945831 100644 --- a/patches/server/0772-Freeze-Tick-Lock-API.patch +++ b/patches/server/0772-Freeze-Tick-Lock-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Freeze Tick Lock API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 70b9ce108506b636fe33885664806ba8313d15fc..b57e6a0698f7e227a398c10a5fbaf28a30d8f4fc 100644 +index 539f90c550b48b868e926249b1c19902cec11718..0a898383cebd1a795956bbe96d6c21f08e9a8d8c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -401,6 +401,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0805-Ensure-entity-passenger-world-matches-ridden-entity.patch b/patches/server/0805-Ensure-entity-passenger-world-matches-ridden-entity.patch index f699934236..b72c645a44 100644 --- a/patches/server/0805-Ensure-entity-passenger-world-matches-ridden-entity.patch +++ b/patches/server/0805-Ensure-entity-passenger-world-matches-ridden-entity.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Ensure entity passenger world matches ridden entity Bad plugins doing this would cause some obvious problems... diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b57e6a0698f7e227a398c10a5fbaf28a30d8f4fc..eedc3a591d2bce0b5793b2388be92ecb4867b246 100644 +index 0a898383cebd1a795956bbe96d6c21f08e9a8d8c..b6be958178b4eb525f00a962c932b2d03095ebf5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2811,6 +2811,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0806-Guard-against-invalid-entity-positions.patch b/patches/server/0806-Guard-against-invalid-entity-positions.patch index 73fb0b7c12..bfc489a9e6 100644 --- a/patches/server/0806-Guard-against-invalid-entity-positions.patch +++ b/patches/server/0806-Guard-against-invalid-entity-positions.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Guard against invalid entity positions Anything not finite should be blocked and logged diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index eedc3a591d2bce0b5793b2388be92ecb4867b246..128b3d63ca4d2d373dc988d84174da9c9f180e59 100644 +index b6be958178b4eb525f00a962c932b2d03095ebf5..ad6ed96c734bcbd0d03308b43055979378389aea 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4427,11 +4427,33 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0830-Prevent-entity-loading-causing-async-lookups.patch b/patches/server/0830-Prevent-entity-loading-causing-async-lookups.patch index d04278d8be..3f6e74e3cb 100644 --- a/patches/server/0830-Prevent-entity-loading-causing-async-lookups.patch +++ b/patches/server/0830-Prevent-entity-loading-causing-async-lookups.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent entity loading causing async lookups diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 128b3d63ca4d2d373dc988d84174da9c9f180e59..ebe74938dced87288339b6b08e2aebed8e448b15 100644 +index ad6ed96c734bcbd0d03308b43055979378389aea..ed3bfdeaff6a2004cf5e86c1bf9b2088315eabd1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -763,6 +763,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0844-Add-various-missing-EntityDropItemEvent-calls.patch b/patches/server/0844-Add-various-missing-EntityDropItemEvent-calls.patch index 26cf5d22cd..6b61ca747c 100644 --- a/patches/server/0844-Add-various-missing-EntityDropItemEvent-calls.patch +++ b/patches/server/0844-Add-various-missing-EntityDropItemEvent-calls.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add various missing EntityDropItemEvent calls diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ebe74938dced87288339b6b08e2aebed8e448b15..44821989e2a21de518583ddad21bfbd896128fe4 100644 +index ed3bfdeaff6a2004cf5e86c1bf9b2088315eabd1..3d850f2d464f2ee163d4944474bf95ea4bd61ef9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2644,6 +2644,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0849-Add-EntityPortalReadyEvent.patch b/patches/server/0849-Add-EntityPortalReadyEvent.patch index f5b2d0d856..dafb86c7df 100644 --- a/patches/server/0849-Add-EntityPortalReadyEvent.patch +++ b/patches/server/0849-Add-EntityPortalReadyEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add EntityPortalReadyEvent diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 44821989e2a21de518583ddad21bfbd896128fe4..26f339bc8178ed6ced41a1d7a3a0317200c52cb2 100644 +index 3d850f2d464f2ee163d4944474bf95ea4bd61ef9..43b2e3d5687e6aa965d33633162ff1c6bff8cc03 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3000,6 +3000,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0893-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch b/patches/server/0893-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch index 137bb8366d..31a42bd3e9 100644 --- a/patches/server/0893-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch +++ b/patches/server/0893-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Fix EntityCombustEvent cancellation cant fully prevent diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 26f339bc8178ed6ced41a1d7a3a0317200c52cb2..db17a3b2dcd051b533ca2d5e9ebc081990282daf 100644 +index 43b2e3d5687e6aa965d33633162ff1c6bff8cc03..92186ea446c42cbbc8c844f14cee32602c92828b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3275,6 +3275,10 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0908-Player-Entity-Tracking-Events.patch b/patches/server/0908-Player-Entity-Tracking-Events.patch index 003f0b3e13..0d7ff298cb 100644 --- a/patches/server/0908-Player-Entity-Tracking-Events.patch +++ b/patches/server/0908-Player-Entity-Tracking-Events.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Player Entity Tracking Events diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index db17a3b2dcd051b533ca2d5e9ebc081990282daf..bac69ebae072925973f2c1c5cc9f5e1de144dd82 100644 +index 92186ea446c42cbbc8c844f14cee32602c92828b..5e75aea514a0311d3a8b7cf830a20b3705957b81 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3997,9 +3997,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0918-Improve-PortalEvents.patch b/patches/server/0918-Improve-PortalEvents.patch index 45957ee862..1d4d731306 100644 --- a/patches/server/0918-Improve-PortalEvents.patch +++ b/patches/server/0918-Improve-PortalEvents.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Improve PortalEvents diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index bac69ebae072925973f2c1c5cc9f5e1de144dd82..dd7d0af819e2a3bf6941bbe240e99e76bfe5fcdb 100644 +index 5e75aea514a0311d3a8b7cf830a20b3705957b81..90d91ee354a995f07cb65d4c3f386f35254f2a7e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3653,7 +3653,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0919-Add-config-option-for-spider-worldborder-climbing.patch b/patches/server/0919-Add-config-option-for-spider-worldborder-climbing.patch index 64369d3113..b15535a058 100644 --- a/patches/server/0919-Add-config-option-for-spider-worldborder-climbing.patch +++ b/patches/server/0919-Add-config-option-for-spider-worldborder-climbing.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add config option for spider worldborder climbing diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index dd7d0af819e2a3bf6941bbe240e99e76bfe5fcdb..0be84922c1cf73075f210da511f238acda7be6a0 100644 +index 90d91ee354a995f07cb65d4c3f386f35254f2a7e..8e33cc53b1c68fc4b97ae86a142c95c25578e1b5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -402,6 +402,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0924-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch b/patches/server/0924-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch index 06ad63d988..c63e013e18 100644 --- a/patches/server/0924-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch +++ b/patches/server/0924-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Expose pre-collision moving velocity to diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0be84922c1cf73075f210da511f238acda7be6a0..8e5dacfcf4e8a1cb20070d67c7b38a1cc3ccc9bb 100644 +index 8e33cc53b1c68fc4b97ae86a142c95c25578e1b5..660e19896dd24f4b8c065b5fc6edece4cd5ff801 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1123,7 +1123,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { diff --git a/patches/server/0964-Refresh-ProjectileSource-for-projectiles.patch b/patches/server/0964-Refresh-ProjectileSource-for-projectiles.patch index f7cd642809..008d9b3981 100644 --- a/patches/server/0964-Refresh-ProjectileSource-for-projectiles.patch +++ b/patches/server/0964-Refresh-ProjectileSource-for-projectiles.patch @@ -9,7 +9,7 @@ Previously, after the entity reloaded, Projectile#getShooter would return null, while the entity still had an owner. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8e5dacfcf4e8a1cb20070d67c7b38a1cc3ccc9bb..1b04bb350e6d561b0a92d121d80fc4a17f0d1c2f 100644 +index 660e19896dd24f4b8c065b5fc6edece4cd5ff801..347cb76b0a51c4090179bae96eff266f4fb8d5aa 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -381,6 +381,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {