From 6f430209eaa9756ef6821a6fd02352d8944dfdfa Mon Sep 17 00:00:00 2001 From: Lixfel Date: Tue, 4 Jun 2019 15:54:55 +0200 Subject: [PATCH] Finish of first GUI-API --- src/de/steamwar/inventory/SWInventory.java | 25 ++++--- src/de/steamwar/inventory/SWItem.java | 78 ++++++++++++++++++++++ 2 files changed, 92 insertions(+), 11 deletions(-) create mode 100644 src/de/steamwar/inventory/SWItem.java diff --git a/src/de/steamwar/inventory/SWInventory.java b/src/de/steamwar/inventory/SWInventory.java index 13f04a7..322eb82 100644 --- a/src/de/steamwar/inventory/SWInventory.java +++ b/src/de/steamwar/inventory/SWInventory.java @@ -4,7 +4,6 @@ import de.warking.hunjy.Core; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -15,7 +14,6 @@ import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; import java.util.*; @@ -36,23 +34,28 @@ public class SWInventory implements Listener, Inventory { Bukkit.getPluginManager().registerEvents(this, Core.getInstance()); } + public SWInventory(Player p, int size, String t, Map items){ + this(p, size, t); + items.forEach(this::setItem); + open(); + } + public void addCloseCallback(InvCallback c){ callbacks.put(-1, c); } + public void setItem(int pos, SWItem item){ + contents[pos] = item.getItemStack(); + callbacks.put(pos, item.getCallback()); + } + public void setItem(int pos, Material m, String name, InvCallback c){ - setItem(pos, m, name, null, false, c); + setItem(pos, m, name, new ArrayList<>(), false, c); } public void setItem(int pos, Material m, String name, List lore, boolean e, InvCallback c){ - contents[pos] = new ItemStack(m, 1, (short)0); - ItemMeta im = contents[pos].getItemMeta(); - im.setDisplayName(name); - im.setLore(lore); - if(e) - im.addEnchant(Enchantment.DURABILITY , 10, true); - contents[pos].setItemMeta(im); - callbacks.put(pos, c); + SWItem item = new SWItem(m, name, lore, e, c); + setItem(pos, item); } public void open(){ diff --git a/src/de/steamwar/inventory/SWItem.java b/src/de/steamwar/inventory/SWItem.java new file mode 100644 index 0000000..8e4c4fe --- /dev/null +++ b/src/de/steamwar/inventory/SWItem.java @@ -0,0 +1,78 @@ +package de.steamwar.inventory; + +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.List; + +public class SWItem { + + private ItemStack itemStack; + private ItemMeta itemMeta; + private InvCallback callback; + + public SWItem(){ + itemStack = new ItemStack(Material.AIR); + itemMeta = itemStack.getItemMeta(); + } + + public SWItem(Material material, String name, List lore, boolean enchanted, InvCallback c){ + itemStack = new ItemStack(material, 1, (short)0); + itemMeta = itemStack.getItemMeta(); + itemMeta.setDisplayName(name); + if(lore != null && !lore.isEmpty()) + itemMeta.setLore(lore); + if(enchanted) + itemMeta.addEnchant(Enchantment.DURABILITY , 10, true); + itemStack.setItemMeta(itemMeta); + callback = c; + } + + public ItemStack getItemStack() { + return itemStack; + } + + public void setItemStack(ItemStack itemStack) { + this.itemStack = itemStack; + this.itemMeta = itemStack.getItemMeta(); + } + + public ItemMeta getItemMeta() { + return itemMeta; + } + + public void setItemMeta(ItemMeta itemMeta) { + this.itemMeta = itemMeta; + this.itemStack.setItemMeta(itemMeta); + } + + public InvCallback getCallback() { + return callback; + } + + public void setCallback(InvCallback callback) { + this.callback = callback; + } + + public void setName(String name){ + itemMeta.setDisplayName(name); + itemStack.setItemMeta(itemMeta); + } + + public void setLore(List lore){ + itemMeta.setLore(lore); + itemStack.setItemMeta(itemMeta); + } + + public void setEnchanted(boolean enchanted){ + if(enchanted){ + itemMeta.addEnchant(Enchantment.DURABILITY , 10, true); + itemStack.setItemMeta(itemMeta); + }else{ + itemMeta.removeEnchant(Enchantment.DURABILITY); + itemStack.setItemMeta(itemMeta); + } + } +}