From 29d277237ba9a6ecdd60b1c16d47de6c79ae463b Mon Sep 17 00:00:00 2001 From: Doc Date: Sun, 12 Apr 2026 15:58:34 -0400 Subject: [PATCH 01/11] Remove unused config for `deobfuscate-stacktraces` in Logging --- .../io/papermc/paper/configuration/GlobalConfiguration.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java index e47f279b66b1..e48e23edfb16 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java @@ -207,12 +207,6 @@ public class Commands extends ConfigurationPart { public boolean rideCommandAllowPlayerAsVehicle = false; } - public Logging logging; - - public class Logging extends ConfigurationPart { - public boolean deobfuscateStacktraces = true; - } - public Scoreboards scoreboards; public class Scoreboards extends ConfigurationPart { From 48410023d3c4068cf752692951454892a1c05a26 Mon Sep 17 00:00:00 2001 From: Doc Date: Sun, 12 Apr 2026 16:19:13 -0400 Subject: [PATCH 02/11] Include `logging.deobfuscate-stacktraces` in RemovedConfigurations --- .../papermc/paper/configuration/RemovedConfigurations.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java index 6e2c1f39a158..0dbc743fbd42 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java @@ -60,7 +60,7 @@ interface RemovedConfigurations { path("spawn", "keep-spawn-loaded-range"), path("misc", "shield-blocking-delay") }; - // spawn.keep-spawn-loaded and spawn.keep-spawn-loaded-range are no longer used, but kept + // spawn.keep-spawn-loaded and spawn.keep-spawn-loaded-range is no longer used, but kept // in the world default config for compatibility with old worlds being migrated to use the gamerule NodePath[] REMOVED_GLOBAL_PATHS = { @@ -86,7 +86,8 @@ interface RemovedConfigurations { path("unsupported-settings", "allow-tripwire-disarming-exploits"), path("commands", "fix-target-selector-tag-completion"), path("misc", "fix-entity-position-desync"), - path("chunk-system", "gen-parallelism") + path("chunk-system", "gen-parallelism"), + path("logging", "deobfuscate-stacktraces"), // vanilla already deobfuscated since 26.1 }; } From e7c0a326f9bb7c4035d815433a4ea145ec335a08 Mon Sep 17 00:00:00 2001 From: Pedro <3602279+Doc94@users.noreply.github.com> Date: Sun, 12 Apr 2026 17:09:07 -0400 Subject: [PATCH 03/11] Remove IDE suggestion for text --- .../io/papermc/paper/configuration/RemovedConfigurations.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java index 0dbc743fbd42..f96d587ea69e 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java @@ -60,7 +60,7 @@ interface RemovedConfigurations { path("spawn", "keep-spawn-loaded-range"), path("misc", "shield-blocking-delay") }; - // spawn.keep-spawn-loaded and spawn.keep-spawn-loaded-range is no longer used, but kept + // spawn.keep-spawn-loaded and spawn.keep-spawn-loaded-range are no longer used, but kept // in the world default config for compatibility with old worlds being migrated to use the gamerule NodePath[] REMOVED_GLOBAL_PATHS = { From 0c7ee03a339c67775cde5ae7fdd73024a299109b Mon Sep 17 00:00:00 2001 From: Doc Date: Mon, 13 Apr 2026 16:57:33 -0400 Subject: [PATCH 04/11] Change comment --- .../io/papermc/paper/configuration/RemovedConfigurations.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java index f96d587ea69e..e8e860516a8e 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java @@ -87,7 +87,7 @@ interface RemovedConfigurations { path("commands", "fix-target-selector-tag-completion"), path("misc", "fix-entity-position-desync"), path("chunk-system", "gen-parallelism"), - path("logging", "deobfuscate-stacktraces"), // vanilla already deobfuscated since 26.1 + path("logging", "deobfuscate-stacktraces"), // vanilla its unobfuscated since 26.1 }; } From 69abd05a462ca3ae73c94eb26e20fa0e27bee40f Mon Sep 17 00:00:00 2001 From: Doc Date: Mon, 13 Apr 2026 16:59:12 -0400 Subject: [PATCH 05/11] Remove unnecessary comment --- .../io/papermc/paper/configuration/RemovedConfigurations.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java index e8e860516a8e..e879568ad409 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java @@ -60,8 +60,6 @@ interface RemovedConfigurations { path("spawn", "keep-spawn-loaded-range"), path("misc", "shield-blocking-delay") }; - // spawn.keep-spawn-loaded and spawn.keep-spawn-loaded-range are no longer used, but kept - // in the world default config for compatibility with old worlds being migrated to use the gamerule NodePath[] REMOVED_GLOBAL_PATHS = { path("data-value-allowed-items"), From 7b5371d0ff891c0a45082cc66eabe512c05b6dad Mon Sep 17 00:00:00 2001 From: Doc Date: Tue, 14 Apr 2026 17:01:48 -0400 Subject: [PATCH 06/11] Import style --- .../configuration/GlobalConfiguration.java | 31 ++++++++++++------- .../configuration/WorldConfiguration.java | 2 +- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java index e48e23edfb16..13f57e9d41e2 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java @@ -1,13 +1,16 @@ package io.papermc.paper.configuration; import com.mojang.logging.LogUtils; -import io.papermc.paper.FeatureHooks; import io.papermc.paper.configuration.constraint.Constraints; import io.papermc.paper.configuration.serializer.collection.map.WriteKeyBack; import io.papermc.paper.configuration.type.number.DoubleOr; import io.papermc.paper.configuration.type.number.IntOr; import io.papermc.paper.util.sanitizer.ItemObfuscationBinding; import io.papermc.paper.util.sanitizer.OversizedItemComponentSanitizer; +import java.util.Map; +import java.util.Objects; +import java.util.OptionalInt; +import java.util.Set; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.minecraft.core.component.DataComponents; @@ -22,17 +25,13 @@ import org.spongepowered.configurate.objectmapping.meta.Required; import org.spongepowered.configurate.objectmapping.meta.Setting; -import java.util.Map; -import java.util.Objects; -import java.util.OptionalInt; -import java.util.Set; - @SuppressWarnings({"CanBeFinal", "FieldCanBeLocal", "FieldMayBeFinal", "NotNullFieldNotInitialized", "InnerClassMayBeStatic"}) public class GlobalConfiguration extends ConfigurationPart { private static final Logger LOGGER = LogUtils.getLogger(); static final int CURRENT_VERSION = 31; // (when you change the version, change the comment, so it conflicts on rebases): allow-nether property to config private static GlobalConfiguration instance; public static boolean isFirstStart = false; + public static GlobalConfiguration get() { return instance; } @@ -45,8 +44,8 @@ public class ChunkLoadingBasic extends ConfigurationPart { @Comment( "The maximum rate at which chunks will load for any individual player. " + - "Note that this setting also affects chunk generations, since a chunk load is always first issued to test if a" + - "chunk is already generated. Set to -1 to disable this limit." + "Note that this setting also affects chunk generations, since a chunk load is always first issued to test if a" + + "chunk is already generated. Set to -1 to disable this limit." ) public double playerMaxChunkLoadRate = 100.0; @@ -59,22 +58,23 @@ public class ChunkLoadingBasic extends ConfigurationPart { public class ChunkLoadingAdvanced extends ConfigurationPart { @Comment( "Set to true if the server will match the chunk send radius that clients have configured" + - "in their view distance settings if the client is less-than the server's send distance." + "in their view distance settings if the client is less-than the server's send distance." ) public boolean autoConfigSendDistance = true; @Comment( "Specifies the maximum amount of concurrent chunk loads that an individual player can have." + - "Set to 0 to let the server configure it automatically per player, or set it to -1 to disable the limit." + "Set to 0 to let the server configure it automatically per player, or set it to -1 to disable the limit." ) public int playerMaxConcurrentChunkLoads = 0; @Comment( "Specifies the maximum amount of concurrent chunk generations that an individual player can have." + - "Set to 0 to let the server configure it automatically per player, or set it to -1 to disable the limit." + "Set to 0 to let the server configure it automatically per player, or set it to -1 to disable the limit." ) public int playerMaxConcurrentChunkGenerates = 0; } + static void set(final GlobalConfiguration instance) { GlobalConfiguration.instance = instance; } @@ -136,7 +136,9 @@ private void postProcess() { } } } + public boolean proxyProtocol = false; + public boolean isProxyOnlineMode() { return org.bukkit.Bukkit.getOnlineMode() || (org.spigotmc.SpigotConfig.bungee && this.bungeeCord.onlineMode) || (this.velocity.enabled && this.velocity.onlineMode); } @@ -247,6 +249,7 @@ public class BookSize extends ConfigurationPart { public IntOr.Disabled pageMax = new IntOr.Disabled(OptionalInt.of(2560)); // TODO this appears to be a duplicate setting with one above public double totalMultiplier = 0.98D; // TODO this should probably be merged into the above inner class } + public boolean resolveSelectorsInBooks = false; } @@ -289,6 +292,7 @@ public class Collisions extends ConfigurationPart { public class PlayerAutoSave extends ConfigurationPart { public int rate = -1; private int maxPerTick = -1; + public int maxPerTick() { if (this.maxPerTick < 0) { return (this.rate == 1 || this.rate > 100) ? 10 : 20; @@ -303,6 +307,7 @@ public class Misc extends ConfigurationPart { @SuppressWarnings("unused") // used in postProcess public ChatThreads chatThreads; + public class ChatThreads extends ConfigurationPart { private int chatExecutorCoreSize = -1; private int chatExecutorMaxSize = -1; @@ -310,7 +315,8 @@ public class ChatThreads extends ConfigurationPart { @PostProcess private void postProcess() { //noinspection ConstantConditions - if (net.minecraft.server.MinecraftServer.getServer() == null) return; // In testing env, this will be null here + if (net.minecraft.server.MinecraftServer.getServer() == null) + return; // In testing env, this will be null here int _chatExecutorMaxSize = (this.chatExecutorMaxSize <= 0) ? Integer.MAX_VALUE : this.chatExecutorMaxSize; // This is somewhat dumb, but, this is the default, do we cap this?; int _chatExecutorCoreSize = Math.max(this.chatExecutorCoreSize, 0); @@ -323,6 +329,7 @@ private void postProcess() { executor.setMaximumPoolSize(_chatExecutorMaxSize); } } + public int maxJoinsPerTick = 5; public boolean sendFullPosForItemEntities = false; public boolean loadPermissionsYmlBeforePlugins = true; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java index d34e627f8b67..cd33a0d07197 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java @@ -34,11 +34,11 @@ import java.util.OptionalInt; import java.util.function.Function; import java.util.stream.Collectors; -import net.minecraft.util.Util; import net.minecraft.commands.arguments.NbtPathArgument; import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.Identifier; +import net.minecraft.util.Util; import net.minecraft.world.Difficulty; import net.minecraft.world.entity.Display; import net.minecraft.world.entity.Entity; From f743cb61466b74706759e13541f9393ffa70ce9a Mon Sep 17 00:00:00 2001 From: Doc Date: Tue, 14 Apr 2026 17:05:40 -0400 Subject: [PATCH 07/11] Import style for rest of configuration --- .../papermc/paper/configuration/PaperConfigurations.java | 4 ++-- .../configuration/serializer/IdentifierSerializer.java | 1 - .../serializer/registry/RegistryEntrySerializer.java | 3 +-- .../configuration/transformation/Transformations.java | 1 - .../versioned/V31_AllowNetherPropertiesToConfig.java | 3 +-- .../transformation/world/FeatureSeedsGeneration.java | 9 ++++----- .../transformation/world/LegacyPaperWorldConfig.java | 2 +- .../configuration/type/fallback/ArrowDespawnRate.java | 5 ++--- .../configuration/type/fallback/AutosavePeriod.java | 6 ++---- .../paper/configuration/type/fallback/FallbackValue.java | 9 ++++----- 10 files changed, 17 insertions(+), 26 deletions(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/paper-server/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java index 93027a0e7e59..2a65ea1923e1 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java @@ -11,9 +11,9 @@ import io.papermc.paper.configuration.mapping.MergeMap; import io.papermc.paper.configuration.serializer.ComponentSerializer; import io.papermc.paper.configuration.serializer.EnumValueSerializer; +import io.papermc.paper.configuration.serializer.IdentifierSerializer; import io.papermc.paper.configuration.serializer.NbtPathSerializer; import io.papermc.paper.configuration.serializer.ServerboundPacketClassSerializer; -import io.papermc.paper.configuration.serializer.IdentifierSerializer; import io.papermc.paper.configuration.serializer.StringRepresentableSerializer; import io.papermc.paper.configuration.serializer.collection.TableSerializer; import io.papermc.paper.configuration.serializer.collection.map.FastutilMapSerializer; @@ -61,8 +61,8 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.Item; -import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.gamerules.GameRules; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import org.apache.commons.lang3.RandomStringUtils; import org.bukkit.configuration.ConfigurationSection; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/serializer/IdentifierSerializer.java b/paper-server/src/main/java/io/papermc/paper/configuration/serializer/IdentifierSerializer.java index 8ff097d1b7c5..d6d34f2c2d91 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/serializer/IdentifierSerializer.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/serializer/IdentifierSerializer.java @@ -1,7 +1,6 @@ package io.papermc.paper.configuration.serializer; import java.lang.reflect.AnnotatedType; -import java.lang.reflect.Type; import java.util.function.Predicate; import net.minecraft.resources.Identifier; import org.spongepowered.configurate.serialize.ScalarSerializer; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/serializer/registry/RegistryEntrySerializer.java b/paper-server/src/main/java/io/papermc/paper/configuration/serializer/registry/RegistryEntrySerializer.java index cabd06b9842a..4b6a84a10244 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/serializer/registry/RegistryEntrySerializer.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/serializer/registry/RegistryEntrySerializer.java @@ -2,12 +2,11 @@ import io.leangen.geantyref.TypeToken; import java.lang.reflect.AnnotatedType; -import java.lang.reflect.Type; import java.util.function.Predicate; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; import org.spongepowered.configurate.serialize.ScalarSerializer; import org.spongepowered.configurate.serialize.SerializationException; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/Transformations.java b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/Transformations.java index 96e8d03bd4a4..9cc3f73559e0 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/Transformations.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/Transformations.java @@ -5,7 +5,6 @@ import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.NodePath; import org.spongepowered.configurate.transformation.ConfigurationTransformation; -import org.spongepowered.configurate.transformation.TransformAction; import static org.spongepowered.configurate.NodePath.path; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/global/versioned/V31_AllowNetherPropertiesToConfig.java b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/global/versioned/V31_AllowNetherPropertiesToConfig.java index 8b8e19c555ed..85f88b0d74f7 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/global/versioned/V31_AllowNetherPropertiesToConfig.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/global/versioned/V31_AllowNetherPropertiesToConfig.java @@ -1,13 +1,12 @@ package io.papermc.paper.configuration.transformation.global.versioned; +import java.util.Properties; import net.minecraft.server.MinecraftServer; import net.minecraft.server.dedicated.DedicatedServer; import org.spongepowered.configurate.ConfigurateException; import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.transformation.ConfigurationTransformation; -import java.util.Properties; - public class V31_AllowNetherPropertiesToConfig implements ConfigurationTransformation { public static final V31_AllowNetherPropertiesToConfig INSTANCE = new V31_AllowNetherPropertiesToConfig(); private static final int VERSION = 31; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/FeatureSeedsGeneration.java b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/FeatureSeedsGeneration.java index 7345db4342ea..1a384bb7b0b6 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/FeatureSeedsGeneration.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/FeatureSeedsGeneration.java @@ -5,6 +5,10 @@ import io.papermc.paper.configuration.Configurations; import it.unimi.dsi.fastutil.objects.Reference2LongMap; import it.unimi.dsi.fastutil.objects.Reference2LongOpenHashMap; +import java.security.SecureRandom; +import java.util.Objects; +import java.util.Random; +import java.util.concurrent.atomic.AtomicInteger; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.resources.Identifier; @@ -18,11 +22,6 @@ import org.spongepowered.configurate.transformation.ConfigurationTransformation; import org.spongepowered.configurate.transformation.TransformAction; -import java.security.SecureRandom; -import java.util.Objects; -import java.util.Random; -import java.util.concurrent.atomic.AtomicInteger; - import static org.spongepowered.configurate.NodePath.path; public final class FeatureSeedsGeneration implements TransformAction { diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/LegacyPaperWorldConfig.java b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/LegacyPaperWorldConfig.java index f64cc8381d94..59eb9b5f7c5b 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/LegacyPaperWorldConfig.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/LegacyPaperWorldConfig.java @@ -10,8 +10,8 @@ import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceKey; import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.item.Item; import org.bukkit.Material; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java index 24763d3d270c..ae81006dda36 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java @@ -1,11 +1,10 @@ package io.papermc.paper.configuration.type.fallback; -import org.spigotmc.SpigotWorldConfig; -import org.spongepowered.configurate.serialize.SerializationException; - import java.util.Map; import java.util.OptionalInt; import java.util.Set; +import org.spigotmc.SpigotWorldConfig; +import org.spongepowered.configurate.serialize.SerializationException; public class ArrowDespawnRate extends FallbackValue.Int { diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/AutosavePeriod.java b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/AutosavePeriod.java index 0f2765b2edc6..b042186c3b75 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/AutosavePeriod.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/AutosavePeriod.java @@ -1,12 +1,10 @@ package io.papermc.paper.configuration.type.fallback; -import net.minecraft.server.MinecraftServer; -import org.spongepowered.configurate.serialize.SerializationException; - import java.util.Map; import java.util.OptionalInt; import java.util.Set; -import java.util.function.Supplier; +import net.minecraft.server.MinecraftServer; +import org.spongepowered.configurate.serialize.SerializationException; public class AutosavePeriod extends FallbackValue.Int { diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/FallbackValue.java b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/FallbackValue.java index a3a1d398d783..f18f5a244dd8 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/FallbackValue.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/FallbackValue.java @@ -1,16 +1,15 @@ package io.papermc.paper.configuration.type.fallback; import com.google.common.base.Preconditions; -import net.minecraft.server.MinecraftServer; -import org.apache.commons.lang3.math.NumberUtils; -import org.spigotmc.SpigotWorldConfig; -import org.spongepowered.configurate.serialize.SerializationException; - import java.util.Map; import java.util.Objects; import java.util.OptionalInt; import java.util.Set; import java.util.function.Supplier; +import net.minecraft.server.MinecraftServer; +import org.apache.commons.lang3.math.NumberUtils; +import org.spigotmc.SpigotWorldConfig; +import org.spongepowered.configurate.serialize.SerializationException; @SuppressWarnings("OptionalUsedAsFieldOrParameterType") public sealed abstract class FallbackValue permits FallbackValue.Int { From 01279fc9ebbf458daf4ee884e3069148601c8274 Mon Sep 17 00:00:00 2001 From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Date: Wed, 15 Apr 2026 21:07:50 +0200 Subject: [PATCH 08/11] Revert "Import style for rest of configuration" This reverts commit f743cb61466b74706759e13541f9393ffa70ce9a. --- .../papermc/paper/configuration/PaperConfigurations.java | 4 ++-- .../configuration/serializer/IdentifierSerializer.java | 1 + .../serializer/registry/RegistryEntrySerializer.java | 3 ++- .../configuration/transformation/Transformations.java | 1 + .../versioned/V31_AllowNetherPropertiesToConfig.java | 3 ++- .../transformation/world/FeatureSeedsGeneration.java | 9 +++++---- .../transformation/world/LegacyPaperWorldConfig.java | 2 +- .../configuration/type/fallback/ArrowDespawnRate.java | 5 +++-- .../configuration/type/fallback/AutosavePeriod.java | 6 ++++-- .../paper/configuration/type/fallback/FallbackValue.java | 9 +++++---- 10 files changed, 26 insertions(+), 17 deletions(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/paper-server/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java index 2a65ea1923e1..93027a0e7e59 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java @@ -11,9 +11,9 @@ import io.papermc.paper.configuration.mapping.MergeMap; import io.papermc.paper.configuration.serializer.ComponentSerializer; import io.papermc.paper.configuration.serializer.EnumValueSerializer; -import io.papermc.paper.configuration.serializer.IdentifierSerializer; import io.papermc.paper.configuration.serializer.NbtPathSerializer; import io.papermc.paper.configuration.serializer.ServerboundPacketClassSerializer; +import io.papermc.paper.configuration.serializer.IdentifierSerializer; import io.papermc.paper.configuration.serializer.StringRepresentableSerializer; import io.papermc.paper.configuration.serializer.collection.TableSerializer; import io.papermc.paper.configuration.serializer.collection.map.FastutilMapSerializer; @@ -61,8 +61,8 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; import net.minecraft.world.level.gamerules.GameRules; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import org.apache.commons.lang3.RandomStringUtils; import org.bukkit.configuration.ConfigurationSection; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/serializer/IdentifierSerializer.java b/paper-server/src/main/java/io/papermc/paper/configuration/serializer/IdentifierSerializer.java index d6d34f2c2d91..8ff097d1b7c5 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/serializer/IdentifierSerializer.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/serializer/IdentifierSerializer.java @@ -1,6 +1,7 @@ package io.papermc.paper.configuration.serializer; import java.lang.reflect.AnnotatedType; +import java.lang.reflect.Type; import java.util.function.Predicate; import net.minecraft.resources.Identifier; import org.spongepowered.configurate.serialize.ScalarSerializer; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/serializer/registry/RegistryEntrySerializer.java b/paper-server/src/main/java/io/papermc/paper/configuration/serializer/registry/RegistryEntrySerializer.java index 4b6a84a10244..cabd06b9842a 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/serializer/registry/RegistryEntrySerializer.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/serializer/registry/RegistryEntrySerializer.java @@ -2,11 +2,12 @@ import io.leangen.geantyref.TypeToken; import java.lang.reflect.AnnotatedType; +import java.lang.reflect.Type; import java.util.function.Predicate; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; import org.spongepowered.configurate.serialize.ScalarSerializer; import org.spongepowered.configurate.serialize.SerializationException; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/Transformations.java b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/Transformations.java index 9cc3f73559e0..96e8d03bd4a4 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/Transformations.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/Transformations.java @@ -5,6 +5,7 @@ import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.NodePath; import org.spongepowered.configurate.transformation.ConfigurationTransformation; +import org.spongepowered.configurate.transformation.TransformAction; import static org.spongepowered.configurate.NodePath.path; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/global/versioned/V31_AllowNetherPropertiesToConfig.java b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/global/versioned/V31_AllowNetherPropertiesToConfig.java index 85f88b0d74f7..8b8e19c555ed 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/global/versioned/V31_AllowNetherPropertiesToConfig.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/global/versioned/V31_AllowNetherPropertiesToConfig.java @@ -1,12 +1,13 @@ package io.papermc.paper.configuration.transformation.global.versioned; -import java.util.Properties; import net.minecraft.server.MinecraftServer; import net.minecraft.server.dedicated.DedicatedServer; import org.spongepowered.configurate.ConfigurateException; import org.spongepowered.configurate.ConfigurationNode; import org.spongepowered.configurate.transformation.ConfigurationTransformation; +import java.util.Properties; + public class V31_AllowNetherPropertiesToConfig implements ConfigurationTransformation { public static final V31_AllowNetherPropertiesToConfig INSTANCE = new V31_AllowNetherPropertiesToConfig(); private static final int VERSION = 31; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/FeatureSeedsGeneration.java b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/FeatureSeedsGeneration.java index 1a384bb7b0b6..7345db4342ea 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/FeatureSeedsGeneration.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/FeatureSeedsGeneration.java @@ -5,10 +5,6 @@ import io.papermc.paper.configuration.Configurations; import it.unimi.dsi.fastutil.objects.Reference2LongMap; import it.unimi.dsi.fastutil.objects.Reference2LongOpenHashMap; -import java.security.SecureRandom; -import java.util.Objects; -import java.util.Random; -import java.util.concurrent.atomic.AtomicInteger; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.resources.Identifier; @@ -22,6 +18,11 @@ import org.spongepowered.configurate.transformation.ConfigurationTransformation; import org.spongepowered.configurate.transformation.TransformAction; +import java.security.SecureRandom; +import java.util.Objects; +import java.util.Random; +import java.util.concurrent.atomic.AtomicInteger; + import static org.spongepowered.configurate.NodePath.path; public final class FeatureSeedsGeneration implements TransformAction { diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/LegacyPaperWorldConfig.java b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/LegacyPaperWorldConfig.java index 59eb9b5f7c5b..f64cc8381d94 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/LegacyPaperWorldConfig.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/transformation/world/LegacyPaperWorldConfig.java @@ -10,8 +10,8 @@ import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.Identifier; import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.Identifier; import net.minecraft.world.entity.MobCategory; import net.minecraft.world.item.Item; import org.bukkit.Material; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java index ae81006dda36..24763d3d270c 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/ArrowDespawnRate.java @@ -1,10 +1,11 @@ package io.papermc.paper.configuration.type.fallback; +import org.spigotmc.SpigotWorldConfig; +import org.spongepowered.configurate.serialize.SerializationException; + import java.util.Map; import java.util.OptionalInt; import java.util.Set; -import org.spigotmc.SpigotWorldConfig; -import org.spongepowered.configurate.serialize.SerializationException; public class ArrowDespawnRate extends FallbackValue.Int { diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/AutosavePeriod.java b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/AutosavePeriod.java index b042186c3b75..0f2765b2edc6 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/AutosavePeriod.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/AutosavePeriod.java @@ -1,10 +1,12 @@ package io.papermc.paper.configuration.type.fallback; +import net.minecraft.server.MinecraftServer; +import org.spongepowered.configurate.serialize.SerializationException; + import java.util.Map; import java.util.OptionalInt; import java.util.Set; -import net.minecraft.server.MinecraftServer; -import org.spongepowered.configurate.serialize.SerializationException; +import java.util.function.Supplier; public class AutosavePeriod extends FallbackValue.Int { diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/FallbackValue.java b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/FallbackValue.java index f18f5a244dd8..a3a1d398d783 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/FallbackValue.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/type/fallback/FallbackValue.java @@ -1,15 +1,16 @@ package io.papermc.paper.configuration.type.fallback; import com.google.common.base.Preconditions; +import net.minecraft.server.MinecraftServer; +import org.apache.commons.lang3.math.NumberUtils; +import org.spigotmc.SpigotWorldConfig; +import org.spongepowered.configurate.serialize.SerializationException; + import java.util.Map; import java.util.Objects; import java.util.OptionalInt; import java.util.Set; import java.util.function.Supplier; -import net.minecraft.server.MinecraftServer; -import org.apache.commons.lang3.math.NumberUtils; -import org.spigotmc.SpigotWorldConfig; -import org.spongepowered.configurate.serialize.SerializationException; @SuppressWarnings("OptionalUsedAsFieldOrParameterType") public sealed abstract class FallbackValue permits FallbackValue.Int { From ea44fc1d20bfb242655a228afd03a22e1268d266 Mon Sep 17 00:00:00 2001 From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Date: Wed, 15 Apr 2026 21:08:01 +0200 Subject: [PATCH 09/11] Revert "Import style" This reverts commit 7b5371d0ff891c0a45082cc66eabe512c05b6dad. --- .../configuration/GlobalConfiguration.java | 31 +++++++------------ .../configuration/WorldConfiguration.java | 2 +- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java index 13f57e9d41e2..e48e23edfb16 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java @@ -1,16 +1,13 @@ package io.papermc.paper.configuration; import com.mojang.logging.LogUtils; +import io.papermc.paper.FeatureHooks; import io.papermc.paper.configuration.constraint.Constraints; import io.papermc.paper.configuration.serializer.collection.map.WriteKeyBack; import io.papermc.paper.configuration.type.number.DoubleOr; import io.papermc.paper.configuration.type.number.IntOr; import io.papermc.paper.util.sanitizer.ItemObfuscationBinding; import io.papermc.paper.util.sanitizer.OversizedItemComponentSanitizer; -import java.util.Map; -import java.util.Objects; -import java.util.OptionalInt; -import java.util.Set; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.minecraft.core.component.DataComponents; @@ -25,13 +22,17 @@ import org.spongepowered.configurate.objectmapping.meta.Required; import org.spongepowered.configurate.objectmapping.meta.Setting; +import java.util.Map; +import java.util.Objects; +import java.util.OptionalInt; +import java.util.Set; + @SuppressWarnings({"CanBeFinal", "FieldCanBeLocal", "FieldMayBeFinal", "NotNullFieldNotInitialized", "InnerClassMayBeStatic"}) public class GlobalConfiguration extends ConfigurationPart { private static final Logger LOGGER = LogUtils.getLogger(); static final int CURRENT_VERSION = 31; // (when you change the version, change the comment, so it conflicts on rebases): allow-nether property to config private static GlobalConfiguration instance; public static boolean isFirstStart = false; - public static GlobalConfiguration get() { return instance; } @@ -44,8 +45,8 @@ public class ChunkLoadingBasic extends ConfigurationPart { @Comment( "The maximum rate at which chunks will load for any individual player. " + - "Note that this setting also affects chunk generations, since a chunk load is always first issued to test if a" + - "chunk is already generated. Set to -1 to disable this limit." + "Note that this setting also affects chunk generations, since a chunk load is always first issued to test if a" + + "chunk is already generated. Set to -1 to disable this limit." ) public double playerMaxChunkLoadRate = 100.0; @@ -58,23 +59,22 @@ public class ChunkLoadingBasic extends ConfigurationPart { public class ChunkLoadingAdvanced extends ConfigurationPart { @Comment( "Set to true if the server will match the chunk send radius that clients have configured" + - "in their view distance settings if the client is less-than the server's send distance." + "in their view distance settings if the client is less-than the server's send distance." ) public boolean autoConfigSendDistance = true; @Comment( "Specifies the maximum amount of concurrent chunk loads that an individual player can have." + - "Set to 0 to let the server configure it automatically per player, or set it to -1 to disable the limit." + "Set to 0 to let the server configure it automatically per player, or set it to -1 to disable the limit." ) public int playerMaxConcurrentChunkLoads = 0; @Comment( "Specifies the maximum amount of concurrent chunk generations that an individual player can have." + - "Set to 0 to let the server configure it automatically per player, or set it to -1 to disable the limit." + "Set to 0 to let the server configure it automatically per player, or set it to -1 to disable the limit." ) public int playerMaxConcurrentChunkGenerates = 0; } - static void set(final GlobalConfiguration instance) { GlobalConfiguration.instance = instance; } @@ -136,9 +136,7 @@ private void postProcess() { } } } - public boolean proxyProtocol = false; - public boolean isProxyOnlineMode() { return org.bukkit.Bukkit.getOnlineMode() || (org.spigotmc.SpigotConfig.bungee && this.bungeeCord.onlineMode) || (this.velocity.enabled && this.velocity.onlineMode); } @@ -249,7 +247,6 @@ public class BookSize extends ConfigurationPart { public IntOr.Disabled pageMax = new IntOr.Disabled(OptionalInt.of(2560)); // TODO this appears to be a duplicate setting with one above public double totalMultiplier = 0.98D; // TODO this should probably be merged into the above inner class } - public boolean resolveSelectorsInBooks = false; } @@ -292,7 +289,6 @@ public class Collisions extends ConfigurationPart { public class PlayerAutoSave extends ConfigurationPart { public int rate = -1; private int maxPerTick = -1; - public int maxPerTick() { if (this.maxPerTick < 0) { return (this.rate == 1 || this.rate > 100) ? 10 : 20; @@ -307,7 +303,6 @@ public class Misc extends ConfigurationPart { @SuppressWarnings("unused") // used in postProcess public ChatThreads chatThreads; - public class ChatThreads extends ConfigurationPart { private int chatExecutorCoreSize = -1; private int chatExecutorMaxSize = -1; @@ -315,8 +310,7 @@ public class ChatThreads extends ConfigurationPart { @PostProcess private void postProcess() { //noinspection ConstantConditions - if (net.minecraft.server.MinecraftServer.getServer() == null) - return; // In testing env, this will be null here + if (net.minecraft.server.MinecraftServer.getServer() == null) return; // In testing env, this will be null here int _chatExecutorMaxSize = (this.chatExecutorMaxSize <= 0) ? Integer.MAX_VALUE : this.chatExecutorMaxSize; // This is somewhat dumb, but, this is the default, do we cap this?; int _chatExecutorCoreSize = Math.max(this.chatExecutorCoreSize, 0); @@ -329,7 +323,6 @@ private void postProcess() { executor.setMaximumPoolSize(_chatExecutorMaxSize); } } - public int maxJoinsPerTick = 5; public boolean sendFullPosForItemEntities = false; public boolean loadPermissionsYmlBeforePlugins = true; diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java index cd33a0d07197..d34e627f8b67 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java @@ -34,11 +34,11 @@ import java.util.OptionalInt; import java.util.function.Function; import java.util.stream.Collectors; +import net.minecraft.util.Util; import net.minecraft.commands.arguments.NbtPathArgument; import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.Identifier; -import net.minecraft.util.Util; import net.minecraft.world.Difficulty; import net.minecraft.world.entity.Display; import net.minecraft.world.entity.Entity; From 2abda51c8a42b2cf7c918f75abe4509b08ffe6f5 Mon Sep 17 00:00:00 2001 From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com> Date: Wed, 15 Apr 2026 21:09:08 +0200 Subject: [PATCH 10/11] [ci skip] reword --- .../io/papermc/paper/configuration/RemovedConfigurations.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java index e879568ad409..182295248c99 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java @@ -85,7 +85,7 @@ interface RemovedConfigurations { path("commands", "fix-target-selector-tag-completion"), path("misc", "fix-entity-position-desync"), path("chunk-system", "gen-parallelism"), - path("logging", "deobfuscate-stacktraces"), // vanilla its unobfuscated since 26.1 + path("logging", "deobfuscate-stacktraces"), // server is no longer obfuscated since 26.1 }; } From f190a33cdb9394bbd86535af27ae56aec5b2f95d Mon Sep 17 00:00:00 2001 From: Doc Date: Wed, 15 Apr 2026 16:04:33 -0400 Subject: [PATCH 11/11] Remove loggin and not just deobfuscate-stacktraces in config --- .../io/papermc/paper/configuration/RemovedConfigurations.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java index 182295248c99..8325dc801f6d 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/RemovedConfigurations.java @@ -85,7 +85,7 @@ interface RemovedConfigurations { path("commands", "fix-target-selector-tag-completion"), path("misc", "fix-entity-position-desync"), path("chunk-system", "gen-parallelism"), - path("logging", "deobfuscate-stacktraces"), // server is no longer obfuscated since 26.1 + path("logging"), // server is no longer obfuscated since 26.1 }; }