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:
@@ -124,7 +124,7 @@
|
|||||||
@@ -199,7 +_,7 @@
|
@@ -199,7 +_,7 @@
|
||||||
"https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/",
|
"https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/",
|
||||||
"https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/",
|
"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.7.3",
|
||||||
+ "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.9.22", // DivineMC - Bump dependencies
|
+ "https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.9.22", // DivineMC - Bump dependencies
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/purpur-server/build.gradle.kts
|
--- a/purpur-server/build.gradle.kts
|
||||||
+++ b/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/"
|
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
mache("io.papermc:mache:1.21.6+build.1")
|
mache("io.papermc:mache:1.21.6+build.1")
|
||||||
@@ -27,6 +_,7 @@
|
@@ -29,6 +_,7 @@
|
||||||
|
|
||||||
// Purpur start - Rebrand
|
// Purpur start - Rebrand
|
||||||
val purpur = forks.register("purpur") {
|
val purpur = forks.register("purpur") {
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
upstream.patchDir("paperServer") {
|
upstream.patchDir("paperServer") {
|
||||||
upstreamPath = "paper-server"
|
upstreamPath = "paper-server"
|
||||||
excludes = setOf("src/minecraft", "patches", "build.gradle.kts")
|
excludes = setOf("src/minecraft", "patches", "build.gradle.kts")
|
||||||
@@ -34,9 +_,27 @@
|
@@ -36,9 +_,27 @@
|
||||||
outputDir = rootDirectory.dir("paper-server")
|
outputDir = rootDirectory.dir("paper-server")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -43,9 +43,9 @@
|
|||||||
+ // DivineMC end - Rebrand
|
+ // DivineMC end - Rebrand
|
||||||
+
|
+
|
||||||
spigot {
|
spigot {
|
||||||
enabled = false
|
enabled = true
|
||||||
buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc"
|
buildDataRef = "281ac0de7a76d808753ede97d11b034bc801b63d"
|
||||||
@@ -60,6 +_,7 @@
|
@@ -62,6 +_,7 @@
|
||||||
libraryRepositories.addAll(
|
libraryRepositories.addAll(
|
||||||
"https://repo.maven.apache.org/maven2/",
|
"https://repo.maven.apache.org/maven2/",
|
||||||
paperMavenPublicUrl,
|
paperMavenPublicUrl,
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,10 +_,18 @@
|
@@ -125,10 +_,18 @@
|
||||||
main {
|
main {
|
||||||
java { srcDir("../paper-server/src/main/java") }
|
java { srcDir("../paper-server/src/main/java") }
|
||||||
resources { srcDir("../paper-server/src/main/resources") }
|
resources { srcDir("../paper-server/src/main/resources") }
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
val log4jPlugins = sourceSets.create("log4jPlugins") {
|
val log4jPlugins = sourceSets.create("log4jPlugins") {
|
||||||
@@ -154,10 +_,23 @@
|
@@ -156,10 +_,23 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
implementation("net.minecrell:terminalconsoleappender:1.3.0")
|
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
|
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 })
|
runtimeConfiguration(sourceSets.main.map { it.runtimeClasspath })
|
||||||
@@ -168,16 +_,16 @@
|
@@ -170,16 +_,16 @@
|
||||||
all its classes to check if they are plugins.
|
all its classes to check if they are plugins.
|
||||||
Scanning takes about 1-2 seconds so adding this speeds up the server start.
|
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.ow2.asm:asm-commons:9.8")
|
||||||
implementation("org.spongepowered:configurate-yaml:4.2.0-20250225.064233-199")
|
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.
|
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
|
// 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("commons-lang:commons-lang:2.6")
|
||||||
runtimeOnly("org.xerial:sqlite-jdbc:3.49.1.0")
|
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:srgutils:1.0.9") // Mappings handling
|
||||||
implementation("net.neoforged:AutoRenamingTool:2.0.3") // Remap plugins
|
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")
|
implementation("me.lucko:spark-paper:1.10.133-20250413.112336-1")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ index 394443d00e661715439be1e56dddc129947699a4..480ad57a6b7b74e6b83e9c6ceb69ea1f
|
|||||||
public CrashReport(String title, Throwable exception) {
|
public CrashReport(String title, Throwable exception) {
|
||||||
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(exception); // Paper
|
io.papermc.paper.util.StacktraceDeobfuscator.INSTANCE.deobfuscateThrowable(exception); // Paper
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
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
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/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() {
|
protected void runServer() {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Completely remove Mojang profiler
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
|
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
|
--- a/net/minecraft/commands/Commands.java
|
||||||
+++ b/net/minecraft/commands/Commands.java
|
+++ b/net/minecraft/commands/Commands.java
|
||||||
@@ -58,7 +58,6 @@ import net.minecraft.server.commands.CloneCommands;
|
@@ -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.util.profiling.jfr.JvmProfiler;
|
||||||
import net.minecraft.world.flag.FeatureFlagSet;
|
import net.minecraft.world.flag.FeatureFlagSet;
|
||||||
import net.minecraft.world.flag.FeatureFlags;
|
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);
|
DamageCommand.register(this.dispatcher, context);
|
||||||
DataCommands.register(this.dispatcher);
|
DataCommands.register(this.dispatcher);
|
||||||
DataPackCommand.register(this.dispatcher, context);
|
DataPackCommand.register(this.dispatcher, context);
|
||||||
@@ -32,15 +32,15 @@ index 75d167649749d0aa48eca87bcf478a4476bb4a6b..2b4345d16e8e5e903afb723dc41f5496
|
|||||||
DefaultGameModeCommands.register(this.dispatcher);
|
DefaultGameModeCommands.register(this.dispatcher);
|
||||||
DialogCommand.register(this.dispatcher, context);
|
DialogCommand.register(this.dispatcher, context);
|
||||||
DifficultyCommand.register(this.dispatcher);
|
DifficultyCommand.register(this.dispatcher);
|
||||||
@@ -392,7 +389,6 @@ public class Commands {
|
@@ -357,7 +354,6 @@ public class Commands {
|
||||||
public void performCommand(ParseResults<CommandSourceStack> parseResults, String command, String label, boolean throwCommandError) {
|
org.spigotmc.AsyncCatcher.catchOp("Cannot perform command async");
|
||||||
// Paper end
|
// Paper end
|
||||||
CommandSourceStack commandSourceStack = parseResults.getContext().getSource();
|
CommandSourceStack commandSourceStack = parseResults.getContext().getSource();
|
||||||
- Profiler.get().push(() -> "/" + command);
|
- Profiler.get().push(() -> "/" + command);
|
||||||
ContextChain contextChain = this.finishParsing(parseResults, command, commandSourceStack, label); // CraftBukkit // Paper - Add UnknownCommandEvent
|
ContextChain<CommandSourceStack> contextChain = finishParsing(parseResults, command, commandSourceStack);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -428,8 +424,6 @@ public class Commands {
|
@@ -393,8 +389,6 @@ public class Commands {
|
||||||
commandSourceStack.sendFailure(Component.literal(Util.describeError(var12)));
|
commandSourceStack.sendFailure(Component.literal(Util.describeError(var12)));
|
||||||
LOGGER.error("'/{}' threw an exception", command, 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 max = Math.max(1, server.getGameRules().getInt(GameRules.RULE_MAX_COMMAND_CHAIN_LENGTH));
|
||||||
int _int = server.getGameRules().getInt(GameRules.RULE_MAX_COMMAND_FORK_COUNT);
|
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
|
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
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -114,19 +114,8 @@ import net.minecraft.util.TimeUtil;
|
@@ -114,19 +114,8 @@ import net.minecraft.util.TimeUtil;
|
||||||
@@ -250,7 +250,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
private ServerConnectionListener connection;
|
private ServerConnectionListener connection;
|
||||||
public final ChunkProgressListenerFactory progressListenerFactory;
|
public final ChunkProgressListenerFactory progressListenerFactory;
|
||||||
@Nullable
|
@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
|
shutdownThread = Thread.currentThread(); // Paper - Improved watchdog support
|
||||||
org.spigotmc.WatchdogThread.doStop(); // Paper - Improved watchdog support
|
org.spigotmc.WatchdogThread.doStop(); // Paper - Improved watchdog support
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
@@ -260,7 +260,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
|
|
||||||
LOGGER.info("Stopping server");
|
LOGGER.info("Stopping server");
|
||||||
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
|
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
|
// Spigot end
|
||||||
|
|
||||||
boolean flag = l == 0L;
|
boolean flag = l == 0L;
|
||||||
@@ -336,7 +336,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
this.isReady = true;
|
this.isReady = true;
|
||||||
JvmProfiler.INSTANCE.onServerTick(this.smoothedTickTimeMillis);
|
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
|
@Override
|
||||||
public void doRunTask(TickTask task) {
|
public void doRunTask(TickTask task) {
|
||||||
@@ -344,7 +344,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
super.doRunTask(task);
|
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--;
|
this.ticksUntilAutosave--;
|
||||||
// Paper start - Incremental chunk and player saving
|
// Paper start - Incremental chunk and player saving
|
||||||
@@ -357,7 +357,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
final boolean fullSave = autosavePeriod > 0 && this.tickCount % autosavePeriod == 0;
|
final boolean fullSave = autosavePeriod > 0 && this.tickCount % autosavePeriod == 0;
|
||||||
try {
|
try {
|
||||||
this.isSaving = true;
|
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 {
|
} finally {
|
||||||
this.isSaving = false;
|
this.isSaving = false;
|
||||||
}
|
}
|
||||||
@@ -368,7 +368,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
this.runAllTasks(); // Paper - move runAllTasks() into full server tick (previously for timings)
|
this.runAllTasks(); // Paper - move runAllTasks() into full server tick (previously for timings)
|
||||||
this.server.spark.executeMainThreadTasks(); // Paper - spark
|
this.server.spark.executeMainThreadTasks(); // Paper - spark
|
||||||
// Paper start - Server Tick Events
|
// 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();
|
new com.destroystokyo.paper.event.server.ServerTickEndEvent(this.tickCount, ((double)(endTime - lastTick) / 1000000D), remaining).callEvent();
|
||||||
// Paper end - Server Tick Events
|
// Paper end - Server Tick Events
|
||||||
this.server.spark.tickEnd(((double)(endTime - lastTick) / 1000000D)); // Paper - spark
|
this.server.spark.tickEnd(((double)(endTime - lastTick) / 1000000D)); // Paper - spark
|
||||||
@@ -376,7 +376,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
long l = Util.getNanos() - nanos;
|
long l = Util.getNanos() - nanos;
|
||||||
int i1 = this.tickCount % 100;
|
int i1 = this.tickCount % 100;
|
||||||
this.aggregatedTickTimesNanos = this.aggregatedTickTimesNanos - this.tickTimesNanos[i1];
|
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);
|
this.tickTimes60s.add(this.tickCount, l);
|
||||||
// Paper end - Add tick times API and /mspt command
|
// Paper end - Add tick times API and /mspt command
|
||||||
this.logTickMethodTime(nanos);
|
this.logTickMethodTime(nanos);
|
||||||
@@ -393,7 +393,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
LOGGER.debug("Autosave finished");
|
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) {
|
protected void tickChildren(BooleanSupplier hasTimeLeft) {
|
||||||
@@ -401,7 +401,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
this.getPlayerList().getPlayers().forEach(serverPlayer1 -> serverPlayer1.connection.suspendFlushing());
|
this.getPlayerList().getPlayers().forEach(serverPlayer1 -> serverPlayer1.connection.suspendFlushing());
|
||||||
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
|
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
|
||||||
// Paper start - Folia scheduler API
|
// 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
|
// Paper end - Folia scheduler API
|
||||||
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
|
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
|
||||||
@@ -411,7 +411,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
// Run tasks that are waiting on processing
|
// 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
|
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
|
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
|
serverLevel.hasRidableMoveEvent = org.purpurmc.purpur.event.entity.RidableMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Purpur - Ridables
|
||||||
@@ -429,7 +429,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
try {
|
try {
|
||||||
serverLevel.tick(hasTimeLeft);
|
serverLevel.tick(hasTimeLeft);
|
||||||
} catch (Throwable var7) {
|
} 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);
|
throw new ReportedException(crashReport);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -464,7 +464,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void tickConnection() {
|
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() {
|
public void forceTimeSynchronization() {
|
||||||
@@ -479,7 +479,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLevelEnabled(Level level) {
|
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
|
// CraftBukkit end
|
||||||
|
|
||||||
@@ -535,7 +535,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
public Path getWorldPath(LevelResource levelResource) {
|
public Path getWorldPath(LevelResource levelResource) {
|
||||||
return this.storageSource.getLevelPath(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;
|
return this.isSaving;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -560,7 +560,7 @@ index e26a053c598c33fd32b305235284ef6600a59752..ba5cb47347da6a0bc69b8f6924baac52
|
|||||||
public int getMaxChainedNeighborUpdates() {
|
public int getMaxChainedNeighborUpdates() {
|
||||||
return 1000000;
|
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) {
|
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
|
+ // DivineMC end - Completely remove Mojang profiler
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
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
|
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/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;
|
return this.settings.getProperties().serverResourcePackInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4006,7 +4006,7 @@ index 39a604c9a53930b53d959b1d2eb504aa964e9a58..0d0380e3955836ce125f777841477503
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
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
|
--- a/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/net/minecraft/world/entity/Entity.java
|
+++ b/net/minecraft/world/entity/Entity.java
|
||||||
@@ -80,8 +80,6 @@ import net.minecraft.tags.TagKey;
|
@@ -80,8 +80,6 @@ import net.minecraft.tags.TagKey;
|
||||||
@@ -5015,7 +5015,7 @@ index fa06ecacc27f619853c8db76d909ab4ba75dc529..345d4b80bd4383e0fb66d744d87bc8ef
|
|||||||
|
|
||||||
// Paper start - Add mobcaps commands
|
// Paper start - Add mobcaps commands
|
||||||
diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java
|
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
|
--- a/net/minecraft/world/level/ServerExplosion.java
|
||||||
+++ b/net/minecraft/world/level/ServerExplosion.java
|
+++ b/net/minecraft/world/level/ServerExplosion.java
|
||||||
@@ -13,8 +13,6 @@ import net.minecraft.Util;
|
@@ -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.damagesource.DamageSource;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
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();
|
List<BlockPos> list = this.calculateExplodedPositions();
|
||||||
this.hurtEntities();
|
this.hurtEntities();
|
||||||
if (this.interactsWithBlocks()) {
|
if (this.interactsWithBlocks()) {
|
||||||
|
|||||||
@@ -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
|
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
|
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
|
||||||
+++ b/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 boolean canGenerateChunks = true;
|
||||||
|
|
||||||
private final ArrayDeque<ChunkHolderManager.TicketOperation<?, ?>> delayedTicketOps = new ArrayDeque<>();
|
private final ArrayDeque<ChunkHolderManager.TicketOperation<?, ?>> delayedTicketOps = new ArrayDeque<>();
|
||||||
|
|||||||
@@ -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
|
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
|
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
|
||||||
+++ b/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) {
|
if (((ChunkSystemServerPlayer)player).moonrise$getChunkLoader() != null) {
|
||||||
@@ -123,7 +123,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void updatePlayer(final ServerPlayer player) {
|
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();
|
long currTime = System.nanoTime();
|
||||||
for (final ServerPlayer player : new java.util.ArrayList<>(this.world.players())) {
|
for (final ServerPlayer player : new java.util.ArrayList<>(this.world.players())) {
|
||||||
final PlayerChunkLoaderData loader = ((ChunkSystemServerPlayer)player).moonrise$getChunkLoader();
|
final PlayerChunkLoaderData loader = ((ChunkSystemServerPlayer)player).moonrise$getChunkLoader();
|
||||||
@@ -132,7 +132,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
|
|||||||
// not our problem anymore
|
// not our problem anymore
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -323,6 +323,7 @@ public final class RegionizedPlayerChunkLoader {
|
@@ -327,6 +327,7 @@ public final class RegionizedPlayerChunkLoader {
|
||||||
|
|
||||||
private final ServerPlayer player;
|
private final ServerPlayer player;
|
||||||
private final ServerLevel world;
|
private final ServerLevel world;
|
||||||
@@ -140,7 +140,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
|
|||||||
|
|
||||||
private int lastChunkX = Integer.MIN_VALUE;
|
private int lastChunkX = Integer.MIN_VALUE;
|
||||||
private int lastChunkZ = 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 centerX = PlayerChunkLoaderData.this.lastChunkX;
|
||||||
final int centerZ = PlayerChunkLoaderData.this.lastChunkZ;
|
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 sendQueue = new LongHeapPriorityQueue(CLOSEST_MANHATTAN_DIST);
|
||||||
private final LongHeapPriorityQueue tickingQueue = 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() {
|
void add() {
|
||||||
@@ -172,7 +172,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
|
|||||||
TickThread.ensureTickThread(this.player, "Cannot add player asynchronously");
|
TickThread.ensureTickThread(this.player, "Cannot add player asynchronously");
|
||||||
if (this.removed) {
|
if (this.removed) {
|
||||||
throw new IllegalStateException("Adding removed player chunk loader");
|
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
|
// now we can update
|
||||||
this.update();
|
this.update();
|
||||||
@@ -180,7 +180,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isLoadedChunkGeneratable(final int chunkX, final int chunkZ) {
|
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() {
|
void remove() {
|
||||||
@@ -188,7 +188,7 @@ index c2c52fa8cd05a1b3487976cced210352a9026980..25f1ab0d7a2701a9fe9d6af7169b056a
|
|||||||
TickThread.ensureTickThread(this.player, "Cannot add player asynchronously");
|
TickThread.ensureTickThread(this.player, "Cannot add player asynchronously");
|
||||||
if (this.removed) {
|
if (this.removed) {
|
||||||
throw new IllegalStateException("Removing removed player chunk loader");
|
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() {
|
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
|
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
|
--- a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
|
||||||
+++ b/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;
|
private static final long NO_TIMEOUT_MARKER = Long.MIN_VALUE;
|
||||||
public final ReentrantAreaLock ticketLockArea;
|
public final ReentrantAreaLock ticketLockArea;
|
||||||
|
|
||||||
@@ -220,6 +220,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
|
|||||||
private long currentTick;
|
private long currentTick;
|
||||||
|
|
||||||
- private final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = new ArrayDeque<>();
|
- 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) -> {
|
- private final ObjectRBTreeSet<NewChunkHolder> autoSaveQueue = new ObjectRBTreeSet<>((final NewChunkHolder c1, final NewChunkHolder c2) -> {
|
||||||
- if (c1 == c2) {
|
- if (c1 == c2) {
|
||||||
- return 0;
|
- return 0;
|
||||||
@@ -227,6 +228,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
|
|||||||
+ // DivineMC start - Chunk System optimization
|
+ // DivineMC start - Chunk System optimization
|
||||||
+ public static class LevelHolderData {
|
+ public static class LevelHolderData {
|
||||||
+ private final java.util.concurrent.ConcurrentLinkedDeque<NewChunkHolder> pendingFullLoadUpdate = new java.util.concurrent.ConcurrentLinkedDeque<>();
|
+ 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) -> {
|
+ private final ObjectRBTreeSet<NewChunkHolder> autoSaveQueue = new ObjectRBTreeSet<>((final NewChunkHolder c1, final NewChunkHolder c2) -> {
|
||||||
+ if (c1 == c2) {
|
+ if (c1 == c2) {
|
||||||
+ return 0;
|
+ return 0;
|
||||||
@@ -270,7 +272,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
|
|||||||
|
|
||||||
private final ConcurrentLong2ReferenceChainedHashTable<Long2IntOpenHashMap> ticketCounters = new ConcurrentLong2ReferenceChainedHashTable<>();
|
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);
|
this.taskScheduler.setShutdown(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,7 +309,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
|
|||||||
|
|
||||||
holder.lastAutoSave = currentTick;
|
holder.lastAutoSave = currentTick;
|
||||||
if (holder.save(false) != null) {
|
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) {
|
for (final NewChunkHolder holder : reschedule) {
|
||||||
if (holder.getChunkStatus().isOrAfter(FullChunkStatus.FULL)) {
|
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) {
|
public void saveAllChunks(final boolean flush, final boolean shutdown, final boolean logProgress) {
|
||||||
final List<NewChunkHolder> holders = this.getChunkHolders();
|
final List<NewChunkHolder> holders = this.getChunkHolders();
|
||||||
@@ -319,13 +336,9 @@ public final class ChunkHolderManager {
|
@@ -321,13 +338,9 @@ public final class ChunkHolderManager {
|
||||||
}
|
}
|
||||||
if (logProgress) {
|
if (logProgress) {
|
||||||
final long currTime = System.nanoTime();
|
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<SortedArraySet<Ticket>> ret = new Long2ObjectOpenHashMap<>();
|
||||||
final Long2ObjectOpenHashMap<LongArrayList> sections = new Long2ObjectOpenHashMap<>();
|
final Long2ObjectOpenHashMap<LongArrayList> sections = new Long2ObjectOpenHashMap<>();
|
||||||
final int sectionShift = this.taskScheduler.getChunkSystemLockShift();
|
final int sectionShift = this.taskScheduler.getChunkSystemLockShift();
|
||||||
@@ -347,7 +349,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
|
|||||||
sections.computeIfAbsent(
|
sections.computeIfAbsent(
|
||||||
CoordinateUtils.getChunkKey(
|
CoordinateUtils.getChunkKey(
|
||||||
CoordinateUtils.getChunkX(coord) >> sectionShift,
|
CoordinateUtils.getChunkX(coord) >> sectionShift,
|
||||||
@@ -557,7 +570,7 @@ public final class ChunkHolderManager {
|
@@ -559,7 +572,7 @@ public final class ChunkHolderManager {
|
||||||
chunkZ >> sectionShift
|
chunkZ >> sectionShift
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -356,7 +358,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
|
|||||||
return new Long2IntOpenHashMap();
|
return new Long2IntOpenHashMap();
|
||||||
}).addTo(chunkKey, 1);
|
}).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;
|
final ReentrantAreaLock.Node ticketLock = lock ? this.ticketLockArea.lock(chunkX, chunkZ) : null;
|
||||||
try {
|
try {
|
||||||
@@ -367,7 +369,7 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
|
|||||||
});
|
});
|
||||||
|
|
||||||
final int levelBefore = getTicketLevelAt(ticketsAtChunk);
|
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 Long2ObjectOpenHashMap<LongArrayList> sections = new Long2ObjectOpenHashMap<>();
|
||||||
final int sectionShift = this.taskScheduler.getChunkSystemLockShift();
|
final int sectionShift = this.taskScheduler.getChunkSystemLockShift();
|
||||||
@@ -378,9 +380,9 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
|
|||||||
sections.computeIfAbsent(
|
sections.computeIfAbsent(
|
||||||
CoordinateUtils.getChunkKey(
|
CoordinateUtils.getChunkKey(
|
||||||
CoordinateUtils.getChunkX(coord) >> sectionShift,
|
CoordinateUtils.getChunkX(coord) >> sectionShift,
|
||||||
@@ -831,8 +844,8 @@ public final class ChunkHolderManager {
|
@@ -836,8 +849,8 @@ public final class ChunkHolderManager {
|
||||||
return removeDelay <= 0L;
|
final List<ChunkProgressionTask> scheduledTasks = new ArrayList<>();
|
||||||
};
|
final List<NewChunkHolder> changedFullStatus = new ArrayList<>();
|
||||||
|
|
||||||
- for (final PrimitiveIterator.OfLong iterator = this.sectionToChunkToExpireCount.keyIterator(); iterator.hasNext();) {
|
- for (final PrimitiveIterator.OfLong iterator = this.sectionToChunkToExpireCount.keyIterator(); iterator.hasNext();) {
|
||||||
- final long sectionKey = iterator.nextLong();
|
- final long sectionKey = iterator.nextLong();
|
||||||
@@ -389,18 +391,23 @@ index f473999938840562b1007a789600342e5796a123..60705955e231d47c60f5a0a5e869988a
|
|||||||
|
|
||||||
if (!this.sectionToChunkToExpireCount.containsKey(sectionKey)) {
|
if (!this.sectionToChunkToExpireCount.containsKey(sectionKey)) {
|
||||||
// removed concurrently
|
// removed concurrently
|
||||||
@@ -1118,7 +1131,7 @@ public final class ChunkHolderManager {
|
@@ -1145,18 +1158,29 @@ public final class ChunkHolderManager {
|
||||||
}
|
|
||||||
if (!TickThread.isTickThread()) {
|
if (!TickThread.isTickThread()) {
|
||||||
this.taskScheduler.scheduleChunkTask(() -> {
|
// These will be handled on the next ServerChunkCache$MainThreadExecutor#pollTask, as it runs the distance manager update
|
||||||
- final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = ChunkHolderManager.this.pendingFullLoadUpdate;
|
// which will invoke processTicketUpdates
|
||||||
+ final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = ChunkHolderManager.this.getData().pendingFullLoadUpdate; // DivineMC - Chunk System optimization
|
- this.offThreadPendingFullLoadUpdate.addAll(changedFullStatus);
|
||||||
for (int i = 0, len = changedFullStatus.size(); i < len; ++i) {
|
+ this.getData().offThreadPendingFullLoadUpdate.addAll(changedFullStatus); // DivineMC - Chunk System optimization
|
||||||
pendingFullLoadUpdate.add(changedFullStatus.get(i));
|
+
|
||||||
}
|
+ // DivineMC start - Chunk System optimization
|
||||||
@@ -1126,16 +1139,16 @@ public final class ChunkHolderManager {
|
+ this.taskScheduler.scheduleChunkTask(() -> {
|
||||||
ChunkHolderManager.this.processPendingFullUpdate();
|
+ final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = ChunkHolderManager.this.getData().pendingFullLoadUpdate;
|
||||||
}, Priority.HIGHEST);
|
+ 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 {
|
} else {
|
||||||
- final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = this.pendingFullLoadUpdate;
|
- final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = this.pendingFullLoadUpdate;
|
||||||
+ final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = this.getData().pendingFullLoadUpdate; // DivineMC - Chunk System optimization
|
+ 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);
|
PlatformHooks.get().onChunkHolderDelete(this.world, holder.vanillaChunkHolder);
|
||||||
this.chunkHolders.remove(CoordinateUtils.getChunkKey(holder.chunkX, holder.chunkZ));
|
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 {
|
public enum TicketOperationType {
|
||||||
ADD, REMOVE, ADD_IF_REMOVED, ADD_AND_REMOVE
|
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
|
// 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() {
|
private boolean processPendingFullUpdate() {
|
||||||
|
this.processOffThreadFullUpdates();
|
||||||
|
|
||||||
- final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = this.pendingFullLoadUpdate;
|
- final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = this.pendingFullLoadUpdate;
|
||||||
+ final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = this.getData().pendingFullLoadUpdate; // DivineMC - Chunk System optimization
|
+ final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = this.getData().pendingFullLoadUpdate; // DivineMC - Chunk System optimization
|
||||||
|
|
||||||
boolean ret = false;
|
boolean ret = false;
|
||||||
|
|
||||||
@@ -1502,8 +1536,7 @@ public final class ChunkHolderManager {
|
@@ -1522,8 +1567,7 @@ public final class ChunkHolderManager {
|
||||||
final JsonArray allTicketsJson = new JsonArray();
|
final JsonArray allTicketsJson = new JsonArray();
|
||||||
ret.add("tickets", allTicketsJson);
|
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
|
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
|
--- a/io/papermc/paper/FeatureHooks.java
|
||||||
+++ b/io/papermc/paper/FeatureHooks.java
|
+++ b/io/papermc/paper/FeatureHooks.java
|
||||||
@@ -32,11 +32,6 @@ import org.bukkit.Chunk;
|
@@ -37,10 +37,6 @@ public final class FeatureHooks {
|
||||||
import org.bukkit.World;
|
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) {
|
- public static void initChunkTaskScheduler(final boolean useParallelGen) {
|
||||||
- ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.init(useParallelGen); // Paper - Chunk system
|
- ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.init(useParallelGen); // Paper - Chunk system
|
||||||
- }
|
- }
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Lag compensation
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
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
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -288,6 +288,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -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) {
|
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
||||||
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
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
|
this.server.spark.tickStart(); // Paper - spark
|
||||||
@@ -220,7 +220,7 @@ index 2d9bf302b779602d733187c6f86e52467f0dc540..69196d7e43054955137569b22c4ca40a
|
|||||||
public static class BooleanValue extends GameRules.Value<GameRules.BooleanValue> {
|
public static class BooleanValue extends GameRules.Value<GameRules.BooleanValue> {
|
||||||
private boolean value;
|
private boolean value;
|
||||||
diff --git a/net/minecraft/world/level/block/state/BlockBehaviour.java b/net/minecraft/world/level/block/state/BlockBehaviour.java
|
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
|
--- a/net/minecraft/world/level/block/state/BlockBehaviour.java
|
||||||
+++ b/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 {
|
@@ -347,13 +347,21 @@ public abstract class BlockBehaviour implements FeatureElement {
|
||||||
|
|||||||
@@ -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
|
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
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -289,6 +289,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -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) {
|
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
||||||
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
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
|
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
|
||||||
// Paper start - Folia scheduler API
|
// Paper start - Folia scheduler API
|
||||||
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) org.bukkit.Bukkit.getGlobalRegionScheduler()).tick();
|
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) org.bukkit.Bukkit.getGlobalRegionScheduler()).tick();
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Optimize explosions
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java
|
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
|
--- a/net/minecraft/world/level/ServerExplosion.java
|
||||||
+++ b/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() {
|
private List<BlockPos> calculateExplodedPositions() {
|
||||||
@@ -20,7 +20,7 @@ index a772f2bd7be00172ad41353c6ad42d9239b9ec88..27c7a113b81160eb88021bf259005e3c
|
|||||||
// Paper start - collision optimisations
|
// Paper start - collision optimisations
|
||||||
final ObjectArrayList<BlockPos> ret = new ObjectArrayList<>();
|
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
|
// Paper end - collision optimisations
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,7 +178,7 @@ index a772f2bd7be00172ad41353c6ad42d9239b9ec88..27c7a113b81160eb88021bf259005e3c
|
|||||||
private void hurtEntities() {
|
private void hurtEntities() {
|
||||||
float f = this.radius * 2.0F;
|
float f = this.radius * 2.0F;
|
||||||
int floor = Mth.floor(this.center.x - f - 1.0);
|
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) {
|
private void interactWithBlocks(List<BlockPos> blocks) {
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ index 0a69469c79aaa2466cda04f6acefed18e421d555..66f7f2aa071c2811400b4fed12ccf51c
|
|||||||
private final AtomicInteger count = new AtomicInteger();
|
private final AtomicInteger count = new AtomicInteger();
|
||||||
|
|
||||||
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
|
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
|
--- a/net/minecraft/commands/Commands.java
|
||||||
+++ b/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
|
// Fixed pool, but with discard policy
|
||||||
@@ -36,10 +36,10 @@ index 2b4345d16e8e5e903afb723dc41f549613998f7c..6e75bbc18762914c85866a0f46c6927a
|
|||||||
new java.util.concurrent.LinkedBlockingQueue<>(),
|
new java.util.concurrent.LinkedBlockingQueue<>(),
|
||||||
new com.google.common.util.concurrent.ThreadFactoryBuilder()
|
new com.google.common.util.concurrent.ThreadFactoryBuilder()
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
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
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
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
|
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
|
||||||
+++ b/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 {
|
@@ -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
|
+ 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 {
|
public static void setUnloadDelay(final long ticks) {
|
||||||
|
((ChunkSystemTicketType)(Object)PLAYER_TICKET_DELAYED).moonrise$setTimeout(Math.max(1, ticks));
|
||||||
private volatile ViewDistances viewDistances;
|
}
|
||||||
@@ -424,17 +426,61 @@ public final class RegionizedPlayerChunkLoader {
|
@@ -428,17 +430,61 @@ public final class RegionizedPlayerChunkLoader {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendChunk(final int chunkX, final int chunkZ) {
|
private void sendChunk(final int chunkX, final int chunkZ) {
|
||||||
|
|||||||
@@ -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
|
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
|
--- a/net/minecraft/world/level/BaseCommandBlock.java
|
||||||
+++ b/net/minecraft/world/level/BaseCommandBlock.java
|
+++ b/net/minecraft/world/level/BaseCommandBlock.java
|
||||||
@@ -34,6 +34,10 @@ public abstract class BaseCommandBlock implements CommandSource {
|
@@ -34,6 +34,10 @@ public abstract class BaseCommandBlock implements CommandSource {
|
||||||
@@ -19,11 +19,14 @@ index d823f95a823f599db2c80f888e4b1a411fa4d3aa..6438b98628bb8eaa1e57276de2bc6b87
|
|||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
@Override
|
@Override
|
||||||
public abstract org.bukkit.command.CommandSender getBukkitSender(CommandSourceStack wrapper);
|
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++;
|
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
|
+ // DivineMC start - Command block parse results caching
|
||||||
+ if (org.bxteam.divinemc.config.DivineConfig.PerformanceCategory.commandBlockParseResultsCaching) {
|
+ if (org.bxteam.divinemc.config.DivineConfig.PerformanceCategory.commandBlockParseResultsCaching) {
|
||||||
+ String commandCache = this.command;
|
+ String commandCache = this.command;
|
||||||
@@ -50,13 +53,21 @@ index d823f95a823f599db2c80f888e4b1a411fa4d3aa..6438b98628bb8eaa1e57276de2bc6b87
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ } else {
|
+ } 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
|
+ // DivineMC end - Command block parse results caching
|
||||||
} catch (Throwable var6) {
|
} catch (Throwable var6) {
|
||||||
CrashReport crashReport = CrashReport.forThrowable(var6, "Executing command block");
|
CrashReport crashReport = CrashReport.forThrowable(var6, "Executing command block");
|
||||||
CrashReportCategory crashReportCategory = crashReport.addCategory("Command to be executed");
|
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 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
+ 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
|
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
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/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
|
// CraftBukkit end
|
||||||
if (flush) {
|
if (flush) {
|
||||||
for (ServerLevel serverLevel2 : this.getAllLevels()) {
|
for (ServerLevel serverLevel2 : this.getAllLevels()) {
|
||||||
|
|||||||
@@ -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
|
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
|
--- a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
|
||||||
+++ b/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()) {
|
if (changedFullStatus.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
- if (!TickThread.isTickThread()) {
|
- if (!TickThread.isTickThread()) {
|
||||||
+ if (org.bxteam.divinemc.config.DivineConfig.AsyncCategory.enableParallelWorldTicking && !TickThread.isTickThreadFor(world)) { // DivineMC - Parallel world ticking
|
+ if (org.bxteam.divinemc.config.DivineConfig.AsyncCategory.enableParallelWorldTicking && !TickThread.isTickThreadFor(world)) { // DivineMC - Parallel world ticking
|
||||||
this.taskScheduler.scheduleChunkTask(() -> {
|
// These will be handled on the next ServerChunkCache$MainThreadExecutor#pollTask, as it runs the distance manager update
|
||||||
final java.util.Deque<NewChunkHolder> pendingFullLoadUpdate = ChunkHolderManager.this.getData().pendingFullLoadUpdate; // DivineMC - Chunk System optimization
|
// which will invoke processTicketUpdates
|
||||||
for (int i = 0, len = changedFullStatus.size(); i < len; ++i) {
|
this.getData().offThreadPendingFullLoadUpdate.addAll(changedFullStatus); // DivineMC - Chunk System optimization
|
||||||
@@ -1155,7 +1155,13 @@ public final class ChunkHolderManager {
|
@@ -1187,7 +1187,13 @@ public final class ChunkHolderManager {
|
||||||
|
|
||||||
// note: never call while inside the chunk system, this will absolutely break everything
|
// note: never call while inside the chunk system, this will absolutely break everything
|
||||||
public void processUnloads() {
|
public void processUnloads() {
|
||||||
@@ -32,15 +32,15 @@ index 60705955e231d47c60f5a0a5e869988aed8774fc..c0322d4f9eadb26b8d5c6a3b426218eb
|
|||||||
|
|
||||||
if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) {
|
if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) {
|
||||||
throw new IllegalStateException("Cannot unload chunks recursively");
|
throw new IllegalStateException("Cannot unload chunks recursively");
|
||||||
@@ -1458,7 +1464,7 @@ public final class ChunkHolderManager {
|
@@ -1474,7 +1480,7 @@ public final class ChunkHolderManager {
|
||||||
|
if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) {
|
||||||
List<NewChunkHolder> changedFullStatus = null;
|
throw new IllegalStateException("Cannot update ticket level while unloading chunks or updating entity manager");
|
||||||
|
}
|
||||||
- final boolean isTickThread = TickThread.isTickThread();
|
- final boolean isTickThread = TickThread.isTickThread();
|
||||||
+ final boolean isTickThread = org.bxteam.divinemc.config.DivineConfig.AsyncCategory.enableParallelWorldTicking && TickThread.isTickThreadFor(world) || TickThread.isTickThread(); // DivineMC - Parallel world ticking
|
+ final boolean isTickThread = org.bxteam.divinemc.config.DivineConfig.AsyncCategory.enableParallelWorldTicking && TickThread.isTickThreadFor(world) || TickThread.isTickThread(); // DivineMC - Parallel world ticking
|
||||||
|
|
||||||
boolean ret = false;
|
if (!PlatformHooks.get().allowAsyncTicketUpdates() && isTickThread) {
|
||||||
final boolean canProcessFullUpdates = processFullUpdates & isTickThread;
|
TickThread.ensureTickThread("Cannot asynchronously process ticket updates");
|
||||||
diff --git a/net/minecraft/core/dispenser/DispenseItemBehavior.java b/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
diff --git a/net/minecraft/core/dispenser/DispenseItemBehavior.java b/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||||
index ac27ff24f018d8798921c5152e679ceed1e88d8d..ec7d1353b19e55b00c558df8981323efb9b88bdf 100644
|
index ac27ff24f018d8798921c5152e679ceed1e88d8d..ec7d1353b19e55b00c558df8981323efb9b88bdf 100644
|
||||||
--- a/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
--- 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());
|
List<org.bukkit.block.BlockState> states = new java.util.ArrayList<>(level.capturedBlockStates.values());
|
||||||
level.capturedBlockStates.clear();
|
level.capturedBlockStates.clear();
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
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
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -291,6 +291,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -291,6 +291,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@@ -120,7 +120,7 @@ index 9e83d0ec1a0976f365fa6cb3f1b7db167641b336..6f08d761ee52d65a57fd01cf7bffa461
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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) {
|
protected void tickChildren(BooleanSupplier hasTimeLeft) {
|
||||||
this.getPlayerList().getPlayers().forEach(serverPlayer1 -> serverPlayer1.connection.suspendFlushing());
|
this.getPlayerList().getPlayers().forEach(serverPlayer1 -> serverPlayer1.connection.suspendFlushing());
|
||||||
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
|
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
|
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.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
|
||||||
|
|
||||||
this.tickConnection();
|
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> oldLevels = this.levels;
|
||||||
Map<ResourceKey<Level>, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels);
|
Map<ResourceKey<Level>, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels);
|
||||||
newLevels.remove(level.dimension());
|
newLevels.remove(level.dimension());
|
||||||
@@ -210,7 +210,7 @@ index 9e83d0ec1a0976f365fa6cb3f1b7db167641b336..6f08d761ee52d65a57fd01cf7bffa461
|
|||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
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
|
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -224,6 +224,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -224,6 +224,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
@@ -404,7 +404,7 @@ index 8bf5f7a98e4e8542d56c49a7e2c4926ec86f712d..e1ca822d41311e3be44c52badb907619
|
|||||||
serverPlayer.connection = player.connection;
|
serverPlayer.connection = player.connection;
|
||||||
serverPlayer.restoreFrom(player, keepInventory);
|
serverPlayer.restoreFrom(player, keepInventory);
|
||||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
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
|
--- a/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/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
|
@@ -3432,14 +3432,34 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
@@ -669,7 +669,7 @@ index 2258736e6f9f52efe5bd353b8949a7a0b9a4fdb8..440fbe301782e81cec679a27a876dd3c
|
|||||||
} else {
|
} else {
|
||||||
Entity entity = owner.teleport(
|
Entity entity = owner.teleport(
|
||||||
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
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
|
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
@@ -96,8 +96,14 @@ public abstract class AbstractContainerMenu {
|
@@ -96,8 +96,14 @@ public abstract class AbstractContainerMenu {
|
||||||
|
|||||||
@@ -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
|
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
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/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
|
// DivineMC start - Parallel world ticking
|
||||||
private void tickLevel(ServerLevel serverLevel, BooleanSupplier hasTimeLeft) {
|
private void tickLevel(ServerLevel serverLevel, BooleanSupplier hasTimeLeft) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Optimize Raids
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
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
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/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
|
@@ -218,6 +218,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
@@ -59,7 +59,7 @@ index b3a29ce523fb5de71589c7c17598bba17622f988..39b9141c6c64acb362bbf12a1d47901f
|
|||||||
|
|
||||||
public float getHealthOfLivingRaiders() {
|
public float getHealthOfLivingRaiders() {
|
||||||
diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java
|
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
|
--- a/net/minecraft/world/entity/raid/Raider.java
|
||||||
+++ b/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;
|
@@ -43,9 +43,25 @@ import net.minecraft.world.phys.Vec3;
|
||||||
@@ -124,7 +124,7 @@ index 3baba21d106ab09ae476238f2636169c371f43cf..652ab0cd78252616c63df55c3249c1c7
|
|||||||
+ // DivineMC end - Optimize Raids
|
+ // DivineMC end - Optimize Raids
|
||||||
+
|
+
|
||||||
private boolean cannotPickUpBanner() {
|
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()) {
|
if (!this.mob.hasActiveRaid()) {
|
||||||
@@ -409,7 +435,7 @@ public abstract class Raider extends PatrollingMonster {
|
@@ -409,7 +435,7 @@ public abstract class Raider extends PatrollingMonster {
|
||||||
} else if (!this.mob.canBeLeader()) {
|
} else if (!this.mob.canBeLeader()) {
|
||||||
|
|||||||
@@ -20,10 +20,10 @@ index e65c62dbe4c1560ae153e4c4344e9194c783a2f4..e3d3b062e273fee4a9d3ba3cadc21278
|
|||||||
if (var4 instanceof ReportedException reportedException && reportedException.getCause() instanceof OutOfMemoryError) {
|
if (var4 instanceof ReportedException reportedException && reportedException.getCause() instanceof OutOfMemoryError) {
|
||||||
throw makeReportedException(var4, packet, processor);
|
throw makeReportedException(var4, packet, processor);
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
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
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/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.tickTimes10s.add(this.tickCount, j);
|
||||||
serverLevel.tickTimes60s.add(this.tickCount, j);
|
serverLevel.tickTimes60s.add(this.tickCount, j);
|
||||||
// DivineMC end - MSPT Tracking for each world
|
// DivineMC end - MSPT Tracking for each world
|
||||||
|
|||||||
@@ -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
|
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
|
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
|
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
|
||||||
+++ b/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 {
|
@@ -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 = 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 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 GENERATED_TICKET_LEVEL = ChunkHolderManager.FULL_LOADED_TICKET_LEVEL;
|
||||||
public static final int LOADED_TICKET_LEVEL = ChunkTaskScheduler.getTicketLevel(ChunkStatus.EMPTY);
|
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
|
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
|
--- a/net/minecraft/server/players/PlayerList.java
|
||||||
+++ b/net/minecraft/server/players/PlayerList.java
|
+++ b/net/minecraft/server/players/PlayerList.java
|
||||||
@@ -316,6 +316,13 @@ public abstract class PlayerList {
|
@@ -316,6 +316,13 @@ public abstract class PlayerList {
|
||||||
|
|||||||
@@ -206,10 +206,10 @@ index a491be4250de3199c3e1aa9e5482b568692bd2f5..c88826db76c28c536e6c36c5592d69c1
|
|||||||
private static final String PREFIX = "data:image/png;base64,";
|
private static final String PREFIX = "data:image/png;base64,";
|
||||||
public static final Codec<ServerStatus.Favicon> CODEC = Codec.STRING.comapFlatMap(string -> {
|
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
|
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
|
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/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
|
@Override
|
||||||
public boolean enforceSecureProfile() {
|
public boolean enforceSecureProfile() {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -988,6 +_,13 @@
|
@@ -989,6 +_,13 @@
|
||||||
if (this.hasStopped) return;
|
if (this.hasStopped) return;
|
||||||
this.hasStopped = true;
|
this.hasStopped = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
private static final Component DEFAULT_NAME = Component.literal("@");
|
private static final Component DEFAULT_NAME = Component.literal("@");
|
||||||
private static final int NO_LAST_EXECUTION = -1;
|
private static final int NO_LAST_EXECUTION = -1;
|
||||||
private long lastExecution = -1L;
|
private long lastExecution = -1L;
|
||||||
@@ -150,7 +_,7 @@
|
@@ -156,7 +_,7 @@
|
||||||
public void sendSystemMessage(Component component) {
|
public void sendSystemMessage(Component component) {
|
||||||
if (this.trackOutput) {
|
if (this.trackOutput) {
|
||||||
org.spigotmc.AsyncCatcher.catchOp("sendSystemMessage to a command block"); // Paper - Don't broadcast messages to command blocks
|
org.spigotmc.AsyncCatcher.catchOp("sendSystemMessage to a command block"); // Paper - Don't broadcast messages to command blocks
|
||||||
|
|||||||
@@ -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
|
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
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
+++ b/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
|
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
|
||||||
this.console.paperConfigurations.reloadConfigs(this.console);
|
this.console.paperConfigurations.reloadConfigs(this.console);
|
||||||
org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur - Purpur config files
|
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()) {
|
for (ServerLevel world : this.console.getAllLevels()) {
|
||||||
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
|
// 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))
|
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.spigotConfig.init(); // Spigot
|
||||||
world.purpurConfig.init(); // Purpur - Purpur config files
|
world.purpurConfig.init(); // Purpur - Purpur config files
|
||||||
|
|||||||
@@ -25,10 +25,10 @@ index 400e632208d133a3f49fc7f14bceb48a1026769b..a1c7ba0fdb505d09407cca94e890dedd
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
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
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
+++ b/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();
|
registryAccess = levelDataAndDimensions.dimensions().dimensionsRegistryAccess();
|
||||||
} else {
|
} else {
|
||||||
LevelSettings levelSettings;
|
LevelSettings levelSettings;
|
||||||
|
|||||||
@@ -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
|
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
|
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
||||||
+++ b/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
|
@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)));
|
public Reference2IntMap<MobCategory> ticksPerSpawn = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1)));
|
||||||
|
|
||||||
|
|||||||
@@ -20,10 +20,10 @@ index 83419bbcbf79d8eed1302d66356a62fa61a33473..caa4cf0af0696b90d61f32f5445a6e6c
|
|||||||
public IntOr.Default compressionLevel = IntOr.Default.USE_DEFAULT;
|
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.")
|
@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
|
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
|
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
||||||
+++ b/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 ArmorStands armorStands;
|
||||||
|
|
||||||
public class ArmorStands extends ConfigurationPart {
|
public class ArmorStands extends ConfigurationPart {
|
||||||
@@ -36,7 +36,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Markers markers;
|
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 AltItemDespawnRate altItemDespawnRate;
|
||||||
|
|
||||||
public class AltItemDespawnRate extends ConfigurationPart {
|
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 class Environment extends ConfigurationPart {
|
||||||
public boolean disableThunder = false;
|
public boolean disableThunder = false;
|
||||||
public boolean disableIceAndSnow = false;
|
public boolean disableIceAndSnow = false;
|
||||||
@@ -86,7 +86,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
|
|||||||
public boolean disableExplosionKnockback = false;
|
public boolean disableExplosionKnockback = false;
|
||||||
public boolean generateFlatBedrock = false;
|
public boolean generateFlatBedrock = false;
|
||||||
public FrostedIce frostedIce;
|
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 Fixes fixes;
|
||||||
|
|
||||||
public class Fixes extends ConfigurationPart {
|
public class Fixes extends ConfigurationPart {
|
||||||
@@ -95,7 +95,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
|
|||||||
public boolean disableUnloadedChunkEnderpearlExploit = false;
|
public boolean disableUnloadedChunkEnderpearlExploit = false;
|
||||||
public boolean preventTntFromMovingInWater = false;
|
public boolean preventTntFromMovingInWater = false;
|
||||||
public boolean splitOverstackedLoot = true;
|
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 class Collisions extends ConfigurationPart {
|
||||||
public boolean onlyPlayersCollide = false;
|
public boolean onlyPlayersCollide = false;
|
||||||
public boolean allowVehicleCollisions = true;
|
public boolean allowVehicleCollisions = true;
|
||||||
@@ -107,7 +107,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
|
|||||||
public boolean allowPlayerCrammingDamage = false;
|
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 AutosavePeriod autoSaveInterval = AutosavePeriod.def();
|
||||||
public int maxAutoSaveChunksPerTick = 24;
|
public int maxAutoSaveChunksPerTick = 24;
|
||||||
public int fixedChunkInhabitedTime = -1;
|
public int fixedChunkInhabitedTime = -1;
|
||||||
@@ -147,8 +147,8 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
|
|||||||
+ // DivineMC end - Optimize default values for configs
|
+ // DivineMC end - Optimize default values for configs
|
||||||
});
|
});
|
||||||
public boolean flushRegionsOnSave = false;
|
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 TickRates tickRates;
|
||||||
|
|
||||||
public class TickRates extends ConfigurationPart {
|
public class TickRates extends ConfigurationPart {
|
||||||
@@ -160,7 +160,7 @@ index 6c298304f842612d0e063b578f274eed04b32960..18c501a2fe2213e3282bf83f5e07fe37
|
|||||||
public int wetFarmland = 1;
|
public int wetFarmland = 1;
|
||||||
public int dryFarmland = 1;
|
public int dryFarmland = 1;
|
||||||
public Table<EntityType<?>, String, Integer> sensor = Util.make(HashBasedTable.create(), table -> table.put(EntityType.VILLAGER, "secondarypoisensor", 40));
|
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 class Misc extends ConfigurationPart {
|
||||||
public boolean updatePathfindingOnBlockUpdate = true;
|
public boolean updatePathfindingOnBlockUpdate = true;
|
||||||
public boolean showSignClickCommandFailureMsgsToPlayer = false;
|
public boolean showSignClickCommandFailureMsgsToPlayer = false;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
@@ -976,7 +_,7 @@
|
@@ -974,7 +_,7 @@
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<World> getWorlds() {
|
public List<World> getWorlds() {
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ index e5bf7ea47143cf3f8d4c0f1840698068bb70cbf8..72fcad4a0b5857551221741b9c73fa75
|
|||||||
useAlternateKeepAlive = getBoolean("settings.use-alternate-keepalive", useAlternateKeepAlive);
|
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
|
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
|
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||||
+++ b/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 boolean villagerDisplayTradeItem = true;
|
||||||
public int villagerSpawnIronGolemRadius = 0;
|
public int villagerSpawnIronGolemRadius = 0;
|
||||||
public int villagerSpawnIronGolemLimit = 0;
|
public int villagerSpawnIronGolemLimit = 0;
|
||||||
|
|||||||
@@ -25,10 +25,10 @@ index 72fcad4a0b5857551221741b9c73fa75596e6981..374af5eb6b55c731535be4e8c242ffc3
|
|||||||
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
|
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
|
||||||
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
|
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
|
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
|
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||||
+++ b/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 boolean allayControllable = true;
|
||||||
public double allayMaxHealth = 20.0D;
|
public double allayMaxHealth = 20.0D;
|
||||||
public double allayScale = 1.0D;
|
public double allayScale = 1.0D;
|
||||||
@@ -49,7 +49,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean armadilloRidable = false;
|
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 camelMovementSpeedMin = 0.09D;
|
||||||
public double camelMovementSpeedMax = 0.09D;
|
public double camelMovementSpeedMax = 0.09D;
|
||||||
public int camelBreedingTicks = 6000;
|
public int camelBreedingTicks = 6000;
|
||||||
@@ -60,7 +60,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
|
|||||||
private void camelSettings() {
|
private void camelSettings() {
|
||||||
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
|
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
|
||||||
camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin);
|
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);
|
camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin);
|
||||||
camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax);
|
camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax);
|
||||||
camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks);
|
camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks);
|
||||||
@@ -71,7 +71,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean catRidable = false;
|
public boolean catRidable = false;
|
||||||
@@ -1839,12 +1855,22 @@ public class PurpurWorldConfig {
|
@@ -1834,12 +1850,22 @@ public class PurpurWorldConfig {
|
||||||
public boolean frogControllable = true;
|
public boolean frogControllable = true;
|
||||||
public float frogRidableJumpHeight = 0.65F;
|
public float frogRidableJumpHeight = 0.65F;
|
||||||
public int frogBreedingTicks = 6000;
|
public int frogBreedingTicks = 6000;
|
||||||
@@ -94,7 +94,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean ghastRidable = false;
|
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 snifferMaxHealth = 14.0D;
|
||||||
public double snifferScale = 1.0D;
|
public double snifferScale = 1.0D;
|
||||||
public int snifferBreedingTicks = 6000;
|
public int snifferBreedingTicks = 6000;
|
||||||
@@ -105,7 +105,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
|
|||||||
private void snifferSettings() {
|
private void snifferSettings() {
|
||||||
snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable);
|
snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable);
|
||||||
snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater);
|
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);
|
snifferMaxHealth = getDouble("mobs.sniffer.attributes.max_health", snifferMaxHealth);
|
||||||
snifferScale = Mth.clamp(getDouble("mobs.sniffer.attributes.scale", snifferScale), 0.0625D, 16.0D);
|
snifferScale = Mth.clamp(getDouble("mobs.sniffer.attributes.scale", snifferScale), 0.0625D, 16.0D);
|
||||||
snifferBreedingTicks = getInt("mobs.sniffer.breeding-delay-ticks", snifferBreedingTicks);
|
snifferBreedingTicks = getInt("mobs.sniffer.breeding-delay-ticks", snifferBreedingTicks);
|
||||||
@@ -116,7 +116,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean squidRidable = false;
|
public boolean squidRidable = false;
|
||||||
@@ -3038,10 +3072,20 @@ public class PurpurWorldConfig {
|
@@ -3033,10 +3067,20 @@ public class PurpurWorldConfig {
|
||||||
public boolean tadpoleRidable = false;
|
public boolean tadpoleRidable = false;
|
||||||
public boolean tadpoleRidableInWater = true;
|
public boolean tadpoleRidableInWater = true;
|
||||||
public boolean tadpoleControllable = true;
|
public boolean tadpoleControllable = true;
|
||||||
@@ -137,7 +137,7 @@ index 508e5001eb691bd2d8231f8e6365eeacd14371ce..1e5f301d61da14c93b1cce4ceb3a3b29
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean traderLlamaRidable = false;
|
public boolean traderLlamaRidable = false;
|
||||||
@@ -3275,10 +3319,20 @@ public class PurpurWorldConfig {
|
@@ -3270,10 +3314,20 @@ public class PurpurWorldConfig {
|
||||||
public boolean wardenRidable = false;
|
public boolean wardenRidable = false;
|
||||||
public boolean wardenRidableInWater = true;
|
public boolean wardenRidableInWater = true;
|
||||||
public boolean wardenControllable = true;
|
public boolean wardenControllable = true;
|
||||||
|
|||||||
@@ -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
|
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
|
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||||
+++ b/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 drownedTakeDamageFromWater = false;
|
||||||
public boolean drownedBreakDoors = false;
|
public boolean drownedBreakDoors = false;
|
||||||
public boolean drownedAlwaysDropExp = false;
|
public boolean drownedAlwaysDropExp = false;
|
||||||
@@ -16,7 +16,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
|
|||||||
private void drownedSettings() {
|
private void drownedSettings() {
|
||||||
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
|
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
|
||||||
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
|
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);
|
drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater);
|
||||||
drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors);
|
drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors);
|
||||||
drownedAlwaysDropExp = getBoolean("mobs.drowned.always-drop-exp", drownedAlwaysDropExp);
|
drownedAlwaysDropExp = getBoolean("mobs.drowned.always-drop-exp", drownedAlwaysDropExp);
|
||||||
@@ -24,7 +24,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean elderGuardianRidable = false;
|
public boolean elderGuardianRidable = false;
|
||||||
@@ -2086,6 +2088,7 @@ public class PurpurWorldConfig {
|
@@ -2081,6 +2083,7 @@ public class PurpurWorldConfig {
|
||||||
public boolean huskJockeyTryExistingChickens = true;
|
public boolean huskJockeyTryExistingChickens = true;
|
||||||
public boolean huskTakeDamageFromWater = false;
|
public boolean huskTakeDamageFromWater = false;
|
||||||
public boolean huskAlwaysDropExp = false;
|
public boolean huskAlwaysDropExp = false;
|
||||||
@@ -32,7 +32,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
|
|||||||
private void huskSettings() {
|
private void huskSettings() {
|
||||||
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
|
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
|
||||||
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
|
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);
|
huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
|
||||||
huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater);
|
huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater);
|
||||||
huskAlwaysDropExp = getBoolean("mobs.husk.always-drop-exp", huskAlwaysDropExp);
|
huskAlwaysDropExp = getBoolean("mobs.husk.always-drop-exp", huskAlwaysDropExp);
|
||||||
@@ -40,7 +40,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean illusionerRidable = false;
|
public boolean illusionerRidable = false;
|
||||||
@@ -3494,6 +3498,7 @@ public class PurpurWorldConfig {
|
@@ -3489,6 +3493,7 @@ public class PurpurWorldConfig {
|
||||||
public boolean zombieTakeDamageFromWater = false;
|
public boolean zombieTakeDamageFromWater = false;
|
||||||
public boolean zombieAlwaysDropExp = false;
|
public boolean zombieAlwaysDropExp = false;
|
||||||
public double zombieHeadVisibilityPercent = 0.5D;
|
public double zombieHeadVisibilityPercent = 0.5D;
|
||||||
@@ -48,7 +48,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
|
|||||||
private void zombieSettings() {
|
private void zombieSettings() {
|
||||||
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
||||||
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
|
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);
|
zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater);
|
||||||
zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp);
|
zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp);
|
||||||
zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent);
|
zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent);
|
||||||
@@ -56,7 +56,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean zombieHorseRidable = false;
|
public boolean zombieHorseRidable = false;
|
||||||
@@ -3568,6 +3574,7 @@ public class PurpurWorldConfig {
|
@@ -3563,6 +3569,7 @@ public class PurpurWorldConfig {
|
||||||
public int zombieVillagerCuringTimeMax = 6000;
|
public int zombieVillagerCuringTimeMax = 6000;
|
||||||
public boolean zombieVillagerCureEnabled = true;
|
public boolean zombieVillagerCureEnabled = true;
|
||||||
public boolean zombieVillagerAlwaysDropExp = false;
|
public boolean zombieVillagerAlwaysDropExp = false;
|
||||||
@@ -64,7 +64,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
|
|||||||
private void zombieVillagerSettings() {
|
private void zombieVillagerSettings() {
|
||||||
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
|
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
|
||||||
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
|
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);
|
zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax);
|
||||||
zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled);
|
zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled);
|
||||||
zombieVillagerAlwaysDropExp = getBoolean("mobs.zombie_villager.always-drop-exp", zombieVillagerAlwaysDropExp);
|
zombieVillagerAlwaysDropExp = getBoolean("mobs.zombie_villager.always-drop-exp", zombieVillagerAlwaysDropExp);
|
||||||
@@ -72,7 +72,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean zombifiedPiglinRidable = false;
|
public boolean zombifiedPiglinRidable = false;
|
||||||
@@ -3602,6 +3610,7 @@ public class PurpurWorldConfig {
|
@@ -3597,6 +3605,7 @@ public class PurpurWorldConfig {
|
||||||
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = false;
|
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = false;
|
||||||
public boolean zombifiedPiglinTakeDamageFromWater = false;
|
public boolean zombifiedPiglinTakeDamageFromWater = false;
|
||||||
public boolean zombifiedPiglinAlwaysDropExp = false;
|
public boolean zombifiedPiglinAlwaysDropExp = false;
|
||||||
@@ -80,7 +80,7 @@ index 1e5f301d61da14c93b1cce4ceb3a3b2954435a80..e22d42be00677804c5548e9d9d6dd880
|
|||||||
private void zombifiedPiglinSettings() {
|
private void zombifiedPiglinSettings() {
|
||||||
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
||||||
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
|
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);
|
zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry);
|
||||||
zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater);
|
zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater);
|
||||||
zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp);
|
zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ group = org.bxteam.divinemc
|
|||||||
version=1.21.6-R0.1-SNAPSHOT
|
version=1.21.6-R0.1-SNAPSHOT
|
||||||
|
|
||||||
mcVersion=1.21.6
|
mcVersion=1.21.6
|
||||||
purpurRef=162bd2883b33f39b55bed76247be38d133ee2396
|
purpurRef=3893bba083d4d2e2cc7e475e9239258e714f02be
|
||||||
experimental=true
|
experimental=true
|
||||||
|
|
||||||
org.gradle.configuration-cache=true
|
org.gradle.configuration-cache=true
|
||||||
|
|||||||
Reference in New Issue
Block a user