diff --git a/platform/platform-bukkit-impl/src/main/java/taboolib/library/xseries/XItemStack.java b/platform/platform-bukkit-impl/src/main/java/taboolib/library/xseries/XItemStack.java index d130ef796..e51c0ded7 100644 --- a/platform/platform-bukkit-impl/src/main/java/taboolib/library/xseries/XItemStack.java +++ b/platform/platform-bukkit-impl/src/main/java/taboolib/library/xseries/XItemStack.java @@ -94,7 +94,8 @@ public final class XItemStack { SUPPORTS_Inventory_getStorageContents, SUPPORTS_CUSTOM_MODEL_DATA, SUPPORTS_ADVANCED_CUSTOM_MODEL_DATA, - SUPPORTS_ITEM_MODEL; + SUPPORTS_ITEM_MODEL, + SUPPORTS_ITEM_NAME; static { boolean supportsPotionColor = false, @@ -102,7 +103,8 @@ public final class XItemStack { supportsGetStorageContents = false, supportSCustomModelData = false, supportsAdvancedCustomModelData = false, - supportsItemModel = false; + supportsItemModel = false, + supportsItemName = false; try { @@ -129,6 +131,12 @@ public final class XItemStack { } catch (NoSuchMethodException ignored) { } + try { + ItemMeta.class.getDeclaredMethod("setItemName", String.class); + supportsItemName = true; + } catch (NoSuchMethodException ignored) { + } + try { Class.forName("org.bukkit.inventory.meta.PotionMeta").getMethod("setColor", Color.class); supportsPotionColor = true; @@ -147,6 +155,7 @@ public final class XItemStack { SUPPORTS_CUSTOM_MODEL_DATA = supportSCustomModelData; SUPPORTS_ADVANCED_CUSTOM_MODEL_DATA = supportsAdvancedCustomModelData; SUPPORTS_ITEM_MODEL = supportsItemModel; + SUPPORTS_ITEM_NAME = supportsItemName; } private interface MetaHandler { @@ -463,6 +472,11 @@ public void handle() { if (meta.hasLore()) config.set("lore", meta.getLore().stream().map(translator).collect(Collectors.toList())); + if (SUPPORTS_ITEM_NAME && meta.hasItemName()) { + String itemName = meta.getItemName(); + config.set("item-name", translator.apply(itemName)); + } + customModelData(); if (SUPPORTS_UNBREAKABLE) { if (meta.isUnbreakable()) config.set("unbreakable", true); @@ -805,6 +819,7 @@ public ItemStack parse() { getOrCreateMeta(); handleDurability(); displayName(); + itemName(); unbreakable(); customModelData(); lore(); @@ -969,6 +984,19 @@ private void displayName() { meta.setDisplayName(" "); // For GUI easy access configuration purposes } + private void itemName() { + if (!SUPPORTS_ITEM_NAME) + return; + + String itemName = config.getString("item-name"); + if (!Strings.isNullOrEmpty(itemName)) { + String translated = translator.apply(itemName); + meta.setItemName(translated); + } else if (itemName != null && itemName.isEmpty()) { + meta.setItemName(" "); + } + } + private void itemFlags() { List flags = config.getStringList("flags"); if (!flags.isEmpty()) {