9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-19 15:09:25 +00:00

Cleanup PWT (#533)

* Unify comment format
* More configurable
* Remove one extra execute mid-tick task call in level tick when PWT is disabled

This may cause extremely rare, weird, strange, magic, mysterious issues with plugins, or potentially more.

One example is that it may cause boss mob duplication issue when `ONE MOB ONLY` was enabled in plugin SupremeBosses
This commit is contained in:
Dreeam
2025-10-25 07:41:43 -04:00
committed by GitHub
parent 525fdd586f
commit 35ac5d48ed
30 changed files with 1551 additions and 1419 deletions

View File

@@ -6,11 +6,11 @@ Subject: [PATCH] SparklyPaper: Track each world MSPT
Original project: https://github.com/SparklyPower/SparklyPaper
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index b81de5b278c43a404d0f6b96cf134b401f137ab3..3531e37b784b4d61660c66cd92bc609884f78a91 100644
index 51efe9aadb377c35d6ed2b7eadead3c9e1c745f8..d3c6f7f78d895cca4abe1da79abb595c51449afc 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1687,7 +1687,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Leaf start - SparklyPaper - parallel world ticking mod (move level ticking logic out for branch convergence)
@@ -1686,7 +1686,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Leaf start - SparklyPaper - parallel world ticking - move level ticking logic out for branch convergence
private void tickLevel(ServerLevel serverLevel, BooleanSupplier hasTimeLeft) {
try {
+ long i = Util.getNanos(); // SparklyPaper - track world's MSPT
@@ -27,10 +27,10 @@ index b81de5b278c43a404d0f6b96cf134b401f137ab3..3531e37b784b4d61660c66cd92bc6098
CrashReport crashReport = CrashReport.forThrowable(levelTickingException, "Exception ticking world");
serverLevel.fillReportDetails(crashReport);
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 1b8f9cc3de9778e556a0017b320bfba983750f0f..2f213917594b846616d2933b3669c70a5ce26196 100644
index f1ce73c615f1804c1f44f140dc17965877937078..52eab2c9eaf7f9f1de82d096a3cbe85aabf4ed10 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -571,6 +571,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -573,6 +573,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
// Paper end - chunk tick iteration

View File

@@ -9,10 +9,10 @@ Leaf: ~48ms (-36%)
This should help drastically on the farms that use actively changing fluids.
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 2f213917594b846616d2933b3669c70a5ce26196..cd1fdd297601efde282899715903ef9ca542d376 100644
index 73a395b7c341076843d51649c81fdd771f32f121..ecd36d743bb9a0d9794eaac67692804c00f1bb67 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -1444,6 +1444,10 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1454,6 +1454,10 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
this.emptyTime = 0;
}

View File

@@ -10,10 +10,10 @@ Leaf (After): ~628ms (-96%)
This should help for massive hopper chains or hopper matrix.
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
index 7538f9c84e8463502f4fa1b4a84a4ac84a11e87d..514a918fff9bf60293fbfa6def4a2f9fead30825 100644
index 24baf9fd222b700a17e064cf61fc3c259d9ae528..248058bdc7339a327d80a3db3a126cda6c4b6705 100644
--- a/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
@@ -1023,15 +1023,29 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -1022,15 +1022,29 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
static class RebindableTickingBlockEntityWrapper implements TickingBlockEntity {
private TickingBlockEntity ticker;
private BlockPos cachedPos; // Leaf - Cache tile entity position
@@ -43,7 +43,7 @@ index 7538f9c84e8463502f4fa1b4a84a4ac84a11e87d..514a918fff9bf60293fbfa6def4a2f9f
}
@Override
@@ -1041,6 +1055,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -1040,6 +1054,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@Override
public boolean isRemoved() {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Micro optimizations for random tick
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index cd1fdd297601efde282899715903ef9ca542d376..59f6fe6fbac2da1ae2485cb7a50ca59f9389cb43 100644
index ecd36d743bb9a0d9794eaac67692804c00f1bb67..209d18228aa28b063f8f3e60df6a3e2c5aa770fc 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -1042,7 +1042,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1052,7 +1052,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
// Paper start - optimise random ticking
private void optimiseRandomTick(final LevelChunk chunk, final int tickSpeed) {
final LevelChunkSection[] sections = chunk.getSections();
@@ -17,7 +17,7 @@ index cd1fdd297601efde282899715903ef9ca542d376..59f6fe6fbac2da1ae2485cb7a50ca59f
final net.minecraft.world.level.levelgen.BitRandomSource simpleRandom = this.simpleRandom; // Leaf - Faster random generator - upcasting
final boolean doubleTickFluids = !ca.spottedleaf.moonrise.common.PlatformHooks.get().configFixMC224294();
@@ -1051,41 +1051,41 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1061,41 +1061,41 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
final int offsetZ = cpos.z << 4;
for (int sectionIndex = 0, sectionsLen = sections.length; sectionIndex < sectionsLen; sectionIndex++) {

View File

@@ -11,10 +11,10 @@ As part of: Airplane (https://github.com/TECHNOVE/Airplane)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 45bc4aa35fda48c816e08ec8bacfb11a5c792b27..7160a31e2d6b4315d3aa46b857a7a175fd7d08f5 100644
index 97f8e0e7fc18a465ed3b7ee933c8e83eb95d83ab..23ee355071a3dcfdbff66a4816f5ab9e933116bc 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -4779,10 +4779,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4795,10 +4795,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// Paper start - optimise collisions
public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) {
@@ -26,7 +26,7 @@ index 45bc4aa35fda48c816e08ec8bacfb11a5c792b27..7160a31e2d6b4315d3aa46b857a7a175
final AABB boundingBox = this.getBoundingBox().deflate(1.0E-3);
final Level world = this.level;
@@ -4818,7 +4815,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4834,7 +4831,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
for (int currChunkZ = minChunkZ; currChunkZ <= maxChunkZ; ++currChunkZ) {
for (int currChunkX = minChunkX; currChunkX <= maxChunkX; ++currChunkX) {

View File

@@ -27,10 +27,10 @@ index 525f29f3ecd7eb12e3d7447898005d3a6d62c093..24f0d13922748eb8a96fd83f14204984
public static final int GENERATED_TICKET_LEVEL = ChunkHolderManager.FULL_LOADED_TICKET_LEVEL;
public static final int LOADED_TICKET_LEVEL = ChunkTaskScheduler.getTicketLevel(ChunkStatus.EMPTY);
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index f61fac2767d2085c10a3d34ec475bb07d625737d..368d5c9b17689ddb885ca967cc141b405fed8cd8 100644
index 26a0f9aa63596572f10de5e0b435660e379bcf78..0261568809e7e67431a41dbb78bfb4349ee2b21a 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -441,6 +441,13 @@ public abstract class PlayerList {
@@ -440,6 +440,13 @@ public abstract class PlayerList {
// this.broadcastAll(ClientboundPlayerInfoUpdatePacket.createPlayerInitializing(List.of(player))); // CraftBukkit - replaced with loop below
// Paper start - Fire PlayerJoinEvent when Player is actually ready; correctly register player BEFORE PlayerJoinEvent, so the entity is valid and doesn't require tick delay hacks
player.supressTrackerForLogin = true;

View File

@@ -22,10 +22,10 @@ index 56fd1ed7ccaf96e7eedea60fbdbf7f934939d563..d2f522ea6d0a209496848af073c9af1c
}
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 3531e37b784b4d61660c66cd92bc609884f78a91..f89abb17dd84a58791068bbbf8fc64f4def644bf 100644
index d3c6f7f78d895cca4abe1da79abb595c51449afc..7306a3273adf5bfa8ebdec42b7aedf3656fb5850 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1804,6 +1804,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1802,6 +1802,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleTick(tickCount); // Leaves - protocol
@@ -34,7 +34,7 @@ index 3531e37b784b4d61660c66cd92bc609884f78a91..f89abb17dd84a58791068bbbf8fc64f4
for (int i = 0; i < this.tickables.size(); i++) {
this.tickables.get(i).run();
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 6c2b7818ff6535f73fcbb87ef25b2992656ce348..be9d5c760e192df17a6513b819f956ad526e6d67 100644
index b8c59df25999183985538ade4e58e01eb9b5b586..1ac4ad7e9adf9840951d6d22c3a49e072eb3183f 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -810,6 +810,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -63,10 +63,10 @@ index f6aec052d8c76df7cb0b734893a857832a4d29b1..751a73384a6c4c57bf100c040da807e6
final byte[] data = discardedPayload.data();
try {
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 368d5c9b17689ddb885ca967cc141b405fed8cd8..552d4059ea985bdd46ff7856f8cd68eb898dfe67 100644
index e0ca8832b08009bfd6ad906143acd10400b96eb6..178085c71bb5fee0818a8ce88bf1e36a107a4dd1 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -690,6 +690,7 @@ public abstract class PlayerList {
@@ -689,6 +689,7 @@ public abstract class PlayerList {
}
public @Nullable net.kyori.adventure.text.Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) {
org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerLeave(player); // Leaves - protocol

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Optimize isEyeInFluid
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 896e50276e4e70f694562f0626dc53d3ecd21258..58b0eb299f8750e167145f4cba6aba99b6198aa5 100644
index f89f449c325845e334a5d710211a61280e5ce862..634d870b81dcb4491889811aaf904e8917f36c04 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -1915,7 +1915,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -1914,7 +1914,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
this.awardStat(Stats.SWIM_ONE_CM, rounded);
this.causeFoodExhaustion(this.level().spigotConfig.swimMultiplier * (float) rounded * 0.01F, org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.SWIM); // CraftBukkit - EntityExhaustionEvent // Spigot
}
@@ -18,7 +18,7 @@ index 896e50276e4e70f694562f0626dc53d3ecd21258..58b0eb299f8750e167145f4cba6aba99
if (rounded > 0) {
this.awardStat(Stats.WALK_UNDER_WATER_ONE_CM, rounded);
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index d62d82dfab6fff45ca53c38510443adb85caeb6a..1765d79fd2102c0df7fb6b686872a84de2fdc38f 100644
index acd8041cd984ff1d4c424d9b3f4c1a21022ec6d4..7c625f9fee3887326518e8e38cb4f04e72a4dbf7 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -288,7 +288,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess

View File

@@ -30,7 +30,7 @@ index 5c369b3d94e369c3f240821ad90b9d96223f24ca..9803c395fce103cb7bc746f43a017ff9
}
// Paper end - Optional per player mob spawns
diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java
index 3a6c894178829cec8daa08ea9f0294f7f39a8efe..2721b999dcfcf1cd5a0919221f2d94da4c93a6e7 100644
index 908cd08e33fed1c4cd4bd34c3e63cbbe84ffead4..f5b58c181726536bedabd4b6f64769e312ef4257 100644
--- a/net/minecraft/server/level/ServerChunkCache.java
+++ b/net/minecraft/server/level/ServerChunkCache.java
@@ -70,11 +70,11 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
@@ -188,10 +188,10 @@ index 3a6c894178829cec8daa08ea9f0294f7f39a8efe..2721b999dcfcf1cd5a0919221f2d94da
}
}
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 59f6fe6fbac2da1ae2485cb7a50ca59f9389cb43..2b132c1430b8195a24269c8e5ca7e57457f174c5 100644
index 209d18228aa28b063f8f3e60df6a3e2c5aa770fc..549b1112e246c2c01601c13b35aa31f89c813956 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -1092,6 +1092,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1102,6 +1102,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
private int currentIceAndSnowTick = 0; protected void resetIceAndSnowTick() { this.currentIceAndSnowTick = this.simpleRandom.nextInt(16); } // Gale - Airplane - optimize random calls in chunk ticking
public final org.dreeam.leaf.world.DespawnMap despawnMap = new org.dreeam.leaf.world.DespawnMap(paperConfig()); // Leaf - optimize despawn

View File

@@ -22,10 +22,10 @@ index 22c1545a0329d56e0ec41ae4da1e1922aa1f9737..e89e4c26c40cbb3ef002022f22886d5f
}
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index 6ea510d1e039d599746940325d2d184cb7e8fb6f..a4da72da9be1d298e271291fd50c7b7c067811cc 100644
index bcce0c38f476966c9789506cb6a83e2e1ce24cc4..dfc959ee560b4c0c6d27067ac34be05a79f275c0 100644
--- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java
@@ -1092,6 +1092,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -1100,6 +1100,21 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] optimize random tick
diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java
index 2721b999dcfcf1cd5a0919221f2d94da4c93a6e7..2a1a6a0306b781e9ae5c0e3261cb740f37be4a8c 100644
index f5b58c181726536bedabd4b6f64769e312ef4257..2847aa24cca82b1c66b69600ddcb5dbdadec5b9d 100644
--- a/net/minecraft/server/level/ServerChunkCache.java
+++ b/net/minecraft/server/level/ServerChunkCache.java
@@ -664,7 +664,13 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
@@ -24,10 +24,10 @@ index 2721b999dcfcf1cd5a0919221f2d94da4c93a6e7..2a1a6a0306b781e9ae5c0e3261cb740f
this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies);
}
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 2b132c1430b8195a24269c8e5ca7e57457f174c5..bb67edb1a429b46efc9de320f672c86462f35caf 100644
index 1d5195a17d1f5a934058610d71101a3775214769..e28d5c70f77d68e465f7cca74cde04e278dbeb01 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -1093,6 +1093,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1103,6 +1103,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
public final org.dreeam.leaf.world.DespawnMap despawnMap = new org.dreeam.leaf.world.DespawnMap(paperConfig()); // Leaf - optimize despawn
public final org.dreeam.leaf.world.NatureSpawnChunkMap natureSpawnChunkMap = new org.dreeam.leaf.world.NatureSpawnChunkMap(); // Leaf - optimize mob spawning
@@ -36,7 +36,7 @@ index 2b132c1430b8195a24269c8e5ca7e57457f174c5..bb67edb1a429b46efc9de320f672c864
final net.minecraft.world.level.levelgen.BitRandomSource simpleRandom = this.simpleRandom; // Paper - optimise random ticking // Leaf - Faster random generator - upcasting
ChunkPos pos = chunk.getPos();
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
index a3674ddb883eecb255279375a5e2eece7e016c0f..c3ecdd80efad340c9fa0ea6913db9a3362b53ad4 100644
index af4abc9bef1b147bd6435923177968258873113e..629ee839c152217c64ff1fead3d112d4cb06e21f 100644
--- a/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
@@ -152,6 +152,10 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -50,7 +50,7 @@ index a3674ddb883eecb255279375a5e2eece7e016c0f..c3ecdd80efad340c9fa0ea6913db9a33
public LevelChunk(Level level, ChunkPos pos) {
this(level, pos, UpgradeData.EMPTY, new LevelChunkTicks<>(), new LevelChunkTicks<>(), 0L, null, null, null);
}
@@ -416,6 +420,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -415,6 +419,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
if (blockState == state) {
return null;
} else {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] optimize waypoint
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 1765d79fd2102c0df7fb6b686872a84de2fdc38f..663dbcbec91f92a941cbd6d40053855ec2545981 100644
index d50464e802455c39625701512930d6eb5f1da65b..984e1ba6adc13da1a9d8e901f008ded9b04e1224 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -5117,7 +5117,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5133,7 +5133,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
int floor = Mth.floor(x);
int floor1 = Mth.floor(y);
int floor2 = Mth.floor(z);
@@ -18,7 +18,7 @@ index 1765d79fd2102c0df7fb6b686872a84de2fdc38f..663dbcbec91f92a941cbd6d40053855e
this.blockPosition = new BlockPos(floor, floor1, floor2);
this.inBlockState = null;
if (SectionPos.blockToSectionCoord(floor) != this.chunkPosition.x || SectionPos.blockToSectionCoord(floor2) != this.chunkPosition.z) {
@@ -5126,7 +5127,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5142,7 +5143,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
this.levelCallback.onMove();

View File

@@ -100,7 +100,7 @@ index 4535858701b2bb232b9d2feb2af6551526232ddc..e65c62dbe4c1560ae153e4c4344e9194
- // Paper end - detailed watchdog information
}
diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java
index 2a1a6a0306b781e9ae5c0e3261cb740f37be4a8c..7e84b94a4602801e8cc713b28d0d93052589fd5e 100644
index 2847aa24cca82b1c66b69600ddcb5dbdadec5b9d..bd4c98e9ec41a2bd608e2e2245c503be3171ceee 100644
--- a/net/minecraft/server/level/ServerChunkCache.java
+++ b/net/minecraft/server/level/ServerChunkCache.java
@@ -638,8 +638,10 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
@@ -117,10 +117,10 @@ index 2a1a6a0306b781e9ae5c0e3261cb740f37be4a8c..7e84b94a4602801e8cc713b28d0d9305
if (!org.dreeam.leaf.config.modules.async.AsyncMobSpawning.enabled || _pufferfish_spawnCountsReady.get()) {
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index bb67edb1a429b46efc9de320f672c86462f35caf..062d0abf366c98803b92bd2169c945346845c45d 100644
index edec4bf5f8818e242bda0cf19bedadb6532edb9f..78b252fcdd0079508d3811ba299b1faedd661c51 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -1496,13 +1496,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1506,13 +1506,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
// Paper end - log detailed entity tick information
public void tickNonPassenger(Entity entity) {
@@ -134,7 +134,7 @@ index bb67edb1a429b46efc9de320f672c86462f35caf..062d0abf366c98803b92bd2169c94534
entity.setOldPosAndRot();
entity.tickCount++;
entity.totalEntityAge++; // Paper - age-like counter for all entities
@@ -1515,13 +1509,6 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1525,13 +1519,6 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
for (Entity entity1 : entity.getPassengers()) {
this.tickPassenger(entity, entity1, isActive); // Paper - EAR 2
}
@@ -149,7 +149,7 @@ index bb67edb1a429b46efc9de320f672c86462f35caf..062d0abf366c98803b92bd2169c94534
private void tickPassenger(Entity ridingEntity, Entity passengerEntity, final boolean isActive) { // Paper - EAR 2
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 663dbcbec91f92a941cbd6d40053855ec2545981..e8128fbf13e3a7083825253361227625dc46eef2 100644
index 984e1ba6adc13da1a9d8e901f008ded9b04e1224..d2a6f2bfa4370fee99b3f535724fc3ee18ce496f 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -1136,16 +1136,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -200,7 +200,7 @@ index 663dbcbec91f92a941cbd6d40053855ec2545981..e8128fbf13e3a7083825253361227625
}
private void applyMovementEmissionAndPlaySound(Entity.MovementEmission movementEmission, Vec3 movement, BlockPos pos, BlockState state) {
@@ -5011,9 +4985,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5027,9 +5001,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public void setDeltaMovement(Vec3 deltaMovement) {
@@ -210,7 +210,7 @@ index 663dbcbec91f92a941cbd6d40053855ec2545981..e8128fbf13e3a7083825253361227625
}
public void addDeltaMovement(Vec3 addend) {
@@ -5111,9 +5083,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5127,9 +5099,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
// Paper end - Block invalid positions and bounding box
if (this.position.x != x || this.position.y != y || this.position.z != z) {
@@ -313,7 +313,7 @@ index 010e9814490ffaa153df5b7865da17e2a84c7e82..d6750aec0f4695a99557beb92fda7a89
i = Math.min(i, getDistanceAt(level.getBlockState(mutableBlockPos)) + 1);
if (i == 1) {
diff --git a/net/minecraft/world/level/block/RedStoneWireBlock.java b/net/minecraft/world/level/block/RedStoneWireBlock.java
index ccc98d71da3c1150878f96801fbf65bfa1a64472..a4e26381dcc831361c2d6bef6427d1d6eb7cef18 100644
index 5b248fe2dc06f46c519b388a054776d4a0df7421..60d4399368752f9d3cfc8091ed08ca8ec1a31bcf 100644
--- a/net/minecraft/world/level/block/RedStoneWireBlock.java
+++ b/net/minecraft/world/level/block/RedStoneWireBlock.java
@@ -360,7 +360,7 @@ public class RedStoneWireBlock extends Block {

View File

@@ -19,10 +19,10 @@ index de22fce4f98a600a26d1d78f3bbc1c5f5a8b5bfa..f62898ec36cea977d67da087bf741fb5
// Leaf end - Only player pushable
if (!pushableEntities.isEmpty()) {
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
index ceba364a50fc96865cadf30674655a109baae06d..71f13ae7f3c4f65705dd278da8e4be55da9630c4 100644
index 45260128dbeb29891fa80aab5256623def3bcabe..28e2c4f211de1a3a9d95342965699917db613782 100644
--- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java
@@ -1908,7 +1908,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
@@ -1905,7 +1905,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
// Paper end - rewrite chunk system
public List<Entity> getPushableEntities(Entity entity, AABB boundingBox) {

View File

@@ -28,10 +28,10 @@ index 340d5487fa778277b9560250271c5143d80d9987..99543330da85ddecd91c954c8aa386c8
public boolean isCommandBlockEnabled() {
return true;
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index f89abb17dd84a58791068bbbf8fc64f4def644bf..26a2d2956b1643214421f76b9a4e96b7b1907c01 100644
index 7306a3273adf5bfa8ebdec42b7aedf3656fb5850..540a1af9f4e0cf69ff987105a34d92a35e669fb0 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -2064,6 +2064,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2061,6 +2061,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public abstract boolean isEpollEnabled();
@@ -45,7 +45,7 @@ index f89abb17dd84a58791068bbbf8fc64f4def644bf..26a2d2956b1643214421f76b9a4e96b7
return this.pvp;
}
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 29c111e9576063b510fd2f4e56da518881b29c80..acd608788a3b092187a6d874128346f2d597635c 100644
index ee20dd09bba40a4a98df501614d208552905c3cd..89fb3276c50a96bdafb0f100d4eddc476aa4f61d 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -503,9 +503,21 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface

View File

@@ -117,10 +117,10 @@ index 0000000000000000000000000000000000000000..5f5cdfc538ba9aa6666c019df6706015
+ }
+}
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 062d0abf366c98803b92bd2169c945346845c45d..ba956cd407e71407fcd5babc671880d6f62e62e2 100644
index 78b252fcdd0079508d3811ba299b1faedd661c51..855f09a6ef911a7c9a56d06df6e7466a8104bcc8 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -936,6 +936,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -946,6 +946,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
io.papermc.paper.entity.activation.ActivationRange.activateEntities(this); // Paper - EAR
@@ -128,7 +128,7 @@ index 062d0abf366c98803b92bd2169c945346845c45d..ba956cd407e71407fcd5babc671880d6
if (org.dreeam.leaf.config.modules.opt.OptimizeDespawn.enabled && tickRateManager.runsNormally()) { despawnMap.tick(this, this.entityTickList); } // Leaf - optimize despawn
this.entityTickList
@@ -3039,4 +3040,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -3049,4 +3050,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
this.lagCompensationTick = (System.nanoTime() - MinecraftServer.SERVER_INIT) / (java.util.concurrent.TimeUnit.MILLISECONDS.toNanos(50L));
}
// Paper end - lag compensation

View File

@@ -70,10 +70,10 @@ index 5f5cdfc538ba9aa6666c019df6706015234d7bae..2dfec8f6d0fe833e5f06cf2165ae14bf
}
}
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index ba956cd407e71407fcd5babc671880d6f62e62e2..aa919f4aeb79e00afd455cc73de2825c63a6afc7 100644
index 855f09a6ef911a7c9a56d06df6e7466a8104bcc8..5abd7fabcd1b860d66ce5363373c236393d1a580 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -936,7 +936,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -946,7 +946,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
}
io.papermc.paper.entity.activation.ActivationRange.activateEntities(this); // Paper - EAR

View File

@@ -11,10 +11,10 @@ As part of: Lithium (https://github.com/CaffeineMC/lithium)
Licensed under: LGPL-3.0 (https://www.gnu.org/licenses/lgpl-3.0.html)
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
index c3ecdd80efad340c9fa0ea6913db9a3362b53ad4..e429932a044647f931443c6761d1b39e4eb7665c 100644
index 629ee839c152217c64ff1fead3d112d4cb06e21f..833684b30214566ba27438a1dfb48fbe9f1e6c67 100644
--- a/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
@@ -426,10 +426,13 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -425,10 +425,13 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
}
// Leaf end - optimize random tick
Block block = state.getBlock();

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] thread unsafe chunk map
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
index 36ce2be30478d734d8326eeeb004ba7dc61e0642..df60c94a8755df2c2ca71a27022291587fb21af0 100644
index f1e1e96a425ae0186164b3ae6caca226fdd7e12e..68f31c3f2003afe1096b8eeb26a2d2a64af2a85a 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
@@ -78,6 +78,7 @@ public final class ChunkHolderManager {
@@ -81,19 +81,19 @@ index 36ce2be30478d734d8326eeeb004ba7dc61e0642..df60c94a8755df2c2ca71a2702229158
// note: never call while inside the chunk system, this will absolutely break everything
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 26a2d2956b1643214421f76b9a4e96b7b1907c01..4519b77a5e89fb5232db58d73caaf9d977d1fd5b 100644
index 540a1af9f4e0cf69ff987105a34d92a35e669fb0..c7af60b6d1920d8784ec3ff0e6791dcd0708a259 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1770,6 +1770,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1768,6 +1768,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
serverLevelTickingSemaphore.acquire();
tasks.add(
serverLevel.tickExecutor.submit(() -> {
+ serverLevel.getChunkSource().fullChunksNonSync.setThread(); // Leaf - thread unsafe chunk map
+ serverLevel.moonrise$getChunkTaskScheduler().chunkHolderManager.chunkHoldersNoSync.setThread(); // Leaf - thread unsafe chunk map
ca.spottedleaf.moonrise.common.util.TickThread.ServerLevelTickThread currentThread = (ca.spottedleaf.moonrise.common.util.TickThread.ServerLevelTickThread) Thread.currentThread();
currentThread.currentlyTickingServerLevel = serverLevel;
currentThread.currentTickingServerLevel = serverLevel;
@@ -1788,7 +1790,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1786,7 +1788,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
while (!tasks.isEmpty()) {
@@ -105,7 +105,7 @@ index 26a2d2956b1643214421f76b9a4e96b7b1907c01..4519b77a5e89fb5232db58d73caaf9d9
} catch (java.lang.InterruptedException | java.util.concurrent.ExecutionException e) {
throw new RuntimeException(e); // Propagate exception
diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java
index 7e84b94a4602801e8cc713b28d0d93052589fd5e..788e23f2c363048d33d7627a5ef8dd578ca88309 100644
index bd4c98e9ec41a2bd608e2e2245c503be3171ceee..f6bcd33400ccfc146f508ffd7f8b673439eb5211 100644
--- a/net/minecraft/server/level/ServerChunkCache.java
+++ b/net/minecraft/server/level/ServerChunkCache.java
@@ -77,6 +77,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
@@ -190,10 +190,10 @@ index 7e84b94a4602801e8cc713b28d0d93052589fd5e..788e23f2c363048d33d7627a5ef8dd57
return ret;
}
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
index 71f13ae7f3c4f65705dd278da8e4be55da9630c4..e2223887acf161f7eea80708b0e0862baf07d0ee 100644
index 28e2c4f211de1a3a9d95342965699917db613782..e900060907ce7612b251bdf6d526ef83ea968a7a 100644
--- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java
@@ -1064,6 +1064,18 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
@@ -1065,6 +1065,18 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
// Paper end - Perf: make sure loaded chunks get the inlined variant of this function
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] remove shouldTickBlocksAt check
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
index 7333225a3d50bd14da38019541cc9daa22bbf9ed..66e10c357ed7b80083a0159c5b8262e5d214459e 100644
index f32c1b7e77703265c675683ff7f774dd3d725957..94c5ba01caf50416dbc7512e825fcf70b7baac03 100644
--- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java
@@ -1540,7 +1540,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
@@ -16,4 +16,4 @@ index 7333225a3d50bd14da38019541cc9daa22bbf9ed..66e10c357ed7b80083a0159c5b8262e5
+ } else if (runsNormally /*&& this.shouldTickBlocksAt(tickingBlockEntity.getPos())*/) { // Leaf - remove shouldTickBlocksAt check - duplicate at BoundTickingBlockEntity#tick
tickingBlockEntity.tick();
// Paper start - rewrite chunk system
// Leaf start - SparklyPaper - parallel world ticking (only run mid-tick at the end of each tick / fixes concurrency bugs related to executeMidTickTasks) - do not bother with condition work / make configurable
// Leaf start - SparklyPaper - parallel world ticking (only run mid-tick at the end of each tick / fixes concurrency bugs related to executeMidTickTasks)

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] optimize onClimbable
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index b4a7281de8e016d059b417dee9aaedc02253a97f..5fbf5e01872834ce4a22fb8bfe25cc1dc4f8cf60 100644
index ea137958c70f80349041cd27d1503f7b8def2a69..e8cd433ca5792b87a1763ccb14777115f9545cbd 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -4991,7 +4991,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5007,7 +5007,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// Gale start - don't load chunks to activate climbing entities
public @Nullable BlockState getInBlockStateIfLoaded() {
if (this.inBlockState == null) {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] cache eye block position
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 0b7bb37a29c3a5534db6f2bd781f7ef3bcc378cd..fb31d17226619a87dd88017dc0b6915b8d1ceecd 100644
index 841d63333f55701357ed4dfd0d1be3faa5eeb3b1..ecfd852e64ffdb9e5eaebe7b1eeef4e99dda3b15 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -553,18 +553,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -96,7 +96,7 @@ index 0b7bb37a29c3a5534db6f2bd781f7ef3bcc378cd..fb31d17226619a87dd88017dc0b6915b
public void absSnapTo(double x, double y, double z, float yRot, float xRot) {
this.absSnapTo(x, y, z);
@@ -4435,6 +4439,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4451,6 +4455,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
EntityDimensions dimensions = this.getDimensions(pose);
this.dimensions = dimensions;
this.eyeHeight = dimensions.eyeHeight();
@@ -104,7 +104,7 @@ index 0b7bb37a29c3a5534db6f2bd781f7ef3bcc378cd..fb31d17226619a87dd88017dc0b6915b
}
public void refreshDimensions() {
@@ -4443,6 +4448,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4459,6 +4464,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
EntityDimensions dimensions = this.getDimensions(pose);
this.dimensions = dimensions;
this.eyeHeight = dimensions.eyeHeight();

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] optimize entity in fluid
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index fb31d17226619a87dd88017dc0b6915b8d1ceecd..cab664f5ae052002ae7258b33495b74164ea0b09 100644
index ecfd852e64ffdb9e5eaebe7b1eeef4e99dda3b15..4689764a580d7dca468cdfa2b0fef7e70c57687f 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -4844,12 +4844,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4860,12 +4860,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
final int minChunkZ = minBlockZ >> 4;
final int maxChunkZ = maxBlockZ >> 4;
@@ -23,7 +23,7 @@ index fb31d17226619a87dd88017dc0b6915b8d1ceecd..cab664f5ae052002ae7258b33495b741
if (chunk == null) continue;
final net.minecraft.world.level.chunk.LevelChunkSection[] sections = chunk.getSections();
// Leaf end - Prevent double chunk retrieving in entity fluid pushing check and fluid height updating
@@ -4861,7 +4861,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4877,7 +4877,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
continue;
}
final net.minecraft.world.level.chunk.LevelChunkSection section = sections[sectionIdx];
@@ -32,7 +32,7 @@ index fb31d17226619a87dd88017dc0b6915b8d1ceecd..cab664f5ae052002ae7258b33495b741
// empty
continue;
}
@@ -4918,7 +4918,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -4934,7 +4934,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.fluidHeight.put(fluid, maxHeightDiff);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] cache collision list
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index aa919f4aeb79e00afd455cc73de2825c63a6afc7..6ee710e78b6c169ea4bb0c92787bb2631e4f68cf 100644
index 5abd7fabcd1b860d66ce5363373c236393d1a580..fb9623d89376fc42fd5892e9c395439f55fa5ac5 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -1095,6 +1095,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1105,6 +1105,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
public final org.dreeam.leaf.world.DespawnMap despawnMap = new org.dreeam.leaf.world.DespawnMap(paperConfig()); // Leaf - optimize despawn
public final org.dreeam.leaf.world.NatureSpawnChunkMap natureSpawnChunkMap = new org.dreeam.leaf.world.NatureSpawnChunkMap(); // Leaf - optimize mob spawning
public final org.dreeam.leaf.world.RandomTickSystem randomTickSystem = new org.dreeam.leaf.world.RandomTickSystem(); // Leaf - optimize random tick
@@ -18,7 +18,7 @@ index aa919f4aeb79e00afd455cc73de2825c63a6afc7..6ee710e78b6c169ea4bb0c92787bb263
final net.minecraft.world.level.levelgen.BitRandomSource simpleRandom = this.simpleRandom; // Paper - optimise random ticking // Leaf - Faster random generator - upcasting
ChunkPos pos = chunk.getPos();
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index e4aac8b9b178c2780e9ba0e1232927fdd63f0f22..2e1804ea6ee00585edfbd0d531cfde013f766b4c 100644
index 30813f3d9aeece3d8a63300b8dc73ebaed8e75cd..f6d619709d4e5b0e6d1b943226579d7388835cdb 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -1552,8 +1552,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] fast bit radix sort
Co-authored-by: Taiyou06 <kaandindar21@gmail.com>
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 6ee710e78b6c169ea4bb0c92787bb2631e4f68cf..19a040133023c5fa7898c4e941b06948072accce 100644
index fb9623d89376fc42fd5892e9c395439f55fa5ac5..739c16ecda34b1ee8cf59806cb13c80115377f1c 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -1096,6 +1096,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1106,6 +1106,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
public final org.dreeam.leaf.world.NatureSpawnChunkMap natureSpawnChunkMap = new org.dreeam.leaf.world.NatureSpawnChunkMap(); // Leaf - optimize mob spawning
public final org.dreeam.leaf.world.RandomTickSystem randomTickSystem = new org.dreeam.leaf.world.RandomTickSystem(); // Leaf - optimize random tick
public final org.dreeam.leaf.world.EntityCollisionCache entityCollisionCache = new org.dreeam.leaf.world.EntityCollisionCache(); // Leaf - cache collision list

View File

@@ -35,10 +35,10 @@ index 45093451fb25ae3bb1e57d2e53c49a1ae666e31e..c228135032b5f74fd1ec96a2cf52aa3e
}
}
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 19a040133023c5fa7898c4e941b06948072accce..96e476ff9133627c9253def2c5a2ff376ac7b131 100644
index ecef9a9215c9e843f62f6c9a7abb870fc7a5c789..f270d105d690f1b14473f24681b7694ab69d2495 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -1179,7 +1179,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1189,7 +1189,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
// We only need to check blocks that are taller than the minimum step height
if (org.purpurmc.purpur.PurpurConfig.smoothSnowAccumulationStep > 0 && layersValue >= org.purpurmc.purpur.PurpurConfig.smoothSnowAccumulationStep) {
int layersValueMin = layersValue - org.purpurmc.purpur.PurpurConfig.smoothSnowAccumulationStep;
@@ -100,10 +100,10 @@ index d26867def6c549c8c909213d4f91895f1168cae6..44e7b63e91d298c6c014ca45f356f82f
}
}
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
index 7e380c80fbfeaf670b49e8e923a84ec87a94344e..ef1e65e9652ba7ed4e48075cb7d440b3e880eb06 100644
index e4d83ed875a159150e64e4745a03f61f6a909680..b2cb848ed90531bef6372b04228f539705ac36e6 100644
--- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java
@@ -2066,7 +2066,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
@@ -2063,7 +2063,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
public abstract Scoreboard getScoreboard();
public void updateNeighbourForOutputSignal(BlockPos pos, Block block) {
@@ -196,10 +196,10 @@ index 3b69f9502c30a69519b7b722aecb9e25da8c55f0..b2c6af1dc9fa8330ee7d525b588725ac
i++;
}
diff --git a/net/minecraft/world/level/block/RedStoneWireBlock.java b/net/minecraft/world/level/block/RedStoneWireBlock.java
index a4e26381dcc831361c2d6bef6427d1d6eb7cef18..0b3d8fdd053ad74f32c33cb17e65aeeedd24d520 100644
index 9adb432431df8bd25aece31678b6f1b727250041..ff5ee04f412c3c787200707e524d3135984def97 100644
--- a/net/minecraft/world/level/block/RedStoneWireBlock.java
+++ b/net/minecraft/world/level/block/RedStoneWireBlock.java
@@ -160,7 +160,7 @@ public class RedStoneWireBlock extends Block {
@@ -158,7 +158,7 @@ public class RedStoneWireBlock extends Block {
private BlockState getMissingConnections(BlockGetter level, BlockState state, BlockPos pos) {
boolean flag = !level.getBlockState(pos.above()).isRedstoneConductor(level, pos);
@@ -208,7 +208,7 @@ index a4e26381dcc831361c2d6bef6427d1d6eb7cef18..0b3d8fdd053ad74f32c33cb17e65aeee
if (!state.getValue(PROPERTY_BY_DIRECTION.get(direction)).isConnected()) {
RedstoneSide connectingSide = this.getConnectingSide(level, pos, direction, flag);
state = state.setValue(PROPERTY_BY_DIRECTION.get(direction), connectingSide);
@@ -213,7 +213,7 @@ public class RedStoneWireBlock extends Block {
@@ -211,7 +211,7 @@ public class RedStoneWireBlock extends Block {
protected void updateIndirectNeighbourShapes(BlockState state, LevelAccessor level, BlockPos pos, int flags, int recursionLeft) {
BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos();
@@ -240,7 +240,7 @@ index a4e26381dcc831361c2d6bef6427d1d6eb7cef18..0b3d8fdd053ad74f32c33cb17e65aeee
BlockPos blockPos = pos.relative(direction);
if (level.getBlockState(blockPos).isRedstoneConductor(level, blockPos)) {
this.checkCornerChangeAt(level, blockPos.above());
@@ -521,7 +521,7 @@ public class RedStoneWireBlock extends Block {
@@ -512,7 +512,7 @@ public class RedStoneWireBlock extends Block {
public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) {
int powerValue = state.getValue(POWER);
if (powerValue != 0) {
@@ -249,7 +249,7 @@ index a4e26381dcc831361c2d6bef6427d1d6eb7cef18..0b3d8fdd053ad74f32c33cb17e65aeee
RedstoneSide redstoneSide = state.getValue(PROPERTY_BY_DIRECTION.get(direction));
switch (redstoneSide) {
case UP:
@@ -600,7 +600,7 @@ public class RedStoneWireBlock extends Block {
@@ -591,7 +591,7 @@ public class RedStoneWireBlock extends Block {
private void updatesOnShapeChange(Level level, BlockPos pos, BlockState oldState, BlockState newState) {
Orientation orientation = ExperimentalRedstoneUtils.initialOrientation(level, null, Direction.UP);

View File

@@ -32,10 +32,10 @@ index 6d721742598f625bcf589491b2b59dbbf5f8c903..c3ee0170aa8d74a1f0089d73d9df7e6f
+ // Fish end - Parallel World Ticking API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index ee5f342995a335593932a497c2bafd36d34cecb2..a16390fc13e1baf3cffbcfec5cc410a72ed47367 100644
index efffc80a44f626718e6969850ac5dfc48aec4547..abbbfc2afba2a0580537c49d40bd8b044dcdbfa7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -2556,4 +2556,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -2552,4 +2552,15 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return POINTERS_SUPPLIER.view(this);
}
// Paper end

View File

@@ -48,7 +48,7 @@ index c3ee0170aa8d74a1f0089d73d9df7e6f049eb067..7a5bda878ff77d20a9ea11e8ac879ceb
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index a16390fc13e1baf3cffbcfec5cc410a72ed47367..ccda6365718b94a475ee68ff8ad4032101222a7c 100644
index abbbfc2afba2a0580537c49d40bd8b044dcdbfa7..afbd170c766206e0ad58a59c828128317d7b853b 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -173,7 +173,8 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -72,7 +72,7 @@ index a16390fc13e1baf3cffbcfec5cc410a72ed47367..ccda6365718b94a475ee68ff8ad40321
if (CraftSpawnCategory.isValidForLimits(spawnCategory)) {
setSpawnLimit(spawnCategory, this.world.paperConfig().entities.spawning.spawnLimits.getInt(CraftSpawnCategory.toNMS(spawnCategory)));
}
@@ -1868,7 +1870,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1865,7 +1867,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
return this.getSpawnLimitUnsafe(spawnCategory);
}
public final int getSpawnLimitUnsafe(final SpawnCategory spawnCategory) {
@@ -81,7 +81,7 @@ index a16390fc13e1baf3cffbcfec5cc410a72ed47367..ccda6365718b94a475ee68ff8ad40321
if (limit < 0) {
limit = this.server.getSpawnLimitUnsafe(spawnCategory);
// Paper end - Add mobcaps commands
@@ -1881,7 +1883,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@@ -1878,7 +1880,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Preconditions.checkArgument(spawnCategory != null, "SpawnCategory cannot be null");
Preconditions.checkArgument(CraftSpawnCategory.isValidForLimits(spawnCategory), "SpawnCategory.%s are not supported", spawnCategory);