2525import org .bukkit .Bukkit ;
2626import org .bukkit .Color ;
2727import org .bukkit .DyeColor ;
28+ import org .bukkit .FireworkEffect ;
2829import org .bukkit .Material ;
2930import org .bukkit .OfflinePlayer ;
3031import org .bukkit .block .banner .Pattern ;
3637import org .bukkit .inventory .meta .ArmorMeta ;
3738import org .bukkit .inventory .meta .Damageable ;
3839import org .bukkit .inventory .meta .EnchantmentStorageMeta ;
40+ import org .bukkit .inventory .meta .FireworkEffectMeta ;
41+ import org .bukkit .inventory .meta .FireworkMeta ;
3942import org .bukkit .inventory .meta .ItemMeta ;
43+ import org .bukkit .inventory .meta .PotionMeta ;
4044import org .bukkit .inventory .meta .Repairable ;
4145import org .bukkit .inventory .meta .SkullMeta ;
4246import org .bukkit .inventory .meta .trim .ArmorTrim ;
@@ -83,14 +87,14 @@ public class MenuItemStack extends ZUtils {
8387 private int maxDamage ;
8488 private int damage ;
8589 private int repairCost ;
86- private boolean unbreakableEnabled ;
87- private boolean unbreakableShowInTooltip ;
88- private boolean fireResistant ;
89- private boolean hideTooltip ;
90- private boolean hideAdditionalTooltip ;
90+ private Boolean unbreakableEnabled ;
91+ private Boolean unbreakableShowInTooltip ;
92+ private Boolean fireResistant ;
93+ private Boolean hideTooltip ;
94+ private Boolean hideAdditionalTooltip ;
9195 private Boolean enchantmentGlint ;
92- private boolean enchantmentShowInTooltip ;
93- private boolean attributeShowInTooltip ;
96+ private Boolean enchantmentShowInTooltip ;
97+ private Boolean attributeShowInTooltip ;
9498 private MenuItemRarity itemRarity ;
9599 private TrimConfiguration trimConfiguration ;
96100
@@ -144,6 +148,43 @@ public static MenuItemStack fromItemStack(InventoryManager manager, ItemStack it
144148 menuItemStack .setEnchantments (enchantmentStorageMeta .getEnchants ());
145149 }
146150 }
151+
152+ try {
153+ if (itemMeta instanceof PotionMeta ) {
154+ PotionMeta potionMeta = (PotionMeta ) itemMeta ;
155+ PotionType type = potionMeta .getBasePotionType ();
156+ if (type != null ) {
157+ Potion menuPotion = new Potion (type , 0 );
158+ menuItemStack .setPotion (menuPotion );
159+ }
160+ }
161+ } catch (Exception ignored ) {
162+ }
163+
164+ try {
165+ // ToDo, upgrade for multiple effect
166+ if (itemMeta instanceof FireworkMeta ) {
167+ FireworkMeta fireworkMeta = (FireworkMeta ) itemMeta ;
168+ List <FireworkEffect > fireworkEffects = fireworkMeta .getEffects ();
169+ if (!fireworkEffects .isEmpty ()) {
170+ FireworkEffect effect = fireworkEffects .get (0 );
171+ Firework menuFirework = new Firework (false , effect );
172+ menuItemStack .setFirework (menuFirework );
173+ }
174+ }
175+ } catch (Exception ignored ) {
176+ }
177+
178+ try {
179+ // ToDo, upgrade for multiple effect
180+ if (itemMeta instanceof FireworkEffectMeta ) {
181+ FireworkEffectMeta fireworkMeta = (FireworkEffectMeta ) itemMeta ;
182+ FireworkEffect effect = fireworkMeta .getEffect ();
183+ Firework menuFirework = new Firework (true , effect );
184+ menuItemStack .setFirework (menuFirework );
185+ }
186+ } catch (Exception ignored ) {
187+ }
147188 }
148189
149190 return menuItemStack ;
@@ -275,7 +316,7 @@ public ItemStack build(Player player, boolean useCache, Placeholders placeholder
275316 }
276317
277318 if (!this .lore .isEmpty ()) {
278- List <String > lore = placeholders .parse (locale == null ? this .lore : this .translatedLore .getOrDefault (locale , this .lore ));
319+ List <String > lore = papi ( placeholders .parse (locale == null ? this .lore : this .translatedLore .getOrDefault (locale , this .lore )), player , useCache );
279320 lore = lore .stream ().flatMap (str -> Arrays .stream (str .split ("\n " ))).collect (Collectors .toList ());
280321 Meta .meta .updateLore (itemMeta , lore , offlinePlayer == null ? player : offlinePlayer );
281322 }
@@ -336,37 +377,39 @@ private void buildNewItemStackAPI(ItemStack itemStack, ItemMeta itemMeta, Player
336377
337378 if (itemMeta instanceof Damageable ) {
338379 Damageable damageable = (Damageable ) itemMeta ;
380+
339381 if (this .maxDamage > 0 ) damageable .setMaxDamage (this .maxDamage );
340- damageable .setDamage (this .damage );
341- damageable .setUnbreakable (this .unbreakableEnabled );
382+ if (this .damage != 0 ) damageable .setDamage (this .damage );
383+
384+ if (this .unbreakableEnabled != null ) damageable .setUnbreakable (this .unbreakableEnabled );
342385
343- if (!this .unbreakableShowInTooltip ) {
386+ if (this . unbreakableShowInTooltip != null && !this .unbreakableShowInTooltip ) {
344387 itemMeta .addItemFlags (ItemFlag .HIDE_UNBREAKABLE );
345388 }
346389 }
347390
348- if (itemMeta instanceof Repairable ) {
391+ if (itemMeta instanceof Repairable && this . repairCost > 0 ) {
349392 ((Repairable ) itemMeta ).setRepairCost (this .repairCost );
350393 }
351394
352- itemMeta .setHideTooltip (this .hideTooltip );
353- if (this .hideAdditionalTooltip ) {
395+ if ( this . hideTooltip != null ) itemMeta .setHideTooltip (this .hideTooltip );
396+ if (this .hideAdditionalTooltip != null && this . hideAdditionalTooltip ) {
354397 for (ItemFlag value : ItemFlag .values ()) {
355398 itemMeta .addItemFlags (value );
356399 }
357400 }
358401
359- if (!this .enchantmentShowInTooltip ) {
402+ if (this . enchantmentShowInTooltip != null && !this .enchantmentShowInTooltip ) {
360403 itemMeta .addItemFlags (ItemFlag .HIDE_ENCHANTS );
361404 }
362405
363406 if (this .enchantmentGlint != null ) {
364407 itemMeta .setEnchantmentGlintOverride (this .enchantmentGlint );
365408 }
366409
367- itemMeta .setFireResistant (this .fireResistant );
410+ if ( this . fireResistant != null ) itemMeta .setFireResistant (this .fireResistant );
368411
369- if (!this .attributeShowInTooltip ) {
412+ if (this . attributeShowInTooltip != null && !this .attributeShowInTooltip ) {
370413 itemMeta .addItemFlags (ItemFlag .HIDE_ATTRIBUTES );
371414 }
372415
@@ -897,39 +940,39 @@ public boolean isUnbreakableEnabled() {
897940 return unbreakableEnabled ;
898941 }
899942
900- public void setUnbreakableEnabled (boolean unbreakableEnabled ) {
943+ public void setUnbreakableEnabled (Boolean unbreakableEnabled ) {
901944 this .unbreakableEnabled = unbreakableEnabled ;
902945 }
903946
904947 public boolean isUnbreakableShowInTooltip () {
905948 return unbreakableShowInTooltip ;
906949 }
907950
908- public void setUnbreakableShowInTooltip (boolean unbreakableShowInTooltip ) {
951+ public void setUnbreakableShowInTooltip (Boolean unbreakableShowInTooltip ) {
909952 this .unbreakableShowInTooltip = unbreakableShowInTooltip ;
910953 }
911954
912955 public boolean isFireResistant () {
913956 return fireResistant ;
914957 }
915958
916- public void setFireResistant (boolean fireResistant ) {
959+ public void setFireResistant (Boolean fireResistant ) {
917960 this .fireResistant = fireResistant ;
918961 }
919962
920963 public boolean isHideTooltip () {
921964 return hideTooltip ;
922965 }
923966
924- public void setHideTooltip (boolean hideTooltip ) {
967+ public void setHideTooltip (Boolean hideTooltip ) {
925968 this .hideTooltip = hideTooltip ;
926969 }
927970
928971 public boolean isHideAdditionalTooltip () {
929972 return hideAdditionalTooltip ;
930973 }
931974
932- public void setHideAdditionalTooltip (boolean hideAdditionalTooltip ) {
975+ public void setHideAdditionalTooltip (Boolean hideAdditionalTooltip ) {
933976 this .hideAdditionalTooltip = hideAdditionalTooltip ;
934977 }
935978
@@ -945,15 +988,15 @@ public boolean isEnchantmentShowInTooltip() {
945988 return enchantmentShowInTooltip ;
946989 }
947990
948- public void setEnchantmentShowInTooltip (boolean enchantmentShowInTooltip ) {
991+ public void setEnchantmentShowInTooltip (Boolean enchantmentShowInTooltip ) {
949992 this .enchantmentShowInTooltip = enchantmentShowInTooltip ;
950993 }
951994
952995 public boolean isAttributeShowInTooltip () {
953996 return attributeShowInTooltip ;
954997 }
955998
956- public void setAttributeShowInTooltip (boolean attributeShowInTooltip ) {
999+ public void setAttributeShowInTooltip (Boolean attributeShowInTooltip ) {
9571000 this .attributeShowInTooltip = attributeShowInTooltip ;
9581001 }
9591002
0 commit comments