From bd29cd2a091792c9c0e82c49276cc8aff2264b70 Mon Sep 17 00:00:00 2001 From: Samsuik Date: Sun, 27 Jul 2025 15:26:05 +0100 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@617e5a4 Update to configurate 4.2.0 (#12869) PaperMC/Paper@602ea9f Restore previous PlayerToggleSneakEvent behaviour (#12815) PaperMC/Paper@c8a8c0e feat(plugin): make Plugin extend Namespaced (#12867) PaperMC/Paper@a5f2f61 Fix offhand item desync on cancelling interact events (#12828) PaperMC/Paper@1031877 [ci skip] Update mache for codebook 1.0.15 (#12887) PaperMC/Paper@6bb9dc6 Normalize and trim spaces in Player#performCommand (#12892) PaperMC/Paper@840dd9e Fix dialog preconditions (#12895) PaperMC/Paper@9ccc51d Fix legacy pearls forgetting owner on disconnect (#12884) PaperMC/Paper@57c1313 Allow to change despawnInPeaceful (#12880) PaperMC/Paper@a576361 Add WorldDifficultyChangeEvent (#12471) PaperMC/Paper@dbc367b Keep non-container slots synced when in container view (#12881) --- gradle.properties | 2 +- sakura-server/build.gradle.kts.patch | 6 +++--- .../0002-Client-Visibility-Settings.patch | 8 ++++---- .../net/minecraft/world/entity/Mob.java.patch | 2 +- .../0001-Client-Visibility-Settings.patch | 8 ++++---- .../PaperConfigurations.java.patch | 17 +++++++++++++---- .../InnerClassFieldDiscoverer.java.patch | 11 +++++++++++ .../bukkit/craftbukkit/CraftServer.java.patch | 4 ++-- .../bukkit/craftbukkit/CraftWorld.java.patch | 2 +- .../craftbukkit/entity/CraftPlayer.java.patch | 4 ++-- .../configuration/SakuraConfigurations.java | 15 ++++++--------- 11 files changed, 48 insertions(+), 31 deletions(-) create mode 100644 sakura-server/paper-patches/files/src/main/java/io/papermc/paper/configuration/mapping/InnerClassFieldDiscoverer.java.patch diff --git a/gradle.properties b/gradle.properties index 31b7949..6c114ed 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=me.samsuik.sakura version=1.21.8-R0.1-SNAPSHOT mcVersion=1.21.8 -paperRef=a2d37f12fb8b564fe0fe88cace5d80cfc13130d6 +paperRef=dbc367ba2d696fec2433b15ed23a893a34895638 org.gradle.jvmargs=-Xmx2G org.gradle.vfs.watch=false diff --git a/sakura-server/build.gradle.kts.patch b/sakura-server/build.gradle.kts.patch index 38853d3..7ebf38d 100644 --- a/sakura-server/build.gradle.kts.patch +++ b/sakura-server/build.gradle.kts.patch @@ -7,7 +7,7 @@ +val serverBrand = rootProject.name dependencies { - mache("io.papermc:mache:1.21.8+build.1") + mache("io.papermc:mache:1.21.8+build.2") @@ -26,6 +_,17 @@ minecraftVersion = providers.gradleProperty("mcVersion") gitFilePatches = false @@ -57,7 +57,7 @@ implementation("ca.spottedleaf:concurrentutil:0.0.3") implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 -@@ -208,7 +_,7 @@ +@@ -207,7 +_,7 @@ "Specification-Version" to project.version, "Specification-Vendor" to "Paper Team", "Brand-Id" to "papermc:paper", @@ -66,7 +66,7 @@ "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), "Git-Branch" to gitBranch, -@@ -267,7 +_,7 @@ +@@ -266,7 +_,7 @@ jvmArgumentProviders.add(provider) } diff --git a/sakura-server/minecraft-patches/features/0002-Client-Visibility-Settings.patch b/sakura-server/minecraft-patches/features/0002-Client-Visibility-Settings.patch index 9115aa8..b014f85 100644 --- a/sakura-server/minecraft-patches/features/0002-Client-Visibility-Settings.patch +++ b/sakura-server/minecraft-patches/features/0002-Client-Visibility-Settings.patch @@ -163,7 +163,7 @@ index 03a157f6c96b0f39effa24ae278eeac689c83ee8..5f38281763419123a0611cbb34d9a02a } diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index f3723436b65f64866af695209983b0ca4ad4f716..a7d71e5bd99a02aa156e1301dc5169e2c35f046d 100644 +index eccd082f86d7b1f6d76d7bebab294527007b1f9a..3b750861b2039283028c2890593b4922f6b7d93e 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -460,6 +460,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -253,10 +253,10 @@ index 08c59d603fca038fc2dde36384eea1b6c971e659..c1c432b5732b1e85aca5597be75e0149 if (packet.isTerminal()) { this.close(); diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5bba860a5f913d3a83c1d469f0f4854b6e063a49..ce8ea023bbf09178507f324634c11353cf204c8c 100644 +index ca13dd72f173be6714965c506f2d48dcd3c9e569..21134883bea2553a870ef0df32c47430aa056cef 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3204,6 +3204,7 @@ public class ServerGamePacketListenerImpl +@@ -3205,6 +3205,7 @@ public class ServerGamePacketListenerImpl event.setCancelled(cancelled); net.minecraft.world.inventory.AbstractContainerMenu oldContainer = this.player.containerMenu; // SPIGOT-1224 @@ -265,7 +265,7 @@ index 5bba860a5f913d3a83c1d469f0f4854b6e063a49..ce8ea023bbf09178507f324634c11353 if (this.player.containerMenu != oldContainer) { this.player.containerMenu.resumeRemoteUpdates(); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index d0727a05addee3e13fc65c2a2337565288f7cf98..ef6f91f35d8725fa3df81b23d86adc900a5df5ce 100644 +index 8b261c3f216e7483039d8279a75977dfb679b453..10da5ea212dcc0db2e7846c7b3207e549e9acae8 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -533,6 +533,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch b/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch index 977948d..ed30dc0 100644 --- a/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch +++ b/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -733,7 +_,7 @@ +@@ -746,7 +_,7 @@ protected final void serverAiStep() { this.noActionTime++; // Paper start - Allow nerfed mobs to jump and float diff --git a/sakura-server/paper-patches/features/0001-Client-Visibility-Settings.patch b/sakura-server/paper-patches/features/0001-Client-Visibility-Settings.patch index 9410dfb..43608d3 100644 --- a/sakura-server/paper-patches/features/0001-Client-Visibility-Settings.patch +++ b/sakura-server/paper-patches/features/0001-Client-Visibility-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Client Visibility Settings diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 095d3bdc84998c00dae4bf8a283a2821a3552b17..252c15ab39fcbfeecc6d2aaafb2e504b11f3c6fc 100644 +index 651e8ecb382e031af63677e5fb3a16ba58fb4dc6..26bff17f1a5e800bbfc067c5734227403ec61c59 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2449,6 +2449,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -2327,6 +2327,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa handle.expToDrop = data.getIntOr("expToDrop", 0); handle.keepLevel = data.getBooleanOr("keepLevel", false); }); @@ -20,7 +20,7 @@ index 095d3bdc84998c00dae4bf8a283a2821a3552b17..252c15ab39fcbfeecc6d2aaafb2e504b } public void setExtraData(ValueOutput output) { -@@ -2470,6 +2475,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -2348,6 +2353,10 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa paper.putLong("LastLogin", handle.loginTime); paper.putLong("LastSeen", System.currentTimeMillis()); // Paper end @@ -31,7 +31,7 @@ index 095d3bdc84998c00dae4bf8a283a2821a3552b17..252c15ab39fcbfeecc6d2aaafb2e504b } @Override -@@ -3174,6 +3183,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -3015,6 +3024,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa return this.getHandle().allowsListing(); } diff --git a/sakura-server/paper-patches/files/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java.patch b/sakura-server/paper-patches/files/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java.patch index 28130dd..3bba499 100644 --- a/sakura-server/paper-patches/files/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java.patch +++ b/sakura-server/paper-patches/files/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java.patch @@ -1,20 +1,29 @@ --- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java +++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java -@@ -173,7 +_,7 @@ +@@ -179,7 +_,7 @@ .defaultOptions(PaperConfigurations::defaultOptions); } - private static ConfigurationOptions defaultOptions(ConfigurationOptions options) { -+ public static ConfigurationOptions defaultOptions(ConfigurationOptions options) { // Sakura - sakura configuration files ++ public static ConfigurationOptions defaultOptions(ConfigurationOptions options) { // Sakura - sakura configuration files; private -> public return options.serializers(builder -> builder .register(MapSerializer.TYPE, new MapSerializer(false)) .register(new EnumValueSerializer()) -@@ -470,7 +_,7 @@ +@@ -341,7 +_,7 @@ + } + } + +- private static List>> defaultFieldProcessors() { ++ public static List>> defaultFieldProcessors() { // Sakura - sakura configuration files; private -> public + return List.of( + MergeMap.DEFINITION + ); +@@ -483,7 +_,7 @@ } // Symlinks are not correctly checked in createDirectories - static void createDirectoriesSymlinkAware(Path path) throws IOException { -+ public static void createDirectoriesSymlinkAware(Path path) throws IOException { // Sakura - package-protected -> public ++ public static void createDirectoriesSymlinkAware(Path path) throws IOException { // Sakura - sakura configuration files; package-protected -> public if (!Files.isDirectory(path)) { Files.createDirectories(path); } diff --git a/sakura-server/paper-patches/files/src/main/java/io/papermc/paper/configuration/mapping/InnerClassFieldDiscoverer.java.patch b/sakura-server/paper-patches/files/src/main/java/io/papermc/paper/configuration/mapping/InnerClassFieldDiscoverer.java.patch new file mode 100644 index 0000000..0158703 --- /dev/null +++ b/sakura-server/paper-patches/files/src/main/java/io/papermc/paper/configuration/mapping/InnerClassFieldDiscoverer.java.patch @@ -0,0 +1,11 @@ +--- a/src/main/java/io/papermc/paper/configuration/mapping/InnerClassFieldDiscoverer.java ++++ b/src/main/java/io/papermc/paper/configuration/mapping/InnerClassFieldDiscoverer.java +@@ -81,7 +_,7 @@ + } + + @SuppressWarnings("unchecked") +- private static InnerClassFieldDiscoverer create(final Map, Object> overrides, final List>> fieldProcessors) { ++ public static InnerClassFieldDiscoverer create(final Map, Object> overrides, final List>> fieldProcessors) { // Sakura - sakura configuration files; private -> public + final Map, List>>> processors = new LinkedHashMap<>(); + for (final Definition> definition : fieldProcessors) { + processors.computeIfAbsent(definition.annotation(), k -> new ArrayList<>()).add(definition); diff --git a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index a666204..f955d6b 100644 --- a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1045,6 +_,7 @@ +@@ -1048,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -8,7 +8,7 @@ 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)) -@@ -1076,6 +_,7 @@ +@@ -1079,6 +_,7 @@ this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper diff --git a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch index 6e53102..7deddc8 100644 --- a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch +++ b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -292,6 +_,12 @@ +@@ -293,6 +_,12 @@ ).isValid(); } // Paper end diff --git a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index fd0fbea..895b25c 100644 --- a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,8 +1,8 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -347,6 +_,18 @@ +@@ -236,6 +_,18 @@ + this.firstPlayed = System.currentTimeMillis(); } - // Paper end + // Sakura start - entity tracking range modifier + @Override diff --git a/sakura-server/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java b/sakura-server/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java index 4462051..e559df5 100644 --- a/sakura-server/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java +++ b/sakura-server/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java @@ -6,8 +6,8 @@ import io.leangen.geantyref.TypeToken; import io.papermc.paper.configuration.*; import io.papermc.paper.configuration.mapping.InnerClassFieldDiscoverer; import io.papermc.paper.configuration.serializer.*; -import io.papermc.paper.configuration.serializer.collections.FastutilMapSerializer; -import io.papermc.paper.configuration.serializer.collections.TableSerializer; +import io.papermc.paper.configuration.serializer.collection.map.FastutilMapSerializer; +import io.papermc.paper.configuration.serializer.collection.TableSerializer; import io.papermc.paper.configuration.serializer.registry.RegistryHolderSerializer; import io.papermc.paper.configuration.serializer.registry.RegistryValueSerializer; import it.unimi.dsi.fastutil.objects.Reference2IntMap; @@ -41,6 +41,7 @@ import java.util.Map; import java.util.function.Function; import static io.leangen.geantyref.GenericTypeReflector.erase; +import static io.papermc.paper.configuration.PaperConfigurations.defaultFieldProcessors; @NullMarked @SuppressWarnings("Convert2Diamond") @@ -95,7 +96,7 @@ public final class SakuraConfigurations extends Configurations builder - .register(new PacketClassSerializer()) - ); + return options.header(GLOBAL_HEADER); } @Override @@ -130,7 +127,7 @@ public final class SakuraConfigurations extends Configurations, Object> overrides = Map.of( WorldConfiguration.class, createWorldConfigInstance(contextMap) ); - return new InnerClassFieldDiscoverer(overrides); + return InnerClassFieldDiscoverer.create(overrides, defaultFieldProcessors()); } private static WorldConfiguration createWorldConfigInstance(ContextMap contextMap) {