package dev.loki.item; import dev.loki.mdbd; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; import java.util.Arrays; public class ItemMedkit implements BaseItem { private static final NamespacedKey ITEM_KEY = new NamespacedKey("mdbd", "item_type"); private static final NamespacedKey CHARGES_KEY = new NamespacedKey("mdbd", "charges"); private final int charges; public ItemMedkit() { this(ItemType.MEDKIT.getDefaultCharges()); } public ItemMedkit(int charges) { this.charges = charges; } @Override public ItemType getType() { return ItemType.MEDKIT; } @Override public ItemStack createItemStack() { ItemStack item = new ItemStack(Material.PAPER); ItemMeta meta = item.getItemMeta(); if (meta != null) { meta.setDisplayName("§a" + getType().getDisplayName()); meta.setLore(Arrays.asList( "§7" + getType().getDescription(), "§eЗаряды: §f" + charges + "/" + getType().getDefaultCharges(), "§7ПКМ — лечиться" )); PersistentDataContainer pdc = meta.getPersistentDataContainer(); pdc.set(ITEM_KEY, PersistentDataType.STRING, getItemId()); pdc.set(CHARGES_KEY, PersistentDataType.INTEGER, charges); item.setItemMeta(meta); } return item; } @Override public boolean canUse(Player player) { return charges > 0; } @Override public void onUse(Player player) { if (charges > 0) { player.sendMessage(mdbd.getInstance().getConfigManager().getMessages().get("survivor.medkit.start")); } } @Override public void onDeplete(Player player) { player.getInventory().setItemInMainHand(null); player.sendMessage(mdbd.getInstance().getConfigManager().getMessages().get("survivor.medkit.depleted")); } @Override public int getCharges() { return charges; } @Override public void setCharges(int charges) { } @Override public boolean isDepleted() { return charges <= 0; } @Override public String getItemId() { return "MEDKIT"; } public static boolean isMedkit(ItemStack item) { if (item == null || !item.hasItemMeta()) return false; PersistentDataContainer pdc = item.getItemMeta().getPersistentDataContainer(); return "MEDKIT".equals(pdc.get(ITEM_KEY, PersistentDataType.STRING)); } }