From 33c409dcb3139c18fa1304b1c881b66cbac9745f Mon Sep 17 00:00:00 2001 From: Krakenied Date: Tue, 20 Feb 2024 11:00:11 +0100 Subject: Add namespaced enchantments support to 1.13+ and 1.14+ item getters --- .../bukkit/hook/itemgetter/ItemGetter13.java | 35 +++++++++++++++------- .../bukkit/hook/itemgetter/ItemGetter14.java | 33 +++++++++++++------- 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter13.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter13.java index 8b89bdfe..b72894fa 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter13.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter13.java @@ -1,8 +1,10 @@ package com.leonardobishop.quests.bukkit.hook.itemgetter; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; +import com.leonardobishop.quests.bukkit.util.NamespacedKeyUtils; import com.leonardobishop.quests.bukkit.util.chat.Chat; import org.bukkit.Material; +import org.bukkit.NamespacedKey; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeModifier; import org.bukkit.configuration.ConfigurationSection; @@ -24,7 +26,7 @@ import java.util.UUID; *
  • type (without data support, without namespace support)
  • *
  • name
  • *
  • lore
  • - *
  • enchantments (without namespace support)
  • + *
  • enchantments (with namespace support)
  • *
  • item flags
  • *
  • unbreakability (with CraftBukkit support)
  • *
  • attribute modifiers
  • @@ -86,22 +88,33 @@ public class ItemGetter13 extends ItemGetter { continue; } - Enchantment enchantment = Enchantment.getByName(parts[0]); + boolean namespaced = parts.length >= 2 && parts[0].startsWith("(") && parts[1].endsWith(")"); + + Enchantment enchantment; + if (namespaced) { + String namespacedKeyString = enchantmentString.substring(1, parts[0].length() + parts[1].length()); + NamespacedKey namespacedKey = NamespacedKeyUtils.fromString(namespacedKeyString); + enchantment = Enchantment.getByKey(namespacedKey); + } else { + enchantment = Enchantment.getByName(parts[0]); + } + if (enchantment == null) { continue; } - int level; - if (parts.length == 2) { + // (namespace:key):level + // 0 1 2 + // SOME_ENUM_NAME:level + // 0 1 + int levelIndex = namespaced ? 2 : 1; + + int level = 1; + if (parts.length >= levelIndex + 1) { try { - level = Integer.parseUnsignedInt(parts[1]); - } catch (NumberFormatException e) { - continue; + level = Integer.parseUnsignedInt(parts[levelIndex]); + } catch (NumberFormatException ignored) { } - } else if (parts.length == 1) { - level = 1; - } else { - continue; } meta.addEnchant(enchantment, level, true); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter14.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter14.java index 351a7dd4..c90ca99c 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter14.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter14.java @@ -27,7 +27,7 @@ import java.util.UUID; *
  • type (without data support, with namespace support)
  • *
  • name
  • *
  • lore
  • - *
  • enchantments (without namespace support)
  • + *
  • enchantments (with namespace support)
  • *
  • item flags
  • *
  • unbreakability (with CraftBukkit support)
  • *
  • attribute modifiers
  • @@ -90,22 +90,33 @@ public class ItemGetter14 extends ItemGetter { continue; } - Enchantment enchantment = Enchantment.getByName(parts[0]); + boolean namespaced = parts.length >= 2 && parts[0].startsWith("(") && parts[1].endsWith(")"); + + Enchantment enchantment; + if (namespaced) { + String namespacedKeyString = enchantmentString.substring(1, parts[0].length() + parts[1].length()); + NamespacedKey namespacedKey = NamespacedKeyUtils.fromString(namespacedKeyString); + enchantment = Enchantment.getByKey(namespacedKey); + } else { + enchantment = Enchantment.getByName(parts[0]); + } + if (enchantment == null) { continue; } - int level; - if (parts.length == 2) { + // (namespace:key):level + // 0 1 2 + // SOME_ENUM_NAME:level + // 0 1 + int levelIndex = namespaced ? 2 : 1; + + int level = 1; + if (parts.length >= levelIndex + 1) { try { - level = Integer.parseUnsignedInt(parts[1]); - } catch (NumberFormatException e) { - continue; + level = Integer.parseUnsignedInt(parts[levelIndex]); + } catch (NumberFormatException ignored) { } - } else if (parts.length == 1) { - level = 1; - } else { - continue; } meta.addEnchant(enchantment, level, true); -- cgit v1.2.3-70-g09d2