9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-29 20:09:17 +00:00

Updated Upstream (Paper/Purpur)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@1fcc4162 Implement FeatureHooks#isChunkSent for Moonrise chunk system
PaperMC/Paper@e4d7178a Implement WaypointTransmitter#isChunkVisible
PaperMC/Paper@8980ead7 Directly walk text component after converting from JSON
PaperMC/Paper@5613ed6d Provide env environment variable and copy spigots sys prop for overriding default repository
PaperMC/Paper@62b7f86d Avoid and discourage use of Maven Central as a CDN (#12689)
PaperMC/Paper@f5534cb7 [ci/skip] Run generators (#12691)
PaperMC/Paper@4781d28b Re-add Log4j Javadocs (#12693)
PaperMC/Paper@74fbcce5 Check type of Material in get/set stats (#12607)
PaperMC/Paper@4b3f967e Improve Fix MC-44654 (#12703)
PaperMC/Paper@a7dd2635 Enable spigot obfuscation support (#12695)
PaperMC/Paper@6a51c44e Cleanup Primed TNT Fix (#12704)
PaperMC/Paper@839c6a18 Fix #11169 (#12706)
PaperMC/Paper@c77d5f99 Fix MC-297591
PaperMC/Paper@219f86ee Implement chunk unload delay config option
PaperMC/Paper@e4eb69b8 Do not allow ticket level decreases to be processed asynchronously
PaperMC/Paper@71b0c768 Adds support for vanilla negative explosions (#12705)
PaperMC/Paper@3750927a [ci/skip] Fix PermissionManager#clearPermissions() docs bad wording (#12657)
PaperMC/Paper@d61a51e8 Add ItemType#getBurnDuration() (#12604)
PaperMC/Paper@29fc8532 Allow empty paths in namespaced keys (#12687)
PaperMC/Paper@4419afb9 fix: Safely handle nanosecond overflow in ClickCallback (#12686)
PaperMC/Paper@56528821 Add `isProxyEnabled` method to ServerConfiguration (#12664)
PaperMC/Paper@c0dda0ea Add `isForceDefaultGameMode` method (#12673)
PaperMC/Paper@e714de63 Fix excess slot updates
PaperMC/Paper@6d0821d2 [ci/skip] Fix docs for Spawner class and cleanup (#12710)
PaperMC/Paper@cceffe3d Release ItemType and BlockType (#12708)
PaperMC/Paper@186e9e33 Relocate CommandMap#registerServerAliases() call to after lifecycle events have been run (#12601)
PaperMC/Paper@5edcf6dd Cleanup/command dispatching (#12713)

Purpur Changes:
PurpurMC/Purpur@baa196f5 Updated Upstream (Paper)
PurpurMC/Purpur@fdd1e980 Updated Upstream (Paper)
PurpurMC/Purpur@439f15db Updated Upstream (Paper)
PurpurMC/Purpur@46a28b93 [ci/skip] update version in README
PurpurMC/Purpur@162bd288 Updated Upstream (Paper)
PurpurMC/Purpur@afcdf9bb Updated Upstream (Paper)
This commit is contained in:
Dreeam
2025-06-22 13:34:53 +08:00
parent 6a47e09cfa
commit ae57aa904e
97 changed files with 324 additions and 403 deletions

View File

@@ -13,7 +13,7 @@
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
@@ -24,11 +_,25 @@
@@ -24,6 +_,19 @@
minecraftVersion = providers.gradleProperty("mcVersion")
gitFilePatches = false
@@ -30,18 +30,9 @@
+ activeFork = leaf
+ // Leaf end - project setup
+
+ // Leaf start - Update spigot mapping to compat spigot reobf mapping plugins
spigot {
- enabled = false
- buildDataRef = "702e1a0a5072b2c4082371d5228cb30525687efc"
- packageVersion = "v1_21_R4" // also needs to be updated in MappingEnvironment
+ buildDataRef = "281ac0de7a76d808753ede97d11b034bc801b63d"
+ packageVersion = "v1_21_R5" // also needs to be updated in MappingEnvironment
}
+ // Leaf end - Update spigot mapping to compat spigot reobf mapping plugins
reobfPackagesToFix.addAll(
"co.aikar.timings",
enabled = true
buildDataRef = "281ac0de7a76d808753ede97d11b034bc801b63d"
@@ -47,6 +_,7 @@
libraryRepositories.addAll(
"https://repo.maven.apache.org/maven2/",

View File

@@ -28,10 +28,10 @@ index fd3553bdc1c3cdbf6aa3dc00e0a4987f8eaa4fb8..b16f3f515a76ddbbd74d73464396cf09
DedicatedServerSettings dedicatedServerSettings = new DedicatedServerSettings(optionSet); // CraftBukkit - CLI argument support
dedicatedServerSettings.forceSave();
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 84f4f0c87f904a31f3f972e9fb1da8a01474dfca..1d79892613707c7a81b5f0686874070f7f98debd 100644
index 54a9c4b14a51b3480d634703d4936b15330fba53..991833bfa8d6cb6ab3faccc94199b7105523583f 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1184,6 +1184,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1185,6 +1185,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
org.spigotmc.WatchdogThread.tick();
// Paper end
org.spigotmc.WatchdogThread.hasStarted = true; // Paper

View File

@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index 30227063155e3ad386cc64c69927d82cf09428cc..b9b049e025de5393fa4ef6555f5900a7b5b2f032 100644
index 656a7013b00dcd3c5555711af6068ac515465af8..edf507ce386b43c81c0e812dd3f3283379997170 100644
--- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java
@@ -58,7 +58,6 @@ import net.minecraft.server.commands.CloneCommands;
@@ -56,7 +56,7 @@ index 30227063155e3ad386cc64c69927d82cf09428cc..b9b049e025de5393fa4ef6555f5900a7
import net.minecraft.util.profiling.jfr.JvmProfiler;
import net.minecraft.world.flag.FeatureFlagSet;
import net.minecraft.world.flag.FeatureFlags;
@@ -190,7 +188,6 @@ public class Commands {
@@ -191,7 +189,6 @@ public class Commands {
DamageCommand.register(this.dispatcher, context);
DataCommands.register(this.dispatcher);
DataPackCommand.register(this.dispatcher, context);
@@ -64,15 +64,15 @@ index 30227063155e3ad386cc64c69927d82cf09428cc..b9b049e025de5393fa4ef6555f5900a7
DefaultGameModeCommands.register(this.dispatcher);
DialogCommand.register(this.dispatcher, context);
DifficultyCommand.register(this.dispatcher);
@@ -384,7 +381,6 @@ public class Commands {
public void performCommand(ParseResults<CommandSourceStack> parseResults, String command, String label, boolean throwCommandError) {
@@ -349,7 +346,6 @@ public class Commands {
org.spigotmc.AsyncCatcher.catchOp("Cannot perform command async");
// Paper end
CommandSourceStack commandSourceStack = parseResults.getContext().getSource();
- Profiler.get().push(() -> "/" + command);
ContextChain contextChain = this.finishParsing(parseResults, command, commandSourceStack, label); // CraftBukkit // Paper - Add UnknownCommandEvent
ContextChain<CommandSourceStack> contextChain = finishParsing(parseResults, command, commandSourceStack);
try {
@@ -420,8 +416,6 @@ public class Commands {
@@ -385,8 +381,6 @@ public class Commands {
commandSourceStack.sendFailure(Component.literal(Util.describeError(var12)));
LOGGER.error("'/{}' threw an exception", command, var12);
}
@@ -81,7 +81,7 @@ index 30227063155e3ad386cc64c69927d82cf09428cc..b9b049e025de5393fa4ef6555f5900a7
}
}
@@ -478,7 +472,7 @@ public class Commands {
@@ -443,7 +437,7 @@ public class Commands {
int max = Math.max(1, server.getGameRules().getInt(GameRules.RULE_MAX_COMMAND_CHAIN_LENGTH));
int _int = server.getGameRules().getInt(GameRules.RULE_MAX_COMMAND_FORK_COUNT);
@@ -169,7 +169,7 @@ index 18071dcc69cc28471dddb7de94e803ec1e5fc2e4..e30bb9c4046200c1a6e4e917d15b205f
}
}
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c300393b6d 100644
index 991833bfa8d6cb6ab3faccc94199b7105523583f..f4daf7ed86e5987ca9da8229402a154b69599f56 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -114,19 +114,8 @@ import net.minecraft.util.TimeUtil;
@@ -206,7 +206,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
private ServerConnectionListener connection;
public final ChunkProgressListenerFactory progressListenerFactory;
@Nullable
@@ -991,9 +973,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -992,9 +974,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
shutdownThread = Thread.currentThread(); // Paper - Improved watchdog support
org.spigotmc.WatchdogThread.doStop(); // Paper - Improved watchdog support
// CraftBukkit end
@@ -216,7 +216,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
LOGGER.info("Stopping server");
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
@@ -1238,18 +1217,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1239,18 +1218,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Spigot end
boolean flag = l == 0L;
@@ -235,7 +235,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
this.tickFrame.start();
this.tickServer(flag ? () -> false : this::haveTime);
// Paper start - rewrite chunk system
@@ -1260,7 +1232,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1261,7 +1233,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// Paper end - rewrite chunk system
this.tickFrame.end();
@@ -243,7 +243,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
this.mayHaveDelayedTasks = true;
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos);
this.startMeasuringTaskExecutionTime();
@@ -1270,11 +1241,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1271,11 +1242,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.tickRateManager.endTickWork();
}
@@ -255,7 +255,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
this.isReady = true;
JvmProfiler.INSTANCE.onServerTick(this.smoothedTickTimeMillis);
@@ -1447,7 +1414,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1448,7 +1415,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@Override
public void doRunTask(TickTask task) {
@@ -263,7 +263,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
super.doRunTask(task);
}
@@ -1537,12 +1503,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1538,12 +1504,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.ticksUntilAutosave--;
// Paper start - Incremental chunk and player saving
@@ -276,7 +276,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
final boolean fullSave = autosavePeriod > 0 && this.tickCount % autosavePeriod == 0;
try {
this.isSaving = true;
@@ -1557,10 +1521,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1558,10 +1522,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} finally {
this.isSaving = false;
}
@@ -287,7 +287,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
this.runAllTasks(); // Paper - move runAllTasks() into full server tick (previously for timings)
this.server.spark.executeMainThreadTasks(); // Paper - spark
// Paper start - Server Tick Events
@@ -1569,7 +1531,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1570,7 +1532,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
new com.destroystokyo.paper.event.server.ServerTickEndEvent(this.tickCount, ((double)(endTime - lastTick) / 1000000D), remaining).callEvent();
// Paper end - Server Tick Events
this.server.spark.tickEnd(((double)(endTime - lastTick) / 1000000D)); // Paper - spark
@@ -295,7 +295,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
long l = Util.getNanos() - nanos;
int i1 = this.tickCount % 100;
this.aggregatedTickTimesNanos = this.aggregatedTickTimesNanos - this.tickTimesNanos[i1];
@@ -1582,16 +1543,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1583,16 +1544,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.tickTimes60s.add(this.tickCount, l);
// Paper end - Add tick times API and /mspt command
this.logTickMethodTime(nanos);
@@ -312,7 +312,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
LOGGER.debug("Autosave finished");
}
@@ -1657,7 +1614,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1658,7 +1615,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
protected void tickChildren(BooleanSupplier hasTimeLeft) {
@@ -320,7 +320,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
this.getPlayerList().getPlayers().forEach(serverPlayer1 -> serverPlayer1.connection.suspendFlushing());
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
// Paper start - Folia scheduler API
@@ -1675,9 +1631,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1676,9 +1632,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
});
// Paper end - Folia scheduler API
io.papermc.paper.adventure.providers.ClickCallbackProviderImpl.CALLBACK_MANAGER.handleQueue(this.tickCount); // Paper
@@ -330,7 +330,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
// CraftBukkit start
// Run tasks that are waiting on processing
@@ -1712,17 +1666,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1713,17 +1667,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
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
@@ -348,7 +348,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
try {
serverLevel.tick(hasTimeLeft);
} catch (Throwable var7) {
@@ -1731,34 +1680,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1732,34 +1681,24 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
throw new ReportedException(crashReport);
}
@@ -383,7 +383,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
}
public void tickConnection() {
@@ -1774,14 +1713,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1775,14 +1714,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public void forceTimeSynchronization() {
@@ -398,7 +398,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
}
public boolean isLevelEnabled(Level level) {
@@ -2597,55 +2531,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2598,55 +2532,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// CraftBukkit end
@@ -454,7 +454,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
public Path getWorldPath(LevelResource levelResource) {
return this.storageSource.getLevelPath(levelResource);
}
@@ -2695,24 +2580,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2696,24 +2581,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
return this.isSaving;
}
@@ -479,7 +479,7 @@ index 1d79892613707c7a81b5f0686874070f7f98debd..eae529b69296f4c1329907ae6bb1b0c3
public int getMaxChainedNeighborUpdates() {
return 1000000;
}
@@ -2822,55 +2689,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2823,55 +2690,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
public record ServerResourcePackInfo(UUID id, String url, String hash, boolean isRequired, @Nullable Component prompt) {
}
@@ -681,10 +681,10 @@ index b10cb4a73df58a5fe64e88868733ba41616f59e4..1987afa2b3c0b9bdf5022629455bc212
String string = String.format(
Locale.ROOT, "%s-%s-%s", Util.getFilenameFormattedDateTime(), server.getWorldData().getLevelName(), SharedConstants.getCurrentVersion().id()
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 29b712952aed0205e72a3e8db6d87b9473f00b12..ab5e7b05df55303d46f172e1819a4c6f28a08095 100644
index d71213de973860cb3c7d689b59414fb6f5c964c8..b63f1b27c60faf90b3d991b9a88b0642afa29a93 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -758,12 +758,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -755,12 +755,6 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
return this.settings.getProperties().serverResourcePackInfo;
}
@@ -1234,7 +1234,7 @@ index 64b0508ef21952c65b0b967b756b2a4c64d96899..b6b03fbbd669e6331b30255df5419611
protected abstract T prepare(ResourceManager resourceManager, ProfilerFiller profiler);
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 20765c1563a31952bdc62eeb6c04e9fdba3f0cf1..96ff8384beabdfd471579d4626ce89d5587b0a35 100644
index 56297cc84d5425dbc0b18cff377828c1a6bcd0d4..f4ee277dee9495a098030b563e417874a086c1d4 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -80,8 +80,6 @@ import net.minecraft.tags.TagKey;
@@ -2196,7 +2196,7 @@ index 14a2514a408a66a83f7b5fb43b4c4dc8f23fd5f4..ec32d77447dd250857a2af1d8cc3e6e2
// Paper start - Add mobcaps commands
diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java
index e5ccfb8cbfafed7bb0a1d888b5bc98a923e46e59..93ac791a028f7da821db448c503532acb4a5490e 100644
index 07e4025ca6c9c31905db2e6921138a0ded479dde..fa4695b7ee56724b4d47ce4da0a5aeb8b5467db4 100644
--- a/net/minecraft/world/level/ServerExplosion.java
+++ b/net/minecraft/world/level/ServerExplosion.java
@@ -13,8 +13,6 @@ import net.minecraft.Util;
@@ -2208,7 +2208,7 @@ index e5ccfb8cbfafed7bb0a1d888b5bc98a923e46e59..93ac791a028f7da821db448c503532ac
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
@@ -654,10 +652,7 @@ public class ServerExplosion implements Explosion {
@@ -652,10 +650,7 @@ public class ServerExplosion implements Explosion {
List<BlockPos> list = this.calculateExplodedPositions();
this.hurtEntities();
if (this.interactsWithBlocks()) {

View File

@@ -43,10 +43,10 @@ index b2bcfb3557a0326fd7ec1059f95d6da4568dfd80..fee4a7452178c274eb835d758b718d8e
} else {
this.storage = Arrays.copyOf(this.storage, this.storage.length * 2);
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java
index 26207443b1223119c03db478d7e816d9cdf8e618..bbd1c262674b42eb9ea2830acb8bf94182f971f9 100644
index 5f2deeb5cc01d8bbeb7449bd4e59c466b3dfdf57..2cced8ed80e05ea398b234fa9871af0a43d9d9a1 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java
@@ -14,10 +14,8 @@ import net.minecraft.world.level.entity.LevelCallback;
@@ -19,10 +19,8 @@ import net.minecraft.world.level.entity.LevelCallback;
public final class ServerEntityLookup extends EntityLookup {
@@ -56,8 +56,8 @@ index 26207443b1223119c03db478d7e816d9cdf8e618..bbd1c262674b42eb9ea2830acb8bf941
- public final ReferenceList<Entity> trackerEntities = new ReferenceList<>(EMPTY_ENTITY_ARRAY); // Moonrise - entity tracker
+ public final ReferenceList<Entity> trackerEntities = new ReferenceList<>(me.titaniumtown.ArrayConstants.emptyEntityArray); // Moonrise - entity tracker // Gale - JettPack - reduce array allocations
public ServerEntityLookup(final ServerLevel world, final LevelCallback<Entity> worldCallback) {
super(world, worldCallback);
// Vanilla does not increment ticket timeouts if the chunk is progressing in generation. They made this change in 1.21.6 so that the ender pearl
// ticket does not expire if the chunk fails to generate before the timeout expires. Rather than blindly adjusting the entire system behavior
diff --git a/net/minecraft/nbt/ByteArrayTag.java b/net/minecraft/nbt/ByteArrayTag.java
index 6fbb131b472a3093b137d8ced9889777a133bd5b..cecfd48f57bc11b84c18b4e5a723228fd3c18e23 100644
--- a/net/minecraft/nbt/ByteArrayTag.java
@@ -217,7 +217,7 @@ index 3eea236bd1fd401fefdf7c5cc553a3db335029c7..3739272cbc73b7c4f15a2fbe874905cf
if (!itemBySlot.isEmpty()) {
newMob.setItemSlot(equipmentSlot, itemBySlot.copyAndClear());
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 96ff8384beabdfd471579d4626ce89d5587b0a35..6714668563e3a7543765064d9824b93ec3924473 100644
index f4ee277dee9495a098030b563e417874a086c1d4..7aac71525a0472dc055d788904eac60118f1ec50 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -3077,7 +3077,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess

View File

@@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index b9b049e025de5393fa4ef6555f5900a7b5b2f032..189cba4369a029713bb3b0cdc77d5c103c6cd852 100644
index edf507ce386b43c81c0e812dd3f3283379997170..561b25ff9b424c2a658860b17462137ce7ae3abd 100644
--- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java
@@ -531,6 +531,7 @@ public class Commands {
@@ -496,6 +496,7 @@ public class Commands {
private void runSync(ServerPlayer player, java.util.Collection<String> bukkit, RootCommandNode<CommandSourceStack> rootCommandNode) {
// Paper end - Perf: Async command map building
new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent<CommandSourceStack>(player.getBukkitEntity(), (RootCommandNode) rootCommandNode, true).callEvent(); // Paper - Brigadier API
@@ -48,7 +48,7 @@ index b9b049e025de5393fa4ef6555f5900a7b5b2f032..189cba4369a029713bb3b0cdc77d5c10
org.bukkit.event.player.PlayerCommandSendEvent event = new org.bukkit.event.player.PlayerCommandSendEvent(player.getBukkitEntity(), new java.util.LinkedHashSet<>(bukkit));
event.getPlayer().getServer().getPluginManager().callEvent(event);
@@ -541,6 +542,7 @@ public class Commands {
@@ -506,6 +507,7 @@ public class Commands {
}
}
// CraftBukkit end

View File

@@ -37,10 +37,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index eae529b69296f4c1329907ae6bb1b0c300393b6d..8b7b0232fa176e7034be34bf12cfdb63151ae059 100644
index f4daf7ed86e5987ca9da8229402a154b69599f56..3cab16e4fef4acc7e56d60e1f2221806ad7ef355 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1093,6 +1093,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1094,6 +1094,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
private static final long MAX_CATCHUP_BUFFER = TICK_TIME * TPS * 60L;
private long lastTick = 0;
private long catchupTime = 0;
@@ -48,7 +48,7 @@ index eae529b69296f4c1329907ae6bb1b0c300393b6d..8b7b0232fa176e7034be34bf12cfdb63
public final RollingAverage tps1 = new RollingAverage(60);
public final RollingAverage tps5 = new RollingAverage(60 * 5);
public final RollingAverage tps15 = new RollingAverage(60 * 15);
@@ -1203,6 +1204,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1204,6 +1205,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
if (++MinecraftServer.currentTick % MinecraftServer.SAMPLE_INTERVAL == 0) {
final long diff = currentTime - tickSection;
final java.math.BigDecimal currentTps = TPS_BASE.divide(new java.math.BigDecimal(diff), 30, java.math.RoundingMode.HALF_UP);

View File

@@ -23,10 +23,10 @@ The above copyright notice and this permission notice shall be included in all c
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 8b7b0232fa176e7034be34bf12cfdb63151ae059..d1f79b29bc56afe62503f8b3caf0b7bf443add9e 100644
index 3cab16e4fef4acc7e56d60e1f2221806ad7ef355..25eaae9a6ba26f7b8e318526b1fb94c301e68c9d 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1140,6 +1140,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1141,6 +1141,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
private static final java.math.BigDecimal TPS_BASE = new java.math.BigDecimal(1E9).multiply(new java.math.BigDecimal(SAMPLE_INTERVAL));
// Paper end
@@ -38,7 +38,7 @@ index 8b7b0232fa176e7034be34bf12cfdb63151ae059..d1f79b29bc56afe62503f8b3caf0b7bf
protected void runServer() {
try {
if (!this.initServer()) {
@@ -1225,7 +1230,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1226,7 +1231,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.nextTickTimeNanos += l;
this.tickFrame.start();
@@ -48,7 +48,7 @@ index 8b7b0232fa176e7034be34bf12cfdb63151ae059..d1f79b29bc56afe62503f8b3caf0b7bf
// Paper start - rewrite chunk system
final Throwable crash = this.chunkSystemCrash;
if (crash != null) {
@@ -1354,11 +1361,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1355,11 +1362,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
protected void waitUntilNextTick() {
this.runAllTasks();
this.waitingForNextTick = true;

View File

@@ -22,7 +22,7 @@ and, in my opinion, worth the low risk of minor mob-spawning-related
inconsistencies.
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index d1f79b29bc56afe62503f8b3caf0b7bf443add9e..74f760cf52fa16a5e023ca348dadc9dbb761497d 100644
index 25eaae9a6ba26f7b8e318526b1fb94c301e68c9d..45db35e085161b724a19c0d6f0a558c217fba9cd 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -286,6 +286,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -33,7 +33,7 @@ index d1f79b29bc56afe62503f8b3caf0b7bf443add9e..74f760cf52fa16a5e023ca348dadc9db
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
@@ -1048,6 +1049,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1049,6 +1050,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Paper end - rewrite chunk system
// Paper start - Improved watchdog support - move final shutdown items here
Util.shutdownExecutors();
@@ -42,7 +42,7 @@ index d1f79b29bc56afe62503f8b3caf0b7bf443add9e..74f760cf52fa16a5e023ca348dadc9db
net.minecrell.terminalconsole.TerminalConsoleAppender.close(); // Paper - Use TerminalConsoleAppender
} catch (final Exception ignored) {
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 3e87adacbde617755d7a47b92f83c291546b998f..872e74d3d22c65b1d6ac624a2ccab7473dc65ff8 100644
index 9c8d88e81ad9d06966bcec0ef134c8e658b9b51e..ca1406178cfb1a5a10947872585e2dcf3059b460 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -320,6 +320,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Minecraft Changes
Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
Commit: 469a4de5ce87dcf6461e067d29a88507231f4a6b
Commit: afcdf9bb72f88eb18266f5efd8c135904d82fd3d
Patches listed below are removed in this patch, They exists in Gale or Leaf:
* "net/minecraft/CrashReport.java.patch"
@@ -120,10 +120,10 @@ index 3acfb2a78845dd8081dc3c01d653034232c76e60..51caf352e77df49fc04bf84f1fab29b6
boolean flag = this.source.acceptsSuccess() && !this.silent;
boolean flag1 = allowLogging && this.source.shouldInformAdmins() && !this.silent;
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index 189cba4369a029713bb3b0cdc77d5c103c6cd852..24a88a87474f003684d3ea3fa22e59b1a036f7c2 100644
index 561b25ff9b424c2a658860b17462137ce7ae3abd..40db0b3d92bcaf4362da33720a0c4ec5451ed886 100644
--- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java
@@ -248,7 +248,7 @@ public class Commands {
@@ -249,7 +249,7 @@ public class Commands {
JfrCommand.register(this.dispatcher);
}
@@ -132,7 +132,7 @@ index 189cba4369a029713bb3b0cdc77d5c103c6cd852..24a88a87474f003684d3ea3fa22e59b1
RaidCommand.register(this.dispatcher, context);
DebugPathCommand.register(this.dispatcher);
DebugMobSpawningCommand.register(this.dispatcher);
@@ -276,6 +276,14 @@ public class Commands {
@@ -277,6 +277,14 @@ public class Commands {
StopCommand.register(this.dispatcher);
TransferCommand.register(this.dispatcher);
WhitelistCommand.register(this.dispatcher);
@@ -322,7 +322,7 @@ index b16f3f515a76ddbbd74d73464396cf094cb30599..dd6ae338fa48d52962ee0af5b1572077
io.papermc.paper.plugin.PluginInitializerManager.load(optionSet); // Paper
Bootstrap.bootStrap();
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 74f760cf52fa16a5e023ca348dadc9dbb761497d..b72834526c4ebbe24c975aa4b21f55f1986a773e 100644
index 45db35e085161b724a19c0d6f0a558c217fba9cd..db1f0031a6ae6ba1b9ea265043b87817e2c746f8 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -266,6 +266,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -342,7 +342,7 @@ index 74f760cf52fa16a5e023ca348dadc9dbb761497d..b72834526c4ebbe24c975aa4b21f55f1
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
@@ -977,6 +980,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -978,6 +981,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
LOGGER.info("Stopping server");
Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing
@@ -358,7 +358,7 @@ index 74f760cf52fa16a5e023ca348dadc9dbb761497d..b72834526c4ebbe24c975aa4b21f55f1
// CraftBukkit start
if (this.server != null) {
this.server.spark.disable(); // Paper - spark
@@ -1076,6 +1088,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1077,6 +1089,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.safeShutdown(waitForServer, false);
}
public void safeShutdown(boolean waitForServer, boolean isRestarting) {
@@ -367,7 +367,7 @@ index 74f760cf52fa16a5e023ca348dadc9dbb761497d..b72834526c4ebbe24c975aa4b21f55f1
this.isRestarting = isRestarting;
this.hasLoggedStop = true; // Paper - Debugging
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging
@@ -1187,6 +1201,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1188,6 +1202,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// Paper end - Add onboarding message for initial server start
@@ -384,7 +384,7 @@ index 74f760cf52fa16a5e023ca348dadc9dbb761497d..b72834526c4ebbe24c975aa4b21f55f1
while (this.running) {
long l;
if (!this.isPaused() && this.tickRateManager.isSprinting() && this.tickRateManager.checkShouldSprintThisTick()) {
@@ -1220,6 +1244,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1221,6 +1245,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.recentTps[0] = tps1.getAverage();
this.recentTps[1] = tps5.getAverage();
this.recentTps[2] = tps15.getAverage();
@@ -392,7 +392,7 @@ index 74f760cf52fa16a5e023ca348dadc9dbb761497d..b72834526c4ebbe24c975aa4b21f55f1
tickSection = currentTime;
}
// Paper end - further improve server tick loop
@@ -1245,6 +1270,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1246,6 +1271,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.tickFrame.end();
this.mayHaveDelayedTasks = true;
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos);
@@ -405,7 +405,7 @@ index 74f760cf52fa16a5e023ca348dadc9dbb761497d..b72834526c4ebbe24c975aa4b21f55f1
this.startMeasuringTaskExecutionTime();
this.waitUntilNextTick();
this.finishMeasuringTaskExecutionTime();
@@ -1660,7 +1691,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1661,7 +1692,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
long worldTime = level.getGameTime();
final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight);
for (Player entityhuman : level.players()) {
@@ -414,7 +414,7 @@ index 74f760cf52fa16a5e023ca348dadc9dbb761497d..b72834526c4ebbe24c975aa4b21f55f1
continue;
}
ServerPlayer entityplayer = (ServerPlayer) entityhuman;
@@ -1679,6 +1710,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1680,6 +1711,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
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
@@ -492,7 +492,7 @@ index ea9db57a1fe2f11739ceb062ea7cce15776f959a..a919d91eeaaeef0f79190cc5e78e4f8b
ItemEntity itemEntity = serverPlayer.drop(itemStack, false);
if (itemEntity != null) {
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 872e74d3d22c65b1d6ac624a2ccab7473dc65ff8..69880a8d52f60ac3a5e5cf1ccf0654f26d456812 100644
index ca1406178cfb1a5a10947872585e2dcf3059b460..87fc8861948b50361ec04c5a23406d3abdec6eac 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -105,6 +105,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -1903,7 +1903,7 @@ index 1fc9e1ad541c46124183a401b2a7d99aea69cecf..881271f0bc77a8a8a7d31daad9a8188b
}
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 57e669eeb2a05805b8ed81311344bc27292608f3..46938755cfd291bb2e4711a0651eacd7a4721aa0 100644
index 9a6e0c203ae7f0436a0b87f6060a1cdb6623d181..d8209037e988bc7a68f634a6650930bd1082c4d1 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -146,6 +146,7 @@ import org.jetbrains.annotations.Contract;
@@ -2111,7 +2111,7 @@ index 57e669eeb2a05805b8ed81311344bc27292608f3..46938755cfd291bb2e4711a0651eacd7
// Paper start - optimise collisions
public boolean updateFluidHeightAndDoFluidPushing(final TagKey<Fluid> fluid, final double flowScale) {
if (this.touchingUnloadedChunk()) {
@@ -5138,7 +5204,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5143,7 +5209,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public float maxUpStep() {
@@ -2120,7 +2120,7 @@ index 57e669eeb2a05805b8ed81311344bc27292608f3..46938755cfd291bb2e4711a0651eacd7
}
public void onExplosionHit(@Nullable Entity entity) {
@@ -5391,4 +5457,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5396,4 +5462,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition());
}
// Paper end - Expose entity id counter
@@ -2179,7 +2179,7 @@ index 15daba9062d54a5bdf335c3645a3227ccb5a8e06..1842cbe25cc0f9be937caf0a78e915bd
public static final Predicate<Entity> PLAYER_AFFECTS_SPAWNING = (entity) -> {
return !entity.isSpectator() && entity.isAlive() && entity instanceof Player player && player.affectsSpawning;
diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java
index 9dc5a7e9fdb83d98c3554fea064b06f022da4496..22d3dd6ba240dd8d9cedc01e43e58fef1953de1d 100644
index 388689c44cf63ade939e271d490051c9b3fe8034..e65b1818c49e1b7d04d5bcc912804c821f00bdbc 100644
--- a/net/minecraft/world/entity/EntityType.java
+++ b/net/minecraft/world/entity/EntityType.java
@@ -1106,6 +1106,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
@@ -8281,10 +8281,10 @@ index 7afdccf04e2239b0654e8f1ce7b7e22c39d84f44..20f4c879e46fdd0ed0515dbbb91f6411
@Override
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
index f8a81f0b34aca0205123a8cb00078338ae1d7756..224f8b62809c0de33c182fceae1c41b14f4506fe 100644
index 17d54d38dcec39eefeb989cd576cc640a36e82f5..ef070f8a9ab3a4676e2141f7c0bc20a000d0cc3a 100644
--- a/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
@@ -253,4 +253,32 @@ public class PrimedTnt extends Entity implements TraceableEntity {
@@ -238,4 +238,32 @@ public class PrimedTnt extends Entity implements TraceableEntity {
return !this.level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid();
}
// Paper end - Option to prevent TNT from moving in water
@@ -13022,15 +13022,15 @@ index 2419c1db39c9ffbc54352c7fa5e0ac1ef813c13a..3b68e1a73da3e70f459cdc31e8447bce
protected void defineSynchedData(SynchedEntityData.Builder builder) {
builder.define(DATA_DANGEROUS, false);
diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java
index df0753c89b7c613f2abac9c50ce7f897ba280803..3baba21d106ab09ae476238f2636169c371f43cf 100644
index a495789b2d21fa9a24d5dca4ecfa196ddce49466..2254493c889b8967011c09dc448ba375d82e2035 100644
--- a/net/minecraft/world/entity/raid/Raider.java
+++ b/net/minecraft/world/entity/raid/Raider.java
@@ -401,7 +401,7 @@ public abstract class Raider extends PatrollingMonster {
}
private boolean cannotPickUpBanner() {
- if (!getServerLevel(this.mob).getGameRules().getBoolean(net.minecraft.world.level.GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items
+ 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)) return true; // Paper - respect game and entity rules for picking up items
+ 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()) {
return true;
} else if (this.mob.getCurrentRaid().isOver()) {
@@ -13280,7 +13280,7 @@ index 793e4528755fa5688efbad75418188e693ad0157..20f702c8266eb54a8835861188eb937f
}
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index 813417a09b4acc7d57e80a53d970767e230d75b1..c4721eb0efe34f5e313bc890b4e960144eca4fe1 100644
index f4548edae77eb86e54ba499acbb20613fd60d7bd..1f601781643945920c7522b9c6100d0a37ad535d 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -65,6 +65,7 @@ public abstract class AbstractContainerMenu {
@@ -14699,28 +14699,10 @@ index ec32d77447dd250857a2af1d8cc3e6e233aa3e6e..345d4b80bd4383e0fb66d744d87bc8ef
double d2 = nearestPlayer.distanceToSqr(d, y, d1);
if (level.isLoadedAndInBounds(mutableBlockPos) && isRightDistanceToPlayerAndSpawnPoint(level, chunk, mutableBlockPos, d2)) { // Paper - don't load chunks for mob spawn
diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java
index 93ac791a028f7da821db448c503532acb4a5490e..6c02b986e328ead2040666d619fdb5d397d9b686 100644
index fa4695b7ee56724b4d47ce4da0a5aeb8b5467db4..1669c21534a453c9cf16b992df7a6bf276dea887 100644
--- a/net/minecraft/world/level/ServerExplosion.java
+++ b/net/minecraft/world/level/ServerExplosion.java
@@ -314,7 +314,7 @@ public class ServerExplosion implements Explosion {
) {
this.level = level;
this.source = source;
- this.radius = (float) Math.max(radius, 0.0); // CraftBukkit - clamp bad values
+ this.radius = (float) (level == null || level.purpurConfig.explosionClampRadius ? Math.max(radius, 0.0) : radius); // CraftBukkit - clamp bad values // Purpur - Config to remove explosion radius clamp
this.center = center;
this.fire = fire;
this.blockInteraction = blockInteraction;
@@ -636,7 +636,7 @@ public class ServerExplosion implements Explosion {
public void explode() {
// CraftBukkit start
- if (this.radius < 0.1F) {
+ if ((this.level == null || this.level.purpurConfig.explosionClampRadius) && this.radius < 0.1F) { // Purpur - Config to remove explosion radius clamp
return;
}
// CraftBukkit end
@@ -648,6 +648,23 @@ public class ServerExplosion implements Explosion {
@@ -646,6 +646,23 @@ public class ServerExplosion implements Explosion {
this.directMappedBlockCache = new ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH * BLOCK_EXPLOSION_CACHE_WIDTH];
this.mutablePos = new BlockPos.MutableBlockPos();
// Paper end - collision optimisations
@@ -17453,10 +17435,10 @@ index 0000000000000000000000000000000000000000..ed777b003140486fd5d8d1db7af77030
+}
diff --git a/org/purpurmc/purpur/PurpurWorldConfig.java b/org/purpurmc/purpur/PurpurWorldConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..611847bd7576bb77fdfb734ddb2e3412f3831041
index 0000000000000000000000000000000000000000..a03e166b490952534e8050654c1afa975795f731
--- /dev/null
+++ b/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -0,0 +1,3619 @@
@@ -0,0 +1,3614 @@
+package org.purpurmc.purpur;
+
+import java.util.ArrayList;
@@ -17716,11 +17698,6 @@ index 0000000000000000000000000000000000000000..611847bd7576bb77fdfb734ddb2e3412
+ infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows);
+ }
+
+ public boolean explosionClampRadius = true;
+ private void explosionSettings() {
+ explosionClampRadius = getBoolean("gameplay-mechanics.clamp-explosion-radius", explosionClampRadius);
+ }
+
+ public List<Item> itemImmuneToCactus = new ArrayList<>();
+ public List<Item> itemImmuneToExplosion = new ArrayList<>();
+ public List<Item> itemImmuneToFire = new ArrayList<>();

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Fix Pufferfish and Purpur patches
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index b72834526c4ebbe24c975aa4b21f55f1986a773e..1109b12657e4f098b18e2a3cea18ddeed67bc224 100644
index db1f0031a6ae6ba1b9ea265043b87817e2c746f8..1aab4d41054f8e780e6c0ccdb96affee19068311 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -277,7 +277,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -26,7 +26,7 @@ index b72834526c4ebbe24c975aa4b21f55f1986a773e..1109b12657e4f098b18e2a3cea18ddee
public boolean lagging = false; // Purpur - Lagging threshold
protected boolean upnp = false; // Purpur - UPnP Port Forwarding
@@ -1241,9 +1241,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1242,9 +1242,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
tps15.add(currentTps, diff);
// Backwards compat with bad plugins
@@ -42,7 +42,7 @@ index b72834526c4ebbe24c975aa4b21f55f1986a773e..1109b12657e4f098b18e2a3cea18ddee
lagging = recentTps[0] < org.purpurmc.purpur.PurpurConfig.laggingThreshold; // Purpur - Lagging threshold
tickSection = currentTime;
}
@@ -1271,7 +1274,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1272,7 +1275,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.mayHaveDelayedTasks = true;
this.delayedTasksMaxNextTickTimeNanos = Math.max(Util.getNanos() + l, this.nextTickTimeNanos);
// Purpur start - Configurable TPS Catchup
@@ -78,7 +78,7 @@ index 5031e4e9b59a1e013152f788b20c58646b30770f..1aaa94a2800687faa4d86698a4e1ad72
this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect
return;
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 46938755cfd291bb2e4711a0651eacd7a4721aa0..305181410e025d857608c866592bcc44e3654f31 100644
index d8209037e988bc7a68f634a6650930bd1082c4d1..a2a4ad515a4ef0fa24948d0f47c5bd78ec7e6555 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -543,23 +543,36 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -306,10 +306,10 @@ index ef960ee83adbb5e3ebfa44cd2457b23718045f61..e53c18efb573dea39a3d45f3cdb827d7
this.setDeltaMovement(0, this.getDeltaMovement().y, 0);
}
diff --git a/org/purpurmc/purpur/PurpurWorldConfig.java b/org/purpurmc/purpur/PurpurWorldConfig.java
index 611847bd7576bb77fdfb734ddb2e3412f3831041..7137c05ac03580143c4a4d74881231800bd552f8 100644
index a03e166b490952534e8050654c1afa975795f731..88a2ad8e3b30cb9f447eb4001d33c7799339b6a0 100644
--- a/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -2458,6 +2458,13 @@ public class PurpurWorldConfig {
@@ -2453,6 +2453,13 @@ public class PurpurWorldConfig {
piglinMobGriefingOverride = getBooleanOrDefault("mobs.piglin.mob-griefing-override", piglinMobGriefingOverride);
piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater);
piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier);

View File

@@ -7,10 +7,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 1109b12657e4f098b18e2a3cea18ddeed67bc224..8da49dd5d56128df4fd3c3c5a4731be2eb5eb094 100644
index 1aab4d41054f8e780e6c0ccdb96affee19068311..586ba2d9c4ad684a4a7875c49cab048f949322ab 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1840,7 +1840,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1841,7 +1841,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {

View File

@@ -59,10 +59,10 @@ index 62b9d9486c15a1ec6527f786df4e9fc483390bcb..5384bbc6bb3dbe5481f9d8cb10282551
int i = buffer.readableBytes();
if (i >= 0 && i <= maxSize) {
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 8da49dd5d56128df4fd3c3c5a4731be2eb5eb094..5f85127436732b3165ce6e5baea8bc6999eee176 100644
index 586ba2d9c4ad684a4a7875c49cab048f949322ab..3a1822e0f37c86dfad56ae06c14fffb960ff99ec 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1738,6 +1738,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1739,6 +1739,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
GameTestTicker.SINGLETON.tick();
}

View File

@@ -92,10 +92,10 @@ index b305ba9bab617bf4e52d0e6ddf160bacc5751a94..bbaf1a29f86a9bfc13795249d545b6f7
if (players.size() >= resultLimit) {
return players;
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 5f85127436732b3165ce6e5baea8bc6999eee176..1635de2b25a4162036522615424d9e845def6258 100644
index 3a1822e0f37c86dfad56ae06c14fffb960ff99ec..32c934a489df7a06892265c6d762e88c3716a5c6 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1641,7 +1641,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1642,7 +1642,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
private ServerStatus.Players buildPlayerStatus() {

View File

@@ -83,10 +83,10 @@ index f58c48d9de85fda3d13079f3e56b31af75b3c725..cc349403ceb9b094362e706f4e5b200a
}
diff --git a/org/purpurmc/purpur/PurpurWorldConfig.java b/org/purpurmc/purpur/PurpurWorldConfig.java
index 7137c05ac03580143c4a4d74881231800bd552f8..c432874257451b62fde4284526a647736fa3bcd0 100644
index 88a2ad8e3b30cb9f447eb4001d33c7799339b6a0..b3dd4862b9fa220f4aeabc3598169852f8b12482 100644
--- a/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1625,6 +1625,7 @@ public class PurpurWorldConfig {
@@ -1620,6 +1620,7 @@ public class PurpurWorldConfig {
public boolean drownedTakeDamageFromWater = false;
public boolean drownedBreakDoors = false;
public boolean drownedAlwaysDropExp = false;
@@ -94,7 +94,7 @@ index 7137c05ac03580143c4a4d74881231800bd552f8..c432874257451b62fde4284526a64773
private void drownedSettings() {
drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable);
drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater);
@@ -1643,6 +1644,7 @@ public class PurpurWorldConfig {
@@ -1638,6 +1639,7 @@ public class PurpurWorldConfig {
drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater);
drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors);
drownedAlwaysDropExp = getBoolean("mobs.drowned.always-drop-exp", drownedAlwaysDropExp);
@@ -102,7 +102,7 @@ index 7137c05ac03580143c4a4d74881231800bd552f8..c432874257451b62fde4284526a64773
}
public boolean elderGuardianRidable = false;
@@ -2060,6 +2062,7 @@ public class PurpurWorldConfig {
@@ -2055,6 +2057,7 @@ public class PurpurWorldConfig {
public boolean huskJockeyTryExistingChickens = true;
public boolean huskTakeDamageFromWater = false;
public boolean huskAlwaysDropExp = false;
@@ -110,7 +110,7 @@ index 7137c05ac03580143c4a4d74881231800bd552f8..c432874257451b62fde4284526a64773
private void huskSettings() {
huskRidable = getBoolean("mobs.husk.ridable", huskRidable);
huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater);
@@ -2077,6 +2080,7 @@ public class PurpurWorldConfig {
@@ -2072,6 +2075,7 @@ public class PurpurWorldConfig {
huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens);
huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater);
huskAlwaysDropExp = getBoolean("mobs.husk.always-drop-exp", huskAlwaysDropExp);
@@ -118,7 +118,7 @@ index 7137c05ac03580143c4a4d74881231800bd552f8..c432874257451b62fde4284526a64773
}
public boolean illusionerRidable = false;
@@ -3447,6 +3451,7 @@ public class PurpurWorldConfig {
@@ -3442,6 +3446,7 @@ public class PurpurWorldConfig {
public boolean zombieTakeDamageFromWater = false;
public boolean zombieAlwaysDropExp = false;
public double zombieHeadVisibilityPercent = 0.5D;
@@ -126,7 +126,7 @@ index 7137c05ac03580143c4a4d74881231800bd552f8..c432874257451b62fde4284526a64773
private void zombieSettings() {
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
@@ -3472,6 +3477,7 @@ public class PurpurWorldConfig {
@@ -3467,6 +3472,7 @@ public class PurpurWorldConfig {
zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater);
zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp);
zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent);
@@ -134,7 +134,7 @@ index 7137c05ac03580143c4a4d74881231800bd552f8..c432874257451b62fde4284526a64773
}
public boolean zombieHorseRidable = false;
@@ -3521,6 +3527,7 @@ public class PurpurWorldConfig {
@@ -3516,6 +3522,7 @@ public class PurpurWorldConfig {
public int zombieVillagerCuringTimeMax = 6000;
public boolean zombieVillagerCureEnabled = true;
public boolean zombieVillagerAlwaysDropExp = false;
@@ -142,7 +142,7 @@ index 7137c05ac03580143c4a4d74881231800bd552f8..c432874257451b62fde4284526a64773
private void zombieVillagerSettings() {
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
@@ -3541,6 +3548,7 @@ public class PurpurWorldConfig {
@@ -3536,6 +3543,7 @@ public class PurpurWorldConfig {
zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax);
zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled);
zombieVillagerAlwaysDropExp = getBoolean("mobs.zombie_villager.always-drop-exp", zombieVillagerAlwaysDropExp);
@@ -150,7 +150,7 @@ index 7137c05ac03580143c4a4d74881231800bd552f8..c432874257451b62fde4284526a64773
}
public boolean zombifiedPiglinRidable = false;
@@ -3555,6 +3563,7 @@ public class PurpurWorldConfig {
@@ -3550,6 +3558,7 @@ public class PurpurWorldConfig {
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = false;
public boolean zombifiedPiglinTakeDamageFromWater = false;
public boolean zombifiedPiglinAlwaysDropExp = false;
@@ -158,7 +158,7 @@ index 7137c05ac03580143c4a4d74881231800bd552f8..c432874257451b62fde4284526a64773
private void zombifiedPiglinSettings() {
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
@@ -3576,6 +3585,7 @@ public class PurpurWorldConfig {
@@ -3571,6 +3580,7 @@ public class PurpurWorldConfig {
zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry);
zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater);
zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp);

View File

@@ -263,10 +263,10 @@ index ed777b003140486fd5d8d1db7af770301e30bec9..31450de492fbfdd83608ae668072bebd
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
diff --git a/org/purpurmc/purpur/PurpurWorldConfig.java b/org/purpurmc/purpur/PurpurWorldConfig.java
index c432874257451b62fde4284526a647736fa3bcd0..d427575e389b7c249799d71aa953e8419530a9ce 100644
index b3dd4862b9fa220f4aeabc3598169852f8b12482..a6370d8b7bb6e07c7e41beb78b1778351b41cde1 100644
--- a/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -1189,12 +1189,20 @@ public class PurpurWorldConfig {
@@ -1184,12 +1184,20 @@ public class PurpurWorldConfig {
public boolean allayControllable = true;
public double allayMaxHealth = 20.0D;
public double allayScale = 1.0D;
@@ -287,7 +287,7 @@ index c432874257451b62fde4284526a647736fa3bcd0..d427575e389b7c249799d71aa953e841
}
public boolean armadilloRidable = false;
@@ -1349,6 +1357,10 @@ public class PurpurWorldConfig {
@@ -1344,6 +1352,10 @@ public class PurpurWorldConfig {
public double camelMovementSpeedMin = 0.09D;
public double camelMovementSpeedMax = 0.09D;
public int camelBreedingTicks = 6000;
@@ -298,7 +298,7 @@ index c432874257451b62fde4284526a647736fa3bcd0..d427575e389b7c249799d71aa953e841
private void camelSettings() {
camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater);
camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin);
@@ -1358,6 +1370,10 @@ public class PurpurWorldConfig {
@@ -1353,6 +1365,10 @@ public class PurpurWorldConfig {
camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin);
camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax);
camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks);
@@ -309,7 +309,7 @@ index c432874257451b62fde4284526a647736fa3bcd0..d427575e389b7c249799d71aa953e841
}
public boolean catRidable = false;
@@ -1504,12 +1520,20 @@ public class PurpurWorldConfig {
@@ -1499,12 +1515,20 @@ public class PurpurWorldConfig {
public boolean creakingControllable = true;
public double creakingMaxHealth = 1.0D;
public double creakingScale = 1.0D;
@@ -330,7 +330,7 @@ index c432874257451b62fde4284526a647736fa3bcd0..d427575e389b7c249799d71aa953e841
}
public boolean creeperRidable = false;
@@ -1841,12 +1865,22 @@ public class PurpurWorldConfig {
@@ -1836,12 +1860,22 @@ public class PurpurWorldConfig {
public boolean frogControllable = true;
public float frogRidableJumpHeight = 0.65F;
public int frogBreedingTicks = 6000;
@@ -353,7 +353,7 @@ index c432874257451b62fde4284526a647736fa3bcd0..d427575e389b7c249799d71aa953e841
}
public boolean ghastRidable = false;
@@ -2941,6 +2975,10 @@ public class PurpurWorldConfig {
@@ -2936,6 +2970,10 @@ public class PurpurWorldConfig {
public double snifferMaxHealth = 14.0D;
public double snifferScale = 1.0D;
public int snifferBreedingTicks = 6000;
@@ -364,7 +364,7 @@ index c432874257451b62fde4284526a647736fa3bcd0..d427575e389b7c249799d71aa953e841
private void snifferSettings() {
snifferRidable = getBoolean("mobs.sniffer.ridable", snifferRidable);
snifferRidableInWater = getBoolean("mobs.sniffer.ridable-in-water", snifferRidableInWater);
@@ -2948,6 +2986,10 @@ public class PurpurWorldConfig {
@@ -2943,6 +2981,10 @@ public class PurpurWorldConfig {
snifferMaxHealth = getDouble("mobs.sniffer.attributes.max_health", snifferMaxHealth);
snifferScale = Mth.clamp(getDouble("mobs.sniffer.attributes.scale", snifferScale), 0.0625D, 16.0D);
snifferBreedingTicks = getInt("mobs.sniffer.breeding-delay-ticks", snifferBreedingTicks);
@@ -375,7 +375,7 @@ index c432874257451b62fde4284526a647736fa3bcd0..d427575e389b7c249799d71aa953e841
}
public boolean squidRidable = false;
@@ -3049,10 +3091,20 @@ public class PurpurWorldConfig {
@@ -3044,10 +3086,20 @@ public class PurpurWorldConfig {
public boolean tadpoleRidable = false;
public boolean tadpoleRidableInWater = true;
public boolean tadpoleControllable = true;
@@ -396,7 +396,7 @@ index c432874257451b62fde4284526a647736fa3bcd0..d427575e389b7c249799d71aa953e841
}
public boolean traderLlamaRidable = false;
@@ -3286,10 +3338,20 @@ public class PurpurWorldConfig {
@@ -3281,10 +3333,20 @@ public class PurpurWorldConfig {
public boolean wardenRidable = false;
public boolean wardenRidableInWater = true;
public boolean wardenControllable = true;

View File

@@ -13,7 +13,7 @@ To avoid the hefty ArrayDeque's size() call, we check if we *really* need to exe
Most entities won't have any scheduled tasks, so this is a nice performance bonus. These optimizations, however, wouldn't work in a Folia environment, but because in SparklyPaper executeTick is always executed on the main thread, it ain't an issue for us (yay).
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 1635de2b25a4162036522615424d9e845def6258..5cb1f2246a590d4420b73538e7c4a9f4083a11ab 100644
index 32c934a489df7a06892265c6d762e88c3716a5c6..a5e90f57ffd86f75f80629a6be97d4eb7c2a9190 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -290,6 +290,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -24,7 +24,7 @@ index 1635de2b25a4162036522615424d9e845def6258..5cb1f2246a590d4420b73538e7c4a9f4
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
@@ -1665,6 +1666,22 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1666,6 +1667,22 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
// Paper start - Folia scheduler API
((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) org.bukkit.Bukkit.getGlobalRegionScheduler()).tick();
@@ -47,7 +47,7 @@ index 1635de2b25a4162036522615424d9e845def6258..5cb1f2246a590d4420b73538e7c4a9f4
getAllLevels().forEach(level -> {
for (final net.minecraft.world.entity.Entity entity : level.getEntities().getAll()) {
if (entity.isRemoved()) {
@@ -1676,6 +1693,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1677,6 +1694,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
});

View File

@@ -7,10 +7,10 @@ AFK command & command cooldown
AFK title message
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index 24a88a87474f003684d3ea3fa22e59b1a036f7c2..db5318350988ad23f01a5a43d59090768a682fea 100644
index 40db0b3d92bcaf4362da33720a0c4ec5451ed886..a1f1e03a8ff5eb49ecfad5dda0dbd4bc35cd53df 100644
--- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java
@@ -276,6 +276,7 @@ public class Commands {
@@ -277,6 +277,7 @@ public class Commands {
StopCommand.register(this.dispatcher);
TransferCommand.register(this.dispatcher);
WhitelistCommand.register(this.dispatcher);
@@ -19,7 +19,7 @@ index 24a88a87474f003684d3ea3fa22e59b1a036f7c2..db5318350988ad23f01a5a43d5909076
org.purpurmc.purpur.command.DemoCommand.register(this.dispatcher); // Purpur - Add demo command
org.purpurmc.purpur.command.PingCommand.register(this.dispatcher); // Purpur - Add ping command
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index 4210089d6ba271ef9d68e18699b1122f07e1946a..93e6eb5f160a58351f97683f57c763e418786d1c 100644
index 8d1571f3db4e7f6c4309b8a46ed0359ecdee85a5..ed62bb4dc142f122997e7db8ef07bdf805b49f28 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -2426,6 +2426,10 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -152,7 +152,7 @@ index 8e0e119b41ca1e49d7e3f7874c5fb3c2b434e737..8f9547083eb64a5ab93407725a8f4afc
synchronized (this.lastSeenMessages) {
Optional var10000;
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 80cb09f072735e59611476c9b4641f49bfef17f5..d7bf448b7665c8776ad28310c0bf2443811ffce3 100644
index f0c66fce913af9433d53572a3dd3fc31d512346b..84914c3245de053ba07b105e44f9d838fa3efc4c 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -676,6 +676,7 @@ public abstract class PlayerList {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Virtual thread for chat executor
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 5cb1f2246a590d4420b73538e7c4a9f4083a11ab..385762df2014af0a643fb955d39871b818dde4ef 100644
index a5e90f57ffd86f75f80629a6be97d4eb7c2a9190..993f303a90a7698f0e62b7c39469aa5bff0725d1 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -2665,7 +2665,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -2666,7 +2666,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
public final java.util.concurrent.ExecutorService chatExecutor = java.util.concurrent.Executors.newCachedThreadPool(

View File

@@ -91,10 +91,10 @@ index a491be4250de3199c3e1aa9e5482b568692bd2f5..5db038df25a1b5bf2f7395464250dc0b
public record Favicon(byte[] iconBytes) {
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 69880a8d52f60ac3a5e5cf1ccf0654f26d456812..5af545d4ad93bcd2a9dce7035d750bb19da0f3b2 100644
index 87fc8861948b50361ec04c5a23406d3abdec6eac..77f11179836636424927843f5f10c3fd23d2b2d4 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -616,6 +616,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -614,6 +614,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@Override
public boolean enforceSecureProfile() {
@@ -138,7 +138,7 @@ index 682dd82394ee6e9ad22d5592b2c6e41f5990644e..742ce07b527449f047bf162aadecdc2c
if (packet == null || this.processedDisconnect) { // Spigot
return;
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index d7bf448b7665c8776ad28310c0bf2443811ffce3..04d9501f5496f8557d289c04a818dfc0f91c0d2c 100644
index 84914c3245de053ba07b105e44f9d838fa3efc4c..e4543611016a648314459144e43565300153f0fe 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -1534,7 +1534,7 @@ public abstract class PlayerList {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Don't save primed tnt entity
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
index 9a00aead39e194de076ee651d2f75b29673cad1e..36e3937c9e09852937c94c268c877a15337835c5 100644
index ef070f8a9ab3a4676e2141f7c0bc20a000d0cc3a..1acfc005260628cc70ebf063acc92fb2904d7794 100644
--- a/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
@@ -281,4 +281,11 @@ public class PrimedTnt extends Entity implements TraceableEntity {
@@ -266,4 +266,11 @@ public class PrimedTnt extends Entity implements TraceableEntity {
return super.interact(player, hand);
}
// Purpur end - Shears can defuse TNT

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable unknown command message
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index db5318350988ad23f01a5a43d59090768a682fea..b30c69be528458792798724a1c6f7205785537bd 100644
index a1f1e03a8ff5eb49ecfad5dda0dbd4bc35cd53df..cc1c2152c6949d1130b55de31ef22f15f717c7a5 100644
--- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java
@@ -438,31 +438,8 @@ public class Commands {
@@ -403,31 +403,8 @@ public class Commands {
// Paper start - Add UnknownCommandEvent
final net.kyori.adventure.text.TextComponent.Builder builder = net.kyori.adventure.text.Component.text();
// source.sendFailure(ComponentUtils.fromMessage(var7.getRawMessage()));
@@ -18,7 +18,7 @@ index db5318350988ad23f01a5a43d59090768a682fea..b30c69be528458792798724a1c6f7205
- int min = Math.min(var7.getInput().length(), var7.getCursor());
- MutableComponent mutableComponent = Component.empty()
- .withStyle(ChatFormatting.GRAY)
- .withStyle(style -> style.withClickEvent(new ClickEvent.SuggestCommand("/" + label))); // CraftBukkit // Paper
- .withStyle(style -> style.withClickEvent(new ClickEvent.SuggestCommand("/" + command)));
- if (min > 10) {
- mutableComponent.append(CommonComponents.ELLIPSIS);
- }
@@ -37,22 +37,22 @@ index db5318350988ad23f01a5a43d59090768a682fea..b30c69be528458792798724a1c6f7205
- .append(io.papermc.paper.adventure.PaperAdventure.asAdventure(mutableComponent));
- }
- org.bukkit.event.command.UnknownCommandEvent event = new org.bukkit.event.command.UnknownCommandEvent(source.getBukkitSender(), command, org.spigotmc.SpigotConfig.unknownCommandMessage.isEmpty() ? null : builder.build());
+ org.bukkit.event.command.UnknownCommandEvent event = new org.bukkit.event.command.UnknownCommandEvent(source.getBukkitSender(), command, getUnknownCommandMessage(builder, var7, label)); // Leaf - Configurable unknown command message
+ org.bukkit.event.command.UnknownCommandEvent event = new org.bukkit.event.command.UnknownCommandEvent(source.getBukkitSender(), command, getUnknownCommandMessage(builder, var7, command)); // Leaf - Configurable unknown command message
org.bukkit.Bukkit.getServer().getPluginManager().callEvent(event);
if (event.message() != null) {
source.sendFailure(io.papermc.paper.adventure.PaperAdventure.asVanilla(event.message()), false);
@@ -696,6 +673,92 @@ public class Commands {
@@ -661,6 +638,92 @@ public class Commands {
};
}
+ // Leaf start - Configurable unknown command message
+ private static net.kyori.adventure.text.Component getUnknownCommandMessage(
+ net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException commandSyntaxException, String label
+ net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException commandSyntaxException, String command
+ ) {
+ String rawMessage = org.dreeam.leaf.config.modules.misc.UnknownCommandMessage.unknownCommandMessage;
+
+ if ("default".equals(rawMessage)) {
+ return getVanillaUnknownCommandMessage(builder, commandSyntaxException, label);
+ return getVanillaUnknownCommandMessage(builder, commandSyntaxException, command);
+ }
+
+ net.kyori.adventure.text.Component messageComponent = null;
@@ -71,7 +71,7 @@ index db5318350988ad23f01a5a43d59090768a682fea..b30c69be528458792798724a1c6f7205
+ final net.kyori.adventure.text.Component context = net.kyori.adventure.text.Component.translatable("command.context.here")
+ .color(net.kyori.adventure.text.format.NamedTextColor.RED)
+ .decorate(net.kyori.adventure.text.format.TextDecoration.ITALIC);
+ final net.kyori.adventure.text.event.ClickEvent event = net.kyori.adventure.text.event.ClickEvent.suggestCommand("/" + label);
+ final net.kyori.adventure.text.event.ClickEvent event = net.kyori.adventure.text.event.ClickEvent.suggestCommand("/" + command);
+
+ detail.color(net.kyori.adventure.text.format.NamedTextColor.GRAY);
+
@@ -100,7 +100,7 @@ index db5318350988ad23f01a5a43d59090768a682fea..b30c69be528458792798724a1c6f7205
+ }
+
+ private static net.kyori.adventure.text.Component getVanillaUnknownCommandMessage(
+ net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String label
+ net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String command
+ ) {
+ builder.color(net.kyori.adventure.text.format.NamedTextColor.RED).append(io.papermc.paper.command.brigadier.MessageComponentSerializer.message().deserialize(var7.getRawMessage()));
+
@@ -108,7 +108,7 @@ index db5318350988ad23f01a5a43d59090768a682fea..b30c69be528458792798724a1c6f7205
+ int min = Math.min(var7.getInput().length(), var7.getCursor());
+ MutableComponent mutableComponent = Component.empty()
+ .withStyle(ChatFormatting.GRAY)
+ .withStyle(style -> style.withClickEvent(new ClickEvent.SuggestCommand("/" + label))); // CraftBukkit // Paper
+ .withStyle(style -> style.withClickEvent(new ClickEvent.SuggestCommand("/" + command)));
+ if (min > 10) {
+ mutableComponent.append(CommonComponents.ELLIPSIS);
+ }

View File

@@ -46,10 +46,10 @@ index 1b8193587814225c2ef2c5d9e667436eb50ff6c5..4200d22606c6a3dbdf282792a4007a51
{
for (int i = 0; i < this.directByChunk.length; ++i) {
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
index f3bac0906d8a1c5dea7b0dee13c5cd6fdbbcae49..673703726979562e01eea6add6942c24fd09a205 100644
index bdc1200ef5317fdaf58973bf580b0a672aee800f..0bca3843e8568b37cda6ae312bdf4f423a0891a9 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
@@ -340,7 +340,7 @@ public final class RegionizedPlayerChunkLoader {
@@ -344,7 +344,7 @@ public final class RegionizedPlayerChunkLoader {
private boolean canGenerateChunks = true;
private final ArrayDeque<ChunkHolderManager.TicketOperation<?, ?>> delayedTicketOps = new ArrayDeque<>();
@@ -631,29 +631,6 @@ index 24710041ccbc70e5506d8d89ae34f0141977f209..05de8a77b389691dd6986f36b4cb8cc0
AttributeInstance attributeInstance = this.instances.get(attribute);
if (attributeInstance == null) {
return null;
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
index 2a7f5f1801d22ca7b06ff9701588451c7f406515..7e517e9ae59c5d32268fae1cade7febe8b2325dc 100644
--- a/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
@@ -144,12 +144,14 @@ public class PrimedTnt extends Entity implements TraceableEntity {
net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket velocityPacket = new net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket(this);
net.minecraft.network.protocol.game.ClientboundTeleportEntityPacket positionPacket = net.minecraft.network.protocol.game.ClientboundTeleportEntityPacket.teleport(this.getId(), net.minecraft.world.entity.PositionMoveRotation.of(this), java.util.Set.of(), this.onGround);
- ete.seenBy.stream()
- .filter(viewer -> (viewer.getPlayer().getX() - this.getX()) * (viewer.getPlayer().getY() - this.getY()) * (viewer.getPlayer().getZ() - this.getZ()) < 16 * 16)
- .forEach(viewer -> {
+ // Leaf start - Multithreaded tracker
+ for (var viewer : ete.seenBy()) {
+ if ((viewer.getPlayer().getX() - this.getX()) * (viewer.getPlayer().getY() - this.getY()) * (viewer.getPlayer().getZ() - this.getZ()) < 16 * 16) {
viewer.send(velocityPacket);
viewer.send(positionPacket);
- });
+ }
+ }
+ // Leaf end - Multithreaded tracker
}
}
// Paper end - Option to prevent TNT from moving in water
diff --git a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java b/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java
index 325ec57df2885f5e81b8a6b61e3a9fed9484b30f..abc5c097861d0decf49d0d3970ab48f1cf8b1cf1 100644
--- a/net/minecraft/world/entity/vehicle/NewMinecartBehavior.java

View File

@@ -8,7 +8,7 @@ avoids multiple casting in Entity#distanceTo, using Math#sqrt directly instead o
these methods more able to be inlined by the JIT compiler.
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 083d078f569aebbed1ab586ec99709e7c38e13b6..504aaa8fe43092442c3426c96d41dacb03371578 100644
index 89f76c1f87719b84578ec322625eeadaa2397838..754fc507479f4b0bb4b270dfc18d45632d31cf46 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -2260,31 +2260,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -43,7 +43,7 @@ index 083d078f569aebbed1ab586ec99709e7c38e13b6..504aaa8fe43092442c3426c96d41dacb
public void playerTouch(Player player) {
}
@@ -5510,4 +5485,34 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5515,4 +5490,34 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return false;
}
// Purpur end - Ridables

View File

@@ -7,10 +7,10 @@ Original license: AGPL-3.0
Original project: https://github.com/snackbag/TT20
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 385762df2014af0a643fb955d39871b818dde4ef..b66bec748d87151eafe8a055c3b659477c042092 100644
index 993f303a90a7698f0e62b7c39469aa5bff0725d1..65f19d6b9b2a3edb8f24eca988c9f3dae7c1d6df 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1541,6 +1541,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1542,6 +1542,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.server.spark.tickStart(); // Paper - spark
new com.destroystokyo.paper.event.server.ServerTickStartEvent(this.tickCount+1).callEvent(); // Paper - Server Tick Events

View File

@@ -31,10 +31,10 @@ index 4200d22606c6a3dbdf282792a4007a51df66963b..4b258f048c73107d0d050a9aa4b4a397
public ReferenceList<ServerPlayer> getPlayersByChunk(final int chunkX, final int chunkZ, final NearbyMapType type) {
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
index f473999938840562b1007a789600342e5796a123..ea4010df54dbd17cdae22d671ea1e4bd7b685b3e 100644
index 6ce4a98e4d3b633e3c87944c23b6b3f0ff58f159..0f5966932c4211922eccac09ab164fcb69dad582 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
@@ -540,7 +540,7 @@ public final class ChunkHolderManager {
@@ -542,7 +542,7 @@ public final class ChunkHolderManager {
public <T> boolean addTicketAtLevel(final TicketType type, final ChunkPos chunkPos, final int level,
final T identifier) {
@@ -43,7 +43,7 @@ index f473999938840562b1007a789600342e5796a123..ea4010df54dbd17cdae22d671ea1e4bd
}
public <T> boolean addTicketAtLevel(final TicketType type, final int chunkX, final int chunkZ, final int level,
@@ -687,7 +687,7 @@ public final class ChunkHolderManager {
@@ -689,7 +689,7 @@ public final class ChunkHolderManager {
}
public <T> boolean removeTicketAtLevel(final TicketType type, final ChunkPos chunkPos, final int level, final T identifier) {
@@ -52,7 +52,7 @@ index f473999938840562b1007a789600342e5796a123..ea4010df54dbd17cdae22d671ea1e4bd
}
public <T> boolean removeTicketAtLevel(final TicketType type, final int chunkX, final int chunkZ, final int level, final T identifier) {
@@ -1309,7 +1309,7 @@ public final class ChunkHolderManager {
@@ -1330,7 +1330,7 @@ public final class ChunkHolderManager {
}
public static <T> TicketOperation<T, T> addOp(final ChunkPos chunk, final TicketType type, final int ticketLevel, final T identifier) {
@@ -61,7 +61,7 @@ index f473999938840562b1007a789600342e5796a123..ea4010df54dbd17cdae22d671ea1e4bd
}
public static <T> TicketOperation<T, T> addOp(final int chunkX, final int chunkZ, final TicketType type, final int ticketLevel, final T identifier) {
@@ -1321,7 +1321,7 @@ public final class ChunkHolderManager {
@@ -1342,7 +1342,7 @@ public final class ChunkHolderManager {
}
public static <T> TicketOperation<T, T> removeOp(final ChunkPos chunk, final TicketType type, final int ticketLevel, final T identifier) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Async chunk send
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
index 32608df3da169159c070f37cb55407f4f6187744..3a78e7512772fd3f7cf8f221e3a72474def14bea 100644
index 0bca3843e8568b37cda6ae312bdf4f423a0891a9..71561ac77e32d7f971c343ad83a268c076ce668a 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
@@ -436,7 +436,15 @@ public final class RegionizedPlayerChunkLoader {
@@ -440,7 +440,15 @@ public final class RegionizedPlayerChunkLoader {
// Note: drop isAlive() check so that chunks properly unload client-side when the player dies
((ChunkSystemChunkHolder)((ChunkSystemServerLevel)this.world).moonrise$getChunkTaskScheduler().chunkHolderManager
.getChunkHolder(chunkX, chunkZ).vanillaChunkHolder).moonrise$removeReceivedChunk(this.player);
@@ -26,7 +26,7 @@ index 32608df3da169159c070f37cb55407f4f6187744..3a78e7512772fd3f7cf8f221e3a72474
if (io.papermc.paper.event.packet.PlayerChunkUnloadEvent.getHandlerList().getRegisteredListeners().length > 0) {
new io.papermc.paper.event.packet.PlayerChunkUnloadEvent(player.getBukkitEntity().getWorld().getChunkAt(new ChunkPos(chunkX, chunkZ).longKey), player.getBukkitEntity()).callEvent();
diff --git a/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java b/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java
index 526c117e0d53ad527eb610c79cdc46ec16b18c0c..9151e580b4840fddab04e487d723130a5a769a1a 100644
index 9f6d7c5dc0e591488a8a3763d8a1f1b3671d5299..6123afd9c27f1f9a954b173413e61bfb276b0f0a 100644
--- a/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java
+++ b/net/minecraft/network/protocol/game/ClientboundLevelChunkPacketData.java
@@ -75,6 +75,45 @@ public class ClientboundLevelChunkPacketData {
@@ -98,7 +98,7 @@ index 8578d1f78ddd1bb75f3230f04bfaa35af9f5f822..4f54c4c8e49c1e0352ab2c5c23277b41
private ClientboundLevelChunkWithLightPacket(RegistryFriendlyByteBuf buffer) {
this.x = buffer.readInt();
diff --git a/net/minecraft/server/network/PlayerChunkSender.java b/net/minecraft/server/network/PlayerChunkSender.java
index 14878690a88fd4de3e2c127086607e6c819c636c..69581890ab34af20f9c608678f378ec9fe3ec775 100644
index 0376a10ee0544b13e8fd629a7b13f78811e57a30..638d622992b8bee993c48c170bba8ab9f0f534e6 100644
--- a/net/minecraft/server/network/PlayerChunkSender.java
+++ b/net/minecraft/server/network/PlayerChunkSender.java
@@ -64,13 +64,29 @@ public class PlayerChunkSender {

View File

@@ -6,19 +6,19 @@ Subject: [PATCH] SparklyPaper: Parallel world ticking
Original project: https://github.com/SparklyPower/SparklyPaper
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
index ea4010df54dbd17cdae22d671ea1e4bd7b685b3e..8d53cb917e9f623a67aba066c6a21f278f1f0967 100644
index 0f5966932c4211922eccac09ab164fcb69dad582..36ce2be30478d734d8326eeeb004ba7dc61e0642 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
@@ -1116,7 +1116,7 @@ public final class ChunkHolderManager {
@@ -1142,7 +1142,7 @@ public final class ChunkHolderManager {
if (changedFullStatus.isEmpty()) {
return;
}
- if (!TickThread.isTickThread()) {
+ if (org.dreeam.leaf.config.modules.async.SparklyPaperParallelWorldTicking.enabled && !TickThread.isTickThreadFor(world) || !TickThread.isTickThread()) { // SparklyPaper - parallel world ticking // Leaf - SparklyPaper - parallel world ticking mod (make configurable)
this.taskScheduler.scheduleChunkTask(() -> {
final ArrayDeque<NewChunkHolder> pendingFullLoadUpdate = ChunkHolderManager.this.pendingFullLoadUpdate;
for (int i = 0, len = changedFullStatus.size(); i < len; ++i) {
@@ -1142,7 +1142,12 @@ public final class ChunkHolderManager {
// These will be handled on the next ServerChunkCache$MainThreadExecutor#pollTask, as it runs the distance manager update
// which will invoke processTicketUpdates
this.offThreadPendingFullLoadUpdate.addAll(changedFullStatus);
@@ -1163,7 +1163,12 @@ public final class ChunkHolderManager {
// note: never call while inside the chunk system, this will absolutely break everything
public void processUnloads() {
@@ -32,15 +32,15 @@ index ea4010df54dbd17cdae22d671ea1e4bd7b685b3e..8d53cb917e9f623a67aba066c6a21f27
if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) {
throw new IllegalStateException("Cannot unload chunks recursively");
@@ -1424,7 +1429,7 @@ public final class ChunkHolderManager {
List<NewChunkHolder> changedFullStatus = null;
@@ -1429,7 +1434,7 @@ public final class ChunkHolderManager {
if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) {
throw new IllegalStateException("Cannot update ticket level while unloading chunks or updating entity manager");
}
- final boolean isTickThread = TickThread.isTickThread();
+ final boolean isTickThread = org.dreeam.leaf.config.modules.async.SparklyPaperParallelWorldTicking.enabled && TickThread.isTickThreadFor(world) || TickThread.isTickThread(); // SparklyPaper - parallel world ticking // Leaf - SparklyPaper - parallel world ticking mod (make configurable)
boolean ret = false;
final boolean canProcessFullUpdates = processFullUpdates & isTickThread;
if (!PlatformHooks.get().allowAsyncTicketUpdates() && isTickThread) {
TickThread.ensureTickThread("Cannot asynchronously process ticket updates");
diff --git a/io/papermc/paper/redstone/RedstoneWireTurbo.java b/io/papermc/paper/redstone/RedstoneWireTurbo.java
index ff747a1ecdf3c888bca0d69de4f85dcd810b6139..b288d57d9f7bd0ccf1877cf9920bd67288ff22f7 100644
--- a/io/papermc/paper/redstone/RedstoneWireTurbo.java
@@ -80,7 +80,7 @@ index 582e012222123e5001c34153f2ee1ab1d08935fd..c0bce2293d07ca58cc5bc9e036ab8dca
List<org.bukkit.block.BlockState> states = new java.util.ArrayList<>(level.capturedBlockStates.values());
level.capturedBlockStates.clear();
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index b66bec748d87151eafe8a055c3b659477c042092..212fe44eee637695555af510ea7c6800a52e6842 100644
index 65f19d6b9b2a3edb8f24eca988c9f3dae7c1d6df..940aad1282c48dfeaa906d1c9abfc269fbe05bd7 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -291,6 +291,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -141,7 +141,7 @@ index b66bec748d87151eafe8a055c3b659477c042092..212fe44eee637695555af510ea7c6800
}
@Override
@@ -917,6 +930,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -918,6 +931,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
serverLevel.save(null, flush, serverLevel.noSave && !forced, close); // Paper - add close param
@@ -154,7 +154,7 @@ index b66bec748d87151eafe8a055c3b659477c042092..212fe44eee637695555af510ea7c6800
flag = true;
}
@@ -1662,6 +1681,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1663,6 +1682,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
}
@@ -173,7 +173,7 @@ index b66bec748d87151eafe8a055c3b659477c042092..212fe44eee637695555af510ea7c6800
protected void tickChildren(BooleanSupplier hasTimeLeft) {
this.getPlayerList().getPlayers().forEach(serverPlayer1 -> serverPlayer1.connection.suspendFlushing());
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
@@ -1728,28 +1759,50 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1729,28 +1760,50 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked
@@ -242,7 +242,7 @@ index b66bec748d87151eafe8a055c3b659477c042092..212fe44eee637695555af510ea7c6800
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
this.tickConnection();
@@ -1829,6 +1882,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1830,6 +1883,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
Map<ResourceKey<Level>, ServerLevel> oldLevels = this.levels;
Map<ResourceKey<Level>, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels);
newLevels.remove(level.dimension());
@@ -379,7 +379,7 @@ index 4bf87ebb49880b8e09203a48fce6371398281561..27bbe0c43dd9b7f8bf932a6b4825ce2c
} else if (this.visible.remove(advancementHolder)) {
idOutput.add(advancementHolder.id());
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 5af545d4ad93bcd2a9dce7035d750bb19da0f3b2..50630dabe4220b8ac810a0395d70360879fdeabc 100644
index 77f11179836636424927843f5f10c3fd23d2b2d4..9b8d119116b0c3a51d3fe2ff7efb33cc39627cc4 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -198,6 +198,12 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -396,7 +396,7 @@ index 5af545d4ad93bcd2a9dce7035d750bb19da0f3b2..50630dabe4220b8ac810a0395d703608
// Gale start - Pufferfish - SIMD support
diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java
index eaaa66c4d86d4ebda0acf8f1dbe8ecb55aa28285..12cf6dc9bac109a4feeeeede5f3762b20ea582bb 100644
index 8f41326fda8c5f9f6926038508be6c6529b051bc..46e171ca454253c32e22c0c18587e9a7ba19f331 100644
--- a/net/minecraft/server/level/ServerChunkCache.java
+++ b/net/minecraft/server/level/ServerChunkCache.java
@@ -175,7 +175,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
@@ -731,7 +731,7 @@ index 3cd9b0df617715d0b3e70a6096e52bb5d22ab426..f1002643589f67adce26667b1750a129
serverPlayer.connection = player.connection;
serverPlayer.restoreFrom(player, keepInventory);
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 2e5d4b8fc6a0ec6692eac63bce13b3f32d3f3e76..0e0d87f2c45ac485af326adfec5a1779f06c6d6c 100644
index 8d7e7dc019ff40f60006f3b2677c29251d7cecc5..71b4d54814c815bc9e8fc6be820260180d0aa208 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -3510,15 +3510,40 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -972,7 +972,7 @@ index 2258736e6f9f52efe5bd353b8949a7a0b9a4fdb8..aa71eca6cd69cfa79b84cb181c25c4be
} else {
Entity entity = owner.teleport(
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
index c4721eb0efe34f5e313bc890b4e960144eca4fe1..9dd3187fd968ab95e9d55b4c8cc74e782cc0f241 100644
index 1f601781643945920c7522b9c6100d0a37ad535d..f32148322f56f766108c6958124731a885c3bbc7 100644
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -96,8 +96,14 @@ public abstract class AbstractContainerMenu {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] SparklyPaper: Track each world MSPT
Original project: https://github.com/SparklyPower/SparklyPaper
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 212fe44eee637695555af510ea7c6800a52e6842..eb3f6e638147c46e0cdb04d9c4bd08b11cff7347 100644
index 940aad1282c48dfeaa906d1c9abfc269fbe05bd7..50da03adea9b496ef3622ee163daf169fd045c2d 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1684,7 +1684,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1685,7 +1685,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Leaf start - SparklyPaper - parallel world ticking mod (move level ticking logic out for branch convergence)
private void tickLevel(ServerLevel serverLevel, BooleanSupplier hasTimeLeft) {
try {

View File

@@ -106,7 +106,7 @@ index fee4a7452178c274eb835d758b718d8e874d79d0..9a2539e1fe2cee30066634ef47a991fa
final EntityCollectionBySection byType = this.entitiesByType.get(entity.getType());
byType.removeEntity(entity, sectionIndex);
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index eb3f6e638147c46e0cdb04d9c4bd08b11cff7347..2d327688bf48cf2477f60dd2573fa5136a077427 100644
index 50da03adea9b496ef3622ee163daf169fd045c2d..440427d23747474a400487d372d079694caa1c18 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -292,6 +292,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -118,7 +118,7 @@ index eb3f6e638147c46e0cdb04d9c4bd08b11cff7347..2d327688bf48cf2477f60dd2573fa513
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 50630dabe4220b8ac810a0395d70360879fdeabc..2e03020a67c7f59a3c554ab720fba831ed13ec82 100644
index 9b8d119116b0c3a51d3fe2ff7efb33cc39627cc4..436e73086678e4afbf94f1b7bca9b0c74266f762 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -204,6 +204,11 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -1002,7 +1002,7 @@ index 6463c3c9b08d6058f2843c225b08a40fc30a960b..126bd98bc5980a2f1177bd7c74918b86
@Override
public boolean canContinueToUse() {
diff --git a/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java b/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302f5cea0fe 100644
index f15da598cb1d7872fafb8b173e5134b9667c9a9f..d84b7b797e526670ddbabecc3ff773e589489f7e 100644
--- a/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
+++ b/net/minecraft/world/entity/ai/goal/MoveToBlockGoal.java
@@ -41,14 +41,73 @@ public abstract class MoveToBlockGoal extends Goal {
@@ -1013,7 +1013,7 @@ index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302
+ protected boolean poll() {
+ if (!(this.mob.getGoalCtx().result() instanceof BlockPos blockPos1)) return false;
+ if (!this.mob.level().hasChunkAt(blockPos1)
+ || !this.mob.isWithinRestriction(blockPos1)
+ || !this.mob.isWithinHome(blockPos1)
+ || !this.isValidTarget(this.mob.level(), blockPos1)) {
+ return false;
+ }
@@ -1043,9 +1043,9 @@ index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302
+ final int searchRange = this.searchRange;
+ final int verticalSearchRange = this.verticalSearchRange;
+ final BlockPos blockPos = mob.blockPosition();
+ final float restrictRadius = mob.getRestrictRadius();
+ final BlockPos restrictCenter = mob.getRestrictCenter();
+ ctx.wake = () -> findNearestBlockAsync(ty, toRemove, mob, serverLevel, verticalSearchStart, searchRange, verticalSearchRange, blockPos, restrictRadius, restrictCenter);
+ final float homeRadius = mob.getHomeRadius();
+ final BlockPos homePos = mob.getHomePosition();
+ ctx.wake = () -> findNearestBlockAsync(ty, toRemove, mob, serverLevel, verticalSearchStart, searchRange, verticalSearchRange, blockPos, homeRadius, homePos);
+ return false;
+ }
+
@@ -1094,8 +1094,8 @@ index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302
+ final int searchRange,
+ final int verticalSearchRange,
+ final BlockPos blockPos,
+ final float restrictRadius,
+ final BlockPos restrictCenter
+ final float homeRadius,
+ final BlockPos homePos
+ ) {
+ BlockPos.MutableBlockPos mutableBlockPos = new BlockPos.MutableBlockPos();
+ for (int i2 = verticalSearchStart; i2 <= verticalSearchRange; i2 = i2 > 0 ? -i2 : 1 - i2) {
@@ -1104,7 +1104,7 @@ index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302
+ for (int i5 = i4 < i3 && i4 > -i3 ? i3 : 0; i5 <= i3; i5 = i5 > 0 ? -i5 : 1 - i5) {
+ mutableBlockPos.setWithOffset(blockPos, i4, i2 - 1, i5);
+ if (!serverLevel.hasChunkAt(mutableBlockPos)) continue;
+ if (isWithinRestriction(restrictRadius, restrictCenter, mutableBlockPos)
+ if (isWithinHome(homeRadius, homePos, mutableBlockPos)
+ && isValidTargetAsync(ty, toRemove, mob, serverLevel, mutableBlockPos)) {
+ return mutableBlockPos.immutable();
+ }
@@ -1115,8 +1115,8 @@ index f15da598cb1d7872fafb8b173e5134b9667c9a9f..13b7129774a098c66990266e03877302
+ return null;
+ }
+
+ private static boolean isWithinRestriction(float restrictRadius, BlockPos restrictCenter, BlockPos pos) {
+ return restrictRadius == -1.0F || restrictCenter.distSqr(pos) < restrictRadius * restrictRadius;
+ private static boolean isWithinHome(float homeRadius, BlockPos homePos, BlockPos pos) {
+ return homeRadius == -1.0F || homePos.distSqr(pos) < homeRadius * homeRadius;
+ }
+ // Leaf end - Async target finding
+

View File

@@ -15,19 +15,19 @@ The delay is currently set to 2 seconds, however, we may want to adjust this bef
fixes Paper#9581
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
index 5b778b8366d99a8b03b4367d44ffabade2b58ebe..ef416d38f3ca57826c46e7401804630e46771146 100644
index 71561ac77e32d7f971c343ad83a268c076ce668a..380aaa64a3e35e8b47165859e5107cbee333dc24 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/player/RegionizedPlayerChunkLoader.java
@@ -48,6 +48,7 @@ public final class RegionizedPlayerChunkLoader {
public static final TicketType PLAYER_TICKET = ChunkSystemTicketType.create("chunk_system:player_ticket", Long::compareTo);
public static final TicketType PLAYER_TICKET_DELAYED = ChunkSystemTicketType.create("chunk_system:player_ticket_delayed", Long::compareTo, 5L * 20L);
public static final TicketType PLAYER_TICKET_DELAYED = ChunkSystemTicketType.create("chunk_system:player_ticket_delayed", Long::compareTo, 1L);
+ public static final TicketType PLAYER_JOIN = ChunkSystemTicketType.create("chunk_system:player_join", (a, b) -> 0, 5 * 20); // Paper - Add ticket on player join to avoid chunk load-unload-load cycle
public static final int GENERATED_TICKET_LEVEL = ChunkHolderManager.FULL_LOADED_TICKET_LEVEL;
public static final int LOADED_TICKET_LEVEL = ChunkTaskScheduler.getTicketLevel(ChunkStatus.EMPTY);
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index 42822499ad559bce6734a16056d6e04cef318569..cea9507d183920c3a7f5e96f7dafebe4c9e33a19 100644
index f1002643589f67adce26667b1750a1296c1fb67d..1a03bf5184b1b85d4cea97dc73795e8725bf2613 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -435,6 +435,13 @@ public abstract class PlayerList {

View File

@@ -22,10 +22,10 @@ index 56fd1ed7ccaf96e7eedea60fbdbf7f934939d563..d2f522ea6d0a209496848af073c9af1c
}
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index 2d327688bf48cf2477f60dd2573fa5136a077427..e7cf3a1d5a8954ce7e1dd181deb5d0ba562a8eb1 100644
index 440427d23747474a400487d372d079694caa1c18..7be848b2058bddc13a20b44a1853f4aec0eb4769 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1822,6 +1822,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1823,6 +1823,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handleTick(tickCount); // Leaves - protocol
@@ -34,7 +34,7 @@ index 2d327688bf48cf2477f60dd2573fa5136a077427..e7cf3a1d5a8954ce7e1dd181deb5d0ba
for (int i = 0; i < this.tickables.size(); i++) {
this.tickables.get(i).run();
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
index f1d9fdda9a1d6c0374585fc60ad9354af36efa13..aef01105b827cc5959cc0d6611baf85bee311e5b 100644
index e5d302609638cbe29d7f379abab612650f9ff010..e1695c06fe9a2ca8ad9050993c36201b36af6649 100644
--- a/net/minecraft/server/level/ServerPlayer.java
+++ b/net/minecraft/server/level/ServerPlayer.java
@@ -810,6 +810,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
@@ -59,7 +59,7 @@ index 742ce07b527449f047bf162aadecdc2c4da9b3ba..87121e0366c6c1ca58bbc7cf09b94ae9
final byte[] data = discardedPayload.data();
try {
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
index cea9507d183920c3a7f5e96f7dafebe4c9e33a19..1edb1904113aae08b8ab85e19d51429d0f02cd49 100644
index 1a03bf5184b1b85d4cea97dc73795e8725bf2613..58e1b90132898e30aa15ed08c76b53165473999a 100644
--- a/net/minecraft/server/players/PlayerList.java
+++ b/net/minecraft/server/players/PlayerList.java
@@ -690,6 +690,7 @@ public abstract class PlayerList {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Optimize getScaledTrackingDistance
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
index 2e03020a67c7f59a3c554ab720fba831ed13ec82..d0429f38e3074560cb698b91b0d76967d1c2da20 100644
index 436e73086678e4afbf94f1b7bca9b0c74266f762..168fc4fea371dfe9ea1ffca3c9f290ba3547f0b9 100644
--- a/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
@@ -786,7 +786,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -783,7 +783,13 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@Override
public int getScaledTrackingDistance(int trackingDistance) {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Add BlockExplosionHitEvent
diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java
index 6c02b986e328ead2040666d619fdb5d397d9b686..a4460f98830eba9cbd695b52f98d07fe0631a4a5 100644
index 1669c21534a453c9cf16b992df7a6bf276dea887..1039cf820ecac54e290dc5dfe7f714bf2b9d2bdd 100644
--- a/net/minecraft/world/level/ServerExplosion.java
+++ b/net/minecraft/world/level/ServerExplosion.java
@@ -612,9 +612,13 @@ public class ServerExplosion implements Explosion {
@@ -615,9 +615,13 @@ public class ServerExplosion implements Explosion {
}
// CraftBukkit end

View File

@@ -17,10 +17,10 @@ index dbf31389f0e9796c80afbffddf6a20cbaf184e6e..f1b456bf96e4764fd202f5575bbfa586
public static final StringRepresentable.EnumCodec<EquipmentSlot> CODEC = StringRepresentable.fromEnum(() -> VALUES_ARRAY);
// Gale end - JettPack - reduce array allocations
diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java
index a4460f98830eba9cbd695b52f98d07fe0631a4a5..9b2f0af96085f52ab8e31bdc1de1ae7435c2128d 100644
index 1039cf820ecac54e290dc5dfe7f714bf2b9d2bdd..7426a7f4bf17277b0355185b58973140dab3c7b9 100644
--- a/net/minecraft/world/level/ServerExplosion.java
+++ b/net/minecraft/world/level/ServerExplosion.java
@@ -529,7 +529,7 @@ public class ServerExplosion implements Explosion {
@@ -532,7 +532,7 @@ public class ServerExplosion implements Explosion {
double d4 = (1.0 - d) * f1 * knockbackMultiplier;
double d5;
if (entity instanceof LivingEntity livingEntity) {
@@ -29,7 +29,7 @@ index a4460f98830eba9cbd695b52f98d07fe0631a4a5..9b2f0af96085f52ab8e31bdc1de1ae74
} else {
d5 = d4;
}
@@ -558,6 +558,49 @@ public class ServerExplosion implements Explosion {
@@ -561,6 +561,49 @@ public class ServerExplosion implements Explosion {
}
}

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Fix crash during parsing unknown command message
Use direct impl for unknown commands message parse to prevent crash
diff --git a/net/minecraft/commands/Commands.java b/net/minecraft/commands/Commands.java
index b30c69be528458792798724a1c6f7205785537bd..a6cd207eb10c7fd166fafb52d310c15e4019a981 100644
index cc1c2152c6949d1130b55de31ef22f15f717c7a5..eed14e622b6a34ec55d9a6ce2efc2a2d149e650c 100644
--- a/net/minecraft/commands/Commands.java
+++ b/net/minecraft/commands/Commands.java
@@ -687,7 +687,7 @@ public class Commands {
@@ -652,7 +652,7 @@ public class Commands {
net.kyori.adventure.text.Component detailComponent = null;
if (rawMessage.contains("<message>")) {
@@ -18,9 +18,9 @@ index b30c69be528458792798724a1c6f7205785537bd..a6cd207eb10c7fd166fafb52d310c15e
}
final String input = commandSyntaxException.getInput();
@@ -730,7 +730,7 @@ public class Commands {
@@ -695,7 +695,7 @@ public class Commands {
private static net.kyori.adventure.text.Component getVanillaUnknownCommandMessage(
net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String label
net.kyori.adventure.text.TextComponent.Builder builder, CommandSyntaxException var7, String command
) {
- builder.color(net.kyori.adventure.text.format.NamedTextColor.RED).append(io.papermc.paper.command.brigadier.MessageComponentSerializer.message().deserialize(var7.getRawMessage()));
+ builder.color(net.kyori.adventure.text.format.NamedTextColor.RED).append(io.papermc.paper.adventure.PaperAdventure.asAdventure(ComponentUtils.fromMessage(var7.getRawMessage()))); // Leaf - Fix crash during parsing unknown command message

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] do not log invalid flatten text component parse
diff --git a/ca/spottedleaf/dataconverter/minecraft/versions/V4290.java b/ca/spottedleaf/dataconverter/minecraft/versions/V4290.java
index ca9e3667b420f54f42b358068c102fe0cae4102d..88901f4783a85cc764bb2db20aed69f96b2bc8c3 100644
index d5dfa9a64e2d3f9a37a5bdde60b92ed93bd89aed..83155bf0befab0207a4b756b19527d071037a870 100644
--- a/ca/spottedleaf/dataconverter/minecraft/versions/V4290.java
+++ b/ca/spottedleaf/dataconverter/minecraft/versions/V4290.java
@@ -189,7 +189,7 @@ public final class V4290 {
@@ -254,7 +254,7 @@ public final class V4290 {
return ret;
}
} catch (final JsonParseException ex) {

View File

@@ -144,10 +144,10 @@ index 05339a176083af667c16f77d76dc1878dafce3f0..9ca55cba185b9de566f911b08d671bee
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 1da86b25e3b89c79d4f3920c8d2ef10ee2757f65..c92adb939892e1054f7b2d24070f43e6104dda2b 100644
index 03dfcb4665d0279c825a74f3f999c92fe2bd22cb..bcdd1581ed564e8002f8120ab2efa38871c40ba7 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1073,6 +1073,7 @@ public final class CraftServer implements Server {
@@ -1045,6 +1045,7 @@ public final class CraftServer implements Server {
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console);
@@ -155,7 +155,7 @@ index 1da86b25e3b89c79d4f3920c8d2ef10ee2757f65..c92adb939892e1054f7b2d24070f43e6
for (ServerLevel world : this.console.getAllLevels()) {
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
@@ -2967,6 +2968,14 @@ public final class CraftServer implements Server {
@@ -2944,6 +2945,14 @@ public final class CraftServer implements Server {
return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console);
}

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Paper Changes
Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
Commit: 469a4de5ce87dcf6461e067d29a88507231f4a6b
Commit: afcdf9bb72f88eb18266f5efd8c135904d82fd3d
Patches listed below are removed in this patch, They exists in Gale or Leaf:
* "Rebrand.patch"
@@ -127,7 +127,7 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a
+ }
+}
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
index 9e32cbb2664f9e162b384050ea7f166702ba0029..0976a7289d424a81ca73c1e89f339431ec1b26ff 100644
index 94bf04bb1c646ec5ba1d42f4b7b3e6c200707beb..3e41a308cf92b841b5375250d1380d16af3d0309 100644
--- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
@@ -142,6 +142,10 @@ public class MobGoalHelper {
@@ -486,10 +486,10 @@ index 54ab8a0b502a2665027f293e6ddebf6c0a2af215..f967560da343867fdc1c380a42874b07
+ // Purpur end - OfflinePlayer API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0ac01f8b7a 100644
index bcdd1581ed564e8002f8120ab2efa38871c40ba7..b66a7e4da7fd3fe22fef65a201705dcfe876f88e 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -429,6 +429,20 @@ public final class CraftServer implements Server {
@@ -428,6 +428,20 @@ public final class CraftServer implements Server {
this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager);
this.pluginManager.paperPluginManager = this.paperPluginManager;
// Paper end
@@ -510,7 +510,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a
CraftRegistry.setMinecraftRegistry(console.registryAccess());
@@ -1074,6 +1088,7 @@ public final class CraftServer implements Server {
@@ -1046,6 +1060,7 @@ public final class CraftServer implements Server {
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
this.console.paperConfigurations.reloadConfigs(this.console);
this.console.galeConfigurations.reloadConfigs(this.console); // Gale - Gale configuration
@@ -518,7 +518,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a
for (ServerLevel world : this.console.getAllLevels()) {
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
@@ -1089,6 +1104,7 @@ public final class CraftServer implements Server {
@@ -1061,6 +1076,7 @@ public final class CraftServer implements Server {
}
}
world.spigotConfig.init(); // Spigot
@@ -526,7 +526,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a
}
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
@@ -1106,6 +1122,7 @@ public final class CraftServer implements Server {
@@ -1078,6 +1094,7 @@ public final class CraftServer implements Server {
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
this.spark.registerCommandBeforePlugins(this); // Paper - spark
@@ -534,7 +534,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");
@@ -1605,6 +1622,60 @@ public final class CraftServer implements Server {
@@ -1577,6 +1594,60 @@ public final class CraftServer implements Server {
return true;
}
@@ -595,7 +595,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a
@Override
public List<Recipe> getRecipesFor(ItemStack result) {
Preconditions.checkArgument(result != null, "ItemStack cannot be null");
@@ -2976,6 +3047,18 @@ public final class CraftServer implements Server {
@@ -2953,6 +3024,18 @@ public final class CraftServer implements Server {
}
// Gale end - Gale configuration - API
@@ -614,7 +614,7 @@ index c92adb939892e1054f7b2d24070f43e6104dda2b..23bd30ad769507e3eeb4e397e57a2c0a
@Override
public void restart() {
CraftServer.this.restart();
@@ -3215,4 +3298,18 @@ public final class CraftServer implements Server {
@@ -3192,4 +3275,18 @@ public final class CraftServer implements Server {
public void allowPausing(final Plugin plugin, final boolean value) {
this.console.addPluginAllowingSleep(plugin.getName(), value);
}

View File

@@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 23bd30ad769507e3eeb4e397e57a2c0ac01f8b7a..889687ee9bcea490e8a7ee29d0a1f81011cd4a34 100644
index b66a7e4da7fd3fe22fef65a201705dcfe876f88e..db4bbabf5f6c24a32fb96f0ce5e642adb468c805 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1184,6 +1184,13 @@ public final class CraftServer implements Server {
@@ -1156,6 +1156,13 @@ public final class CraftServer implements Server {
plugin.getPluginMeta().getDisplayName(),
"This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies."
));

View File

@@ -1,36 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Martijn Muijsers <martijnmuijsers@live.nl>
Date: Wed, 23 Nov 2022 23:32:51 +0100
Subject: [PATCH] Optimize entity coordinate key
License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org
This patch is based on the following patch:
"Optimize entity coordinate key"
By: Kevin Raneri <kevin.raneri@gmail.com>
As part of: Pufferfish (https://github.com/pufferfish-gg/Pufferfish)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
* Pufferfish description *
When executing getCoordinateKey for entities (a hotpath), the JVM is
required to repeatedly cast doubles to longs. The performance impact of
this depends on the CPU architecture, but generally switching between
FPU and ALU incurs a significant performance hit. The casted/rounded
data is already available in the blockPosition struct, so we use that
instead of re-doing the casting.
diff --git a/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java b/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java
index 31b92bd48828cbea25b44a9f0f96886347aa1ae6..036c1a287db04c0191e5f84b027ea68d31447cbc 100644
--- a/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java
+++ b/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java
@@ -16,7 +16,7 @@ public final class CoordinateUtils {
}
public static long getChunkKey(final Entity entity) {
- return ((Mth.lfloor(entity.getZ()) >> 4) << 32) | ((Mth.lfloor(entity.getX()) >> 4) & 0xFFFFFFFFL);
+ return ((long) (entity.blockPosition.getZ() >> 4) << 32) | ((entity.blockPosition.getX() >> 4) & 0xFFFFFFFFL); // Gale - Pufferfish - optimize entity coordinate key - eliminate double->long cast in hotpath
}
public static long getChunkKey(final ChunkPos pos) {

View File

@@ -98,7 +98,7 @@ index db92261a6cb3758391108361096417c61bc82cdc..1a14fddb36ca3c14d243304db629d0c5
public SortedList(final E[] elements, final Comparator<? super E> comparator) {
diff --git a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java
index 84fab94f38e8ee51f2c82fc8c3ddffe2a24d7148..6d1d05caa7c3b6a43770aa185070317a89c1bd74 100644
index af480008adc07c63344d625101d1bf42fab96b5d..8c9609b95cf27b6316c48a554b2c508aa527b964 100644
--- a/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java
+++ b/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java
@@ -178,7 +178,7 @@ public class PaperCommands implements Commands, PaperRegistrar<LifecycleEventOwn

View File

@@ -13,7 +13,7 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 889687ee9bcea490e8a7ee29d0a1f81011cd4a34..616eeec8a0d075064727a69a08341d853a3f5482 100644
index db4bbabf5f6c24a32fb96f0ce5e642adb468c805..3c671beafb9b0dafbf3ef9583244118462c4cab3 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -287,6 +287,7 @@ public final class CraftServer implements Server {
@@ -24,7 +24,7 @@ index 889687ee9bcea490e8a7ee29d0a1f81011cd4a34..616eeec8a0d075064727a69a08341d85
private YamlConfiguration configuration;
private YamlConfiguration commandsConfiguration;
private final Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
@@ -1512,6 +1513,7 @@ public final class CraftServer implements Server {
@@ -1484,6 +1485,7 @@ public final class CraftServer implements Server {
this.getLogger().log(Level.SEVERE, null, ex);
}
@@ -32,7 +32,7 @@ index 889687ee9bcea490e8a7ee29d0a1f81011cd4a34..616eeec8a0d075064727a69a08341d85
this.worlds.remove(world.getName().toLowerCase(Locale.ROOT));
this.console.removeLevel(handle);
return true;
@@ -1530,12 +1532,7 @@ public final class CraftServer implements Server {
@@ -1502,12 +1504,7 @@ public final class CraftServer implements Server {
@Override
public World getWorld(UUID uid) {
@@ -46,7 +46,7 @@ index 889687ee9bcea490e8a7ee29d0a1f81011cd4a34..616eeec8a0d075064727a69a08341d85
}
@Override
@@ -1551,6 +1548,7 @@ public final class CraftServer implements Server {
@@ -1523,6 +1520,7 @@ public final class CraftServer implements Server {
System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world.");
return;
}

View File

@@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 616eeec8a0d075064727a69a08341d853a3f5482..8876ab2bb2f01b89caab2951de09c7b989a985fb 100644
index 3c671beafb9b0dafbf3ef9583244118462c4cab3..c01a6fa34b150b617da2a8094eaa51a92f37a49a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -3102,6 +3102,23 @@ public final class CraftServer implements Server {
@@ -3079,6 +3079,23 @@ public final class CraftServer implements Server {
};
}

View File

@@ -58,10 +58,10 @@ index 12b327eea95e0de9e9c39b7d039badee8ec46508..6178f0212214a2a075cea60c758dca79
}
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 8876ab2bb2f01b89caab2951de09c7b989a985fb..d2fb5f28293bffe72fd312b76a8317350924028f 100644
index c01a6fa34b150b617da2a8094eaa51a92f37a49a..98c1159814baf02a136161813aab9f315c2c3148 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -3102,7 +3102,26 @@ public final class CraftServer implements Server {
@@ -3079,7 +3079,26 @@ public final class CraftServer implements Server {
};
}

View File

@@ -23,10 +23,10 @@ The above copyright notice and this permission notice shall be included in all c
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index d2fb5f28293bffe72fd312b76a8317350924028f..fd956a7c81e4b7407f70dee6a65f973d43f747b2 100644
index 98c1159814baf02a136161813aab9f315c2c3148..e7d9035c54ef8224f9cca52eb23c5d02ec952c73 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -3353,4 +3353,21 @@ public final class CraftServer implements Server {
@@ -3330,4 +3330,21 @@ public final class CraftServer implements Server {
return getServer().lagging;
}
// Purpur end - Lagging threshold

View File

@@ -12,10 +12,10 @@ Original project: https://github.com/LeavesMC/Leaves
Commit: 9d32c5bd3df7c76055aff886ed9efda02e45a45a
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index fd956a7c81e4b7407f70dee6a65f973d43f747b2..d877dbabb4e0ee1b167c9f56669ecd5b629b6146 100644
index e7d9035c54ef8224f9cca52eb23c5d02ec952c73..4ea1ceac80bd4676bb2c59bc4219903850cc7213 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -512,6 +512,7 @@ public final class CraftServer implements Server {
@@ -511,6 +511,7 @@ public final class CraftServer implements Server {
this.potionBrewer = new io.papermc.paper.potion.PaperPotionBrewer(console); // Paper - custom potion mixes
datapackManager = new io.papermc.paper.datapack.PaperDatapackManager(console.getPackRepository()); // Paper
this.spark = new io.papermc.paper.SparksFly(this); // Paper - spark
@@ -23,7 +23,7 @@ index fd956a7c81e4b7407f70dee6a65f973d43f747b2..d877dbabb4e0ee1b167c9f56669ecd5b
}
public boolean getCommandBlockOverride(String command) {
@@ -1126,6 +1127,7 @@ public final class CraftServer implements Server {
@@ -1098,6 +1099,7 @@ public final class CraftServer implements Server {
org.purpurmc.purpur.PurpurConfig.registerCommands(); // Purpur - Purpur config files
this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*");
this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions");

View File

@@ -27,10 +27,10 @@ index 4c003acccdd2dd17918b15316001e52e7670123e..780f3a48152fef6a06dc67bf7fbd1965
HandlerList handlers = event.getHandlers();
RegisteredListener[] listeners = handlers.getRegisteredListeners();
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index d877dbabb4e0ee1b167c9f56669ecd5b629b6146..2ea89dd5693e111367bc4c085bf30e9ddb0256a2 100644
index 4ea1ceac80bd4676bb2c59bc4219903850cc7213..745f3915afdf22fbbc816bd2be30c274e306ee1d 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -317,6 +317,7 @@ public final class CraftServer implements Server {
@@ -316,6 +316,7 @@ public final class CraftServer implements Server {
private final io.papermc.paper.potion.PaperPotionBrewer potionBrewer;
public final io.papermc.paper.SparksFly spark;
private final ServerConfiguration serverConfig = new PaperServerConfiguration();
@@ -38,7 +38,7 @@ index d877dbabb4e0ee1b167c9f56669ecd5b629b6146..2ea89dd5693e111367bc4c085bf30e9d
// Paper start - Folia region threading API
private final io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler regionizedScheduler = new io.papermc.paper.threadedregions.scheduler.FallbackRegionScheduler();
@@ -411,7 +412,7 @@ public final class CraftServer implements Server {
@@ -410,7 +411,7 @@ public final class CraftServer implements Server {
public CraftServer(DedicatedServer console, PlayerList playerList) {
this.console = console;
this.playerList = (DedicatedPlayerList) playerList;
@@ -47,7 +47,7 @@ index d877dbabb4e0ee1b167c9f56669ecd5b629b6146..2ea89dd5693e111367bc4c085bf30e9d
@Override
public CraftPlayer apply(ServerPlayer player) {
return player.getBukkitEntity();
@@ -3372,4 +3373,11 @@ public final class CraftServer implements Server {
@@ -3349,4 +3350,11 @@ public final class CraftServer implements Server {
return MinecraftServer.lastTickOversleepTime;
}
// Gale end - YAPFA - last tick time - API

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Including 5s in getTPS()
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 2ea89dd5693e111367bc4c085bf30e9ddb0256a2..126eb60f9713b5f525942e5e9743b65b0a3f1507 100644
index 745f3915afdf22fbbc816bd2be30c274e306ee1d..079fcde7b0eb47838f4ccf256ed5adb6ffbca95a 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -3098,6 +3098,8 @@ public final class CraftServer implements Server {
@@ -3075,6 +3075,8 @@ public final class CraftServer implements Server {
@Override
public double[] getTPS() {

View File

@@ -34,10 +34,10 @@ index 400e632208d133a3f49fc7f14bceb48a1026769b..8c4e5b0c81d90a0eeee4ab9e5882b137
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 126eb60f9713b5f525942e5e9743b65b0a3f1507..717084d0ca60ff8bd3fa04083cad69f754b38340 100644
index 079fcde7b0eb47838f4ccf256ed5adb6ffbca95a..01b44f84f53ccf6aebd31bb940f0d7c7aa296b32 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -1383,7 +1383,11 @@ public final class CraftServer implements Server {
@@ -1355,7 +1355,11 @@ public final class CraftServer implements Server {
registryAccess = levelDataAndDimensions.dimensions().dimensionsRegistryAccess();
} else {
LevelSettings levelSettings;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Replace world map with optimized collection
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 717084d0ca60ff8bd3fa04083cad69f754b38340..b71edea2c1126bc558f2a803cdf4dd46677a16fc 100644
index 01b44f84f53ccf6aebd31bb940f0d7c7aa296b32..d25b0c36e8bafabc7a1a16d01eef9d69567f2c91 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -286,7 +286,7 @@ public final class CraftServer implements Server {

View File

@@ -20,7 +20,7 @@ index a4d5c65edc1db59f3486ce5d3757cc306211a54b..b00a82816784ea2f6422ca98c1f11597
// Paper start
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
index 2338e7c115037430cefae26a571ded71f77983c4..321280d7c9c3c828cbf2eb19d2fd196a1f84d4c3 100644
index 63f6b5d00b401fe670fd237e53dd2073d042535b..eb51cfce4069035664d2d1e3d30ab681e917dee6 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
@@ -185,7 +185,7 @@ public final class CraftBlockStates {

View File

@@ -8,10 +8,10 @@ replacing ArrayList with Fastutil ObjectArrayList
brings about 40% performance improvement in benchmark.
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index b71edea2c1126bc558f2a803cdf4dd46677a16fc..20542041202bf7589f0246ae172c6801b335b75c 100644
index d25b0c36e8bafabc7a1a16d01eef9d69567f2c91..55fd02cf61c38b8d0caaed40a3cd49412b03901c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -979,7 +979,7 @@ public final class CraftServer implements Server {
@@ -977,7 +977,7 @@ public final class CraftServer implements Server {
@Override
public List<World> getWorlds() {

View File

@@ -9,10 +9,10 @@ This patch didn't cahce SectionPos or BlockPos to chunkKey, since it needs to co
TODO: Cache block pos and section pos, whether need?
diff --git a/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java b/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java
index 036c1a287db04c0191e5f84b027ea68d31447cbc..3cda726b5ef7419da512889d3edd1fb6935e6a54 100644
index bb5b9c9cb0c73edce1dbe3758ee2db0fcc8f4e40..7e3ec4b74406e040ae79d63845fc57bfa3d78a80 100644
--- a/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java
+++ b/src/main/java/ca/spottedleaf/moonrise/common/util/CoordinateUtils.java
@@ -20,7 +20,7 @@ public final class CoordinateUtils {
@@ -21,7 +21,7 @@ public final class CoordinateUtils {
}
public static long getChunkKey(final ChunkPos pos) {

View File

@@ -1508,7 +1508,7 @@ index 196835bdf95ba0e149b2977e9ef41698971f501f..eb7e63d4549e672ff1206055d2d75439
net.minecraft.world.item.ItemStack nms = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item);
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
index 4124d16267c58133c8053b61e056b056f3a28f31..83729e65520996b020386487caca9bf854322a8b 100644
index eb51cfce4069035664d2d1e3d30ab681e917dee6..aea45592a3e870b9474e64317c329c55ffbebfdb 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java
@@ -195,14 +195,14 @@ public final class CraftBlockStates {

View File

@@ -31,10 +31,10 @@ vain. Throttling spawn attempts in suspected spawnproof chunks improves
performance without noticeably advantaging or disadvantaging the mob farm.
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
index 9511f978f6c7da506f67928f5a5a92ecf28e5930..6c298304f842612d0e063b578f274eed04b32960 100644
index 8e65586182bd586c95b8c4873fab6d6ff5975243..ed687b0ab589fd2ddb8bf77f42ba42cf8b1c2ea7 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
@@ -182,6 +182,17 @@ public class WorldConfiguration extends ConfigurationPart {
@@ -183,6 +183,17 @@ public class WorldConfiguration extends ConfigurationPart {
@MergeMap
public Reference2IntMap<MobCategory> ticksPerSpawn = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1)));

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Paw optimization
Some random optimizations
diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
index 6ea7d087acd3c53b7a50849b18ee9bf6d01d0e7c..2ebe60d55deead635aa8ae6c611de6c097e2f9bc 100644
index ae9c9a96ac070f629564fba867749df173fd4f85..461b7ae34a4448cac0f9ca315b25ed9e7564f0b8 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java
@@ -244,13 +244,37 @@ public class CraftBlockData implements BlockData {

View File

@@ -1,19 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Thu, 19 Jun 2025 07:37:19 +0800
Subject: [PATCH] Update spigot mapping to compat spigot reobf mapping plugins
diff --git a/src/main/java/io/papermc/paper/util/MappingEnvironment.java b/src/main/java/io/papermc/paper/util/MappingEnvironment.java
index d22e477e3b1cebb3ffc5b96261b8d4fb4ef5b240..b9d5ee2f72993f1a9d65a55988f512b6e9c5f1d8 100644
--- a/src/main/java/io/papermc/paper/util/MappingEnvironment.java
+++ b/src/main/java/io/papermc/paper/util/MappingEnvironment.java
@@ -11,7 +11,7 @@ import org.checkerframework.framework.qual.DefaultQualifier;
@DefaultQualifier(NonNull.class)
public final class MappingEnvironment {
public static final boolean DISABLE_PLUGIN_REMAPPING = Boolean.getBoolean("paper.disablePluginRemapping");
- public static final String LEGACY_CB_VERSION = "v1_21_R4";
+ public static final String LEGACY_CB_VERSION = "v1_21_R5"; // Leaf - Update spigot mapping to compat spigot reobf mapping plugins
private static final @Nullable String MAPPINGS_HASH = readMappingsHash();
private static final boolean REOBF = checkReobf();