1414import net .minecraft .resources .ResourceLocation ;
1515import net .minecraft .world .item .ItemStack ;
1616import net .minecraft .world .item .enchantment .Enchantment ;
17+ import net .minecraft .world .item .enchantment .ItemEnchantments ;
1718import top .qwerty770 .clientexport .mixin .ClientAdvancementsAccessor ;
1819
1920import java .util .HashMap ;
@@ -44,13 +45,16 @@ public static JsonElement getJson(AdvancementHolder holder, AdvancementTree tree
4445 }
4546 if (advancement .display ().isPresent ()) {
4647 ItemStack icon = advancement .display ().get ().getIcon ();
47- if (icon .getComponents (). has (DataComponents .ENCHANTMENTS )) {
48+ if (icon .has (DataComponents .ENCHANTMENTS )) {
4849 // Enchantments are only registered on server side
49- enchantments = new HashMap <>();
50- for (Object2IntMap .Entry <Holder <Enchantment >> entry : Objects .requireNonNull (icon .get (DataComponents .ENCHANTMENTS )).entrySet ()){
51- enchantments .put (entry .getKey ().getRegisteredName (), entry .getIntValue ());
50+ ItemEnchantments enchantmentsComponent = Objects .requireNonNull (icon .get (DataComponents .ENCHANTMENTS ));
51+ if (!enchantmentsComponent .isEmpty ()) {
52+ enchantments = new HashMap <>();
53+ for (Object2IntMap .Entry <Holder <Enchantment >> entry : enchantmentsComponent .entrySet ()) {
54+ enchantments .put (entry .getKey ().getRegisteredName (), entry .getIntValue ());
55+ }
56+ icon .remove (DataComponents .ENCHANTMENTS );
5257 }
53- icon .remove (DataComponents .ENCHANTMENTS );
5458 }
5559 builder .display (advancement .display ().get ());
5660 }
@@ -68,10 +72,10 @@ public static JsonElement getJson(AdvancementHolder holder, AdvancementTree tree
6872 }
6973 try {
7074 JsonObject jsonObject = (JsonObject ) Advancement .CODEC .encodeStart (JsonOps .INSTANCE , builder .build (holder .id ()).value ()).getOrThrow ();
71- if (enchantments != null ){
75+ if (enchantments != null ) {
7276 JsonObject object = new JsonObject ();
7377 enchantments .forEach (object ::addProperty );
74- jsonObject .add ("icon_enchantments" , object );
78+ jsonObject .add ("clientexport: icon_enchantments" , object );
7579 }
7680 return jsonObject ;
7781 } catch (Exception e ) {
@@ -91,7 +95,7 @@ public static JsonElement getJson(AdvancementProgress progress) {
9195 JsonArray remaining = new JsonArray ();
9296 progress .getRemainingCriteria ().forEach (remaining ::add );
9397 result .add ("remaining" , remaining );
94- result .addProperty ("done_percent " , progress .getPercent ());
98+ result .addProperty ("progress " , progress .getPercent ());
9599 return result ;
96100 } catch (IllegalStateException | IllegalArgumentException e ) {
97101 return error (e , "Failed to encode the progress of the advancement {}!" , progress .toString ());
0 commit comments