diff --git a/patches/server/0005-Visibility-API-and-Command.patch b/patches/server/0005-Visibility-API-and-Command.patch index c4f2c55..85d56f7 100644 --- a/patches/server/0005-Visibility-API-and-Command.patch +++ b/patches/server/0005-Visibility-API-and-Command.patch @@ -251,18 +251,29 @@ index 1a37654aff9a9c86c9f7af10a1cf721371f0c5ec..82644b34a77dc5e5af38260b7b07b3ec public ClientboundSectionBlocksUpdatePacket(SectionPos sectionPos, ShortSet positions, LevelChunkSection section) { this.sectionPos = sectionPos; diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 5b3a886c624b36557cbfaccdc3fb05a46a4ba36a..464fc90376075ecc46f7b7731ba5e2c705324e7d 100644 +index 5b3a886c624b36557cbfaccdc3fb05a46a4ba36a..4d3f28d86f6ef1c34f883f1f551201ac7541fae0 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -179,6 +179,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider this.handleLegacyStructureIndex(pos); } // Paper end - rewrite chunk system -+ private final it.unimi.dsi.fastutil.longs.Long2IntMap minimalEntities = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api ++ private final it.unimi.dsi.fastutil.longs.Long2IntMap minimalEntities; // Sakura - visibility api; minimal tnt/sand public ChunkMap(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor executor, BlockableEventLoop mainThreadExecutor, LightChunkGetter chunkProvider, ChunkGenerator chunkGenerator, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier persistentStateManagerFactory, int viewDistance, boolean dsync) { super(new RegionStorageInfo(session.getLevelId(), world.dimension(), "chunk"), session.getDimensionPath(world.dimension()).resolve("region"), dataFixer, dsync); -@@ -979,6 +980,8 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -222,6 +223,10 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + this.poiManager = new PoiManager(new RegionStorageInfo(session.getLevelId(), world.dimension(), "poi"), path.resolve("poi"), dataFixer, dsync, iregistrycustom, world.getServer(), world); + this.setServerViewDistance(viewDistance); + this.worldGenContext = new WorldGenContext(world, chunkGenerator, structureTemplateManager, this.lightEngine, null, this::setChunkUnsaved); // Paper - rewrite chunk system ++ // Sakura start - visibility api; minimal tnt/sand ++ this.minimalEntities = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); ++ this.minimalEntities.defaultReturnValue(Integer.MIN_VALUE); ++ // Sakura end - visibility api; minimal tnt/sand + } + + private void setChunkUnsaved(ChunkPos pos) { +@@ -979,6 +984,8 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider tracker.serverEntity.sendChanges(); } } @@ -271,7 +282,7 @@ index 5b3a886c624b36557cbfaccdc3fb05a46a4ba36a..464fc90376075ecc46f7b7731ba5e2c7 } // Paper end - optimise entity tracker -@@ -1216,6 +1219,31 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1216,6 +1223,31 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return !this.seenBy.isEmpty(); } // Paper end - optimise entity tracker @@ -279,7 +290,7 @@ index 5b3a886c624b36557cbfaccdc3fb05a46a4ba36a..464fc90376075ecc46f7b7731ba5e2c7 + private boolean checkEntityVisibility(final ServerPlayer player) { + final Entity entity = this.entity; + final me.samsuik.sakura.player.visibility.Visibility visibility = player.visibility; -+ if (visibility.isModified() || !(entity.isPrimedTNT || entity.isFallingBlock)) { ++ if (!visibility.isModified() || !(entity.isPrimedTNT || entity.isFallingBlock)) { + return true; + } + if (entity.isPrimedTNT && visibility.isToggled(me.samsuik.sakura.player.visibility.Visibility.Setting.TNT_VISIBILITY)) { @@ -303,7 +314,7 @@ index 5b3a886c624b36557cbfaccdc3fb05a46a4ba36a..464fc90376075ecc46f7b7731ba5e2c7 public TrackedEntity(final Entity entity, final int i, final int j, final boolean flag) { this.serverEntity = new ServerEntity(ChunkMap.this.level, entity, j, flag, this::broadcast, this.seenBy); // CraftBukkit -@@ -1293,6 +1321,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1293,6 +1325,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider } flag = flag && this.entity.broadcastToPlayer(player) && ChunkMap.this.isChunkTracked(player, this.entity.chunkPosition().x, this.entity.chunkPosition().z); // Paper end - Configurable entity tracking range by Y diff --git a/patches/server/0044-Reduce-entity-tracker-player-updates.patch b/patches/server/0044-Reduce-entity-tracker-player-updates.patch index 188b7f4..6a137c9 100644 --- a/patches/server/0044-Reduce-entity-tracker-player-updates.patch +++ b/patches/server/0044-Reduce-entity-tracker-player-updates.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Reduce entity tracker player updates diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index dff0b8a1f2afcef21ca7e7aea3ee635826a2e9ef..44e897e9a4bcb75858e1d32b1095b2d4b70f2463 100644 +index 4c9d57ef5e2164126521880c60f6bb1ed3ebecb1..3ffffb1214bece205ec1e36fbe7aa39631e7e2a2 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -974,7 +974,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -978,7 +978,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider if (tracker == null) { continue; } @@ -21,7 +21,7 @@ index dff0b8a1f2afcef21ca7e7aea3ee635826a2e9ef..44e897e9a4bcb75858e1d32b1095b2d4 if (((ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerTrackedEntity)tracker).moonrise$hasPlayers() || ((ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity)entity).moonrise$getChunkStatus().isOrAfter(FullChunkStatus.ENTITY_TICKING)) { tracker.serverEntity.sendChanges(); -@@ -1244,12 +1248,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1248,12 +1252,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider return true; } // Sakura end - visibility api and command diff --git a/patches/server/0071-Entity-tracking-range-modifier.patch b/patches/server/0071-Entity-tracking-range-modifier.patch index c266132..ab95e80 100644 --- a/patches/server/0071-Entity-tracking-range-modifier.patch +++ b/patches/server/0071-Entity-tracking-range-modifier.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity tracking range modifier diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 44e897e9a4bcb75858e1d32b1095b2d4b70f2463..d7d29b0e8c4dbc4db52dd52a2e5572f1f4d052f9 100644 +index 3ffffb1214bece205ec1e36fbe7aa39631e7e2a2..cf7f94c0b08eca6aa9156fa6ffd1ce6bf89b7192 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1327,7 +1327,10 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1331,7 +1331,10 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider double vec3d_dz = player.getZ() - this.entity.getZ(); // Paper end - remove allocation of Vec3D here int i = ChunkMap.this.getPlayerViewDistance(player);