diff options
| author | Krakenied <Krakenied1@gmail.com> | 2024-02-20 12:19:05 +0100 |
|---|---|---|
| committer | Leonardo Bishop <13875753+LMBishop@users.noreply.github.com> | 2024-02-22 16:31:48 +0000 |
| commit | 16794d9398de66a7625d5bb52b85b04271237abe (patch) | |
| tree | d6225a3d5a829f974df960309c44a7536a55fa55 /bukkit | |
| parent | d2b5759d7eb09bc997222288c45ccd0429160f1c (diff) | |
Fix ItemGetter on CraftBukkit 1.8
Improve setting item unbreakability
Diffstat (limited to 'bukkit')
3 files changed, 21 insertions, 19 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 57e980ca..8b89bdfe 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 @@ -26,7 +26,7 @@ import java.util.UUID; * <li>lore</li> * <li>enchantments (<b>without</b> namespace support)</li> * <li>item flags</li> - * <li>unbreakability</li> + * <li>unbreakability (<b>with</b> CraftBukkit support)</li> * <li>attribute modifiers</li> * </ul> * Requires at least API version 1.13. @@ -124,9 +124,9 @@ public class ItemGetter13 extends ItemGetter { } // unbreakability - boolean unbreakable = config.getBoolean("unbreakable", false); - if (unbreakable && !filters.contains(Filter.UNBREAKABLE)) { - meta.setUnbreakable(true); + Boolean unbreakable = (Boolean) config.get("unbreakable"); + if (unbreakable != null && !filters.contains(Filter.UNBREAKABLE)) { + meta.setUnbreakable(unbreakable); } // attribute modifiers 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 630b0fbd..351a7dd4 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 @@ -29,7 +29,7 @@ import java.util.UUID; * <li>lore</li> * <li>enchantments (<b>without</b> namespace support)</li> * <li>item flags</li> - * <li>unbreakability</li> + * <li>unbreakability (<b>with</b> CraftBukkit support)</li> * <li>attribute modifiers</li> * <li>custom model data</li> * </ul> @@ -128,9 +128,9 @@ public class ItemGetter14 extends ItemGetter { } // unbreakability - boolean unbreakable = config.getBoolean("unbreakable", false); - if (unbreakable && !filters.contains(Filter.UNBREAKABLE)) { - meta.setUnbreakable(true); + Boolean unbreakable = (Boolean) config.get("unbreakable"); + if (unbreakable != null && !filters.contains(Filter.UNBREAKABLE)) { + meta.setUnbreakable(unbreakable); } // attribute modifiers diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter8.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter8.java index 5f3746f4..d3405a5e 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter8.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter8.java @@ -23,15 +23,15 @@ import java.util.List; * <li>lore</li> * <li>enchantments (<b>without</b> namespace support)</li> * <li>item flags</li> - * <li>unbreakability</li> + * <li>unbreakability (<b>without</b> CraftBukkit support)</li> * </ul> * Requires at least API version 1.8. */ @SuppressWarnings({"deprecation", "DuplicatedCode", "JavaReflectionMemberAccess"}) public class ItemGetter8 extends ItemGetter { - private static final Method spigotMethod; - private static final Method setUnbreakableMethod; + private static Method spigotMethod; + private static Method setUnbreakableMethod; static { try { @@ -39,8 +39,8 @@ public class ItemGetter8 extends ItemGetter { Class<?> spigotClass = Class.forName("org.bukkit.inventory.meta.ItemMeta.Spigot"); setUnbreakableMethod = spigotClass.getMethod("setUnbreakable", boolean.class); - } catch (ClassNotFoundException | NoSuchMethodException e) { - throw new RuntimeException(e); + } catch (ClassNotFoundException | NoSuchMethodException ignored) { + // server version cannot support the method (doesn't work on CraftBukkit) } } @@ -133,12 +133,14 @@ public class ItemGetter8 extends ItemGetter { } } - // unbreakability - boolean unbreakable = config.getBoolean("unbreakable", false); - if (unbreakable && !filters.contains(Filter.UNBREAKABLE)) { - try { - setUnbreakableMethod.invoke(spigotMethod.invoke(meta), true); - } catch (IllegalAccessException | InvocationTargetException ignored) { + if (spigotMethod != null && setUnbreakableMethod != null) { + // unbreakability + Boolean unbreakable = (Boolean) config.get("unbreakable"); + if (unbreakable != null && !filters.contains(Filter.UNBREAKABLE)) { + try { + setUnbreakableMethod.invoke(spigotMethod.invoke(meta), unbreakable); + } catch (IllegalAccessException | InvocationTargetException ignored) { + } } } |
