aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main
diff options
context:
space:
mode:
authorKrakenied <Krakenied1@gmail.com>2024-02-20 12:19:05 +0100
committerLeonardo Bishop <13875753+LMBishop@users.noreply.github.com>2024-02-22 16:31:48 +0000
commit16794d9398de66a7625d5bb52b85b04271237abe (patch)
treed6225a3d5a829f974df960309c44a7536a55fa55 /bukkit/src/main
parentd2b5759d7eb09bc997222288c45ccd0429160f1c (diff)
Fix ItemGetter on CraftBukkit 1.8
Improve setting item unbreakability
Diffstat (limited to 'bukkit/src/main')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter13.java8
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter14.java8
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/hook/itemgetter/ItemGetter8.java24
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) {
+ }
}
}