diff --git a/Changelog.txt b/Changelog.txt index ed9b31f68..93bd05e84 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,6 @@ +Version 2.2.014 + Fixed a bug where Luck Of The Sea was being applied for Super Breaker (and other abilities) + Version 2.2.013 Added Breeze to experience.yml Added Bogged to experience.yml diff --git a/pom.xml b/pom.xml index 463e67573..85f2e8065 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.gmail.nossr50.mcMMO mcMMO - 2.2.013 + 2.2.014-SNAPSHOT mcMMO https://github.com/mcMMO-Dev/mcMMO diff --git a/src/main/java/com/gmail/nossr50/util/EnchantmentMapper.java b/src/main/java/com/gmail/nossr50/util/EnchantmentMapper.java index f4be9209c..0b948dd96 100644 --- a/src/main/java/com/gmail/nossr50/util/EnchantmentMapper.java +++ b/src/main/java/com/gmail/nossr50/util/EnchantmentMapper.java @@ -1,8 +1,13 @@ package com.gmail.nossr50.util; import com.gmail.nossr50.mcMMO; +import org.bukkit.NamespacedKey; import org.bukkit.Registry; import org.bukkit.enchantments.Enchantment; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Locale; public class EnchantmentMapper { private final mcMMO pluginRef; @@ -20,12 +25,18 @@ public class EnchantmentMapper { this.featherFalling = initFeatherFalling(); this.luckOfTheSea = initLuckOfTheSea(); } + + private static @Nullable Enchantment mockSpigotMatch(@NotNull String input) { + // Replicates match() behaviour for older versions lacking this API + final String filtered = input.toLowerCase(Locale.ROOT).replaceAll("\\s+", "_"); + final NamespacedKey namespacedKey = NamespacedKey.fromString(filtered); + return (namespacedKey != null) ? Registry.ENCHANTMENT.get(namespacedKey) : null; + } private Enchantment initLuckOfTheSea() { - // TODO: Make use of match if present -// if (Registry.ENCHANTMENT.match("luck_of_the_sea") != null) { -// return Registry.ENCHANTMENT.match("luck_of_the_sea"); -// } + if (mockSpigotMatch("luck_of_the_sea") != null) { + return mockSpigotMatch("luck_of_the_sea"); + } // Look for the enchantment by name for (Enchantment enchantment : Registry.ENCHANTMENT) { @@ -43,9 +54,9 @@ public class EnchantmentMapper { } private Enchantment initFeatherFalling() { -// if (Registry.ENCHANTMENT.match("feather_falling") != null) { -// return Registry.ENCHANTMENT.match("feather_falling"); -// } + if (mockSpigotMatch("feather_falling") != null) { + return mockSpigotMatch("feather_falling"); + } // Look for the enchantment by name for (Enchantment enchantment : Registry.ENCHANTMENT) { @@ -63,9 +74,9 @@ public class EnchantmentMapper { } private Enchantment initInfinity() { -// if (Registry.ENCHANTMENT.match("infinity") != null) { -// return Registry.ENCHANTMENT.match("infinity"); -// } + if (mockSpigotMatch("infinity") != null) { + return mockSpigotMatch("infinity"); + } // Look for the enchantment by name for (Enchantment enchantment : Registry.ENCHANTMENT) { @@ -83,9 +94,9 @@ public class EnchantmentMapper { } private Enchantment initEfficiency() { -// if (Registry.ENCHANTMENT.match("efficiency") != null) { -// return Registry.ENCHANTMENT.match("efficiency"); -// } + if (mockSpigotMatch("efficiency") != null) { + return mockSpigotMatch("efficiency"); + } // Look for the enchantment by name for (Enchantment enchantment : Registry.ENCHANTMENT) { @@ -103,9 +114,9 @@ public class EnchantmentMapper { } private Enchantment initUnbreaking() { -// if (Registry.ENCHANTMENT.match("unbreaking") != null) { -// return Registry.ENCHANTMENT.match("unbreaking"); -// } + if (mockSpigotMatch("unbreaking") != null) { + return mockSpigotMatch("unbreaking"); + } // Look for the enchantment by name for (Enchantment enchantment : Registry.ENCHANTMENT) {