@@ -26479,7 +26479,7 @@ index 045d4b0ab26622e2763d1583e1e8fcb83ba44427..ddffd36d8213a40dc3f6cbb0ef0f33a0
2647926479 }
2648026480
2648126481diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java
26482- index 319335341617051c5b78578465f2224f78c3ea3d..fcb23814c2539f4e31ed5191e03cc28f4e7f9c2d 100644
26482+ index bf8496c8cadb29db9c46015e202e7d59e2ed2f5e..f4e033fb5e5b116245dd4a381366c4e749a73f93 100644
2648326483--- a/net/minecraft/server/level/ServerChunkCache.java
2648426484+++ b/net/minecraft/server/level/ServerChunkCache.java
2648526485@@ -54,7 +54,7 @@ import net.minecraft.world.level.storage.SavedDataStorage;
@@ -27004,7 +27004,7 @@ index de75dda2e6f17f0ae6e7f6a5620fd3eac9d389e5..6774d12d04fa848624fb8bf7a3c2b8bc
2700427004 List<Entity> passengers = this.entity.getPassengers();
2700527005 if (!passengers.equals(this.lastPassengers)) {
2700627006diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
27007- index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19e2e87fc1 100644
27007+ index f39d48821d728232472ebc5bd6868e6a0d644721..91d27b90a9c9c348d3f93624ff8dbff8a70f522c 100644
2700827008--- a/net/minecraft/server/level/ServerLevel.java
2700927009+++ b/net/minecraft/server/level/ServerLevel.java
2701027010@@ -182,7 +182,7 @@ import net.minecraft.world.waypoints.WaypointTransmitter;
@@ -27430,7 +27430,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2743027430 Entity vehicle = entity.getVehicle();
2743127431 if (vehicle != null) {
2743227432 if (!vehicle.isRemoved() && vehicle.hasPassenger(entity)) {
27433- @@ -639 ,7 +896 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27433+ @@ -642 ,7 +899 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2743427434 }
2743527435
2743627436 profiler.push("entityManagement");
@@ -27439,7 +27439,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2743927439 profiler.pop();
2744027440 profiler.push("debugSynchronizers");
2744127441 if (this.debugSynchronizers.hasAnySubscriberFor(DebugSubscriptions.NEIGHBOR_UPDATES)) {
27442- @@ -656 ,7 +913 ,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27442+ @@ -659 ,7 +916 ,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2744327443
2744427444 @Override
2744527445 public boolean shouldTickBlocksAt(final long chunkPos) {
@@ -27451,7 +27451,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2745127451 }
2745227452
2745327453 protected void tickTime() {
27454- @@ -680 ,7 +940 ,60 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27454+ @@ -683 ,7 +943 ,60 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2745527455 this.players.stream().filter(LivingEntity::isSleeping).collect(Collectors.toList()).forEach(player -> player.stopSleepInBed(false, false));
2745627456 }
2745727457
@@ -27512,7 +27512,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2751227512 ChunkPos chunkPos = chunk.getPos();
2751327513 int minX = chunkPos.getMinBlockX();
2751427514 int minZ = chunkPos.getMinBlockZ();
27515- @@ -689 ,7 +1002 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27515+ @@ -692 ,7 +1005 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2751627516
2751727517 if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow
2751827518 for (int i = 0; i < tickSpeed; i++) {
@@ -27521,7 +27521,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2752127521 this.tickPrecipitation(this.getBlockRandomPos(minX, 0, minZ, 15));
2752227522 }
2752327523 }
27524- @@ -697 ,31 +1010 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27524+ @@ -700 ,31 +1013 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2752527525
2752627526 profiler.popPush("tickBlocks");
2752727527 if (tickSpeed > 0) {
@@ -27554,7 +27554,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2755427554 }
2755527555
2755627556 profiler.pop();
27557- @@ -1044 ,6 +1333 ,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27557+ @@ -1047 ,6 +1336 ,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2755827558 if (fluidState.is(type)) {
2755927559 fluidState.tick(this, pos, blockState);
2756027560 }
@@ -27567,7 +27567,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2756727567 }
2756827568
2756927569 private void tickBlock(final BlockPos pos, final Block type) {
27570- @@ -1051 ,6 +1346 ,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27570+ @@ -1054 ,6 +1349 ,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2757127571 if (state.is(type)) {
2757227572 state.tick(this, pos, this.random);
2757327573 }
@@ -27580,7 +27580,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2758027580 }
2758127581
2758227582 // Paper start - log detailed entity tick information
27583- @@ -1135 ,6 +1436 ,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27583+ @@ -1138 ,6 +1439 ,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2758427584 }
2758527585
2758627586 public void save(final @Nullable ProgressListener progressListener, final boolean flush, final boolean noSave) {
@@ -27592,7 +27592,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2759227592 ServerChunkCache chunkSource = this.getChunkSource();
2759327593 if (!noSave) {
2759427594 new org.bukkit.event.world.WorldSaveEvent(this.getWorld()).callEvent(); // CraftBukkit
27595- @@ -1147 ,13 +1453 ,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27595+ @@ -1150 ,13 +1456 ,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2759627596 progressListener.progressStage(Component.translatable("menu.savingChunks"));
2759727597 }
2759827598
@@ -27616,7 +27616,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2761627616 }
2761727617
2761827618 private void saveLevelData(final boolean sync) {
27619- @@ -1274 ,7 +1585 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27619+ @@ -1277 ,7 +1588 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2762027620 this.removePlayerImmediately((ServerPlayer)existing, Entity.RemovalReason.DISCARDED);
2762127621 }
2762227622
@@ -27625,7 +27625,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2762527625 }
2762627626
2762727627 // CraftBukkit start
27628- @@ -1305 ,7 +1616 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27628+ @@ -1308 ,7 +1619 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2762927629 }
2763027630 // CraftBukkit end
2763127631
@@ -27634,7 +27634,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2763427634 }
2763527635 }
2763627636
27637- @@ -1316 ,7 +1627 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27637+ @@ -1319 ,7 +1630 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2763827638
2763927639 public boolean tryAddFreshEntityWithPassengers(final Entity entity, final org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason reason) {
2764027640 // CraftBukkit end
@@ -27643,7 +27643,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2764327643 return false;
2764427644 } else {
2764527645 this.addFreshEntityWithPassengers(entity, reason); // CraftBukkit
27646- @@ -2109 ,7 +2420 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27646+ @@ -2112 ,7 +2423 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2764727647 }
2764827648 }
2764927649
@@ -27652,7 +27652,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2765227652 output.write(String.format(Locale.ROOT, "block_entity_tickers: %d\n", this.blockEntityTickers.size()));
2765327653 output.write(String.format(Locale.ROOT, "block_ticks: %d\n", this.getBlockTicks().count()));
2765427654 output.write(String.format(Locale.ROOT, "fluid_ticks: %d\n", this.getFluidTicks().count()));
27655- @@ -2127 ,13 +2438 ,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27655+ @@ -2130 ,13 +2441 ,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2765627656 Path chunks = rootDir.resolve("chunks.csv");
2765727657
2765827658 try (Writer output = Files.newBufferedWriter(chunks)) {
@@ -27668,7 +27668,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2766827668 }
2766927669
2767027670 Path entities = rootDir.resolve("entities.csv");
27671- @@ -2228 ,8 +2539 ,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27671+ @@ -2231 ,8 +2542 ,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2767227672 Locale.ROOT,
2767327673 "players: %s, entities: %s [%s], block_entities: %d [%s], block_ticks: %d, fluid_ticks: %d, chunk_source: %s",
2767427674 this.players.size(),
@@ -27679,7 +27679,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2767927679 this.blockEntityTickers.size(),
2768027680 getTypeCount(this.blockEntityTickers, TickingBlockEntity::getType),
2768127681 this.getBlockTicks().count(),
27682- @@ -2262 ,15 +2573 ,25 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27682+ @@ -2265 ,15 +2576 ,25 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2768327683 @Override
2768427684 public LevelEntityGetter<Entity> getEntities() {
2768527685 org.spigotmc.AsyncCatcher.catchOp("Chunk getEntities call"); // Spigot
@@ -27708,7 +27708,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2770827708 }
2770927709
2771027710 public void startTickingChunk(final LevelChunk levelChunk) {
27711- @@ -2287 ,8 +2608 ,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27711+ @@ -2290 ,8 +2611 ,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2771227712
2771327713 public void waitForEntities(final ChunkPos centerChunk, final int radius) {
2771427714 List<ChunkPos> chunks = ChunkPos.rangeClosed(centerChunk, radius).toList();
@@ -27719,7 +27719,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2771927719
2772027720 for (ChunkPos chunk : chunks) {
2772127721 if (!this.areEntitiesLoaded(chunk.pack())) {
27722- @@ -2309 ,28 +2630 ,38 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27722+ @@ -2312 ,28 +2633 ,38 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2772327723 @Override
2772427724 public void close() throws IOException {
2772527725 super.close();
@@ -27764,7 +27764,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2776427764 }
2776527765
2776627766 public boolean anyPlayerCloseEnoughForSpawning(final BlockPos pos) {
27767- @@ -2347 ,7 +2678 ,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27767+ @@ -2350 ,7 +2681 ,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2776827768 }
2776927769
2777027770 public boolean canSpawnEntitiesInChunk(final ChunkPos pos) {
@@ -27776,7 +27776,7 @@ index cebead9e2d11f03e3c854113230c3b74dfe9f02e..c26c0e20f788d96cf491ee5cf27c7b19
2777627776 }
2777727777
2777827778 @Override
27779- @@ -2395 ,7 +2729 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
27779+ @@ -2398 ,7 +2732 ,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
2778027780 public CrashReportCategory fillReportDetails(final CrashReport report) {
2778127781 CrashReportCategory category = super.fillReportDetails(report);
2778227782 WeatherData weatherData = this.getWeatherData();
@@ -30053,7 +30053,7 @@ index e07a7bda45146686a6ac2d20507df9fc8630514f..f84e651e2a34e76a0a71993332e4be1b
3005330053
3005430054 // Paper start - Affects Spawning API
3005530055diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
30056- index 30183d8752aa397a5c1fc554da49f595be286534..5566f449fb79b04822e533df4fd6de42116ffd14 100644
30056+ index 2fd4e73ed16d2d11267156840d7d9859d040317e..b8d56c7a14521cb77ba2cf619be826fb06be81da 100644
3005730057--- a/net/minecraft/world/level/Level.java
3005830058+++ b/net/minecraft/world/level/Level.java
3005930059@@ -87,6 +87,7 @@ import net.minecraft.world.level.storage.LevelData;
@@ -30745,15 +30745,15 @@ index 30183d8752aa397a5c1fc554da49f595be286534..5566f449fb79b04822e533df4fd6de42
3074530745 this.sendBlockUpdated(pos, blockState, state, flags);
3074630746 }
3074730747
30748- @@ -844 ,6 +1478 ,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
30748+ @@ -845 ,6 +1479 ,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
3074930749 // Paper - Fix MC-117075 use removeAll - remove iterator in favour of indexed for loop, ensuring compile error if something uses iter incorrectly
3075030750 boolean tickBlockEntities = this.tickRateManager().runsNormally();
3075130751
3075230752+ int tickedEntities = 0; // Paper - rewrite chunk system
3075330753 // Paper start - Fix MC-117075 use removeAll
3075430754 final it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<@Nullable TickingBlockEntity> toRemove = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet<>();
3075530755 toRemove.add(null);
30756- @@ -854 ,6 +1489 ,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
30756+ @@ -855 ,6 +1490 ,11 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
3075730757 toRemove.add(ticker); // Paper - Fix MC-117075 use removeAll
3075830758 } else if (tickBlockEntities && this.shouldTickBlocksAt(ticker.getPos())) {
3075930759 ticker.tick();
@@ -32693,7 +32693,7 @@ index 54d57f80b1cca351cac2aa59477a0e57334816e7..94652b00e18ffcbe02f1ad0578d671e2
3269332693 public @Nullable BlockEntity getBlockEntity(final BlockPos pos) {
3269432694 return this.wrapped.getBlockEntity(pos);
3269532695diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
32696- index 1bbb8ca0c4a5087cf35c8af8362d867ef868cbd3..b5b514b292f9fdbe410aba5facec1638682c9075 100644
32696+ index d747e7058f78ac1fd02f3dc8e06670ed484cd42b..c0c212fd50cf97ae311035b370e8b4d40d82229e 100644
3269732697--- a/net/minecraft/world/level/chunk/LevelChunk.java
3269832698+++ b/net/minecraft/world/level/chunk/LevelChunk.java
3269932699@@ -64,7 +64,7 @@ import net.minecraft.world.ticks.TickContainerAccess;
0 commit comments