Stage 12: Data storage system
This commit is contained in:
parent
82ed455cd2
commit
4fd7955d56
62 changed files with 5613 additions and 0 deletions
96
src/main/java/dev/loki/item/ItemMedkit.java
Normal file
96
src/main/java/dev/loki/item/ItemMedkit.java
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
package dev.loki.item;
|
||||
|
||||
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(),
|
||||
"§eCharges: §f" + charges + "/" + getType().getDefaultCharges(),
|
||||
"§7Right-click to heal"
|
||||
));
|
||||
|
||||
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("§aYou start healing...");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDeplete(Player player) {
|
||||
player.getInventory().setItemInMainHand(null);
|
||||
player.sendMessage("§cYour medkit has been 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));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue