Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.desle.staffmode;
- import com.desle.staffmode.actionitems.ItemRandomTeleport;
- import com.desle.staffmode.actionitems.ItemSpyInventory;
- import com.desle.staffmode.actionitems.ItemUnvanish;
- import com.desle.staffmode.actionitems.ItemVanish;
- import com.desle.staffmode.gui.ItemDataUtil;
- import java.lang.reflect.Constructor;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.logging.Logger;
- import net.minecraft.server.v1_8_R1.NBTTagCompound;
- import org.bukkit.Bukkit;
- import org.bukkit.Material;
- import org.bukkit.Sound;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.ItemFactory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- public abstract class ActionItem
- {
- protected Material material;
- protected String name;
- protected String[] lore;
- protected ItemStack itemStack;
- protected byte data;
- protected ItemType type;
- public ActionItem(Material material, byte data, String name, ItemType type, String... lore)
- {
- this.material = material;
- this.data = data;
- this.name = name;
- this.lore = lore;
- this.type = type;
- }
- public ItemStack getItemStack() {
- if (itemStack != null) {
- return itemStack;
- }
- return constructItemStack();
- }
- public abstract void onUse(Player paramPlayer);
- public void playSuccessSound(Player player) {
- player.playSound(player.getLocation(), Sound.WOOD_CLICK, 1.0F, 1.0F);
- }
- public void playErrorSound(Player player) {
- player.playSound(player.getLocation(), Sound.LAVA_POP, 1.0F, 1.0F);
- }
- public ItemStack constructItemStack()
- {
- itemStack = new ItemStack(material, 1, (short)0, Byte.valueOf(data));
- ItemMeta itemMeta = Bukkit.getItemFactory().getItemMeta(material);
- itemMeta.setDisplayName(name);
- itemMeta.setLore(Arrays.asList(lore));
- itemStack.setItemMeta(itemMeta);
- NBTTagCompound compound = ItemDataUtil.getData(itemStack);
- compound.setString("staffmode_item", type.name());
- itemStack = ItemDataUtil.setData(itemStack, compound);
- return itemStack;
- }
- public static enum ItemType {
- VANISH(ItemVanish.class),
- UNVANISH(ItemUnvanish.class),
- RANDOMTELEPORT(ItemRandomTeleport.class),
- SPYINVENTORY(ItemSpyInventory.class),
- FREEZE(com.desle.staffmode.actionitems.ItemFreeze.class);
- private final Class<? extends ActionItem> itemClass;
- public ActionItem getActionItem()
- {
- try {
- return (ActionItem)itemClass.getDeclaredConstructor(new Class[0]).newInstance(new Object[0]);
- } catch (Exception e) {
- e.printStackTrace();
- Bukkit.getLogger().warning("Failed to create " + name() + " as ActionItem."); }
- return null;
- }
- public static List<ItemType> getAllFor(StaffModePlayer staffModePlayer)
- {
- List<ItemType> itemTypes = new ArrayList();
- for (ItemType itemType : values()) {
- boolean status = true;
- switch (itemType) {
- case FREEZE:
- status = false;
- break;
- }
- if (status) {
- itemTypes.add(itemType);
- }
- }
- return itemTypes;
- }
- public static ItemType get(ItemStack itemStack) {
- NBTTagCompound compound = ItemDataUtil.getData(itemStack);
- return valueOf(compound.getString("staffmode_item"));
- }
- private ItemType(Class<? extends ActionItem> itemClass) {
- this.itemClass = itemClass;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement