From f56c5346407e8e91c2e544930d8ad20d740754c2 Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 10 Dec 2022 14:13:28 +0100 Subject: [PATCH] Advancement Criteria are serialized in the same order they are added --- .../bclib/api/v2/advancement/AdvancementManager.java | 8 +++++++- src/main/resources/bclib.accesswidener | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/betterx/bclib/api/v2/advancement/AdvancementManager.java b/src/main/java/org/betterx/bclib/api/v2/advancement/AdvancementManager.java index bfe678e0..fd133ba1 100644 --- a/src/main/java/org/betterx/bclib/api/v2/advancement/AdvancementManager.java +++ b/src/main/java/org/betterx/bclib/api/v2/advancement/AdvancementManager.java @@ -32,6 +32,12 @@ import java.util.Map; import java.util.function.Consumer; public class AdvancementManager { + static class OrderedBuilder extends Advancement.Builder { + OrderedBuilder() { + super(null, null, AdvancementRewards.EMPTY, new LinkedHashMap<>(), null); + } + } + private static final Map ADVANCEMENTS = new LinkedHashMap<>(); public static void register(ResourceLocation id, Advancement.Builder builder) { @@ -113,7 +119,7 @@ public class AdvancementManager { private static final ThreadLocal DISPLAY_BUILDER = ThreadLocal.withInitial(DisplayBuilder::new); private static final ResourceLocation RECIPES_ROOT = RecipeBuilder.ROOT_RECIPE_ADVANCEMENT; - private final Advancement.Builder builder = Advancement.Builder.advancement(); + private final Advancement.Builder builder = new OrderedBuilder(); private final ResourceLocation id; private final AdvancementType type; private boolean canBuild = true; diff --git a/src/main/resources/bclib.accesswidener b/src/main/resources/bclib.accesswidener index 99fd84c5..60431056 100644 --- a/src/main/resources/bclib.accesswidener +++ b/src/main/resources/bclib.accesswidener @@ -28,6 +28,7 @@ accessible method net/minecraft/world/level/levelgen/NoiseRouterData noNewCaves accessible method net/minecraft/world/level/levelgen/NoiseRouterData slideNetherLike (Lnet/minecraft/core/HolderGetter;II)Lnet/minecraft/world/level/levelgen/DensityFunction; accessible method net/minecraft/tags/TagEntry elementOrTag ()Lnet/minecraft/util/ExtraCodecs$TagOrElementLocation; accessible method net/minecraft/data/worldgen/biome/OverworldBiomes calculateSkyColor (F)I +accessible method net/minecraft/advancements/Advancement$Builder (Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/advancements/DisplayInfo;Lnet/minecraft/advancements/AdvancementRewards;Ljava/util/Map;[[Ljava/lang/String;)V #Fields accessible field net/minecraft/world/entity/ai/village/poi/PoiTypes TYPE_BY_STATE Ljava/util/Map; \ No newline at end of file