97 lines
2.7 KiB
Java
97 lines
2.7 KiB
Java
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));
|
||
}
|
||
}
|