9
0
mirror of https://github.com/BX-Team/DivineMC.git synced 2025-12-19 14:59:25 +00:00

Updated Upstream (Purpur)

Upstream has released updates that appear to apply and compile correctly

Purpur Changes:
PurpurMC/Purpur@afcdf9bb Updated Upstream (Paper)
PurpurMC/Purpur@4a5974cf Updated Upstream (Paper)
PurpurMC/Purpur@3893bba0 this is important...
This commit is contained in:
NONPLAYT
2025-06-25 14:03:21 +03:00
parent 9e1b0a9beb
commit 736ec2672c
30 changed files with 212 additions and 184 deletions

View File

@@ -124,7 +124,7 @@
@@ -199,7 +_,7 @@
"https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/",
"https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/",
// "https://logging.apache.org/log4j/2.x/javadoc/log4j-api/", // TODO: Broken
"https://logging.apache.org/log4j/2.x/javadoc/log4j-api/",
- "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3",
+ "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.9.22", // DivineMC - Bump dependencies
)

View File

@@ -1,6 +1,6 @@
--- a/purpur-server/build.gradle.kts
+++ b/purpur-server/build.gradle.kts
@@ -14,6 +_,7 @@
@@ -16,6 +_,7 @@
}
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"
@@ -8,7 +8,7 @@
dependencies {
mache("io.papermc:mache:1.21.6+build.1")
@@ -27,6 +_,7 @@
@@ -29,6 +_,7 @@
// Purpur start - Rebrand
val purpur = forks.register("purpur") {
@@ -16,7 +16,7 @@
upstream.patchDir("paperServer") {
upstreamPath = "paper-server"
excludes = setOf("src/minecraft", "patches", "build.gradle.kts")
@@ -34,9 +_,27 @@
@@ -36,9 +_,27 @@
outputDir = rootDirectory.dir("paper-server")
}
}
@@ -43,9 +43,9 @@
+ // DivineMC end - Rebrand
+
spigot {
enabled = false
buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc"
@@ -60,6 +_,7 @@
enabled = true
buildDataRef = "281ac0de7a76d808753ede97d11b034bc801b63d"
@@ -62,6 +_,7 @@
libraryRepositories.addAll(
"https://repo.maven.apache.org/maven2/",
paperMavenPublicUrl,
@@ -53,7 +53,7 @@
)
}
@@ -123,10 +_,18 @@
@@ -125,10 +_,18 @@
main {
java { srcDir("../paper-server/src/main/java") }
resources { srcDir("../paper-server/src/main/resources") }
@@ -72,7 +72,7 @@
}
}
val log4jPlugins = sourceSets.create("log4jPlugins") {
@@ -154,10 +_,23 @@
@@ -156,10 +_,23 @@
}
dependencies {
@@ -99,7 +99,7 @@
implementation("net.minecrell:terminalconsoleappender:1.3.0")
implementation("net.kyori:adventure-text-serializer-ansi:4.21.0") // Keep in sync with adventureVersion from Paper-API build file
runtimeConfiguration(sourceSets.main.map { it.runtimeClasspath })
@@ -168,16 +_,16 @@
@@ -170,16 +_,16 @@
all its classes to check if they are plugins.
Scanning takes about 1-2 seconds so adding this speeds up the server start.
*/
@@ -120,7 +120,7 @@
implementation("org.ow2.asm:asm-commons:9.8")
implementation("org.spongepowered:configurate-yaml:4.2.0-20250225.064233-199")
implementation("org.spongepowered:configurate-core:4.2.0-20250225.064233-204") // Pinned dependency of above pinned yaml snapshot.
@@ -189,24 +_,31 @@
@@ -191,24 +_,31 @@
// Deps that were previously in the API but have now been moved here for backwards compat, eventually to be removed
runtimeOnly("commons-lang:commons-lang:2.6")
runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0")
@@ -160,7 +160,7 @@
implementation("net.neoforged:srgutils:1.0.9") // Mappings handling
implementation("net.neoforged:AutoRenamingTool:2.0.3") // Remap plugins
@@ -222,30 +_,42 @@
@@ -224,30 +_,42 @@
implementation("me.lucko:spark-paper:1.10.133-20250413.112336-1")
}

View File

