BetterTridents/src/main/java/de/jeff_media/bettertridents/utils/EnchantmentUtils.java

57 lines
2.0 KiB
Java

package de.jeff_media.bettertridents.utils;
import de.jeff_media.bettertridents.Main;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.entity.Trident;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataType;
public class EnchantmentUtils {
public static int getLevelFromTrident(Player player, Enchantment enchantment) {
ItemStack item = player.getInventory().getItemInMainHand();
if(item.getType()!= Material.TRIDENT) {
item = player.getInventory().getItemInOffHand();
}
if(item.getType()!=Material.TRIDENT) return 0;
if (!item.hasItemMeta()) return 0;
ItemMeta meta = item.getItemMeta();
if (meta.hasEnchant(enchantment)) {
return meta.getEnchantLevel(enchantment);
}
return 0;
}
public static int getImpaling(Trident trident) {
return trident.getPersistentDataContainer().getOrDefault(Main.IMPALING_TAG, PersistentDataType.INTEGER, 0);
}
public static void registerImpaling(Trident trident, int level) {
if(level == 0) return;
trident.getPersistentDataContainer().set(Main.IMPALING_TAG, PersistentDataType.INTEGER, level);
}
public static boolean hasLoyalty(Trident trident) {
return trident.getItem().getEnchantments().containsKey(Enchantment.LOYALTY);
}
public static void registerLoyalty(Trident trident, int level) {
if(level == 0) return;
trident.getPersistentDataContainer().set(Main.LOYALTY_TAG, PersistentDataType.INTEGER, level);
}
public static boolean isOffhandThrown(Trident trident) {
return trident.getPersistentDataContainer().has(Main.OFFHAND_TAG, PersistentDataType.BYTE);
}
public static boolean hasLoyalty(ItemStack item) {
if (!item.hasItemMeta()) return false;
ItemMeta meta = item.getItemMeta();
return meta.hasEnchant(Enchantment.LOYALTY);
}
}