88import org .broken .arrow .library .itemcreator .meta .MapWrapperMeta ;
99import org .broken .arrow .library .itemcreator .meta .enhancement .EnhancementWrapper ;
1010import org .broken .arrow .library .itemcreator .serialization .AttributeModifierWrapper ;
11- import org .broken .arrow .library .itemcreator .serialization .typeadapter .BottleEffectMetaAdapter ;
12- import org .broken .arrow .library .itemcreator .serialization .typeadapter .ColorMetaAdapter ;
13- import org .broken .arrow .library .itemcreator .serialization .typeadapter .FireworkMetaAdapter ;
14- import org .broken .arrow .library .itemcreator .serialization .typeadapter .MapMetaAdapter ;
11+ import org .broken .arrow .library .itemcreator .serialization .typeadapter .*;
1512import org .broken .arrow .library .itemcreator .meta .potion .PotionTypeWrapper ;
1613import org .bukkit .*;
1714import org .bukkit .attribute .Attribute ;
2320import org .bukkit .map .MapView ;
2421
2522import javax .annotation .Nonnull ;
23+ import javax .annotation .Nullable ;
2624import java .util .*;
2725import java .util .stream .Collectors ;
2826
@@ -77,11 +75,8 @@ public static SerializeItem fromItemStack(@Nonnull final ItemStack item) {
7775 if (meta .hasCustomModelData ()) data .customModelData = meta .getCustomModelData ();
7876 data .unbreakable = meta .isUnbreakable ();
7977 data .itemFlags .addAll (meta .getItemFlags ());
80- if (meta .hasEnchants ()) {
8178
82- meta .getEnchants ().forEach ((e , lvl ) -> data .enchantments .put (e .getKey ().getKey (), new EnhancementWrapper (e , lvl , lvl > e .getMaxLevel ())));
83-
84- }
79+ retrieveEnchant (meta , data );
8580 retrieveAttributeModifiers (meta , data );
8681 retrievePotionMeta (meta , data );
8782 retrieveBannerMeta (meta , data );
@@ -182,6 +177,7 @@ public String toJson() {
182177 .registerTypeAdapter (BottleEffectMeta .class , new BottleEffectMetaAdapter ())
183178 .registerTypeAdapter (MapWrapperMeta .class , new MapMetaAdapter ())
184179 .registerTypeAdapter (ColorMetaAdapter .class , new ColorMetaAdapter ())
180+ .registerTypeAdapter (ColorMetaAdapter .class , new EnhancementWrapperAdapter ())
185181 .create ()
186182 .toJson (this );
187183 }
@@ -198,6 +194,8 @@ public static SerializeItem fromJson(String json) {
198194 .registerTypeAdapter (BottleEffectMeta .class , new BottleEffectMetaAdapter ())
199195 .registerTypeAdapter (MapWrapperMeta .class , new MapMetaAdapter ())
200196 .registerTypeAdapter (ColorMetaAdapter .class , new ColorMetaAdapter ())
197+ .registerTypeAdapter (ColorMetaAdapter .class , new ColorMetaAdapter ())
198+ .registerTypeAdapter (ColorMetaAdapter .class , new EnhancementWrapperAdapter ())
201199 .create ()
202200 .fromJson (json , SerializeItem .class );
203201 }
@@ -462,21 +460,42 @@ private void setBannerMeta(final ItemMeta meta) {
462460 }
463461 }
464462
463+ private static void retrieveEnchant (@ Nonnull final ItemMeta meta , @ Nonnull final SerializeItem data ) {
464+ if (!meta .hasEnchants ())
465+ return ;
466+
467+ if (ItemCreator .getServerVersion () > 13.2F ) {
468+ meta .getEnchants ().forEach ((e , lvl ) -> data .enchantments .put (e .getKey ().getKey (),
469+ new EnhancementWrapper (e , lvl , lvl > e .getMaxLevel ())));
470+ } else {
471+ meta .getEnchants ().forEach ((e , lvl ) -> data .enchantments .put (e .getName (),
472+ new EnhancementWrapper (e , lvl , lvl > e .getMaxLevel ())));
473+ }
474+
475+ }
476+
465477 private void setEnchantment (final ItemMeta meta ) {
466478 if (!enchantments .isEmpty ())
467- for (Map .Entry <String , EnhancementWrapper > e : enchantments .entrySet ()) {
468- final Enchantment enchant = getEnchantment (e );
479+ for (Map .Entry <String , EnhancementWrapper > entry : enchantments .entrySet ()) {
480+ final Enchantment enchant = getEnchantment (entry );
469481 if (enchant != null ) {
470- final EnhancementWrapper enhancementData = e .getValue ();
482+ final EnhancementWrapper enhancementData = entry .getValue ();
471483 meta .addEnchant (enchant , enhancementData .getLevel (), enhancementData .isIgnoreLevelRestriction ());
472484 }
473485 }
474486 }
475487
476- private static Enchantment getEnchantment (final Map .Entry <String , EnhancementWrapper > e ) {
477- if (ItemCreator .getServerVersion () > 14.0F )
478- return Enchantment .getByKey (NamespacedKey .minecraft (e .getKey ()));
479- return Enchantment .getByName (e .getKey ());
488+ private Enchantment getEnchantment (@ Nullable final Map .Entry <String , EnhancementWrapper > enhancementEntry ) {
489+ if (enhancementEntry == null ) return null ;
490+ final String enhancementKey = enhancementEntry .getKey ();
491+ if (ItemCreator .getServerVersion () > 13.2F ) {
492+ Enchantment enchantment = Enchantment .getByKey (NamespacedKey .minecraft (enhancementKey ));
493+ if (enchantment == null ) {
494+ enchantment = Enchantment .getByName (enhancementKey );
495+ }
496+ return enchantment ;
497+ }
498+ return Enchantment .getByName (enhancementKey );
480499 }
481500
482501 private void setAttributeModifier (final ItemMeta meta ) {
0 commit comments