@@ -18,10 +18,10 @@ index 394443d00e661715439be1e56dddc129947699a4..480ad57a6b7b74e6b83e9c6ceb69ea1f
public CrashReport(String title, Throwable exception) {
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(exception); // Paper
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index fb4301ccd4fb3643e19c477293946f536b0f7741..e26a053c598c33fd32b305235284ef6600a59752 100644
index ac0ed2e7261a0d698fafd5b314108ff38a169073..8f32168ff0371a9168bbf9b08b2154200f8131a0 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1182,6 +1182,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1183,6 +1183,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
protected void runServer() {
try {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Completely remove Mojang profiler
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index 75d167649749d0aa48eca87bcf478a4476bb4a6b..2b4345d16e8e5e903afb723dc41f549613998f7c 100644
index aa978032ab4c56d3b90bbe2ad2fff13c72f3ee4d..7226d6066050523c021c89a79af1edbcc184af9c 100644
--- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java
@@ -58,7 +58,6 @@ import net.minecraft.server.commands.CloneCommands;
@@ -24,7 +24,7 @@ index 75d167649749d0aa48eca87bcf478a4476bb4a6b..2b4345d16e8e5e903afb723dc41f5496
import net.minecraft.util.profiling.jfr.JvmProfiler;
import net.minecraft.world.flag.FeatureFlagSet;
import net.minecraft.world.flag.FeatureFlags;
@@ -190,7 +188,6 @@ public class Commands {
@@ -191,7 +189,6 @@ public class Commands {
DamageCommand.register(this.dispatcher, context);
DataCommands.register(this.dispatcher);
DataPackCommand.register(this.dispatcher, context);
@@ -32,15 +32,15 @@ index 75d167649749d0aa48eca87bcf478a4476bb4a6b..2b4345d16e8e5e903afb723dc41f5496
DefaultGameModeCommands.register(this.dispatcher);
DialogCommand.register(this.dispatcher, context);
DifficultyCommand.register(this.dispatcher);
@@ -392,7 +389,6 @@ public class Commands {
public void performCommand(ParseResults<CommandSourceStack> parseResults, String command, String label, boolean throwCommandError) {
@@ -357,7 +354,6 @@ public class Commands {
org.spigotmc.AsyncCatcher.catchOp("Cannot perform command async");
// Paper end
CommandSourceStack commandSourceStack = parseResults.getContext().getSource();
- Profiler.get().push(() -> "/" + command);
ContextChain contextChain = this.finishParsing(parseResults, command, commandSourceStack, label); // CraftBukkit // Paper - Add UnknownCommandEvent
ContextChain<CommandSourceStack> contextChain = finishParsing(parseResults, command, commandSourceStack);
try {
@@ -428,8 +424,6 @@ public class Commands {
@@ -393,8 +389,6 @@ public class Commands {
commandSourceStack.sendFailure(Component.literal(Util.describeError(var12)));
LOGGER.error("'/{}' threw an exception", command, var12);
}
@@ -49,7 +49,7 @@ index 75d167649749d0aa48eca87bcf478a4476bb4a6b..2b4345d16e8e5e903afb723dc41f5496
}
}
@@ -486,7 +480,7 @@ public class Commands {
@@ -451,7 +445,7 @@ public class Commands {
int max = Math.max(1, server.getGameRules().getInt(GameRules.RULE_MAX_COMMAND_CHAIN_LENGTH));
int _int = server.getGameRules().getInt(GameRules.RULE_MAX_COMMAND_FORK_COUNT);
@@ -213,7 +213,7 @@ index 18071dcc69cc28471dddb7de94e803ec1e5fc2e4..aa25f5ebaf7d1b22825b962b02dcae02
}
}
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52f60375b8 100644
index 8f32168ff0371a9168bbf9b08b2154200f8131a0..0912b009598876d6c16f7adcd80762074ea66f5a 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -114,19 +114,8 @@ import net.minecraft.util.TimeUtil;
@@ -250,7 +250,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
private ServerConnectionListener connection;
public final ChunkProgressListenerFactory progressListenerFactory;
@Nullable
@@ -999,9 +981,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1000,9 +982,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
shutdownThread = Thread.currentThread(); // Paper - Improved watchdog support
org.spigotmc.WatchdogThread.doStop(); // Paper - Improved watchdog support
// CraftBukkit end
@@ -260,7 +260,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
LOGGER.info("Stopping server");
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
@@ -1273,50 +1252,38 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1274,50 +1253,38 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Spigot end
boolean flag = l == 0L;
@@ -336,7 +336,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
this.isReady = true;
JvmProfiler.INSTANCE.onServerTick(this.smoothedTickTimeMillis);
}
@@ -1488,7 +1455,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1489,7 +1456,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@Override
public void doRunTask(TickTask task) {
@@ -344,7 +344,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
super.doRunTask(task);
}
@@ -1578,12 +1544,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1579,12 +1545,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.ticksUntilAutosave--;
// Paper start - Incremental chunk and player saving
@@ -357,7 +357,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
final boolean fullSave = autosavePeriod > 0 && this.tickCount % autosavePeriod == 0;
try {
this.isSaving = true;
@@ -1598,10 +1562,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1599,10 +1563,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} finally {
this.isSaving = false;
}
@@ -368,7 +368,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
this.runAllTasks(); // Paper - move runAllTasks() into full server tick (previously for timings)
this.server.spark.executeMainThreadTasks(); // Paper - spark
// Paper start - Server Tick Events
@@ -1610,7 +1572,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1611,7 +1573,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
new com.destroystokyo.paper.event.server.ServerTickEndEvent(this.tickCount, ((double)(endTime - lastTick) / 1000000D), remaining).callEvent();
// Paper end - Server Tick Events
this.server.spark.tickEnd(((double)(endTime - lastTick) / 1000000D)); // Paper - spark
@@ -376,7 +376,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
long l = Util.getNanos() - nanos;
int i1 = this.tickCount % 100;
this.aggregatedTickTimesNanos = this.aggregatedTickTimesNanos - this.tickTimesNanos[i1];
@@ -1623,16 +1584,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1624,16 +1585,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.tickTimes60s.add(this.tickCount, l);
// Paper end - Add tick times API and /mspt command
this.logTickMethodTime(nanos);
@@ -393,7 +393,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
LOGGER.debug("Autosave finished");
}
@@ -1698,7 +1655,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1699,7 +1656,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
protected void tickChildren(BooleanSupplier hasTimeLeft) {
@@ -401,7 +401,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
this.getPlayerList().getPlayers().forEach(serverPlayer1 -> serverPlayer1.connection.suspendFlushing());
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
// Paper start - Folia scheduler API
@@ -1716,9 +1672,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1717,9 +1673,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
});
// Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
@@ -411,7 +411,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
// CraftBukkit start
// Run tasks that are waiting on processing
@@ -1754,17 +1708,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1755,17 +1709,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
serverLevel.updateLagCompensationTick(); // Paper - lag compensation
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers
serverLevel.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur - Ridables
@@ -429,7 +429,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
try {
serverLevel.tick(hasTimeLeft);
} catch (Throwable var7) {
@@ -1773,34 +1722,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1774,34 +1723,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
throw new ReportedException(crashReport);
}
@@ -464,7 +464,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
}
public void tickConnection() {
@@ -1816,14 +1755,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1817,14 +1756,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void forceTimeSynchronization() {
@@ -479,7 +479,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
}
public boolean isLevelEnabled(Level level) {
@@ -2639,55 +2573,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2640,55 +2574,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// CraftBukkit end
@@ -535,7 +535,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
public Path getWorldPath(LevelResource levelResource) {
return this.storageSource.getLevelPath(levelResource);
}
@@ -2737,24 +2622,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2738,24 +2623,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
return this.isSaving;
}
@@ -560,7 +560,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
public int getMaxChainedNeighborUpdates() {
return 1000000;
}
@@ -2864,55 +2731,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2865,55 +2732,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public record ServerResourcePackInfo(UUID id, String url, String hash, boolean isRequired, @Nullable Component prompt) {
}
@@ -1067,10 +1067,10 @@ index b10cb4a73df58a5fe64e88868733ba41616f59e4..9f9cbe6056f8a4eeca64c40872d7403b
+ // DivineMC end - Completely remove Mojang profiler
}
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index ccf3fe18a349cd6295da16624056ee8a830876ac..19a3ba355694e7c26c233b216807cb23c82548be 100644
index de4d7908542128fe4e3b256482a624f0e6bea683..7ac82a49e3c64d1a41a2870c5cf9900812329a57 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -818,12 +818,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -815,12 +815,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
return this.settings.getProperties().serverResourcePackInfo;
}
@@ -4006,7 +4006,7 @@ index 39a604c9a53930b53d959b1d2eb504aa964e9a58..0d0380e3955836ce125f777841477503
@Override
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 125bef9e69b2d17d407d303b979076f0f2491507..d608ffc59dd6d9883db3f12b80cc11c7d8ded745 100644
index 541781045c6b47bcd8826635c5fd78e90cf87275..5a7b0038b2ddfe84cdf4582152cff8a1a3449f09 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -80,8 +80,6 @@ import net.minecraft.tags.TagKey;
@@ -5015,7 +5015,7 @@ index fa06ecacc27f619853c8db76d909ab4ba75dc529..345d4b80bd4383e0fb66d744d87bc8ef
// Paper start - Add mobcaps commands
diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java
index 289152af8095e25ae6ad56421c9216feb3091761..609b1d3ed313f342aec69cf8c6316cdbdf3a16bd 100644
index 1d3b16d3f60a394fe69e10ef1bb6052bb937070a..d0c4d63320fb5f58c43b38ebc333e9a7be487a5d 100644
--- a/net/minecraft/world/level/ServerExplosion.java
+++ b/net/minecraft/world/level/ServerExplosion.java
@@ -13,8 +13,6 @@ import net.minecraft.Util;
@@ -5027,7 +5027,7 @@ index 289152af8095e25ae6ad56421c9216feb3091761..609b1d3ed313f342aec69cf8c6316cdb
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
@@ -671,10 +669,7 @@ public class ServerExplosion implements Explosion {
@@ -669,10 +667,7 @@ public class ServerExplosion implements Explosion {
List<BlockPos> list = this.calculateExplodedPositions();
this.hurtEntities();
if (this.interactsWithBlocks()) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Multithreaded Tracker
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
index f3bac0906d8a1c5dea7b0dee13c5cd6fdbbcae49..c2c52fa8cd05a1b3487976cced210352a9026980 100644
index bdc1200ef5317fdaf58973bf580b0a672aee800f..dc2b3ccf7810731c0e2c90e5a476c1c8203a1fb7 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
@@ -340,7 +340,11 @@ public final class RegionizedPlayerChunkLoader {
@@ -344,7 +344,11 @@ public final class RegionizedPlayerChunkLoader {
private boolean canGenerateChunks = true;
private final ArrayDeque<ChunkHolderManager.TicketOperation<?, ?>> delayedTicketOps = new ArrayDeque<>();

View File

@@ -104,10 +104,10 @@ index b2bcfb3557a0326fd7ec1059f95d6da4568dfd80..6bb36686ae7ca9f4bf763baa89408614
}
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a51108f2c 100644
index dc2b3ccf7810731c0e2c90e5a476c1c8203a1fb7..5cb896334f9916b030ee523119946d3b40585fc3 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
@@ -187,13 +187,13 @@ public final class RegionizedPlayerChunkLoader {
@@ -191,13 +191,13 @@ public final class RegionizedPlayerChunkLoader {
}
if (((ChunkSystemServerPlayer)player).moonrise$getChunkLoader() != null) {
@@ -123,7 +123,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
}
public void updatePlayer(final ServerPlayer player) {
@@ -304,7 +304,7 @@ public final class RegionizedPlayerChunkLoader {
@@ -308,7 +308,7 @@ public final class RegionizedPlayerChunkLoader {
long currTime = System.nanoTime();
for (final ServerPlayer player : new java.util.ArrayList<>(this.world.players())) {
final PlayerChunkLoaderData loader = ((ChunkSystemServerPlayer)player).moonrise$getChunkLoader();
@@ -132,7 +132,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
// not our problem anymore
continue;
}
@@ -323,6 +323,7 @@ public final class RegionizedPlayerChunkLoader {
@@ -327,6 +327,7 @@ public final class RegionizedPlayerChunkLoader {
private final ServerPlayer player;
private final ServerLevel world;
@@ -140,7 +140,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
private int lastChunkX = Integer.MIN_VALUE;
private int lastChunkZ = Integer.MIN_VALUE;
@@ -382,10 +383,19 @@ public final class RegionizedPlayerChunkLoader {
@@ -386,10 +387,19 @@ public final class RegionizedPlayerChunkLoader {
final int centerX = PlayerChunkLoaderData.this.lastChunkX;
final int centerZ = PlayerChunkLoaderData.this.lastChunkZ;
@@ -164,7 +164,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
};
private final LongHeapPriorityQueue sendQueue = new LongHeapPriorityQueue(CLOSEST_MANHATTAN_DIST);
private final LongHeapPriorityQueue tickingQueue = new LongHeapPriorityQueue(CLOSEST_MANHATTAN_DIST);
@@ -853,6 +863,7 @@ public final class RegionizedPlayerChunkLoader {
@@ -857,6 +867,7 @@ public final class RegionizedPlayerChunkLoader {
}
void add() {
@@ -172,7 +172,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
TickThread.ensureTickThread(this.player, "Cannot add player asynchronously");
if (this.removed) {
throw new IllegalStateException("Adding removed player chunk loader");
@@ -892,6 +903,7 @@ public final class RegionizedPlayerChunkLoader {
@@ -896,6 +907,7 @@ public final class RegionizedPlayerChunkLoader {
// now we can update
this.update();
@@ -180,7 +180,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
}
private boolean isLoadedChunkGeneratable(final int chunkX, final int chunkZ) {
@@ -1060,6 +1072,7 @@ public final class RegionizedPlayerChunkLoader {
@@ -1064,6 +1076,7 @@ public final class RegionizedPlayerChunkLoader {
}
void remove() {
@@ -188,7 +188,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
TickThread.ensureTickThread(this.player, "Cannot add player asynchronously");
if (this.removed) {
throw new IllegalStateException("Removing removed player chunk loader");
@@ -1087,7 +1100,7 @@ public final class RegionizedPlayerChunkLoader {
@@ -1091,7 +1104,7 @@ public final class RegionizedPlayerChunkLoader {
}
public LongOpenHashSet getSentChunksRaw() {
@@ -198,10 +198,10 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
}
}
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988aed8774fc 100644
index 6ce4a98e4d3b633e3c87944c23b6b3f0ff58f159..dce2b0ae83e70ccaf2ac97441f80b25876ee9058 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
@@ -72,36 +72,49 @@ public final class ChunkHolderManager {
@@ -73,37 +73,50 @@ public final class ChunkHolderManager {
private static final long NO_TIMEOUT_MARKER = Long.MIN_VALUE;
public final ReentrantAreaLock ticketLockArea;
@@ -220,6 +220,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
private long currentTick;
- private final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = new ArrayDeque<>();
- private final MultiThreadedQueue<NewChunkHolder> offThreadPendingFullLoadUpdate = new MultiThreadedQueue<>();
- private final ObjectRBTreeSet<NewChunkHolder> autoSaveQueue = new ObjectRBTreeSet<>((final NewChunkHolder c1, final NewChunkHolder c2) -> {
- if (c1 == c2) {
- return 0;
@@ -227,6 +228,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
+ // DivineMC start - Chunk System optimization
+ public static class LevelHolderData {
+ private final java.util.concurrent.ConcurrentLinkedDeque<NewChunkHolder> pendingFullLoadUpdate = new java.util.concurrent.ConcurrentLinkedDeque<>();
+ private final MultiThreadedQueue<NewChunkHolder> offThreadPendingFullLoadUpdate = new MultiThreadedQueue<>();
+ private final ObjectRBTreeSet<NewChunkHolder> autoSaveQueue = new ObjectRBTreeSet<>((final NewChunkHolder c1, final NewChunkHolder c2) -> {
+ if (c1 == c2) {
+ return 0;
@@ -270,7 +272,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
private final ConcurrentLong2ReferenceChainedHashTable<Long2IntOpenHashMap> ticketCounters = new ConcurrentLong2ReferenceChainedHashTable<>();
@@ -224,26 +237,29 @@ public final class ChunkHolderManager {
@@ -226,26 +239,29 @@ public final class ChunkHolderManager {
this.taskScheduler.setShutdown(true);
}
@@ -307,7 +309,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
holder.lastAutoSave = currentTick;
if (holder.save(false) != null) {
@@ -257,10 +273,11 @@ public final class ChunkHolderManager {
@@ -259,10 +275,11 @@ public final class ChunkHolderManager {
for (final NewChunkHolder holder : reschedule) {
if (holder.getChunkStatus().isOrAfter(FullChunkStatus.FULL)) {
@@ -320,7 +322,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
public void saveAllChunks(final boolean flush, final boolean shutdown, final boolean logProgress) {
final List<NewChunkHolder> holders = this.getChunkHolders();
@@ -319,13 +336,9 @@ public final class ChunkHolderManager {
@@ -321,13 +338,9 @@ public final class ChunkHolderManager {
}
if (logProgress) {
final long currTime = System.nanoTime();
@@ -336,7 +338,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
}
}
}
@@ -459,8 +472,8 @@ public final class ChunkHolderManager {
@@ -461,8 +474,8 @@ public final class ChunkHolderManager {
final Long2ObjectOpenHashMap<SortedArraySet<Ticket>> ret = new Long2ObjectOpenHashMap<>();
final Long2ObjectOpenHashMap<LongArrayList> sections = new Long2ObjectOpenHashMap<>();
final int sectionShift = this.taskScheduler.getChunkSystemLockShift();
@@ -347,7 +349,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
sections.computeIfAbsent(
CoordinateUtils.getChunkKey(
CoordinateUtils.getChunkX(coord) >> sectionShift,
@@ -557,7 +570,7 @@ public final class ChunkHolderManager {
@@ -559,7 +572,7 @@ public final class ChunkHolderManager {
chunkZ >> sectionShift
);
@@ -356,7 +358,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
return new Long2IntOpenHashMap();
}).addTo(chunkKey, 1);
}
@@ -601,8 +614,8 @@ public final class ChunkHolderManager {
@@ -603,8 +616,8 @@ public final class ChunkHolderManager {
final ReentrantAreaLock.Node ticketLock = lock ? this.ticketLockArea.lock(chunkX, chunkZ) : null;
try {
@@ -367,7 +369,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
});
final int levelBefore = getTicketLevelAt(ticketsAtChunk);
@@ -782,8 +795,8 @@ public final class ChunkHolderManager {
@@ -784,8 +797,8 @@ public final class ChunkHolderManager {
final Long2ObjectOpenHashMap<LongArrayList> sections = new Long2ObjectOpenHashMap<>();
final int sectionShift = this.taskScheduler.getChunkSystemLockShift();
@@ -378,9 +380,9 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
sections.computeIfAbsent(
CoordinateUtils.getChunkKey(
CoordinateUtils.getChunkX(coord) >> sectionShift,
@@ -831,8 +844,8 @@ public final class ChunkHolderManager {
return removeDelay <= 0L;
};
@@ -836,8 +849,8 @@ public final class ChunkHolderManager {
final List<ChunkProgressionTask> scheduledTasks = new ArrayList<>();
final List<NewChunkHolder> changedFullStatus = new ArrayList<>();
- for (final PrimitiveIterator.OfLong iterator = this.sectionToChunkToExpireCount.keyIterator(); iterator.hasNext();) {
- final long sectionKey = iterator.nextLong();
@@ -389,18 +391,23 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
if (!this.sectionToChunkToExpireCount.containsKey(sectionKey)) {
// removed concurrently
@@ -1118,7 +1131,7 @@ public final class ChunkHolderManager {
}
@@ -1145,18 +1158,29 @@ public final class ChunkHolderManager {
if (!TickThread.isTickThread()) {
this.taskScheduler.scheduleChunkTask(() -> {
- final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = ChunkHolderManager.this.pendingFullLoadUpdate;
+ final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = ChunkHolderManager.this.getData().pendingFullLoadUpdate; // DivineMC - Chunk System optimization
for (int i = 0, len = changedFullStatus.size(); i < len; ++i) {
pendingFullLoadUpdate.add(changedFullStatus.get(i));
}
@@ -1126,16 +1139,16 @@ public final class ChunkHolderManager {
ChunkHolderManager.this.processPendingFullUpdate();
}, Priority.HIGHEST);
// These will be handled on the next ServerChunkCache$MainThreadExecutor#pollTask, as it runs the distance manager update
// which will invoke processTicketUpdates
- this.offThreadPendingFullLoadUpdate.addAll(changedFullStatus);
+ this.getData().offThreadPendingFullLoadUpdate.addAll(changedFullStatus); // DivineMC - Chunk System optimization
+
+ // DivineMC start - Chunk System optimization
+ this.taskScheduler.scheduleChunkTask(() -> {
+ final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = ChunkHolderManager.this.getData().pendingFullLoadUpdate;
+ for (int i = 0, len = changedFullStatus.size(); i < len; ++i) {
+ pendingFullLoadUpdate.add(changedFullStatus.get(i));
+ }
+
+ ChunkHolderManager.this.processPendingFullUpdate();
+ }, Priority.HIGHEST);
+ // DivineMC end - Chunk System optimization
} else {
- final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = this.pendingFullLoadUpdate;
+ final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = this.getData().pendingFullLoadUpdate; // DivineMC - Chunk System optimization
@@ -418,7 +425,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
PlatformHooks.get().onChunkHolderDelete(this.world, holder.vanillaChunkHolder);
this.chunkHolders.remove(CoordinateUtils.getChunkKey(holder.chunkX, holder.chunkZ));
}
@@ -1293,6 +1306,27 @@ public final class ChunkHolderManager {
@@ -1314,6 +1338,27 @@ public final class ChunkHolderManager {
}
}
@@ -446,16 +453,27 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
public enum TicketOperationType {
ADD, REMOVE, ADD_IF_REMOVED, ADD_AND_REMOVE
}
@@ -1466,7 +1500,7 @@ public final class ChunkHolderManager {
@@ -1473,8 +1518,8 @@ public final class ChunkHolderManager {
// only call on tick thread
private void processOffThreadFullUpdates() {
- final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = this.pendingFullLoadUpdate;
- final MultiThreadedQueue<NewChunkHolder> offThreadPendingFullLoadUpdate = this.offThreadPendingFullLoadUpdate;
+ final java.util.concurrent.ConcurrentLinkedDeque<NewChunkHolder> pendingFullLoadUpdate = this.getData().pendingFullLoadUpdate; // DivineMC - Chunk System optimization
+ final MultiThreadedQueue<NewChunkHolder> offThreadPendingFullLoadUpdate = this.getData().offThreadPendingFullLoadUpdate; // DivineMC - Chunk System optimization
NewChunkHolder toUpdate;
while ((toUpdate = offThreadPendingFullLoadUpdate.poll()) != null) {
@@ -1486,7 +1531,7 @@ public final class ChunkHolderManager {
private boolean processPendingFullUpdate() {
this.processOffThreadFullUpdates();
- final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = this.pendingFullLoadUpdate;
+ final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = this.getData().pendingFullLoadUpdate; // DivineMC - Chunk System optimization
boolean ret = false;
@@ -1502,8 +1536,7 @@ public final class ChunkHolderManager {
@@ -1522,8 +1567,7 @@ public final class ChunkHolderManager {
final JsonArray allTicketsJson = new JsonArray();
ret.add("tickets", allTicketsJson);
@@ -888,14 +906,13 @@ index 51f4dd4f583dfbd16cb00f1cb4418d1044cecb1c..2f83deafbb5b50e5ce191b5351ec5ed9
}
diff --git a/io/papermc/paper/FeatureHooks.java b/io/papermc/paper/FeatureHooks.java
index a42a773503ca0e0dc36dd44440b3eda670a6811b..f51db348545db7073558efda7f95a9738313198b 100644
index b2b67a3b1b4620dc97a32df953d4ad47bbe5e481..aa68cb8d489f976a5a2ea9b32de690a89589fc81 100644
--- a/io/papermc/paper/FeatureHooks.java
+++ b/io/papermc/paper/FeatureHooks.java
@@ -32,11 +32,6 @@ import org.bukkit.Chunk;
import org.bukkit.World;
@@ -37,10 +37,6 @@ public final class FeatureHooks {
ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.setUnloadDelay(ticks); // Paper - rewrite chunk system
}
public final class FeatureHooks {
-
- public static void initChunkTaskScheduler(final boolean useParallelGen) {
- ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.init(useParallelGen); // Paper - Chunk system
- }

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Lag compensation
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index ba5cb47347da6a0bc69b8f6924baac52f60375b8..05541061f1ac4f13e3de55f4ab90df4e273aa4b0 100644
index 0912b009598876d6c16f7adcd80762074ea66f5a..70b33e54d8384709b166ca57cd114632e357f24f 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -288,6 +288,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -16,7 +16,7 @@ index ba5cb47347da6a0bc69b8f6924baac52f60375b8..05541061f1ac4f13e3de55f4ab90df4e
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
@@ -1533,6 +1534,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1534,6 +1535,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
this.server.spark.tickStart(); // Paper - spark
@@ -220,7 +220,7 @@ index 2d9bf302b779602d733187c6f86e52467f0dc540..69196d7e43054955137569b22c4ca40a
public static class BooleanValue extends GameRules.Value<GameRules.BooleanValue> {
private boolean value;
diff --git a/net/minecraft/world/level/block/state/BlockBehaviour.java b/net/minecraft/world/level/block/state/BlockBehaviour.java
index 8db95b74f88f8096de93115ae8d3fb2e6184ad3b..e044830439fe9821ab3f62695d318a6321b8a266 100644
index 36e754dedc9e7b97dc5565864f5664d062ff612a..346d1825a9ed03c61f6915edc2b8d96dd0ead3e4 100644
--- a/net/minecraft/world/level/block/state/BlockBehaviour.java
+++ b/net/minecraft/world/level/block/state/BlockBehaviour.java
@@ -347,13 +347,21 @@ public abstract class BlockBehaviour implements FeatureElement {

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Skip EntityScheduler's executeTick checks if there isn't any
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 05541061f1ac4f13e3de55f4ab90df4e273aa4b0..f16a50b9b07e0f754f573710875859605318ba69 100644
index 70b33e54d8384709b166ca57cd114632e357f24f..89f9c2c3661f1ef951d865bd8c81564ea558c1e2 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -289,6 +289,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -17,7 +17,7 @@ index 05541061f1ac4f13e3de55f4ab90df4e273aa4b0..f16a50b9b07e0f754f57371087585960
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
@@ -1661,17 +1662,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1662,17 +1663,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) org.bukkit.Bukkit.getGlobalRegionScheduler()).tick();

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Optimize explosions
diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java
index a772f2bd7be00172ad41353c6ad42d9239b9ec88..27c7a113b81160eb88021bf259005e3c0ad90ff1 100644
index d0c4d63320fb5f58c43b38ebc333e9a7be487a5d..24648c6447774ac6aa8f76b078d923fface15c3f 100644
--- a/net/minecraft/world/level/ServerExplosion.java
+++ b/net/minecraft/world/level/ServerExplosion.java
@@ -372,6 +372,11 @@ public class ServerExplosion implements Explosion {
@@ -375,6 +375,11 @@ public class ServerExplosion implements Explosion {
}
private List<BlockPos> calculateExplodedPositions() {
@@ -20,7 +20,7 @@ index a772f2bd7be00172ad41353c6ad42d9239b9ec88..27c7a113b81160eb88021bf259005e3c
// Paper start - collision optimisations
final ObjectArrayList<BlockPos> ret = new ObjectArrayList<>();
@@ -470,6 +475,157 @@ public class ServerExplosion implements Explosion {
@@ -473,6 +478,157 @@ public class ServerExplosion implements Explosion {
// Paper end - collision optimisations
}
@@ -178,7 +178,7 @@ index a772f2bd7be00172ad41353c6ad42d9239b9ec88..27c7a113b81160eb88021bf259005e3c
private void hurtEntities() {
float f = this.radius * 2.0F;
int floor = Mth.floor(this.center.x - f - 1.0);
@@ -559,6 +715,11 @@ public class ServerExplosion implements Explosion {
@@ -562,6 +718,11 @@ public class ServerExplosion implements Explosion {
}
private void interactWithBlocks(List<BlockPos> blocks) {

View File

@@ -23,10 +23,10 @@ index 0a69469c79aaa2466cda04f6acefed18e421d555..66f7f2aa071c2811400b4fed12ccf51c
private final AtomicInteger count = new AtomicInteger();
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index 2b4345d16e8e5e903afb723dc41f549613998f7c..6e75bbc18762914c85866a0f46c6927aaf58afa1 100644
index 7226d6066050523c021c89a79af1edbcc184af9c..7fa9214b865ee22f539467efb4130cc330ee9d7b 100644
--- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java
@@ -508,7 +508,7 @@ public class Commands {
@@ -473,7 +473,7 @@ public class Commands {
}
// Fixed pool, but with discard policy
@@ -36,10 +36,10 @@ index 2b4345d16e8e5e903afb723dc41f549613998f7c..6e75bbc18762914c85866a0f46c6927a
new java.util.concurrent.LinkedBlockingQueue<>(),
new com.google.common.util.concurrent.ThreadFactoryBuilder()
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index f16a50b9b07e0f754f573710875859605318ba69..f484d4b72e1919762dec1a219f0e51e1eacea37f 100644
index 89f9c2c3661f1ef951d865bd8c81564ea558c1e2..45af325d0f457068f79e1b53414db1bf4c8d094b 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -2641,8 +2641,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2642,8 +2642,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Async Chunk Sending
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
index 529593d4c46b71849e50e2976411186134c51aab..25b0701db7ce654fca68bff70c2013fba7f3c3d0 100644
index 5cb896334f9916b030ee523119946d3b40585fc3..e93a006cde4dd85a9976e0d6a64643755ba99fb7 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
@@ -53,6 +53,8 @@ public final class RegionizedPlayerChunkLoader {
@@ -14,10 +14,10 @@ index 529593d4c46b71849e50e2976411186134c51aab..25b0701db7ce654fca68bff70c2013fb
+ private static final org.apache.logging.log4j.Logger LOGGER = org.apache.logging.log4j.LogManager.getLogger("RegionizedPlayerChunkLoader"); // DivineMC - Async Chunk Sending
+
public static final class ViewDistanceHolder {
private volatile ViewDistances viewDistances;
@@ -424,17 +426,61 @@ public final class RegionizedPlayerChunkLoader {
public static void setUnloadDelay(final long ticks) {
((ChunkSystemTicketType)(Object)PLAYER_TICKET_DELAYED).moonrise$setTimeout(Math.max(1, ticks));
}
@@ -428,17 +430,61 @@ public final class RegionizedPlayerChunkLoader {
}
private void sendChunk(final int chunkX, final int chunkZ) {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Command block parse results caching
diff --git a/net/minecraft/world/level/BaseCommandBlock.java b/net/minecraft/world/level/BaseCommandBlock.java
index d823f95a823f599db2c80f888e4b1a411fa4d3aa..6438b98628bb8eaa1e57276de2bc6b8741731eab 100644
index 625fffa596e1067d3f0e3402ea8c739f84298730..17a5cee6b06e6b3efff4c690a116f9001eabde00 100644
--- a/net/minecraft/world/level/BaseCommandBlock.java
+++ b/net/minecraft/world/level/BaseCommandBlock.java
@@ -34,6 +34,10 @@ public abstract class BaseCommandBlock implements CommandSource {
@@ -19,11 +19,14 @@ index d823f95a823f599db2c80f888e4b1a411fa4d3aa..6438b98628bb8eaa1e57276de2bc6b87
// CraftBukkit start
@Override
public abstract org.bukkit.command.CommandSender getBukkitSender(CommandSourceStack wrapper);
@@ -113,7 +117,35 @@ public abstract class BaseCommandBlock implements CommandSource {
@@ -113,13 +117,41 @@ public abstract class BaseCommandBlock implements CommandSource {
this.successCount++;
}
});
- server.getCommands().dispatchServerCommand(commandSourceStack, this.command); // CraftBukkit
- // Paper start - ServerCommandEvent
- org.bukkit.event.server.ServerCommandEvent event = new org.bukkit.event.server.ServerCommandEvent(commandSourceStack.getBukkitSender(), net.minecraft.commands.Commands.trimOptionalPrefix(this.command));
- if (!event.callEvent()) {
- return true;
+ // DivineMC start - Command block parse results caching
+ if (org.bxteam.divinemc.config.DivineConfig.PerformanceCategory.commandBlockParseResultsCaching) {
+ String commandCache = this.command;
@@ -50,13 +53,21 @@ index d823f95a823f599db2c80f888e4b1a411fa4d3aa..6438b98628bb8eaa1e57276de2bc6b87
+ }
+ }
+ } else {
+ server.getCommands().dispatchServerCommand(commandSourceStack, this.command); // CraftBukkit
+ // Paper start - ServerCommandEvent
+ org.bukkit.event.server.ServerCommandEvent event = new org.bukkit.event.server.ServerCommandEvent(commandSourceStack.getBukkitSender(), net.minecraft.commands.Commands.trimOptionalPrefix(this.command));
+ if (!event.callEvent()) {
+ return true;
+ }
+ server.getCommands().performPrefixedCommand(commandSourceStack, event.getCommand());
+ // Paper end - ServerCommandEvent
}
- server.getCommands().performPrefixedCommand(commandSourceStack, event.getCommand());
- // Paper end - ServerCommandEvent
+ // DivineMC end - Command block parse results caching
} catch (Throwable var6) {
CrashReport crashReport = CrashReport.forThrowable(var6, "Executing command block");
CrashReportCategory crashReportCategory = crashReport.addCategory("Command to be executed");
@@ -133,6 +165,13 @@ public abstract class BaseCommandBlock implements CommandSource {
@@ -139,6 +171,13 @@ public abstract class BaseCommandBlock implements CommandSource {
}
}

View File

@@ -54,10 +54,10 @@ index 51c126735ace8fdde89ad97b5cab62f244212db0..8713d00d767c9225a0823d2fdbb0b479
+ public void moonrise$write(final org.bxteam.divinemc.region.IRegionFile regionFile) throws IOException; // DivineMC - Linear region file format
}
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index f484d4b72e1919762dec1a219f0e51e1eacea37f..813a60771b8a6618090f1ea713b70a617ca28308 100644
index 45af325d0f457068f79e1b53414db1bf4c8d094b..9c1cf8cc7bb3d36d20449bb4ac9f60edbdbd3347 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -928,10 +928,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -929,10 +929,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// CraftBukkit end
if (flush) {
for (ServerLevel serverLevel2 : this.getAllLevels()) {

View File

@@ -5,19 +5,19 @@ Subject: [PATCH] Parallel world ticking
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
index 60705955e231d47c60f5a0a5e869988aed8774fc..c0322d4f9eadb26b8d5c6a3b426218ebb6302608 100644
index dce2b0ae83e70ccaf2ac97441f80b25876ee9058..d10c42cb10f419b59b0b9176eda97d54075d6041 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
@@ -1129,7 +1129,7 @@ public final class ChunkHolderManager {
@@ -1155,7 +1155,7 @@ public final class ChunkHolderManager {
if (changedFullStatus.isEmpty()) {
return;
}
- if (!TickThread.isTickThread()) {
+ if (org.bxteam.divinemc.config.DivineConfig.AsyncCategory.enableParallelWorldTicking && !TickThread.isTickThreadFor(world)) { // DivineMC - Parallel world ticking
this.taskScheduler.scheduleChunkTask(() -> {
final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = ChunkHolderManager.this.getData().pendingFullLoadUpdate; // DivineMC - Chunk System optimization
for (int i = 0, len = changedFullStatus.size(); i < len; ++i) {
@@ -1155,7 +1155,13 @@ public final class ChunkHolderManager {
// These will be handled on the next ServerChunkCache$MainThreadExecutor#pollTask, as it runs the distance manager update
// which will invoke processTicketUpdates
this.getData().offThreadPendingFullLoadUpdate.addAll(changedFullStatus); // DivineMC - Chunk System optimization
@@ -1187,7 +1187,13 @@ public final class ChunkHolderManager {
// note: never call while inside the chunk system, this will absolutely break everything
public void processUnloads() {
@@ -32,15 +32,15 @@ index 60705955e231d47c60f5a0a5e869988aed8774fc..c0322d4f9eadb26b8d5c6a3b426218eb
if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) {
throw new IllegalStateException("Cannot unload chunks recursively");
@@ -1458,7 +1464,7 @@ public final class ChunkHolderManager {
List<NewChunkHolder> changedFullStatus = null;
@@ -1474,7 +1480,7 @@ public final class ChunkHolderManager {
if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) {
throw new IllegalStateException("Cannot update ticket level while unloading chunks or updating entity manager");
}
- final boolean isTickThread = TickThread.isTickThread();
+ final boolean isTickThread = org.bxteam.divinemc.config.DivineConfig.AsyncCategory.enableParallelWorldTicking && TickThread.isTickThreadFor(world) || TickThread.isTickThread(); // DivineMC - Parallel world ticking
boolean ret = false;
final boolean canProcessFullUpdates = processFullUpdates & isTickThread;
if (!PlatformHooks.get().allowAsyncTicketUpdates() && isTickThread) {
TickThread.ensureTickThread("Cannot asynchronously process ticket updates");
diff --git a/net/minecraft/core/dispenser/DispenseItemBehavior.java b/net/minecraft/core/dispenser/DispenseItemBehavior.java
index ac27ff24f018d8798921c5152e679ceed1e88d8d..ec7d1353b19e55b00c558df8981323efb9b88bdf 100644
--- a/net/minecraft/core/dispenser/DispenseItemBehavior.java
@@ -59,7 +59,7 @@ index ac27ff24f018d8798921c5152e679ceed1e88d8d..ec7d1353b19e55b00c558df8981323ef
List<org.bukkit.block.BlockState> states = new java.util.ArrayList<>(level.capturedBlockStates.values());
level.capturedBlockStates.clear();
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 9e83d0ec1a0976f365fa6cb3f1b7db167641b336..6f08d761ee52d65a57fd01cf7bffa461dc1b898b 100644
index 1079eebf665d4752c4796edf8b851f13e6972dc8..3e013d116f78f8f3d0338fae7bd5b4b1b57be9dc 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -291,6 +291,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -120,7 +120,7 @@ index 9e83d0ec1a0976f365fa6cb3f1b7db167641b336..6f08d761ee52d65a57fd01cf7bffa461
}
@Override
@@ -1658,6 +1671,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1659,6 +1672,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
@@ -139,7 +139,7 @@ index 9e83d0ec1a0976f365fa6cb3f1b7db167641b336..6f08d761ee52d65a57fd01cf7bffa461
protected void tickChildren(BooleanSupplier hasTimeLeft) {
this.getPlayerList().getPlayers().forEach(serverPlayer1 -> serverPlayer1.connection.suspendFlushing());
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
@@ -1707,28 +1732,43 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1708,28 +1733,43 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked
@@ -201,7 +201,7 @@ index 9e83d0ec1a0976f365fa6cb3f1b7db167641b336..6f08d761ee52d65a57fd01cf7bffa461
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
this.tickConnection();
@@ -1806,6 +1846,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1807,6 +1847,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
Map<ResourceKey<Level>, ServerLevel> oldLevels = this.levels;
Map<ResourceKey<Level>, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels);
newLevels.remove(level.dimension());
@@ -210,7 +210,7 @@ index 9e83d0ec1a0976f365fa6cb3f1b7db167641b336..6f08d761ee52d65a57fd01cf7bffa461
}
// CraftBukkit end
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 19a3ba355694e7c26c233b216807cb23c82548be..245ffc68aac80d99849290bfefe5cb613eef5d81 100644
index 7ac82a49e3c64d1a41a2870c5cf9900812329a57..5f1712d3a42ca9e061b7cf96eeba006111e64bd9 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -224,6 +224,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -404,7 +404,7 @@ index 8bf5f7a98e4e8542d56c49a7e2c4926ec86f712d..e1ca822d41311e3be44c52badb907619
serverPlayer.connection = player.connection;
serverPlayer.restoreFrom(player, keepInventory);
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index e96eeae793d127b76a2fe6853cba49ce192b91f9..3aa2069ff070d9edb596e3c08cd34c617edd955c 100644
index ef7c2443fbdaedd08c2489609768374a3ecd8661..0484d3ace8e80f0a82fa2f0397026fd867768818 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -3432,14 +3432,34 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -669,7 +669,7 @@ index 2258736e6f9f52efe5bd353b8949a7a0b9a4fdb8..440fbe301782e81cec679a27a876dd3c
} else {
Entity entity = owner.teleport(
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index bfee8f3f47bc457543022fabbbee2130a6abe81a..55d0b8a88d202fb86c4da84e0d40b63df2461c2a 100644
index 1f601781643945920c7522b9c6100d0a37ad535d..bd31350c5b9b727cfd9150a399d207839a51e4dd 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -96,8 +96,14 @@ public abstract class AbstractContainerMenu {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] MSPT Tracking for each world
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 6f08d761ee52d65a57fd01cf7bffa461dc1b898b..d96f1b3312734b4daa86fd7ac133f3f5475375b4 100644
index 3e013d116f78f8f3d0338fae7bd5b4b1b57be9dc..693a3c2d0a908b4ce9825818b4af191d1ec98e92 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1674,7 +1674,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1675,7 +1675,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// DivineMC start - Parallel world ticking
private void tickLevel(ServerLevel serverLevel, BooleanSupplier hasTimeLeft) {
try {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Optimize Raids
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 8cfa5e0aafc3102e4397188b7dcce7185b19f648..5cb7a49f03438d1c05852decc95d77682e39c8b2 100644
index c87d1ff6f55e2316686add55abebbc7d8ecab914..690b6d9f89f70afd8f37d907863b87dd1f4591af 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -218,6 +218,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -59,7 +59,7 @@ index b3a29ce523fb5de71589c7c17598bba17622f988..39b9141c6c64acb362bbf12a1d47901f
public float getHealthOfLivingRaiders() {
diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java
index 3baba21d106ab09ae476238f2636169c371f43cf..652ab0cd78252616c63df55c3249c1c7599783e9 100644
index 2254493c889b8967011c09dc448ba375d82e2035..7802c5235a543c9f7147d27e122f4936f305f8ba 100644
--- a/net/minecraft/world/entity/raid/Raider.java
+++ b/net/minecraft/world/entity/raid/Raider.java
@@ -43,9 +43,25 @@ import net.minecraft.world.phys.Vec3;
@@ -124,7 +124,7 @@ index 3baba21d106ab09ae476238f2636169c371f43cf..652ab0cd78252616c63df55c3249c1c7
+ // DivineMC end - Optimize Raids
+
private boolean cannotPickUpBanner() {
if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING, this.mob.level().purpurConfig.pillagerMobGriefingOverride) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur - Add mobGriefing override to everything affected
if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING, this.mob.level().purpurConfig.pillagerMobGriefingOverride)) return true; // Paper - respect game and entity rules for picking up items // Purpur - Add mobGriefing override to everything affected
if (!this.mob.hasActiveRaid()) {
@@ -409,7 +435,7 @@ public abstract class Raider extends PatrollingMonster {
} else if (!this.mob.canBeLeader()) {

View File

@@ -20,10 +20,10 @@ index e65c62dbe4c1560ae153e4c4344e9194c783a2f4..e3d3b062e273fee4a9d3ba3cadc21278
if (var4 instanceof ReportedException reportedException && reportedException.getCause() instanceof OutOfMemoryError) {
throw makeReportedException(var4, packet, processor);
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index e2d30a5be27719203b3653c383fc217a0646570d..4db732950b851239de36dc7739f3607452c1db4c 100644
index 693a3c2d0a908b4ce9825818b4af191d1ec98e92..7b93ad4f868a34cb75d6c7e031abfa404ae21df4 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1683,6 +1683,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1684,6 +1684,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
serverLevel.tickTimes10s.add(this.tickCount, j);
serverLevel.tickTimes60s.add(this.tickCount, j);
// DivineMC end - MSPT Tracking for each world

View File

@@ -15,19 +15,19 @@ The delay is currently set to 2 seconds, however, we may want to adjust this bef
This patch fixes PaperMC/Paper#9581
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
index 70cf5f90b278814b7b594dd79f592696c28a69d7..75a3b7ea3c212bce63041ebfc4c7be9f55127cc4 100644
index e93a006cde4dd85a9976e0d6a64643755ba99fb7..62e89385fcdc3fa0202863f3199c98a2df4be2a6 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
@@ -48,6 +48,7 @@ public final class RegionizedPlayerChunkLoader {
public static final TicketType PLAYER_TICKET = ChunkSystemTicketType.create("chunk_system:player_ticket", Long::compareTo);
public static final TicketType PLAYER_TICKET_DELAYED = ChunkSystemTicketType.create("chunk_system:player_ticket_delayed", Long::compareTo, 5L * 20L);
public static final TicketType PLAYER_TICKET_DELAYED = ChunkSystemTicketType.create("chunk_system:player_ticket_delayed", Long::compareTo, 1L);
+ public static final TicketType PLAYER_JOIN = ChunkSystemTicketType.create("chunk_system:player_join", (a, b) -> 0, 5 * 20); // Paper - Add ticket on player join to avoid chunk load-unload-load cycle
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 a534b3e6835b9e998ae25210812ddf55685473ea..ce68dd77963e2bcb6119c682a700f540109d4877 100644
index e1ca822d41311e3be44c52badb907619ca681cf9..bd6cff4916fdf379ee887259d18ee274ff2f8bc6 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -316,6 +316,13 @@ public abstract class PlayerList {

View File

@@ -206,10 +206,10 @@ index a491be4250de3199c3e1aa9e5482b568692bd2f5..c88826db76c28c536e6c36c5592d69c1
private static final String PREFIX = "data:image/png;base64,";
public static final Codec<ServerStatus.Favicon> CODEC = Codec.STRING.comapFlatMap(string -> {
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 245ffc68aac80d99849290bfefe5cb613eef5d81..7f8348518cf34ec9323d504f8c0a7d0de02daab2 100644
index 5f1712d3a42ca9e061b7cf96eeba006111e64bd9..13d85eb366a070bfd6723088412f51af07892362 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -638,6 +638,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -636,6 +636,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@Override
public boolean enforceSecureProfile() {

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -988,6 +_,13 @@
@@ -989,6 +_,13 @@
if (this.hasStopped) return;
this.hasStopped = true;
}

View File

@@ -9,7 +9,7 @@
private static final Component DEFAULT_NAME = Component.literal("@");
private static final int NO_LAST_EXECUTION = -1;
private long lastExecution = -1L;
@@ -150,7 +_,7 @@
@@ -156,7 +_,7 @@
public void sendSystemMessage(Component component) {
if (this.trackOutput) {
org.spigotmc.AsyncCatcher.catchOp("sendSystemMessage to a command block"); // Paper - Don't broadcast messages to command blocks

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configuration
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 7c79e58f86d113e5e67947e235475beef76e20ab..b26d3a2856ed7bd0a2dcb72f74ee0e157be85ac7 100644
index d9d158ef36225345eec871fd6e6fb19db08d4c21..ade084fb8f6f9290104677d6fc10a72816715746 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1088,6 +1088,13 @@ public final class CraftServer implements Server {
@@ -1060,6 +1060,13 @@ public final class CraftServer implements Server {
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console);
org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur - Purpur config files
@@ -22,7 +22,7 @@ index 7c79e58f86d113e5e67947e235475beef76e20ab..b26d3a2856ed7bd0a2dcb72f74ee0e15
for (ServerLevel world : this.console.getAllLevels()) {
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
@@ -1104,6 +1111,13 @@ public final class CraftServer implements Server {
@@ -1076,6 +1083,13 @@ public final class CraftServer implements Server {
}
world.spigotConfig.init(); // Spigot
world.purpurConfig.init(); // Purpur - Purpur config files

View File

@@ -25,10 +25,10 @@ index 400e632208d133a3f49fc7f14bceb48a1026769b..a1c7ba0fdb505d09407cca94e890dedd
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index b26d3a2856ed7bd0a2dcb72f74ee0e157be85ac7..ec77f0c59bd79dc680bf3f4f4e1257c8cf6125cb 100644
index ade084fb8f6f9290104677d6fc10a72816715746..1515e84a266451f133835562a96b18432ef58fdc 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1385,7 +1385,11 @@ public final class CraftServer implements Server {
@@ -1357,7 +1357,11 @@ public final class CraftServer implements Server {
registryAccess = levelDataAndDimensions.dimensions().dimensionsRegistryAccess();
} else {
LevelSettings levelSettings;

View File

@@ -22,10 +22,10 @@ Example config in paper-world-defaults.yml:
```
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
index 65f6839fe75340a4b58894ad50c6eda7b59128c0..f7610c709bd6f9e30ec7b1295d58dfbe98fc8661 100644
index 8e65586182bd586c95b8c4873fab6d6ff5975243..ed687b0ab589fd2ddb8bf77f42ba42cf8b1c2ea7 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
@@ -182,6 +182,17 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -183,6 +183,17 @@ public class WorldConfiguration extends ConfigurationPart {
@MergeMap
public Reference2IntMap<MobCategory> ticksPerSpawn = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1)));

View File

@@ -20,10 +20,10 @@ index 83419bbcbf79d8eed1302d66356a62fa61a33473..caa4cf0af0696b90d61f32f5445a6e6c
public IntOr.Default compressionLevel = IntOr.Default.USE_DEFAULT;
@Comment("Defines the leniency distance added on the server to the interaction range of a player when validating interact packets.")
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe3772eef05f 100644
index ed687b0ab589fd2ddb8bf77f42ba42cf8b1c2ea7..b01509c5d579c57e3be019f8fb850a8d4790bd92 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
@@ -147,8 +147,10 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -148,8 +148,10 @@ public class WorldConfiguration extends ConfigurationPart {
public ArmorStands armorStands;
public class ArmorStands extends ConfigurationPart {
@@ -36,7 +36,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
}
public Markers markers;
@@ -274,8 +276,38 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -275,8 +277,38 @@ public class WorldConfiguration extends ConfigurationPart {
public AltItemDespawnRate altItemDespawnRate;
public class AltItemDespawnRate extends ConfigurationPart {
@@ -77,7 +77,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
}
}
@@ -418,7 +450,7 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -419,7 +451,7 @@ public class WorldConfiguration extends ConfigurationPart {
public class Environment extends ConfigurationPart {
public boolean disableThunder = false;
public boolean disableIceAndSnow = false;
@@ -86,7 +86,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
public boolean disableExplosionKnockback = false;
public boolean generateFlatBedrock = false;
public FrostedIce frostedIce;
@@ -471,7 +503,7 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -472,7 +504,7 @@ public class WorldConfiguration extends ConfigurationPart {
public Fixes fixes;
public class Fixes extends ConfigurationPart {
@@ -95,7 +95,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
public boolean disableUnloadedChunkEnderpearlExploit = false;
public boolean preventTntFromMovingInWater = false;
public boolean splitOverstackedLoot = true;
@@ -499,9 +531,9 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -500,9 +532,9 @@ public class WorldConfiguration extends ConfigurationPart {
public class Collisions extends ConfigurationPart {
public boolean onlyPlayersCollide = false;
public boolean allowVehicleCollisions = true;
@@ -107,7 +107,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
public boolean allowPlayerCrammingDamage = false;
}
@@ -511,16 +543,33 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -512,16 +544,33 @@ public class WorldConfiguration extends ConfigurationPart {
public AutosavePeriod autoSaveInterval = AutosavePeriod.def();
public int maxAutoSaveChunksPerTick = 24;
public int fixedChunkInhabitedTime = -1;
@@ -147,8 +147,8 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
+ // DivineMC end - Optimize default values for configs
});
public boolean flushRegionsOnSave = false;
}
@@ -535,9 +584,9 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -541,9 +590,9 @@ public class WorldConfiguration extends ConfigurationPart {
public TickRates tickRates;
public class TickRates extends ConfigurationPart {
@@ -160,7 +160,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
public int wetFarmland = 1;
public int dryFarmland = 1;
public Table<EntityType<?>, String, Integer> sensor = Util.make(HashBasedTable.create(), table -> table.put(EntityType.VILLAGER, "secondarypoisensor", 40));
@@ -572,7 +621,7 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -578,7 +627,7 @@ public class WorldConfiguration extends ConfigurationPart {
public class Misc extends ConfigurationPart {
public boolean updatePathfindingOnBlockUpdate = true;
public boolean showSignClickCommandFailureMsgsToPlayer = false;

View File

@@ -1,6 +1,6 @@
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -976,7 +_,7 @@
@@ -974,7 +_,7 @@
@Override
public List<World> getWorlds() {

View File

@@ -18,10 +18,10 @@ index e5bf7ea47143cf3f8d4c0f1840698068bb70cbf8..72fcad4a0b5857551221741b9c73fa75
useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive);
}
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 611847bd7576bb77fdfb734ddb2e3412f3831041..508e5001eb691bd2d8231f8e6365eeacd14371ce 100644
index a03e166b490952534e8050654c1afa975795f731..3346e45393776c9ed120c2be70e24a9289f74fd3 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -3169,8 +3169,8 @@ public class PurpurWorldConfig {
@@ -3164,8 +3164,8 @@ public class PurpurWorldConfig {
public boolean villagerDisplayTradeItem = true;
public int villagerSpawnIronGolemRadius = 0;
public int villagerSpawnIronGolemLimit = 0;

View File

@@ -25,10 +25,10 @@ index 72fcad4a0b5857551221741b9c73fa75596e6981..374af5eb6b55c731535be4e8c242ffc3
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 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b2954435a80 100644
index 3346e45393776c9ed120c2be70e24a9289f74fd3..225d3fab20ef461c87b260b2674229806649bc56 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1189,12 +1189,20 @@ public class PurpurWorldConfig {
@@ -1184,12 +1184,20 @@ public class PurpurWorldConfig {
public boolean allayControllable = true;
public double allayMaxHealth = 20.0D;
public double allayScale = 1.0D;
@@ -49,7 +49,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
}
public boolean armadilloRidable = false;
@@ -1349,6 +1357,10 @@ public class PurpurWorldConfig {
@@ -1344,6 +1352,10 @@ public class PurpurWorldConfig {
public double camelMovementSpeedMin = 0.09D;
public double camelMovementSpeedMax = 0.09D;
public int camelBreedingTicks = 6000;
@@ -60,7 +60,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
private void camelSettings() {
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin);
@@ -1358,6 +1370,10 @@ public class PurpurWorldConfig {
@@ -1353,6 +1365,10 @@ public class PurpurWorldConfig {
camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin);
camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax);
camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks);
@@ -71,7 +71,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
}
public boolean catRidable = false;
@@ -1839,12 +1855,22 @@ public class PurpurWorldConfig {
@@ -1834,12 +1850,22 @@ public class PurpurWorldConfig {
public boolean frogControllable = true;
public float frogRidableJumpHeight = 0.65F;
public int frogBreedingTicks = 6000;
@@ -94,7 +94,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
}
public boolean ghastRidable = false;
@@ -2930,6 +2956,10 @@ public class PurpurWorldConfig {
@@ -2925,6 +2951,10 @@ public class PurpurWorldConfig {
public double snifferMaxHealth = 14.0D;
public double snifferScale = 1.0D;
public int snifferBreedingTicks = 6000;
@@ -105,7 +105,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
private void snifferSettings() {
snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable);
snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater);
@@ -2937,6 +2967,10 @@ public class PurpurWorldConfig {
@@ -2932,6 +2962,10 @@ public class PurpurWorldConfig {
snifferMaxHealth = getDouble("mobs.sniffer.attributes.max_health", snifferMaxHealth);
snifferScale = Mth.clamp(getDouble("mobs.sniffer.attributes.scale", snifferScale), 0.0625D, 16.0D);
snifferBreedingTicks = getInt("mobs.sniffer.breeding-delay-ticks", snifferBreedingTicks);
@@ -116,7 +116,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
}
public boolean squidRidable = false;
@@ -3038,10 +3072,20 @@ public class PurpurWorldConfig {
@@ -3033,10 +3067,20 @@ public class PurpurWorldConfig {
public boolean tadpoleRidable = false;
public boolean tadpoleRidableInWater = true;
public boolean tadpoleControllable = true;
@@ -137,7 +137,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
}
public boolean traderLlamaRidable = false;
@@ -3275,10 +3319,20 @@ public class PurpurWorldConfig {
@@ -3270,10 +3314,20 @@ public class PurpurWorldConfig {
public boolean wardenRidable = false;
public boolean wardenRidableInWater = true;
public boolean wardenControllable = true;

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable movement speed for entities
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880a652f93b 100644
index 225d3fab20ef461c87b260b2674229806649bc56..16baa76725af475ee1c27843ebfbd6312a238fce 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1641,6 +1641,7 @@ public class PurpurWorldConfig {
@@ -1636,6 +1636,7 @@ public class PurpurWorldConfig {
public boolean drownedTakeDamageFromWater = false;
public boolean drownedBreakDoors = false;
public boolean drownedAlwaysDropExp = false;
@@ -16,7 +16,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
@@ -1659,6 +1660,7 @@ public class PurpurWorldConfig {
@@ -1654,6 +1655,7 @@ public class PurpurWorldConfig {
drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater);
drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors);
drownedAlwaysDropExp = getBoolean("mobs.drowned.always-drop-exp", drownedAlwaysDropExp);
@@ -24,7 +24,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
}
public boolean elderGuardianRidable = false;
@@ -2086,6 +2088,7 @@ public class PurpurWorldConfig {
@@ -2081,6 +2083,7 @@ public class PurpurWorldConfig {
public boolean huskJockeyTryExistingChickens = true;
public boolean huskTakeDamageFromWater = false;
public boolean huskAlwaysDropExp = false;
@@ -32,7 +32,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
private void huskSettings() {
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
@@ -2103,6 +2106,7 @@ public class PurpurWorldConfig {
@@ -2098,6 +2101,7 @@ public class PurpurWorldConfig {
huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater);
huskAlwaysDropExp = getBoolean("mobs.husk.always-drop-exp", huskAlwaysDropExp);
@@ -40,7 +40,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
}
public boolean illusionerRidable = false;
@@ -3494,6 +3498,7 @@ public class PurpurWorldConfig {
@@ -3489,6 +3493,7 @@ public class PurpurWorldConfig {
public boolean zombieTakeDamageFromWater = false;
public boolean zombieAlwaysDropExp = false;
public double zombieHeadVisibilityPercent = 0.5D;
@@ -48,7 +48,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
@@ -3519,6 +3524,7 @@ public class PurpurWorldConfig {
@@ -3514,6 +3519,7 @@ public class PurpurWorldConfig {
zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater);
zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp);
zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent);
@@ -56,7 +56,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
}
public boolean zombieHorseRidable = false;
@@ -3568,6 +3574,7 @@ public class PurpurWorldConfig {
@@ -3563,6 +3569,7 @@ public class PurpurWorldConfig {
public int zombieVillagerCuringTimeMax = 6000;
public boolean zombieVillagerCureEnabled = true;
public boolean zombieVillagerAlwaysDropExp = false;
@@ -64,7 +64,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
@@ -3588,6 +3595,7 @@ public class PurpurWorldConfig {
@@ -3583,6 +3590,7 @@ public class PurpurWorldConfig {
zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax);
zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled);
zombieVillagerAlwaysDropExp = getBoolean("mobs.zombie_villager.always-drop-exp", zombieVillagerAlwaysDropExp);
@@ -72,7 +72,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
}
public boolean zombifiedPiglinRidable = false;
@@ -3602,6 +3610,7 @@ public class PurpurWorldConfig {
@@ -3597,6 +3605,7 @@ public class PurpurWorldConfig {
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = false;
public boolean zombifiedPiglinTakeDamageFromWater = false;
public boolean zombifiedPiglinAlwaysDropExp = false;
@@ -80,7 +80,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
@@ -3623,6 +3632,7 @@ public class PurpurWorldConfig {
@@ -3618,6 +3627,7 @@ public class PurpurWorldConfig {
zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry);
zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater);
zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp);

View File

@@ -2,7 +2,7 @@ group = org.bxteam.divinemc
version=1.21.6-R0.1-SNAPSHOT
mcVersion=1.21.6
purpurRef=162bd2883b33f39b55bed76247be38d133ee2396
purpurRef=3893bba083d4d2e2cc7e475e9239258e714f02be
experimental=true
org.gradle.configuration-cache=true