@@ -23831,7 +23831,7 @@ index 3a6fb3b46d94e23357be8af241340e3de06b7c7c..a5ce3593e92e6771f3c8df23ba1bf4d7
2383123831 private static final ChunkStep FULL_CHUNK_STEP = ChunkPyramid.GENERATION_PYRAMID.getStepTo(ChunkStatus.FULL);
2383223832 public static final int RADIUS_AROUND_FULL_CHUNK = FULL_CHUNK_STEP.accumulatedDependencies().getRadius();
2383323833diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
23834- index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73409941ad 100644
23834+ index 8519ad77190ef51acdd940794faf73e292169c63..de59ab95562157cb838ac4273728937e4a180632 100644
2383523835--- a/net/minecraft/server/level/ChunkMap.java
2383623836+++ b/net/minecraft/server/level/ChunkMap.java
2383723837@@ -108,7 +108,7 @@ import org.apache.commons.lang3.mutable.MutableBoolean;
@@ -24272,7 +24272,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2427224272 }
2427324273
2427424274 private ChunkAccess handleChunkLoadFailure(Throwable exception, ChunkPos chunkPos) {
24275- @@ -665,230 +448,134 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24275+ @@ -665,230 +448,137 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2427624276
2427724277 @Override
2427824278 public GenerationChunkHolder acquireGeneration(long chunkPos) {
@@ -24529,8 +24529,8 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2452924529 private static void dropChunk(ServerPlayer player, ChunkPos chunkPos) {
2453024530- player.connection.chunkSender.dropChunk(player, chunkPos);
2453124531+ // Paper - rewrite chunk system
24532- + }
24533- +
24532+ }
24533+
2453424534+ // Paper start - rewrite chunk system
2453524535+ @Override
2453624536+ public CompletableFuture<Optional<CompoundTag>> read(final ChunkPos pos) {
@@ -24557,12 +24557,15 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2455724557+ ca.spottedleaf.moonrise.patches.chunk_system.io.MoonriseRegionFileIO.RegionFileType.CHUNK_DATA
2455824558+ );
2455924559+ return null;
24560- }
24561-
24560+ + }
24561+ +
2456224562+ @Override
24563- + public CompletableFuture<Void> synchronize(boolean flush) {
24563+ + public CompletableFuture<Void> synchronize(final boolean flush) {
2456424564+ try {
2456524565+ ca.spottedleaf.moonrise.patches.chunk_system.io.MoonriseRegionFileIO.flush(this.level);
24566+ + if (flush) {
24567+ + ca.spottedleaf.moonrise.patches.chunk_system.io.MoonriseRegionFileIO.flushRegionStorages(this.level);
24568+ + }
2456624569+ return CompletableFuture.completedFuture(null);
2456724570+ } catch (final Exception ex) {
2456824571+ return CompletableFuture.failedFuture(ex);
@@ -24573,7 +24576,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2457324576 public @Nullable LevelChunk getChunkToSend(long chunkPos) {
2457424577 ChunkHolder visibleChunkIfPresent = this.getVisibleChunkIfPresent(chunkPos);
2457524578 return visibleChunkIfPresent == null ? null : visibleChunkIfPresent.getChunkToSend();
24576- @@ -968,7 +655 ,7 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24579+ @@ -968,7 +658 ,7 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2457724580 return this.read(pos).thenApplyAsync(optional -> optional.map(this::upgradeChunkTag), Util.backgroundExecutor().forName("upgradeChunk"));
2457824581 }
2457924582
@@ -24582,7 +24585,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2458224585 return this.upgradeChunkTag(tag, -1, getChunkDataFixContextTag(this.level.getTypeKey(), this.generator().getTypeNameForDataFixer()), this.level); // CraftBukkit
2458324586 }
2458424587
24585- @@ -979,23 +666 ,66 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24588+ @@ -979,23 +669 ,66 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2458624589 return compoundTag;
2458724590 }
2458824591
@@ -24658,7 +24661,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2465824661 if (chunkHolder != null) {
2465924662 LevelChunk tickingChunk = chunkHolder.getTickingChunk();
2466024663 if (tickingChunk != null) {
24661- @@ -1011,8 +741 ,8 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24664+ @@ -1011,8 +744 ,8 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2466224665 }
2466324666
2466424667 boolean anyPlayerCloseEnoughForSpawning(ChunkPos chunkPos, boolean reducedRange) {
@@ -24669,7 +24672,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2466924672 // Spigot end
2467024673 }
2467124674
24672- @@ -1036,7 +766 ,20 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24675+ @@ -1036,7 +769 ,20 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2467324676 private boolean anyPlayerCloseEnoughForSpawningInternal(ChunkPos chunkPos, boolean reducedRange) {
2467424677 double blockRange; // Paper - use from event
2467524678 // Spigot end
@@ -24691,7 +24694,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2469124694 // Paper start - PlayerNaturallySpawnCreaturesEvent
2469224695 com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent event;
2469324696 blockRange = 16384.0D;
24694- @@ -1052,26 +795 ,41 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24697+ @@ -1052,26 +798 ,41 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2469524698 }
2469624699
2469724700 return false;
@@ -24744,7 +24747,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2474424747 if (player.isSpectator()) {
2474524748 return false;
2474624749 } else {
24747- @@ -1109,18 +867 ,20 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24750+ @@ -1109,18 +870 ,20 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2474824751 this.updatePlayerPos(player);
2474924752 if (!flag) {
2475024753 this.distanceManager.addPlayer(SectionPos.of(player), player);
@@ -24767,7 +24770,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2476724770 }
2476824771 }
2476924772
24770- @@ -1130,13 +890 ,7 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24773+ @@ -1130,13 +893 ,7 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2477124774 }
2477224775
2477324776 public void move(ServerPlayer player) {
@@ -24782,15 +24785,15 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2478224785
2478324786 SectionPos lastSectionPos = player.getLastSectionPos();
2478424787 SectionPos sectionPos = SectionPos.of(player);
24785- @@ -1145,6 +899 ,7 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24788+ @@ -1145,6 +902 ,7 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2478624789 boolean flag2 = lastSectionPos.asLong() != sectionPos.asLong();
2478724790 if (flag2 || flag != flag1) {
2478824791 this.updatePlayerPos(player);
2478924792+ ((ca.spottedleaf.moonrise.patches.chunk_tick_iteration.ChunkTickDistanceManager)this.distanceManager).moonrise$updatePlayer(player, lastSectionPos, sectionPos, flag, flag1); // Paper - chunk tick iteration optimisation
2479024793 if (!flag) {
2479124794 this.distanceManager.removePlayer(lastSectionPos, player);
2479224795 }
24793- @@ -1161,49 +916 ,29 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24796+ @@ -1161,49 +919 ,29 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2479424797 this.playerMap.unIgnorePlayer(player);
2479524798 }
2479624799
@@ -24851,7 +24854,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2485124854 }
2485224855
2485324856 public void addEntity(Entity entity) {
24854- @@ -1227,6 +962 ,12 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24857+ @@ -1227,6 +965 ,12 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2485524858 } else {
2485624859 ChunkMap.TrackedEntity trackedEntity = new ChunkMap.TrackedEntity(entity, i, updateInterval, type.trackDeltas());
2485724860 this.entityMap.put(entity.getId(), trackedEntity);
@@ -24864,7 +24867,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2486424867 trackedEntity.updatePlayers(this.level.players());
2486524868 if (entity instanceof ServerPlayer serverPlayer) {
2486624869 this.updatePlayerStatus(serverPlayer, true);
24867- @@ -1256,12 +997 ,38 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24870+ @@ -1256,12 +1000 ,38 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2486824871 if (trackedEntity1 != null) {
2486924872 trackedEntity1.broadcastRemoved();
2487024873 }
@@ -24905,7 +24908,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2490524908
2490624909 List<ServerPlayer> list = Lists.newArrayList();
2490724910 List<ServerPlayer> list1 = this.level.players();
24908- @@ -1359,17 +1126 ,11 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24911+ @@ -1359,17 +1129 ,11 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2490924912 }
2491024913
2491124914 public void waitForLightBeforeSending(ChunkPos chunkPos, int range) {
@@ -24925,7 +24928,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2492524928 LevelChunk chunkToSend = chunkHolder.getChunkToSend();
2492624929 if (chunkToSend != null) {
2492724930 action.accept(chunkToSend);
24928- @@ -1377,14 +1138 ,21 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24931+ @@ -1377,14 +1141 ,21 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2492924932 }
2493024933 }
2493124934
@@ -24949,7 +24952,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2494924952 }
2495024953
2495124954 @Override
24952- @@ -1398,13 +1166 ,96 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
24955+ @@ -1398,13 +1169 ,96 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2495324956 }
2495424957 }
2495524958
@@ -25047,7 +25050,7 @@ index 8519ad77190ef51acdd940794faf73e292169c63..b0b4e5c96498eef48fe0cb2637faed73
2504725050 public TrackedEntity(final Entity entity, final int range, final int updateInterval, final boolean trackDelta) {
2504825051 this.serverEntity = new ServerEntity(ChunkMap.this.level, entity, updateInterval, trackDelta, this, this.seenBy); // Paper
2504925052 this.entity = entity;
25050- @@ -1514,17 +1365 ,24 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
25053+ @@ -1514,17 +1368 ,24 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
2505125054 }
2505225055
2505325056 private int getEffectiveRange() {
@@ -27025,7 +27028,7 @@ index f25d50bcccf9b35ae70f8162c6b2b67fffcd319a..5494b92ab1c3c202a640e483e8a4bcb6
2702527028 }
2702627029
2702727030diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
27028- index b09e6a9fa5fbe9a0d3df615d02109992612b4416..8688d1eb7427b8d07757af84d615781867a34288 100644
27031+ index 09470e7c4238a66be16b3cf8cf93444700cc2508..55d27aa4cff91ea61ff2ab9256acd2cd8694304a 100644
2702927032--- a/net/minecraft/server/level/ServerPlayer.java
2703027033+++ b/net/minecraft/server/level/ServerPlayer.java
2703127034@@ -201,7 +201,7 @@ import net.minecraft.world.scores.criteria.ObjectiveCriteria;
0 commit comments