From eefd1769066d2f4b336cac506d8201de137a1fd3 Mon Sep 17 00:00:00 2001 From: cervinakuy <16023430+cervinakuy@users.noreply.github.com> Date: Sun, 22 Sep 2024 15:02:10 -0700 Subject: [PATCH] Fixed Witch Potion Switcher not working on 1.21+ (NoClassDefFoundError org/bukkit/potion/Potion error) (#269) --- .../kitpvp/listener/ItemListener.java | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/planetgallium/kitpvp/listener/ItemListener.java b/src/main/java/com/planetgallium/kitpvp/listener/ItemListener.java index dd10c7b..2848476 100644 --- a/src/main/java/com/planetgallium/kitpvp/listener/ItemListener.java +++ b/src/main/java/com/planetgallium/kitpvp/listener/ItemListener.java @@ -26,6 +26,7 @@ import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.Potion; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; @@ -33,7 +34,6 @@ import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; -import java.util.Objects; import java.util.Random; public class ItemListener implements Listener { @@ -502,16 +502,31 @@ private int getItemByMeta(Material type, String displayName, Player p) { } private ItemStack createWitchPotion() { - Potion potion = new Potion(pickPotion(), 1); - potion.setSplash(true); + PotionType randomPotionType = randomPotionType(); - ItemStack potionStack = potion.toItemStack(1); - Toolkit.appendToLore(potionStack, "X"); + if (Toolkit.versionToNumber() >= 121) { // 1.21+ + ItemStack potionStack = new ItemStack(Material.SPLASH_POTION); + Toolkit.appendToLore(potionStack, "X"); + PotionMeta potionMeta = (PotionMeta) potionStack.getItemMeta(); - return potionStack; + if (potionMeta != null) { + potionMeta.setBasePotionType(randomPotionType); + potionStack.setItemMeta(potionMeta); + } + + return potionStack; + } else { // pre 1.21 + Potion potion = new Potion(randomPotionType, 1); + potion.setSplash(true); + + ItemStack potionStack = potion.toItemStack(1); + Toolkit.appendToLore(potionStack, "X"); + + return potionStack; + } } - private PotionType pickPotion() { + private PotionType randomPotionType() { PotionType potion = null; Random ran = new Random();