diff --git a/initDev b/initDev index 2228b43..8d2822e 100755 --- a/initDev +++ b/initDev @@ -8,6 +8,7 @@ export PROJECT_DIR=$(pwd) alias api="cd $PROJECT_DIR/*-API" alias srv="cd $PROJECT_DIR/*-Server" +alias c="clear;" alias ap="./gradlew --no-rebuild applyPatches" alias aap="./gradlew --no-rebuild applyAPIPatches" alias agp="./gradlew --no-rebuild applyGeneratedAPIPatches" diff --git a/patches/server/0008-Port-SparklyPaper-patches.patch b/patches/server/0008-Port-SparklyPaper-patches.patch index af232f4..930476b 100644 --- a/patches/server/0008-Port-SparklyPaper-patches.patch +++ b/patches/server/0008-Port-SparklyPaper-patches.patch @@ -61,18 +61,18 @@ index 8b5293b0c696ef21d0101493ffa41b60bf0bc86b..03be23690a94a14d7343526acad67ccf } diff --git a/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java b/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java -index 62484ebf4550b05182f693a3180bbac5d5fd906d..8b39c463b90db2d4faa33471ddce65f775908f2f 100644 +index c03608fec..931800662 100644 --- a/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java +++ b/src/main/java/io/papermc/paper/threadedregions/EntityScheduler.java @@ -41,6 +41,7 @@ public final class EntityScheduler { private long tickCount = 0L; private static final long RETIRED_TICK_COUNT = -1L; -+ private static final net.minecraft.server.MinecraftServer SERVER = net.minecraft.server.MinecraftServer.getServer(); ++ private static final net.minecraft.server.MinecraftServer SERVER = net.minecraft.server.MinecraftServer.getServer(); // Plazma - Port SparklyPaper patches; Skip EntityScheduler's executeTick checks if there isn't any tasks to be run private final Object stateLock = new Object(); private final Long2ObjectOpenHashMap> oneTimeDelayed = new Long2ObjectOpenHashMap<>(); -@@ -61,14 +62,15 @@ public final class EntityScheduler { +@@ -61,15 +62,15 @@ public final class EntityScheduler { * @throws IllegalStateException If the scheduler is already retired. */ public void retire() { @@ -86,26 +86,19 @@ index 62484ebf4550b05182f693a3180bbac5d5fd906d..8b39c463b90db2d4faa33471ddce65f7 } - final Entity thisEntity = this.entity.getHandleRaw(); - +- // correctly handle and order retiring while running executeTick for (int i = 0, len = this.currentlyExecuting.size(); i < len; ++i) { -@@ -124,9 +126,12 @@ public final class EntityScheduler { + final ScheduledTask task = this.currentlyExecuting.pollFirst(); +@@ -124,6 +125,7 @@ public final class EntityScheduler { if (this.tickCount == RETIRED_TICK_COUNT) { return false; } -- this.oneTimeDelayed.computeIfAbsent(this.tickCount + Math.max(1L, delay), (final long keyInMap) -> { -- return new ArrayList<>(); -- }).add(task); -+ // Plazma start - Port SparklyPaper patches; Skip EntityScheduler's executeTick checks if there isn't any tasks to be run -+ SERVER.entitiesWithScheduledTasks.add(this.entity.getHandleRaw()); -+ this.oneTimeDelayed.computeIfAbsent( -+ this.tickCount + Math.max(1L, delay), (final long keyInMap) -> new ArrayList<>() -+ ).add(task); -+ // Plazma end - Port SparklyPaper patches; Skip EntityScheduler's executeTick checks if there isn't any tasks to be run - } - - return true; -@@ -143,6 +148,12 @@ public final class EntityScheduler { ++ SERVER.entitiesWithScheduledTasks.add(this.entity.getHandleRaw()); // Plazma - Port SparklyPaper patches; Skip EntityScheduler's executeTick checks if there isn't any tasks to be run + this.oneTimeDelayed.computeIfAbsent(this.tickCount + Math.max(1L, delay), (final long keyInMap) -> { + return new ArrayList<>(); + }).add(task); +@@ -143,6 +145,12 @@ public final class EntityScheduler { TickThread.ensureTickThread(thisEntity, "May not tick entity scheduler asynchronously"); final List toRun; synchronized (this.stateLock) { @@ -118,29 +111,11 @@ index 62484ebf4550b05182f693a3180bbac5d5fd906d..8b39c463b90db2d4faa33471ddce65f7 if (this.tickCount == RETIRED_TICK_COUNT) { throw new IllegalStateException("Ticking retired scheduler"); } -diff --git a/src/main/java/io/papermc/paper/util/player/NearbyPlayers.java b/src/main/java/io/papermc/paper/util/player/NearbyPlayers.java -index f164256d59b761264876ca0c85f812d101bfd5de..deaeb134c47da8710afa747bf980bd00aab846d6 100644 ---- a/src/main/java/io/papermc/paper/util/player/NearbyPlayers.java -+++ b/src/main/java/io/papermc/paper/util/player/NearbyPlayers.java -@@ -106,6 +106,13 @@ public final class NearbyPlayers { - return chunk == null ? null : chunk.players[type.ordinal()]; - } - -+ // Plazma start - Port SparklyPaper patches; Cache coordinate key used for nearby players when ticking chunks -+ public ReferenceList getPlayers(final long nearbyCoordKey, final NearbyMapType type) { -+ final TrackedChunk chunk = this.byChunk.get(nearbyCoordKey); -+ return chunk == null ? null : chunk.players[type.ordinal()]; -+ } -+ // Plazma end - Port SparklyPaper patches; Cache coordinate key used for nearby players when ticking chunks -+ - public ReferenceList getPlayersByChunk(final int chunkX, final int chunkZ, final NearbyMapType type) { - final TrackedChunk chunk = this.byChunk.get(CoordinateUtils.getChunkKey(chunkX, chunkZ)); - diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 79ee153cd3c7bd3b2f34e7d30f70be5080cfa3c6..2452dae1e55165bd8c49c4670e3f2adb523de5da 100644 +index ccfeda1ba..c63910d92 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -321,6 +321,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); -@@ -1739,17 +1740,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { -- for (final Entity entity : level.getEntityLookup().getAllCopy()) { // Paper - rewrite chunk system +- for (final Entity entity : level.moonrise$getEntityLookup().getAllCopy()) { // Paper - rewrite chunk system - if (entity.isRemoved()) { - continue; - } @@ -164,59 +139,49 @@ index 79ee153cd3c7bd3b2f34e7d30f70be5080cfa3c6..2452dae1e55165bd8c49c4670e3f2adb - } - }); + // Plazma start - Port SparklyPaper patches; Skip EntityScheduler's executeTick checks if there isn't any tasks to be run -+ for (final Entity entity: entitiesWithScheduledTasks) { -+ if (entity.isRemoved()) continue; -+ -+ final org.bukkit.craftbukkit.entity.CraftEntity bukkit = entity.getBukkitEntityRaw(); -+ //noinspection ConstantValue -+ if (bukkit != null) bukkit.taskScheduler.executeTick(); ++ for (final Entity entity : entitiesWithScheduledTasks) { ++ if (entity.isRemoved() || entity.getBukkitEntityRaw() == null) continue; ++ bukkit.taskScheduler.executeTick(); + } + // Plazma end - Port SparklyPaper patches; Skip EntityScheduler's executeTick checks if there isn't any tasks to be run // Paper end - Folia scheduler API io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper //this.profiler.push("commandFunctions"); // Purpur -@@ -1816,7 +1815,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop playersNearby -- = nearbyPlayers.getPlayers(chunkcoordintpair, io.papermc.paper.util.player.NearbyPlayers.NearbyMapType.SPAWN_RANGE); -+ = nearbyPlayers.getPlayers(chunk1.nearbyPlayersCoordinateKey, io.papermc.paper.util.player.NearbyPlayers.NearbyMapType.SPAWN_RANGE); - if (playersNearby == null) { - continue; - } diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index e16dcb7f60bc3cf2cbef4674b23f12e1e5bd59d3..c3a4fcf600e72f9e95e9df673619ce37d0480cca 100644 +index dfd090040..a0ddb5eb4 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -78,6 +78,7 @@ public class ServerEntity { @@ -250,32 +202,47 @@ index e16dcb7f60bc3cf2cbef4674b23f12e1e5bd59d3..c3a4fcf600e72f9e95e9df673619ce37 public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer> consumer, Set trackedPlayers) { this.trackedPlayers = trackedPlayers; -@@ -217,12 +218,15 @@ public class ServerEntity { +@@ -218,20 +219,21 @@ public class ServerEntity { if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) { Vec3 vec3d1 = this.entity.getDeltaMovement(); -- double d0 = vec3d1.distanceToSqr(this.ap); +- double d0 = vec3d1.distanceToSqr(this.lastSentMovement); - - if (d0 > 1.0E-7D || d0 > 0.0D && vec3d1.lengthSqr() == 0.0D) { -- this.ap = vec3d1; -- this.broadcast.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.ap)); +- this.lastSentMovement = vec3d1; +- Entity entity1 = this.entity; +- +- if (entity1 instanceof AbstractHurtingProjectile) { +- AbstractHurtingProjectile entityfireball = (AbstractHurtingProjectile) entity1; +- +- this.broadcast.accept(new ClientboundBundlePacket(List.of(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.lastSentMovement), new ClientboundProjectilePowerPacket(entityfireball.getId(), entityfireball.accelerationPower)))); +- } else { +- this.broadcast.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.lastSentMovement)); +- } +- } + // Plazma start - SparklyPaper port; Skip distanceToSqr if the delta movement hasn't changed + if (!skipSqrWhenNoDeltaChanges && vec3d1 != this.ap) { -+ double d0 = vec3d1.distanceToSqr(this.ap); ++ double d0 = vec3d1.distanceToSqr(this.lastSentMovement); + if (d0 > 1.0E-7D || d0 > 0.0D && vec3d1.lengthSqr() == 0.0D) { -+ this.ap = vec3d1; -+ this.broadcast.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.ap)); -+ } - } ++ this.lastSentMovement = vec3d1; ++ Entity entity1 = this.entity; ++ if (entity1 instanceof AbstractHurtingProjectile) { ++ AbstractHurtingProjectile entityfireball = (AbstractHurtingProjectile) entity1; ++ this.broadcast.accept(new ClientboundBundlePacket(List.of(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.lastSentMovement), new ClientboundProjectilePowerPacket(entityfireball.getId(), entityfireball.accelerationPower)))); ++ } else { ++ this.broadcast.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.lastSentMovement)); ++ } ++ } // diff on changes ++ } // diff on changes + // Plazma end - SparklyPaper port; Skip distanceToSqr if the delta movement hasn't changed } if (packet1 != null) { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 5456d2ded6f6e75c48868147e5a2dde5eb23bec8..e2de0c343098d65d830f27b4f80c3f8a9f18a7ae 100644 +index dfcd3989f..f5f944899 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -233,6 +233,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -233,6 +233,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current) public boolean hasRidableMoveEvent = false; // Purpur @@ -289,7 +256,7 @@ index 5456d2ded6f6e75c48868147e5a2dde5eb23bec8..e2de0c343098d65d830f27b4f80c3f8a return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately } diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java -index f890738d3bb9fb5e70a9d323c6cec97f9948f9cf..eb3fc1af68768383d524cf0f50c4f4b304b9d5ca 100644 +index fb7342f7a..8b068f6b4 100644 --- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java +++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java @@ -90,12 +90,14 @@ public class ServerStatsCounter extends StatsCounter { @@ -325,10 +292,10 @@ index f890738d3bb9fb5e70a9d323c6cec97f9948f9cf..eb3fc1af68768383d524cf0f50c4f4b3 } } diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index a70255995f380a9b0f7057cb5cb820f7655b93fc..2bffc790496fd9b09516d0d908b5319c9dbb1c63 100644 +index 36e5a6462..bdc2391ae 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -306,7 +306,7 @@ public class Bat extends AmbientCreature { +@@ -307,7 +307,7 @@ public class Bat extends AmbientCreature { int i = world.getMaxLocalRawBrightness(pos); byte b0 = 4; @@ -337,12 +304,11 @@ index a70255995f380a9b0f7057cb5cb820f7655b93fc..2bffc790496fd9b09516d0d908b5319c b0 = 7; } else if (random.nextBoolean()) { return false; -@@ -320,7 +320,25 @@ public class Bat extends AmbientCreature { +@@ -321,7 +321,24 @@ public class Bat extends AmbientCreature { private static boolean isSpookySeason = false; private static final int ONE_HOUR = 20 * 60 * 60; private static int lastSpookyCheck = -ONE_HOUR; - public static boolean isHalloweenSeason(Level level) { return level.purpurConfig.forceHalloweenSeason || isHalloween(); } // Purpur -+ + // Plazma start - Port SparklyPaper patches; Optimize Spooky Season + private static boolean isSpookySeason(Level level) { + if (level.purpurConfig.forceHalloweenSeason) return true; @@ -383,11 +349,11 @@ index 608390ed36710a419de1542b80340dd3fcc7299c..043f068345ca3c50209c1c3cc1feb627 mapItemSavedData.tickCarriedBy(player, stack); } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index df73867ee5682fb966b69dd85da61a6928d8dab3..5712ab081e9534f60248caaceea44445ff855e30 100644 +index 253d47418..28ed05ed0 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1339,6 +1339,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - boolean flag = this.tickRateManager().runsNormally(); +@@ -1456,6 +1456,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl + int tickedEntities = 0; // Paper - rewrite chunk system int tilesThisCycle = 0; + int shouldTickBlocksAtLastResult = -1; // Plazma - Port SparklyPaper patches; Optimize tickingBlockEntities @@ -395,15 +361,18 @@ index df73867ee5682fb966b69dd85da61a6928d8dab3..5712ab081e9534f60248caaceea44445 var toRemove = new it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet(); // Paper - Fix MC-117075; use removeAll toRemove.add(null); // Paper - Fix MC-117075 for (tileTickPosition = 0; tileTickPosition < this.blockEntityTickers.size(); tileTickPosition++) { // Paper - Disable tick limiters -@@ -1351,14 +1353,28 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1468,14 +1470,28 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl tilesThisCycle--; toRemove.add(tickingblockentity); // Paper - Fix MC-117075; use removeAll // Spigot end - } else if (flag && this.shouldTickBlocksAt(tickingblockentity.getPos())) { - tickingblockentity.tick(); -- // Paper start - execute chunk tasks during tick -- if ((this.tileTickPosition & 7) == 0) { -- MinecraftServer.getServer().executeMidTickTasks(); +- // Paper start - rewrite chunk system +- if ((++tickedEntities & 7) == 0) { +- ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)(Level)(Object)this).moonrise$midTickTasks(); +- } +- // Paper end - rewrite chunk system +- } + // Plazma start - Port SparklyPaper patches; Optimize tickingBlockEntities + } else if (flag) { + long chunkPos = tickingblockentity.getChunkCoordinateKey(); @@ -414,18 +383,17 @@ index df73867ee5682fb966b69dd85da61a6928d8dab3..5712ab081e9534f60248caaceea44445 + shouldTick = this.shouldTickBlocksAt(chunkPos); + shouldTickBlocksAtLastResult = shouldTick ? 1 : 0; + shouldTickBlocksAtChunkPos = chunkPos; -+ } ++ } // diff on changes + + if (shouldTick) { + tickingblockentity.tick(); + // Paper start - execute chunk tasks during tick -+ if ((this.tileTickPosition & 7) == 0) { -+ MinecraftServer.getServer().executeMidTickTasks(); ++ if ((++tickedEntities & 7) == 0) { ++ ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)(Level)(Object)this).moonrise$midTickTasks(); + } + // Paper end - execute chunk tasks during tick - } -- // Paper end - execute chunk tasks during tick - } ++ } // diff on changes ++ } // diff on changes + // Plazma end - Port SparklyPaper patches; Optimize tickingBlockEntities } this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 @@ -679,7 +647,7 @@ index 28e3b73507b988f7234cbf29c4024c88180d0aef..6239c171ca996f3f5c23060f728a6223 + long getChunkCoordinateKey(); // Plazma - Port SparklyPaper patches; Optimize tickingBlockEntities } diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java b/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java -index 1aac95b03a9e2e37c24f2a30bcb259c1424e1c78..e7c0c36fd3455c0536e98259b46dbcc952d90e01 100644 +index 75c8125e2..d6005f010 100644 --- a/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java +++ b/src/main/java/net/minecraft/world/level/chunk/ChunkAccess.java @@ -66,6 +66,7 @@ public abstract class ChunkAccess implements BlockGetter, BiomeManager.NoiseBiom @@ -690,8 +658,8 @@ index 1aac95b03a9e2e37c24f2a30bcb259c1424e1c78..e7c0c36fd3455c0536e98259b46dbcc9 private long inhabitedTime; /** @deprecated */ @Nullable -@@ -140,6 +141,7 @@ public abstract class ChunkAccess implements BlockGetter, BiomeManager.NoiseBiom - // Paper end - rewrite light engine +@@ -144,6 +145,7 @@ public abstract class ChunkAccess implements BlockGetter, BiomeManager.NoiseBiom + public ChunkAccess(ChunkPos pos, UpgradeData upgradeData, LevelHeightAccessor heightLimitView, Registry biomeRegistry, long inhabitedTime, @Nullable LevelChunkSection[] sectionArray, @Nullable BlendingData blendingData) { this.locX = pos.x; this.locZ = pos.z; // Paper - reduce need for field lookups this.chunkPos = pos; this.coordinateKey = ChunkPos.asLong(locX, locZ); // Paper - cache long key + this.nearbyPlayersCoordinateKey = io.papermc.paper.util.CoordinateUtils.getChunkKey(locX, locZ); // Plazma - Port SparklyPaper patches; Cache coordinate key used for nearby players when ticking chunks @@ -699,10 +667,10 @@ index 1aac95b03a9e2e37c24f2a30bcb259c1424e1c78..e7c0c36fd3455c0536e98259b46dbcc9 this.levelHeightAccessor = heightLimitView; this.sections = new LevelChunkSection[heightLimitView.getSectionsCount()]; diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index ab4dd0c8b4b17ff1b54c06b72dc8b3caba430fe2..e026dc9ed15284f55cdd4bc99c0718aba6d2e8c6 100644 +index a4578ae22..87f781e94 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -75,6 +75,8 @@ public class LevelChunk extends ChunkAccess { +@@ -74,6 +74,8 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p public String getType() { return ""; } @@ -711,7 +679,7 @@ index ab4dd0c8b4b17ff1b54c06b72dc8b3caba430fe2..e026dc9ed15284f55cdd4bc99c0718ab }; private final Map tickersInLevel; public boolean loaded; -@@ -1101,7 +1103,7 @@ public class LevelChunk extends ChunkAccess { +@@ -966,7 +968,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } private TickingBlockEntity createTicker(T blockEntity, BlockEntityTicker blockEntityTicker) { @@ -720,7 +688,7 @@ index ab4dd0c8b4b17ff1b54c06b72dc8b3caba430fe2..e026dc9ed15284f55cdd4bc99c0718ab } @FunctionalInterface -@@ -1152,17 +1154,21 @@ public class LevelChunk extends ChunkAccess { +@@ -1017,6 +1019,8 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p public String toString() { return String.valueOf(this.ticker) + " "; } @@ -729,21 +697,16 @@ index ab4dd0c8b4b17ff1b54c06b72dc8b3caba430fe2..e026dc9ed15284f55cdd4bc99c0718ab } private class BoundTickingBlockEntity implements TickingBlockEntity { - -+ private final long chunkCoordinateKey; // Plazma - Port SparklyPaper patches; Optimize TickingBlockEntity - private final T blockEntity; +@@ -1025,7 +1029,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p private final BlockEntityTicker ticker; private boolean loggedInvalidBlockState; - BoundTickingBlockEntity(final BlockEntity tileentity, final BlockEntityTicker blockentityticker) { -+ BoundTickingBlockEntity(final BlockEntity tileentity, final BlockEntityTicker blockentityticker, long chunkCoordinateKey) { ++ BoundTickingBlockEntity(final BlockEntity tileentity, final BlockEntityTicker blockentityticker, long chunkCoordinateKey) { // Plazma - Port SparklyPaper patches; Optimize TickingBlockEntity this.blockEntity = (T) tileentity; // CraftBukkit - decompile error this.ticker = blockentityticker; -+ this.chunkCoordinateKey = chunkCoordinateKey; } - - @Override -@@ -1230,5 +1236,7 @@ public class LevelChunk extends ChunkAccess { +@@ -1095,5 +1099,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p return "Level ticker for " + s + "@" + String.valueOf(this.getPos()); } diff --git a/patches/server/0011-Optimize-default-configurations.patch b/patches/server/0011-Optimize-default-configurations.patch index 6955158..34295ad 100644 --- a/patches/server/0011-Optimize-default-configurations.patch +++ b/patches/server/0011-Optimize-default-configurations.patch @@ -9,10 +9,10 @@ Subject: [PATCH] Optimize default configurations - YouHaveTrouble/minecraft-exploits-and-how-to-fix-them diff --git a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -index cba3d725245223c5d9e8e59dcceec61f0acc1b85..63af4c9e2bc662e08ebf858d84933b3e4e3b92cb 100644 +index 8f1645573..8e35f7fbe 100644 --- a/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java +++ b/src/main/java/gg/pufferfish/pufferfish/PufferfishConfig.java -@@ -72,7 +72,7 @@ public class PufferfishConfig { +@@ -64,7 +64,7 @@ public class PufferfishConfig { getString("info.version", "1.0"); setComment("info", "Pufferfish Configuration", @@ -21,56 +21,56 @@ index cba3d725245223c5d9e8e59dcceec61f0acc1b85..63af4c9e2bc662e08ebf858d84933b3e "Join our Discord for support: https://discord.gg/reZw4vQV9H", "Download new builds at https://ci.pufferfish.host/job/Pufferfish"); -@@ -227,7 +227,7 @@ public class PufferfishConfig { +@@ -219,7 +219,7 @@ public class PufferfishConfig { public static int maxProjectileLoadsPerTick; public static int maxProjectileLoadsPerProjectile; private static void projectileLoading() { - maxProjectileLoadsPerTick = getInt("projectile.max-loads-per-tick", 10, "Controls how many chunks are allowed", "to be sync loaded by projectiles in a tick."); -+ maxProjectileLoadsPerTick = getInt("projectile.max-loads-per-tick", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 10, "Controls how many chunks are allowed", "to be sync loaded by projectiles in a tick."); ++ maxProjectileLoadsPerTick = getInt("projectile.max-loads-per-tick", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 10, "Controls how many chunks are allowed", "to be sync loaded by projectiles in a tick."); // Plazma - Optimize default configurations maxProjectileLoadsPerProjectile = getInt("projectile.max-loads-per-projectile", 10, "Controls how many chunks a projectile", "can load in its lifetime before it gets", "automatically removed."); setComment("projectile", "Optimizes projectile settings"); -@@ -241,12 +241,12 @@ public class PufferfishConfig { +@@ -233,12 +233,12 @@ public class PufferfishConfig { public static int activationDistanceMod; private static void dynamicActivationOfBrains() throws IOException { - dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", false); // Purpur -+ dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize()); // Purpur ++ dearEnabled = getBoolean("dab.enabled", "activation-range.enabled", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize()); // Purpur // Plazma - Optimize default configurations startDistance = getInt("dab.start-distance", "activation-range.start-distance", 12, "This value determines how far away an entity has to be", "from the player to start being effected by DEAR."); startDistanceSquared = startDistance * startDistance; - maximumActivationPrio = getInt("dab.max-tick-freq", "activation-range.max-tick-freq", 20, -+ maximumActivationPrio = getInt("dab.max-tick-freq", "activation-range.max-tick-freq", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 7 : 8, ++ maximumActivationPrio = getInt("dab.max-tick-freq", "activation-range.max-tick-freq", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 7 : 8, // Plazma - Optimize default configurations "This value defines how often in ticks, the furthest entity", "will get their pathfinders and behaviors ticked. 20 = 1s"); activationDistanceMod = getInt("dab.activation-dist-mod", "activation-range.activation-dist-mod", 8, -@@ -269,8 +269,18 @@ public class PufferfishConfig { +@@ -261,8 +261,18 @@ public class PufferfishConfig { public static Map projectileTimeouts; private static void projectileTimeouts() { // Set some defaults - getInt("entity_timeouts.SNOWBALL", -1); - getInt("entity_timeouts.LLAMA_SPIT", -1); -+ // Plazma start - Optimize default configurations -+ if (org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize()) { -+ getInt("entity_timeouts.ARROW", 200); -+ getInt("entity_timeouts.EGG", 200); -+ getInt("entity_timeouts.ENDER_PEARL", 200); -+ getInt("entity_timeouts.SNOWBALL", 200); -+ getInt("entity_timeouts.LLAMA_SPIT", 200); -+ } else { -+ getInt("entity_timeouts.SNOWBALL", -1); -+ getInt("entity_timeouts.LLAMA_SPIT", -1); -+ } -+ // Plazma end - Optimize default configurations ++ // Plazma start - Optimize default configurations ++ if (org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize()) { ++ getInt("entity_timeouts.ARROW", 200); ++ getInt("entity_timeouts.EGG", 200); ++ getInt("entity_timeouts.ENDER_PEARL", 200); ++ getInt("entity_timeouts.SNOWBALL", 200); ++ getInt("entity_timeouts.LLAMA_SPIT", 200); ++ } else { ++ getInt("entity_timeouts.SNOWBALL", -1); ++ getInt("entity_timeouts.LLAMA_SPIT", -1); ++ } ++ // Plazma end - Optimize default configurations setComment("entity_timeouts", "These values define a entity's maximum lifespan. If an", "entity is in this list and it has survived for longer than", diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -index 32035e37b39ba42232fea948166e7c1d4d06190c..8445a0b25d647b2c1f9a44f849084cdec0842e18 100644 +index a9dd0e521..d417b773d 100644 --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -@@ -167,7 +167,7 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -172,7 +172,7 @@ public class GlobalConfiguration extends ConfigurationPart { public class Watchdog extends ConfigurationPart { public int earlyWarningEvery = 5000; @@ -79,7 +79,7 @@ index 32035e37b39ba42232fea948166e7c1d4d06190c..8445a0b25d647b2c1f9a44f849084cde } public SpamLimiter spamLimiter; -@@ -207,7 +207,7 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -214,7 +214,7 @@ public class GlobalConfiguration extends ConfigurationPart { public Commands commands; public class Commands extends ConfigurationPart { @@ -88,16 +88,16 @@ index 32035e37b39ba42232fea948166e7c1d4d06190c..8445a0b25d647b2c1f9a44f849084cde public boolean fixTargetSelectorTagCompletion = true; public boolean timeCommandAffectsAllWorlds = false; } -@@ -256,7 +256,7 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -263,7 +263,7 @@ public class GlobalConfiguration extends ConfigurationPart { public BookSize bookSize; public class BookSize extends ConfigurationPart { -- public int pageMax = 2560; // TODO this appears to be a duplicate setting with one above -+ public int pageMax = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1024 : 2560; // TODO this appears to be a duplicate setting with one above // Plazma - Optimize default configurations +- public IntOr.Disabled pageMax = new IntOr.Disabled(OptionalInt.of(2560)); // TODO this appears to be a duplicate setting with one above ++ public IntOr.Disabled pageMax = new IntOr.Disabled(OptionalInt.of(org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1024 : 2560)); // TODO this appears to be a duplicate setting with one above // Plazma - Optimize default configurations public double totalMultiplier = 0.98D; // TODO this should probably be merged into the above inner class } public boolean resolveSelectorsInBooks = false; -@@ -267,7 +267,15 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -274,7 +274,15 @@ public class GlobalConfiguration extends ConfigurationPart { public class PacketLimiter extends ConfigurationPart { public Component kickMessage = Component.translatable("disconnect.exceeded_packet_rate", NamedTextColor.RED); public PacketLimit allPackets = new PacketLimit(7.0, 500.0, PacketLimit.ViolateAction.KICK); @@ -114,7 +114,7 @@ index 32035e37b39ba42232fea948166e7c1d4d06190c..8445a0b25d647b2c1f9a44f849084cde @ConfigSerializable public record PacketLimit(@Required double interval, @Required double maxPacketRate, ViolateAction action) { -@@ -335,7 +343,7 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -342,7 +350,7 @@ public class GlobalConfiguration extends ConfigurationPart { executor.setMaximumPoolSize(_chatExecutorMaxSize); } } @@ -124,10 +124,10 @@ index 32035e37b39ba42232fea948166e7c1d4d06190c..8445a0b25d647b2c1f9a44f849084cde public boolean loadPermissionsYmlBeforePlugins = true; @Constraints.Min(4) diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -index efc91ff91827872c62b8bd060282549ccdcf67dd..1d926378887b9e42f1827e958f506be3e27d5ab5 100644 +index c867796f6..ecced2072 100644 --- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -@@ -96,12 +96,32 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -100,12 +100,32 @@ public class WorldConfiguration extends ConfigurationPart { public class AntiXray extends ConfigurationPart { public boolean enabled = false; @@ -163,7 +163,7 @@ index efc91ff91827872c62b8bd060282549ccdcf67dd..1d926378887b9e42f1827e958f506be3 // Blocks.COPPER_ORE, Blocks.DEEPSLATE_COPPER_ORE, -@@ -128,7 +148,28 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -132,7 +152,28 @@ public class WorldConfiguration extends ConfigurationPart { Blocks.ENDER_CHEST // ); @@ -193,7 +193,7 @@ index efc91ff91827872c62b8bd060282549ccdcf67dd..1d926378887b9e42f1827e958f506be3 } } -@@ -151,14 +192,14 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -155,14 +196,14 @@ public class WorldConfiguration extends ConfigurationPart { public ArmorStands armorStands; public class ArmorStands extends ConfigurationPart { @@ -211,16 +211,7 @@ index efc91ff91827872c62b8bd060282549ccdcf67dd..1d926378887b9e42f1827e958f506be3 } public Sniffer sniffer; -@@ -181,7 +222,7 @@ public class WorldConfiguration extends ConfigurationPart { - @MergeMap - public Reference2IntMap spawnLimits = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1))); - @MergeMap -- public Map despawnRanges = Arrays.stream(MobCategory.values()).collect(Collectors.toMap(Function.identity(), category -> new DespawnRange(category.getNoDespawnDistance(), category.getDespawnDistance()))); -+ public Map despawnRanges = Arrays.stream(MobCategory.values()).collect(Collectors.toMap(Function.identity(), category -> new DespawnRange(category.getNoDespawnDistance(), org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? (net.minecraft.server.MinecraftServer.getServer().server.getSimulationDistance() * 16) + 8 : category.getDespawnDistance()))); // Plazma - Optimize default configurations - @MergeMap - public Reference2IntMap ticksPerSpawn = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1))); - -@@ -382,7 +423,7 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -407,7 +448,7 @@ public class WorldConfiguration extends ConfigurationPart { public class Environment extends ConfigurationPart { public boolean disableThunder = false; public boolean disableIceAndSnow = false; @@ -229,7 +220,7 @@ index efc91ff91827872c62b8bd060282549ccdcf67dd..1d926378887b9e42f1827e958f506be3 public boolean disableExplosionKnockback = false; public boolean generateFlatBedrock = false; public FrostedIce frostedIce; -@@ -434,7 +475,7 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -463,7 +504,7 @@ public class WorldConfiguration extends ConfigurationPart { public Fixes fixes; public class Fixes extends ConfigurationPart { @@ -238,7 +229,7 @@ index efc91ff91827872c62b8bd060282549ccdcf67dd..1d926378887b9e42f1827e958f506be3 public boolean disableUnloadedChunkEnderpearlExploit = true; public boolean preventTntFromMovingInWater = false; public boolean splitOverstackedLoot = true; -@@ -462,9 +503,9 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -491,9 +532,9 @@ public class WorldConfiguration extends ConfigurationPart { public class Collisions extends ConfigurationPart { public boolean onlyPlayersCollide = false; public boolean allowVehicleCollisions = true; @@ -250,7 +241,7 @@ index efc91ff91827872c62b8bd060282549ccdcf67dd..1d926378887b9e42f1827e958f506be3 public boolean allowPlayerCrammingDamage = false; } -@@ -472,18 +513,41 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -501,18 +542,41 @@ public class WorldConfiguration extends ConfigurationPart { public class Chunks extends ConfigurationPart { public AutosavePeriod autoSaveInterval = AutosavePeriod.def(); @@ -300,7 +291,7 @@ index efc91ff91827872c62b8bd060282549ccdcf67dd..1d926378887b9e42f1827e958f506be3 }); public boolean flushRegionsOnSave = false; } -@@ -498,9 +562,9 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -527,9 +591,9 @@ public class WorldConfiguration extends ConfigurationPart { public TickRates tickRates; public class TickRates extends ConfigurationPart { @@ -312,7 +303,7 @@ index efc91ff91827872c62b8bd060282549ccdcf67dd..1d926378887b9e42f1827e958f506be3 public int wetFarmland = 1; public int dryFarmland = 1; public Table, String, Integer> sensor = Util.make(HashBasedTable.create(), table -> table.put(EntityType.VILLAGER, "secondarypoisensor", 40)); -@@ -534,9 +598,9 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -563,9 +627,9 @@ public class WorldConfiguration extends ConfigurationPart { public class Misc extends ConfigurationPart { public int lightQueueSize = 20; @@ -321,9 +312,9 @@ index efc91ff91827872c62b8bd060282549ccdcf67dd..1d926378887b9e42f1827e958f506be3 public boolean showSignClickCommandFailureMsgsToPlayer = false; - public RedstoneImplementation redstoneImplementation = RedstoneImplementation.VANILLA; + public RedstoneImplementation redstoneImplementation = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? RedstoneImplementation.ALTERNATE_CURRENT : RedstoneImplementation.VANILLA; // Plazma - Optimize default configurations + public AlternateCurrentUpdateOrder alternateCurrentUpdateOrder = AlternateCurrentUpdateOrder.HORIZONTAL_FIRST_OUTWARD; public boolean disableEndCredits = false; - public float maxLeashDistance = 10f; - public boolean disableSprintInterruptionOnAttack = false; + public DoubleOr.Default maxLeashDistance = DoubleOr.Default.USE_DEFAULT; diff --git a/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java b/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java index 24763d3d270c29c95e0b3e85111145234f660a62..80ddc627e02e3c749e6b074afa93d357d9c7d62a 100644 --- a/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java @@ -337,10 +328,10 @@ index 24763d3d270c29c95e0b3e85111145234f660a62..80ddc627e02e3c749e6b074afa93d357 } diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java -index 29eef278940cab33a1f5f168f66ab2b80f0d60ce..b4d47c53bb2a5c75e9f69506dbd69a8817f368dc 100644 +index 639a0624f..e4b42f745 100644 --- a/src/main/java/net/minecraft/server/Main.java +++ b/src/main/java/net/minecraft/server/Main.java -@@ -151,7 +151,7 @@ public class Main { +@@ -152,7 +152,7 @@ public class Main { File configFile = (File) optionset.valueOf("bukkit-settings"); YamlConfiguration configuration = YamlConfiguration.loadConfiguration(configFile); configuration.options().copyDefaults(true); @@ -350,10 +341,10 @@ index 29eef278940cab33a1f5f168f66ab2b80f0d60ce..b4d47c53bb2a5c75e9f69506dbd69a88 File commandFile = (File) optionset.valueOf("commands-settings"); diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -index 09aa0c9ec7d66ff82167c035481e5fcccf8618de..3ed078e33a99e4cc7b536ab6590ef939ac2966db 100644 +index 5971f99c0..ef0f1598f 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -131,14 +131,14 @@ public class DedicatedServerProperties extends Settings { return Mth.clamp(integer, 1, 29999984); }, 29999984); @@ -382,10 +373,10 @@ index 09aa0c9ec7d66ff82167c035481e5fcccf8618de..3ed078e33a99e4cc7b536ab6590ef939 this.enableJmxMonitoring = this.get("enable-jmx-monitoring", false); this.enableStatus = this.get("enable-status", true); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 02037da80f2f3cada359bbe0f58160fd15761b77..8de087636686b78c12bc1c293258713ff7dddff0 100644 +index 0bd9f4dc2..52d9b6253 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -428,7 +428,7 @@ public final class CraftServer implements Server { +@@ -434,7 +434,7 @@ public final class CraftServer implements Server { this.configuration = YamlConfiguration.loadConfiguration(this.getConfigFile()); this.configuration.options().copyDefaults(true); @@ -426,18 +417,10 @@ index 09053b4ccf268fd204c81dbb8d4f10fa9edcad5f..93f67f125b3674e645cfdae27e579e12 #### ENGLISH #### This is the %s configuration file for Plazma. diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index cdb4d9a76640fbf0fa202d7b70f5c2bc7005a84b..0a8d1f2b33257a371abb97a3a88af1f89ee46e24 100644 +index 546d92019..97fc4fb79 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -49,6 +49,7 @@ public class PurpurConfig { - + "join us in our Discord guild.\n" - + "\n" - + "Website: https://purpurmc.org \n" -+ + "Vanilla Food Properties: https://gist.github.com/BillyGalbreath/4fdfba991bd020e814eabf5143e3b225 \n" // Plazma - + "Docs: https://purpurmc.org/docs \n"; - private static File CONFIG_FILE; - public static YamlConfiguration config; -@@ -241,7 +242,7 @@ public class PurpurConfig { +@@ -243,7 +243,7 @@ public class PurpurConfig { laggingThreshold = getDouble("settings.lagging-threshold", laggingThreshold); } @@ -446,7 +429,7 @@ index cdb4d9a76640fbf0fa202d7b70f5c2bc7005a84b..0a8d1f2b33257a371abb97a3a88af1f8 private static void useAlternateKeepAlive() { useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive); } -@@ -481,7 +482,7 @@ public class PurpurConfig { +@@ -492,7 +492,7 @@ public class PurpurConfig { } public static boolean useUPnP = false; @@ -456,10 +439,10 @@ index cdb4d9a76640fbf0fa202d7b70f5c2bc7005a84b..0a8d1f2b33257a371abb97a3a88af1f8 private static void networkSettings() { useUPnP = getBoolean("settings.network.upnp-port-forwarding", useUPnP); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6717941d18dbd6871b4613106b9787063e11722f..b6a6a74dfd00a4536258c8693048c9d1ac4df435 100644 +index 3bcbf5e2d..1ff95cced 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -433,7 +433,7 @@ public class PurpurWorldConfig { +@@ -424,7 +424,7 @@ public class PurpurWorldConfig { public boolean idleTimeoutTargetPlayer = true; public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; @@ -468,7 +451,7 @@ index 6717941d18dbd6871b4613106b9787063e11722f..b6a6a74dfd00a4536258c8693048c9d1 public boolean teleportOnNetherCeilingDamage = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; -@@ -3135,7 +3135,7 @@ public class PurpurWorldConfig { +@@ -3247,7 +3247,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -478,23 +461,23 @@ index 6717941d18dbd6871b4613106b9787063e11722f..b6a6a74dfd00a4536258c8693048c9d1 public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java -index 1cf6d4f854d89c515e48e1fb365eb95ff9340765..7d1ae99e83dc6511838092c3ab6e0fd5f39faabc 100644 +index 2c408fa4a..aadad0a1e 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java @@ -150,14 +150,14 @@ public class SpigotWorldConfig public double itemMerge; private void itemMerge() { -- this.itemMerge = this.getDouble("merge-radius.item", 2.5 ); -+ this.itemMerge = this.getDouble("merge-radius.item", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 3.5 : 2.5 ); // Plazma - Optimize default configurations +- this.itemMerge = this.getDouble("merge-radius.item", 0.5 ); ++ this.itemMerge = this.getDouble("merge-radius.item", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 3.5 : 0.5); // Plazma - Optimize default configurations this.log( "Item Merge Radius: " + this.itemMerge ); } public double expMerge; private void expMerge() { -- this.expMerge = this.getDouble("merge-radius.exp", 3.0 ); -+ this.expMerge = this.getDouble("merge-radius.exp", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 4.0 : 3.0 ); // Plazma - Optimize default configurations +- this.expMerge = this.getDouble("merge-radius.exp", -1 ); ++ this.expMerge = this.getDouble("merge-radius.exp", org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 4.0 : -1); // Plazma - Optimize default configurations this.log( "Experience Merge Radius: " + this.expMerge ); } @@ -507,47 +490,58 @@ index 1cf6d4f854d89c515e48e1fb365eb95ff9340765..7d1ae99e83dc6511838092c3ab6e0fd5 this.log( "Mob Spawn Range: " + this.mobSpawnRange ); } -@@ -207,26 +207,26 @@ public class SpigotWorldConfig +@@ -207,27 +207,29 @@ public class SpigotWorldConfig this.log( "Item Despawn Rate: " + this.itemDespawnRate ); } - public int animalActivationRange = 32; - public int monsterActivationRange = 32; -+ public int animalActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 16 : 32; // Plazma - Optimize default configurations -+ public int monsterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 24 : 32; // Plazma - Optimize default configurations - public int raiderActivationRange = 48; +- public int raiderActivationRange = 64; - public int miscActivationRange = 16; -+ public int miscActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 16; // Plazma - Optimize default configurations - // Paper start +- // Paper start - public int flyingMonsterActivationRange = 32; - public int waterActivationRange = 16; - public int villagerActivationRange = 32; -+ public int flyingMonsterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 48 : 32; // Plazma - Optimize default configurations -+ public int waterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 16; // Plazma - Optimize default configurations -+ public int villagerActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 16 : 32; // Plazma - Optimize default configurations - public int wakeUpInactiveAnimals = 4; - public int wakeUpInactiveAnimalsEvery = 60*20; +- public int wakeUpInactiveAnimals = 4; +- public int wakeUpInactiveAnimalsEvery = 60*20; - public int wakeUpInactiveAnimalsFor = 5*20; - public int wakeUpInactiveMonsters = 8; -+ public int wakeUpInactiveAnimalsFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 40 : 100; // Plazma - Optimize default configurations -+ public int wakeUpInactiveMonsters = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 4 : 8; // Plazma - Optimize default configurations - public int wakeUpInactiveMonstersEvery = 20*20; +- public int wakeUpInactiveMonstersEvery = 20*20; - public int wakeUpInactiveMonstersFor = 5*20; - public int wakeUpInactiveVillagers = 4; -+ public int wakeUpInactiveMonstersFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 60 : 100; // Plazma - Optimize default configurations -+ public int wakeUpInactiveVillagers = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1 : 4; // Plazma - Optimize default configurations - public int wakeUpInactiveVillagersEvery = 30*20; +- public int wakeUpInactiveVillagersEvery = 30*20; - public int wakeUpInactiveVillagersFor = 5*20; - public int wakeUpInactiveFlying = 8; -+ public int wakeUpInactiveVillagersFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 20 : 100; // Plazma - Optimize default configurations -+ public int wakeUpInactiveFlying = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1 : 8; // Plazma - Optimize default configurations - public int wakeUpInactiveFlyingEvery = 10*20; +- public int wakeUpInactiveFlyingEvery = 10*20; - public int wakeUpInactiveFlyingFor = 5*20; -+ public int wakeUpInactiveFlyingFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 60 : 100; // Plazma - Optimize default configurations - public int villagersWorkImmunityAfter = 5*20; +- public int villagersWorkImmunityAfter = 5*20; ++ // Plazma start - Optimize default configurations ++ public int animalActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 16 : 32; ++ public int monsterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 24 : 32; ++ public int raiderActivationRange = 64; // diff on changes ++ public int miscActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 16; ++ // Paper start // diff on changes ++ public int flyingMonsterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 48 : 32; ++ public int waterActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 8 : 16; ++ public int villagerActivationRange = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 16 : 32; ++ public int wakeUpInactiveAnimals = 4; // diff on changes ++ public int wakeUpInactiveAnimalsEvery = 1200; ++ public int wakeUpInactiveAnimalsFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 40 : 100; ++ public int wakeUpInactiveMonsters = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 4 : 8; ++ public int wakeUpInactiveMonstersEvery = 400; ++ public int wakeUpInactiveMonstersFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 60 : 100; ++ public int wakeUpInactiveVillagers = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1 : 4; ++ public int wakeUpInactiveVillagersEvery = 600; ++ public int wakeUpInactiveVillagersFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 20 : 100; ++ public int wakeUpInactiveFlying = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 1 : 8; ++ public int wakeUpInactiveFlyingEvery = 200; ++ public int wakeUpInactiveFlyingFor = org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? 60 : 100; ++ public int villagersWorkImmunityAfter = 100; ++ // Plazma end - Optimize default configurations public int villagersWorkImmunityFor = 20; public boolean villagersActiveForPanic = true; -@@ -299,7 +299,7 @@ public class SpigotWorldConfig + // Paper end +@@ -299,7 +301,7 @@ public class SpigotWorldConfig { this.set( "ticks-per.hopper-check", 1 ); } @@ -556,7 +550,7 @@ index 1cf6d4f854d89c515e48e1fb365eb95ff9340765..7d1ae99e83dc6511838092c3ab6e0fd5 this.hopperAmount = this.getInt( "hopper-amount", 1 ); this.hopperCanLoadChunks = this.getBoolean( "hopper-can-load-chunks", false ); this.log( "Hopper Transfer: " + this.hopperTransfer + " Hopper Check: " + this.hopperCheck + " Hopper Amount: " + this.hopperAmount + " Hopper Can Load Chunks: " + this.hopperCanLoadChunks ); -@@ -309,7 +309,7 @@ public class SpigotWorldConfig +@@ -309,7 +311,7 @@ public class SpigotWorldConfig public int tridentDespawnRate; private void arrowDespawnRate() { diff --git a/patches/server/0013-Tweak-console-logging.patch b/patches/server/0013-Tweak-console-logging.patch index 88490de..ebe34d2 100644 --- a/patches/server/0013-Tweak-console-logging.patch +++ b/patches/server/0013-Tweak-console-logging.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Tweak console logging diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 3a2acbdcfb64dff5ecb686ba7ea405b488e6eca9..c48f42815314e2fb106b0dff5f38a9e5c3498632 100644 +index f6afc085b..dea61aeaf 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -193,16 +193,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -197,16 +197,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface DedicatedServer.LOGGER.warn("To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\""); } @@ -25,13 +25,12 @@ index 3a2acbdcfb64dff5ecb686ba7ea405b488e6eca9..c48f42815314e2fb106b0dff5f38a9e5 DedicatedServer.LOGGER.info("Loading properties"); DedicatedServerProperties dedicatedserverproperties = this.settings.getProperties(); -@@ -226,6 +216,17 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -239,6 +229,15 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface this.plazmaConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess()); // Plazma - Configurable Plazma net.sparklypower.sparklypaper.HalloweenManager.startSyncEpochTask(); // Plazma - Port SparklyPaper patches; Optimize Spooky Season // Paper end - initialize global and world-defaults configuration -+ // Plazma - Tweak console logging; Moved down -+ // Paper start - detect running as root -+ if (org.plazmamc.plazma.configurations.GlobalConfiguration.get().consoleLogs.rootUserWarnings && io.papermc.paper.util.ServerEnvironment.userIsRootOrAdmin()) { ++ // Paper start - detect running as root // Plazma - Tweak console logging (moved down) ++ if (io.papermc.paper.util.ServerEnvironment.userIsRootOrAdmin()) { + DedicatedServer.LOGGER.warn("****************************"); + DedicatedServer.LOGGER.warn("YOU ARE RUNNING THIS SERVER AS AN ADMINISTRATIVE OR ROOT USER. THIS IS NOT ADVISED."); + DedicatedServer.LOGGER.warn("YOU ARE OPENING YOURSELF UP TO POTENTIAL RISKS WHEN DOING THIS."); @@ -39,11 +38,10 @@ index 3a2acbdcfb64dff5ecb686ba7ea405b488e6eca9..c48f42815314e2fb106b0dff5f38a9e5 + DedicatedServer.LOGGER.warn("****************************"); + } + // Paper end - detect running as root -+ // Plazma end - Tweak console logging + this.server.spark.enableEarlyIfRequested(); // Paper - spark // Paper start - fix converting txt to json file; convert old users earlier after PlayerList creation but before file load/save if (this.convertOldUsers()) { - this.getProfileCache().save(false); // Paper -@@ -333,6 +334,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -339,6 +338,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface String proxyFlavor = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "Velocity" : "BungeeCord"; String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/"; // Paper end - Add Velocity IP Forwarding Support @@ -51,7 +49,7 @@ index 3a2acbdcfb64dff5ecb686ba7ea405b488e6eca9..c48f42815314e2fb106b0dff5f38a9e5 if (!this.usesAuthentication()) { DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!"); DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware."); -@@ -346,7 +348,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -352,7 +352,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface DedicatedServer.LOGGER.warn("While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose."); } // Spigot end diff --git a/patches/server/0014-Add-missing-purpur-configuration-options.patch b/patches/server/0014-Add-missing-purpur-configuration-options.patch index 6cbcf2c..993f691 100644 --- a/patches/server/0014-Add-missing-purpur-configuration-options.patch +++ b/patches/server/0014-Add-missing-purpur-configuration-options.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Add missing purpur configuration options diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 569f42645a7730451944fbbd6b96910493feeca5..a14d2ec3b8c89045916b95da5ce2a18d1e866bcf 100644 +index 62c62fd26..43791817a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -150,6 +150,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS - protected void registerGoals() { - this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur +@@ -158,6 +158,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS + this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.allayMaxHealth); + this.getAttribute(Attributes.SCALE).setBaseValue(this.level().purpurConfig.allayScale); } + + // Plazma start - Add missing purpur configuration options @@ -33,14 +33,14 @@ index 569f42645a7730451944fbbd6b96910493feeca5..a14d2ec3b8c89045916b95da5ce2a18d @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 24a1663cf1cd3f888981a13907811b55bdbf6133..fdc3aa9672077787e841d240fe1e690dcd9ca321 100644 +index e88d6d691..00803dcc2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -@@ -93,6 +93,18 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl +@@ -96,6 +96,18 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl public int getPurpurBreedTime() { return this.level().purpurConfig.camelBreedingTicks; } -+ ++ + // Plazma start - Add missing purpur configuration options + @Override + public boolean isSensitiveToWater() { @@ -51,7 +51,7 @@ index 24a1663cf1cd3f888981a13907811b55bdbf6133..fdc3aa9672077787e841d240fe1e690d + public boolean isAlwaysExperienceDropper() { + return level().purpurConfig.camelAlwaysDropExp; + } -+ // Plazma end - Add missing purpur configuration optionsurpur end ++ // Plazma end - Add missing purpur configuration options // Purpur end @Override @@ -84,7 +84,7 @@ index 4c861b18fbfbae3cb2f1e3563393cfcf4005591c..651f30b4fb02dc03fabad34b62d7d86f public int getPurpurBreedTime() { diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 64d0e2edf0e47bfe3bc5fbdbabac26c494110467..e077a0bffedd0bb11c9ab5eb507451a0cf6317ea 100644 +index 5cd69dd54..1abf23fb1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -93,6 +93,23 @@ public class Tadpole extends AbstractFish { @@ -112,10 +112,10 @@ index 64d0e2edf0e47bfe3bc5fbdbabac26c494110467..e077a0bffedd0bb11c9ab5eb507451a0 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 21bdcbd51d9f440e0734750b40cefa4c08cdaf5f..a2cc1efaa621861828b007759536ac49d7e3646e 100644 +index b6f528170..bc931f54d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -119,6 +119,18 @@ public class Sniffer extends Animal { +@@ -120,6 +120,18 @@ public class Sniffer extends Animal { public int getPurpurBreedTime() { return this.level().purpurConfig.snifferBreedingTicks; } @@ -135,10 +135,10 @@ index 21bdcbd51d9f440e0734750b40cefa4c08cdaf5f..a2cc1efaa621861828b007759536ac49 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 722e1fed4b333958e95a847b27cfc67d04f13263..16891921341f8967c9115f415f91ec379fcd5b0c 100644 +index 8e24cd9ed..c0398f21c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -147,6 +147,23 @@ public class Warden extends Monster implements VibrationSystem { +@@ -148,6 +148,23 @@ public class Warden extends Monster implements VibrationSystem { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur } @@ -163,7 +163,7 @@ index 722e1fed4b333958e95a847b27cfc67d04f13263..16891921341f8967c9115f415f91ec37 @Override diff --git a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java -index e0aec3b3e04d603dc208029554f981c6b9e6b43e..337702c8042d44d4be6be1341023d0779cfaa580 100644 +index c14019a13..8b9f78b3b 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java @@ -45,12 +45,12 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain @@ -181,7 +181,7 @@ index e0aec3b3e04d603dc208029554f981c6b9e6b43e..337702c8042d44d4be6be1341023d077 this.setPos(d0, d1, d2); this.xo = d0; this.yo = d1; -@@ -170,7 +170,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain +@@ -177,7 +177,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain @Override public int getContainerSize() { @@ -191,10 +191,10 @@ index e0aec3b3e04d603dc208029554f981c6b9e6b43e..337702c8042d44d4be6be1341023d077 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 0a8d1f2b33257a371abb97a3a88af1f89ee46e24..dace438eac55b33b9318dfd9f8706883bab64971 100644 +index 97fc4fb79..cd8194b08 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -329,6 +329,7 @@ public class PurpurConfig { +@@ -330,6 +330,7 @@ public class PurpurConfig { } public static int barrelRows = 3; @@ -202,7 +202,7 @@ index 0a8d1f2b33257a371abb97a3a88af1f89ee46e24..dace438eac55b33b9318dfd9f8706883 public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; -@@ -369,6 +370,7 @@ public class PurpurConfig { +@@ -372,6 +373,7 @@ public class PurpurConfig { case 1 -> 9; default -> 27; }); @@ -211,26 +211,24 @@ index 0a8d1f2b33257a371abb97a3a88af1f89ee46e24..dace438eac55b33b9318dfd9f8706883 org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b6a6a74dfd00a4536258c8693048c9d1ac4df435..182e8c3f9a631a98576b2efb63371d57f9f5f25f 100644 +index 1ff95cced..0318c4916 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1178,7 +1178,15 @@ public class PurpurWorldConfig { - public boolean allayRidable = false; - public boolean allayRidableInWater = true; +@@ -1135,7 +1135,13 @@ public class PurpurWorldConfig { public boolean allayControllable = true; + public double allayMaxHealth = 20.0D; + public double allayScale = 1.0D; + // Plazma start - Add missing purpur config options -+ public double allayMaxHealth = 20.0D; + public boolean allayTakeDamageFromWater = false; + public boolean allayAlwaysDropExp = false; private void allaySettings() { -+ allayMaxHealth = getDouble("mobs.allay.max-health", allayMaxHealth); + allayTakeDamageFromWater = getBoolean("mobs.allay.take-damage-from-water", allayTakeDamageFromWater); + allayAlwaysDropExp = getBoolean("mobs.allay.always-drop-exp", allayAlwaysDropExp); + // Plazma end - Add missing purpur configuration options allayRidable = getBoolean("mobs.allay.ridable", allayRidable); allayRidableInWater = getBoolean("mobs.allay.ridable-in-water", allayRidableInWater); allayControllable = getBoolean("mobs.allay.controllable", allayControllable); -@@ -1295,7 +1303,13 @@ public class PurpurWorldConfig { +@@ -1290,7 +1296,13 @@ public class PurpurWorldConfig { public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; public int camelBreedingTicks = 6000; @@ -244,7 +242,7 @@ index b6a6a74dfd00a4536258c8693048c9d1ac4df435..182e8c3f9a631a98576b2efb63371d57 camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); camelMaxHealthMax = getDouble("mobs.camel.attributes.max_health.max", camelMaxHealthMax); -@@ -1723,7 +1737,15 @@ public class PurpurWorldConfig { +@@ -1744,7 +1756,15 @@ public class PurpurWorldConfig { public boolean frogControllable = true; public float frogRidableJumpHeight = 0.65F; public int frogBreedingTicks = 6000; @@ -260,9 +258,9 @@ index b6a6a74dfd00a4536258c8693048c9d1ac4df435..182e8c3f9a631a98576b2efb63371d57 frogRidable = getBoolean("mobs.frog.ridable", frogRidable); frogRidableInWater = getBoolean("mobs.frog.ridable-in-water", frogRidableInWater); frogControllable = getBoolean("mobs.frog.controllable", frogControllable); -@@ -2676,7 +2698,13 @@ public class PurpurWorldConfig { - public boolean snifferControllable = true; +@@ -2756,7 +2776,13 @@ public class PurpurWorldConfig { public double snifferMaxHealth = 14.0D; + public double snifferScale = 1.0D; public int snifferBreedingTicks = 6000; + // Plazma start - Add missing purpur config options + public boolean snifferTakeDamageFromWater = false; @@ -274,7 +272,7 @@ index b6a6a74dfd00a4536258c8693048c9d1ac4df435..182e8c3f9a631a98576b2efb63371d57 snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable); snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater); snifferControllable = getBoolean("mobs.sniffer.controllable", snifferControllable); -@@ -2775,7 +2803,15 @@ public class PurpurWorldConfig { +@@ -2864,7 +2890,15 @@ public class PurpurWorldConfig { public boolean tadpoleRidable = false; public boolean tadpoleRidableInWater = true; public boolean tadpoleControllable = true; @@ -290,7 +288,7 @@ index b6a6a74dfd00a4536258c8693048c9d1ac4df435..182e8c3f9a631a98576b2efb63371d57 tadpoleRidable = getBoolean("mobs.tadpole.ridable", tadpoleRidable); tadpoleRidableInWater = getBoolean("mobs.tadpole.ridable-in-water", tadpoleRidableInWater); tadpoleControllable = getBoolean("mobs.tadpole.controllable", tadpoleControllable); -@@ -2991,7 +3027,15 @@ public class PurpurWorldConfig { +@@ -3092,7 +3126,15 @@ public class PurpurWorldConfig { public boolean wardenRidable = false; public boolean wardenRidableInWater = true; public boolean wardenControllable = true; diff --git a/patches/purpur-drops/dropped-api/0011-LivingEntity-safeFallDistance.patch b/patches/unapplied/api/purpur/0011-LivingEntity-safeFallDistance.patch similarity index 100% rename from patches/purpur-drops/dropped-api/0011-LivingEntity-safeFallDistance.patch rename to patches/unapplied/api/purpur/0011-LivingEntity-safeFallDistance.patch diff --git a/patches/purpur-drops/dropped-api/0016-LivingEntity-broadcastItemBreak.patch b/patches/unapplied/api/purpur/0016-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/purpur-drops/dropped-api/0016-LivingEntity-broadcastItemBreak.patch rename to patches/unapplied/api/purpur/0016-LivingEntity-broadcastItemBreak.patch diff --git a/patches/purpur-drops/dropped-api/0032-Potion-NamespacedKey.patch b/patches/unapplied/api/purpur/0032-Potion-NamespacedKey.patch similarity index 100% rename from patches/purpur-drops/dropped-api/0032-Potion-NamespacedKey.patch rename to patches/unapplied/api/purpur/0032-Potion-NamespacedKey.patch diff --git a/patches/purpur-drops/dropped-api/0041-Add-item-packet-serialize-event.patch b/patches/unapplied/api/purpur/0041-Add-item-packet-serialize-event.patch similarity index 100% rename from patches/purpur-drops/dropped-api/0041-Add-item-packet-serialize-event.patch rename to patches/unapplied/api/purpur/0041-Add-item-packet-serialize-event.patch diff --git a/patches/purpur-drops/dropped-api/0049-Add-hover-lines-API.patch b/patches/unapplied/api/purpur/0049-Add-hover-lines-API.patch similarity index 100% rename from patches/purpur-drops/dropped-api/0049-Add-hover-lines-API.patch rename to patches/unapplied/api/purpur/0049-Add-hover-lines-API.patch diff --git a/patches/unapplied/server/0008-Port-SparklyPaper-patches.patch b/patches/unapplied/server/0008-Port-SparklyPaper-patches.patch new file mode 100644 index 0000000..6abf6d5 --- /dev/null +++ b/patches/unapplied/server/0008-Port-SparklyPaper-patches.patch @@ -0,0 +1,32 @@ + +diff --git a/src/main/java/io/papermc/paper/util/player/NearbyPlayers.java b/src/main/java/io/papermc/paper/util/player/NearbyPlayers.java +index f164256d59b761264876ca0c85f812d101bfd5de..deaeb134c47da8710afa747bf980bd00aab846d6 100644 +--- a/src/main/java/io/papermc/paper/util/player/NearbyPlayers.java ++++ b/src/main/java/io/papermc/paper/util/player/NearbyPlayers.java +@@ -106,6 +106,13 @@ public final class NearbyPlayers { + return chunk == null ? null : chunk.players[type.ordinal()]; + } + ++ // Plazma start - Port SparklyPaper patches; Cache coordinate key used for nearby players when ticking chunks ++ public ReferenceList getPlayers(final long nearbyCoordKey, final NearbyMapType type) { ++ final TrackedChunk chunk = this.byChunk.get(nearbyCoordKey); ++ return chunk == null ? null : chunk.players[type.ordinal()]; ++ } ++ // Plazma end - Port SparklyPaper patches; Cache coordinate key used for nearby players when ticking chunks ++ + public ReferenceList getPlayersByChunk(final int chunkX, final int chunkZ, final NearbyMapType type) { + final TrackedChunk chunk = this.byChunk.get(CoordinateUtils.getChunkKey(chunkX, chunkZ)); + +diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java +index 5eb7bcf492ee354ef775cd8d09c7ca2bdfeb7ce2..697cb18bce2f2470a0a2347ba6709e1449b360fd 100644 +--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java ++++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java +@@ -615,7 +615,7 @@ public class ServerChunkCache extends ChunkSource { + + // Paper start - optimise chunk tick iteration + com.destroystokyo.paper.util.maplist.ReferenceList playersNearby +- = nearbyPlayers.getPlayers(chunkcoordintpair, io.papermc.paper.util.player.NearbyPlayers.NearbyMapType.SPAWN_RANGE); ++ = nearbyPlayers.getPlayers(chunk1.nearbyPlayersCoordinateKey, io.papermc.paper.util.player.NearbyPlayers.NearbyMapType.SPAWN_RANGE); + if (playersNearby == null) { + continue; + } \ No newline at end of file diff --git a/patches/unapplied/server/0011-Optimize-default-configurations.patch b/patches/unapplied/server/0011-Optimize-default-configurations.patch new file mode 100644 index 0000000..32094bf --- /dev/null +++ b/patches/unapplied/server/0011-Optimize-default-configurations.patch @@ -0,0 +1,14 @@ + +diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +index c867796f6..ecced2072 100644 +--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java ++++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +@@ -181,7 +222,7 @@ public class WorldConfiguration extends ConfigurationPart { + @MergeMap + public Reference2IntMap spawnLimits = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1))); + @MergeMap +- public Map despawnRanges = Arrays.stream(MobCategory.values()).collect(Collectors.toMap(Function.identity(), category -> new DespawnRange(category.getNoDespawnDistance(), category.getDespawnDistance()))); ++ public Map despawnRanges = Arrays.stream(MobCategory.values()).collect(Collectors.toMap(Function.identity(), category -> new DespawnRange(category.getNoDespawnDistance(), org.plazmamc.plazma.configurations.PlazmaConfigurations.optimize() ? (net.minecraft.server.MinecraftServer.getServer().server.getSimulationDistance() * 16) + 8 : category.getDespawnDistance()))); // Plazma - Optimize default configurations + @MergeMap + public Reference2IntMap ticksPerSpawn = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1))); + \ No newline at end of file diff --git a/patches/purpur-drops/dropped-server/0013-LivingEntity-safeFallDistance.patch b/patches/unapplied/server/purpur/0013-LivingEntity-safeFallDistance.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0013-LivingEntity-safeFallDistance.patch rename to patches/unapplied/server/purpur/0013-LivingEntity-safeFallDistance.patch diff --git a/patches/purpur-drops/dropped-server/0040-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/unapplied/server/purpur/0040-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0040-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/unapplied/server/purpur/0040-End-gateway-should-check-if-entity-can-use-portal.patch diff --git a/patches/purpur-drops/dropped-server/0082-LivingEntity-broadcastItemBreak.patch b/patches/unapplied/server/purpur/0082-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0082-LivingEntity-broadcastItemBreak.patch rename to patches/unapplied/server/purpur/0082-LivingEntity-broadcastItemBreak.patch diff --git a/patches/purpur-drops/dropped-server/0094-Allow-infinite-and-mending-enchantments-together.patch b/patches/unapplied/server/purpur/0094-Allow-infinite-and-mending-enchantments-together.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0094-Allow-infinite-and-mending-enchantments-together.patch rename to patches/unapplied/server/purpur/0094-Allow-infinite-and-mending-enchantments-together.patch diff --git a/patches/purpur-drops/dropped-server/0142-Allow-infinity-on-crossbows.patch b/patches/unapplied/server/purpur/0142-Allow-infinity-on-crossbows.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0142-Allow-infinity-on-crossbows.patch rename to patches/unapplied/server/purpur/0142-Allow-infinity-on-crossbows.patch diff --git a/patches/purpur-drops/dropped-server/0220-Potion-NamespacedKey.patch b/patches/unapplied/server/purpur/0220-Potion-NamespacedKey.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0220-Potion-NamespacedKey.patch rename to patches/unapplied/server/purpur/0220-Potion-NamespacedKey.patch diff --git a/patches/purpur-drops/dropped-server/0236-Configurable-food-attributes.patch b/patches/unapplied/server/purpur/0236-Configurable-food-attributes.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0236-Configurable-food-attributes.patch rename to patches/unapplied/server/purpur/0236-Configurable-food-attributes.patch diff --git a/patches/purpur-drops/dropped-server/0255-Send-client-custom-name-of-BE.patch b/patches/unapplied/server/purpur/0255-Send-client-custom-name-of-BE.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0255-Send-client-custom-name-of-BE.patch rename to patches/unapplied/server/purpur/0255-Send-client-custom-name-of-BE.patch diff --git a/patches/purpur-drops/dropped-server/0263-Allay-respect-item-NBT.patch b/patches/unapplied/server/purpur/0263-Allay-respect-item-NBT.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0263-Allay-respect-item-NBT.patch rename to patches/unapplied/server/purpur/0263-Allay-respect-item-NBT.patch diff --git a/patches/purpur-drops/dropped-server/0271-Add-item-packet-serialize-event.patch b/patches/unapplied/server/purpur/0271-Add-item-packet-serialize-event.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0271-Add-item-packet-serialize-event.patch rename to patches/unapplied/server/purpur/0271-Add-item-packet-serialize-event.patch diff --git a/patches/purpur-drops/dropped-server/0282-Add-mending-multiplier.patch b/patches/unapplied/server/purpur/0282-Add-mending-multiplier.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0282-Add-mending-multiplier.patch rename to patches/unapplied/server/purpur/0282-Add-mending-multiplier.patch diff --git a/patches/purpur-drops/dropped-server/0292-Add-hover-lines-API.patch b/patches/unapplied/server/purpur/0292-Add-hover-lines-API.patch similarity index 100% rename from patches/purpur-drops/dropped-server/0292-Add-hover-lines-API.patch rename to patches/unapplied/server/purpur/0292-Add-hover-lines-API.patch diff --git a/patches/server/0015-Completely-remove-Mojang-Profiler.patch b/patches/unapplied/server/working/0015-Completely-remove-Mojang-Profiler.patch similarity index 100% rename from patches/server/0015-Completely-remove-Mojang-Profiler.patch rename to patches/unapplied/server/working/0015-Completely-remove-Mojang-Profiler.patch diff --git a/patches/server/0016-Add-option-to-change-nether-portal-size.patch b/patches/unapplied/server/working/0016-Add-option-to-change-nether-portal-size.patch similarity index 100% rename from patches/server/0016-Add-option-to-change-nether-portal-size.patch rename to patches/unapplied/server/working/0016-Add-option-to-change-nether-portal-size.patch diff --git a/patches/server/0017-Reduce-create-random-instance.patch b/patches/unapplied/server/working/0017-Reduce-create-random-instance.patch similarity index 100% rename from patches/server/0017-Reduce-create-random-instance.patch rename to patches/unapplied/server/working/0017-Reduce-create-random-instance.patch diff --git a/patches/server/0018-Apply-various-optimizations.patch b/patches/unapplied/server/working/0018-Apply-various-optimizations.patch similarity index 100% rename from patches/server/0018-Apply-various-optimizations.patch rename to patches/unapplied/server/working/0018-Apply-various-optimizations.patch diff --git a/patches/server/0019-Do-not-load-chunks-to-spawn-phantom.patch b/patches/unapplied/server/working/0019-Do-not-load-chunks-to-spawn-phantom.patch similarity index 100% rename from patches/server/0019-Do-not-load-chunks-to-spawn-phantom.patch rename to patches/unapplied/server/working/0019-Do-not-load-chunks-to-spawn-phantom.patch diff --git a/patches/server/0020-Add-option-to-disable-moved-to-quickly-check-for-spe.patch b/patches/unapplied/server/working/0020-Add-option-to-disable-moved-to-quickly-check-for-spe.patch similarity index 100% rename from patches/server/0020-Add-option-to-disable-moved-to-quickly-check-for-spe.patch rename to patches/unapplied/server/working/0020-Add-option-to-disable-moved-to-quickly-check-for-spe.patch diff --git a/patches/server/0021-Configurable-cave-lava-sea-level.patch b/patches/unapplied/server/working/0021-Configurable-cave-lava-sea-level.patch similarity index 100% rename from patches/server/0021-Configurable-cave-lava-sea-level.patch rename to patches/unapplied/server/working/0021-Configurable-cave-lava-sea-level.patch diff --git a/patches/server/0022-Ignore-useless-entity-packets.patch b/patches/unapplied/server/working/0022-Ignore-useless-entity-packets.patch similarity index 100% rename from patches/server/0022-Ignore-useless-entity-packets.patch rename to patches/unapplied/server/working/0022-Ignore-useless-entity-packets.patch diff --git a/patches/server/0023-Configurable-entity-sensor-tick.patch b/patches/unapplied/server/working/0023-Configurable-entity-sensor-tick.patch similarity index 100% rename from patches/server/0023-Configurable-entity-sensor-tick.patch rename to patches/unapplied/server/working/0023-Configurable-entity-sensor-tick.patch diff --git a/patches/server/0024-Variable-entity-wakeup-duration.patch b/patches/unapplied/server/working/0024-Variable-entity-wakeup-duration.patch similarity index 100% rename from patches/server/0024-Variable-entity-wakeup-duration.patch rename to patches/unapplied/server/working/0024-Variable-entity-wakeup-duration.patch diff --git a/patches/server/0025-Optimise-state-lookup-more.patch b/patches/unapplied/server/working/0025-Optimise-state-lookup-more.patch similarity index 100% rename from patches/server/0025-Optimise-state-lookup-more.patch rename to patches/unapplied/server/working/0025-Optimise-state-lookup-more.patch diff --git a/patches/server/0026-Suppress-errors-from-dirty-attributes.patch b/patches/unapplied/server/working/0026-Suppress-errors-from-dirty-attributes.patch similarity index 100% rename from patches/server/0026-Suppress-errors-from-dirty-attributes.patch rename to patches/unapplied/server/working/0026-Suppress-errors-from-dirty-attributes.patch diff --git a/patches/server/0027-Skip-event-if-no-listeners.patch b/patches/unapplied/server/working/0027-Skip-event-if-no-listeners.patch similarity index 100% rename from patches/server/0027-Skip-event-if-no-listeners.patch rename to patches/unapplied/server/working/0027-Skip-event-if-no-listeners.patch diff --git a/patches/server/0028-Add-entity-spawn-deadlock-timer.patch b/patches/unapplied/server/working/0028-Add-entity-spawn-deadlock-timer.patch similarity index 100% rename from patches/server/0028-Add-entity-spawn-deadlock-timer.patch rename to patches/unapplied/server/working/0028-Add-entity-spawn-deadlock-timer.patch diff --git a/patches/server/0029-Lithium-HashedList.patch b/patches/unapplied/server/working/0029-Lithium-HashedList.patch similarity index 100% rename from patches/server/0029-Lithium-HashedList.patch rename to patches/unapplied/server/working/0029-Lithium-HashedList.patch diff --git a/patches/server/0030-Improve-SwingTime-ticking.patch b/patches/unapplied/server/working/0030-Improve-SwingTime-ticking.patch similarity index 100% rename from patches/server/0030-Improve-SwingTime-ticking.patch rename to patches/unapplied/server/working/0030-Improve-SwingTime-ticking.patch diff --git a/patches/server/0031-Save-Json-list-asynchronously.patch b/patches/unapplied/server/working/0031-Save-Json-list-asynchronously.patch similarity index 100% rename from patches/server/0031-Save-Json-list-asynchronously.patch rename to patches/unapplied/server/working/0031-Save-Json-list-asynchronously.patch diff --git a/patches/server/0032-Add-more-MSPT.patch b/patches/unapplied/server/working/0032-Add-more-MSPT.patch similarity index 100% rename from patches/server/0032-Add-more-MSPT.patch rename to patches/unapplied/server/working/0032-Add-more-MSPT.patch diff --git a/patches/server/0033-Process-pathfinding-asynchronously.patch b/patches/unapplied/server/working/0033-Process-pathfinding-asynchronously.patch similarity index 100% rename from patches/server/0033-Process-pathfinding-asynchronously.patch rename to patches/unapplied/server/working/0033-Process-pathfinding-asynchronously.patch diff --git a/patches/server/0034-Use-Akair-s-flag-when-running-the-test-server-with-g.patch b/patches/unapplied/server/working/0034-Use-Akair-s-flag-when-running-the-test-server-with-g.patch similarity index 100% rename from patches/server/0034-Use-Akair-s-flag-when-running-the-test-server-with-g.patch rename to patches/unapplied/server/working/0034-Use-Akair-s-flag-when-running-the-test-server-with-g.patch diff --git a/patches/server/0035-Use-Plazma-logo-instead-if-server-favicon-doesn-t-ex.patch b/patches/unapplied/server/working/0035-Use-Plazma-logo-instead-if-server-favicon-doesn-t-ex.patch similarity index 100% rename from patches/server/0035-Use-Plazma-logo-instead-if-server-favicon-doesn-t-ex.patch rename to patches/unapplied/server/working/0035-Use-Plazma-logo-instead-if-server-favicon-doesn-t-ex.patch diff --git a/patches/server/0036-Implement-FreedomChat.patch b/patches/unapplied/server/working/0036-Implement-FreedomChat.patch similarity index 100% rename from patches/server/0036-Implement-FreedomChat.patch rename to patches/unapplied/server/working/0036-Implement-FreedomChat.patch diff --git a/patches/server/0037-Add-some-missing-Pufferfish-configurations.patch b/patches/unapplied/server/working/0037-Add-some-missing-Pufferfish-configurations.patch similarity index 100% rename from patches/server/0037-Add-some-missing-Pufferfish-configurations.patch rename to patches/unapplied/server/working/0037-Add-some-missing-Pufferfish-configurations.patch diff --git a/patches/server/0038-Improve-biome-temperature-cache.patch b/patches/unapplied/server/working/0038-Improve-biome-temperature-cache.patch similarity index 100% rename from patches/server/0038-Improve-biome-temperature-cache.patch rename to patches/unapplied/server/working/0038-Improve-biome-temperature-cache.patch