From 66a288b4f4e6e574bfaa4acad8752f9d266a1dee Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Thu, 8 Dec 2022 00:52:08 -0800 Subject: [PATCH] fix some startup issues --- patches/server/0004-Paper-config-files.patch | 31 ++++++++++++------- patches/server/0005-MC-Dev-fixes.patch | 13 ++++++++ ...0328-Flat-bedrock-generator-settings.patch | 31 ++++++++++++++++--- 3 files changed, 60 insertions(+), 15 deletions(-) diff --git a/patches/server/0004-Paper-config-files.patch b/patches/server/0004-Paper-config-files.patch index 63fc935e20..ccd9b9a7fb 100644 --- a/patches/server/0004-Paper-config-files.patch +++ b/patches/server/0004-Paper-config-files.patch @@ -934,7 +934,7 @@ index 0000000000000000000000000000000000000000..69add4a7f1147015806bc9b63a8340d1 +} diff --git a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java new file mode 100644 -index 0000000000000000000000000000000000000000..9db94ec0cd508a13e86c56e991b9c853a103520d +index 0000000000000000000000000000000000000000..0b6d68350f608bb64a701d0e390283d50f12094e --- /dev/null +++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java @@ -0,0 +1,435 @@ @@ -1143,7 +1143,7 @@ index 0000000000000000000000000000000000000000..9db94ec0cd508a13e86c56e991b9c853 + .register(new TypeToken>() {}, new FastutilMapSerializer.SomethingToPrimitive>(Reference2IntOpenHashMap::new, Integer.TYPE)) + .register(new TypeToken>() {}, new FastutilMapSerializer.SomethingToPrimitive>(Reference2LongOpenHashMap::new, Long.TYPE)) + .register(new TypeToken>() {}, new TableSerializer()) -+ .register(new StringRepresentableSerializer()) ++ .register(StringRepresentableSerializer::isValidFor, new StringRepresentableSerializer()) + .register(IntOr.Default.SERIALIZER) + .register(IntOr.Disabled.SERIALIZER) + .register(DoubleOrDefault.SERIALIZER) @@ -2468,14 +2468,15 @@ index 0000000000000000000000000000000000000000..bc065d5cc8975dd189954272116a6bc5 +} diff --git a/src/main/java/io/papermc/paper/configuration/serializer/StringRepresentableSerializer.java b/src/main/java/io/papermc/paper/configuration/serializer/StringRepresentableSerializer.java new file mode 100644 -index 0000000000000000000000000000000000000000..add9d16bac9e4570fbdcf8368d7ba03116e97ddf +index 0000000000000000000000000000000000000000..7fc0905fc6b8f5df762b4cea573f935dc00b8bc1 --- /dev/null +++ b/src/main/java/io/papermc/paper/configuration/serializer/StringRepresentableSerializer.java -@@ -0,0 +1,43 @@ +@@ -0,0 +1,52 @@ +package io.papermc.paper.configuration.serializer; + +import net.minecraft.util.StringRepresentable; +import net.minecraft.world.entity.MobCategory; ++import org.checkerframework.checker.nullness.qual.Nullable; +import org.spongepowered.configurate.serialize.ScalarSerializer; +import org.spongepowered.configurate.serialize.SerializationException; + @@ -2487,18 +2488,26 @@ index 0000000000000000000000000000000000000000..add9d16bac9e4570fbdcf8368d7ba031 + +public final class StringRepresentableSerializer extends ScalarSerializer { + private static final Map> TYPES = Collections.synchronizedMap(Map.ofEntries( -+ Map.entry(MobCategory.class, s -> { -+ for (MobCategory value : MobCategory.values()) { ++ createEntry(MobCategory.class) ++ )); ++ ++ public StringRepresentableSerializer() { ++ super(StringRepresentable.class); ++ } ++ ++ public static boolean isValidFor(final Type type) { ++ return TYPES.containsKey(type); ++ } ++ ++ private static & StringRepresentable> Map.Entry> createEntry(Class type) { ++ return Map.entry(type, s -> { ++ for (E value : type.getEnumConstants()) { + if (value.getSerializedName().equals(s)) { + return value; + } + } + return null; -+ }) -+ )); -+ -+ public StringRepresentableSerializer() { -+ super(StringRepresentable.class); ++ }); + } + + @Override diff --git a/patches/server/0005-MC-Dev-fixes.patch b/patches/server/0005-MC-Dev-fixes.patch index 0347cbf498..7bc7b6f2b9 100644 --- a/patches/server/0005-MC-Dev-fixes.patch +++ b/patches/server/0005-MC-Dev-fixes.patch @@ -39,6 +39,19 @@ index d4c46f44f7a998121482c2fc56d7986881d489d8..6801a3aa5f2f1e9a7a72ff81c09b4944 } } }; +diff --git a/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java b/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java +index 3233f69345838af653b4259d2142169930533a69..5b8ecf5b0165ed2cd4397cdee958e97c2e8f18d5 100644 +--- a/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java ++++ b/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java +@@ -305,7 +305,7 @@ public class BuiltInRegistries { + LOADERS.put(resourceLocation, () -> { + return initializer.run(registry); + }); +- WRITABLE_REGISTRY.register(key, registry, lifecycle); ++ WRITABLE_REGISTRY.register((ResourceKey) key, registry, lifecycle); // Paper - decompile fix + return registry; + } + diff --git a/src/main/java/net/minecraft/nbt/NbtUtils.java b/src/main/java/net/minecraft/nbt/NbtUtils.java index 24e864d1cd376e9f94cfa68fd06f96b239eed888..c0fe7c576f2361e599bc23003da7c49bb7cb62b2 100644 --- a/src/main/java/net/minecraft/nbt/NbtUtils.java diff --git a/patches/server/0328-Flat-bedrock-generator-settings.patch b/patches/server/0328-Flat-bedrock-generator-settings.patch index 2270d8900b..51f8e1ed9a 100644 --- a/patches/server/0328-Flat-bedrock-generator-settings.patch +++ b/patches/server/0328-Flat-bedrock-generator-settings.patch @@ -19,6 +19,24 @@ public net.minecraft.world.level.levelgen.SurfaceSystem getOrCreateRandomFactory Co-authored-by: Noah van der Aa +diff --git a/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java b/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java +index 5b8ecf5b0165ed2cd4397cdee958e97c2e8f18d5..ad802eb211f05f646159d7fc53f8a9427b46cb89 100644 +--- a/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java ++++ b/src/main/java/net/minecraft/core/registries/BuiltInRegistries.java +@@ -310,7 +310,13 @@ public class BuiltInRegistries { + } + + public static void bootStrap() { ++ // Paper start ++ bootStrap(() -> {}); ++ } ++ public static void bootStrap(Runnable runnable) { ++ // Paper end + createContents(); ++ runnable.run(); // Paper + freeze(); + validate(REGISTRY); + } diff --git a/src/main/java/net/minecraft/data/worldgen/SurfaceRuleData.java b/src/main/java/net/minecraft/data/worldgen/SurfaceRuleData.java index 06e1774dfbb667aca69bc30c9675ed472cb5728c..1d5bc86516df3781aea894c3afd340421ba51a17 100644 --- a/src/main/java/net/minecraft/data/worldgen/SurfaceRuleData.java @@ -114,14 +132,19 @@ index 06e1774dfbb667aca69bc30c9675ed472cb5728c..1d5bc86516df3781aea894c3afd34042 public static SurfaceRules.RuleSource end() { diff --git a/src/main/java/net/minecraft/server/Bootstrap.java b/src/main/java/net/minecraft/server/Bootstrap.java -index 0d3a8f576c037886ccdd6068ce953c4ce010ae2f..bf3fa6454477041898ca00a6341db83a06a52d6f 100644 +index 0d3a8f576c037886ccdd6068ce953c4ce010ae2f..d0ee6523477309bc984869774533ee1941ed0cb0 100644 --- a/src/main/java/net/minecraft/server/Bootstrap.java +++ b/src/main/java/net/minecraft/server/Bootstrap.java -@@ -70,6 +70,7 @@ public class Bootstrap { +@@ -69,7 +69,11 @@ public class Bootstrap { + EntitySelectorOptions.bootStrap(); DispenseItemBehavior.bootStrap(); CauldronInteraction.bootStrap(); - BuiltInRegistries.bootStrap(); -+ net.minecraft.core.Registry.register(net.minecraft.core.registries.BuiltInRegistries.MATERIAL_CONDITION, new net.minecraft.resources.ResourceLocation("paper", "bedrock_condition_source"), net.minecraft.data.worldgen.SurfaceRuleData.PaperBedrockConditionSource.CODEC.codec()); // Paper - register custom flat bedrock thing. TODO is this the best place to do this? +- BuiltInRegistries.bootStrap(); ++ // Paper start - register custom flat bedrock ++ BuiltInRegistries.bootStrap(() -> { ++ net.minecraft.core.Registry.register(net.minecraft.core.registries.BuiltInRegistries.MATERIAL_CONDITION, new net.minecraft.resources.ResourceLocation("paper", "bedrock_condition_source"), net.minecraft.data.worldgen.SurfaceRuleData.PaperBedrockConditionSource.CODEC.codec()); ++ }); ++ // Paper end Bootstrap.wrapStreams(); } // CraftBukkit start - easier than fixing the decompile