diff --git a/src/de/steamwar/inventory/InvCallback.java b/src/de/steamwar/inventory/InvCallback.java new file mode 100644 index 0000000..5e23b20 --- /dev/null +++ b/src/de/steamwar/inventory/InvCallback.java @@ -0,0 +1,6 @@ +package de.steamwar.inventory; + +public interface InvCallback { + + public void clicked(); +} diff --git a/src/de/steamwar/inventory/SWInventory.java b/src/de/steamwar/inventory/SWInventory.java new file mode 100644 index 0000000..13f04a7 --- /dev/null +++ b/src/de/steamwar/inventory/SWInventory.java @@ -0,0 +1,243 @@ +package de.steamwar.inventory; + +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; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +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.*; + +public class SWInventory implements Listener, Inventory { + + private Player player; + private Map callbacks; + private int inventorySize; + private ItemStack[] contents; + private String title; + + public SWInventory(Player p, int size, String t){ + title = t; + callbacks = new HashMap<>(); + player = p; + inventorySize = size; + contents = new ItemStack[inventorySize]; + Bukkit.getPluginManager().registerEvents(this, Core.getInstance()); + } + + public void addCloseCallback(InvCallback c){ + callbacks.put(-1, c); + } + + public void setItem(int pos, Material m, String name, InvCallback c){ + setItem(pos, m, name, null, 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); + } + + public void open(){ + player.openInventory(this); + } + + @EventHandler + public void onInventoryClick(InventoryClickEvent e){ + System.out.println("Click"); + e.setCancelled(true); + if(callbacks.containsKey(e.getRawSlot())) + callbacks.get(e.getSlot()).clicked(); + } + + @EventHandler + public void onInventoryClose(InventoryCloseEvent e){ + System.out.println("Close"); + InventoryClickEvent.getHandlerList().unregister(this); + InventoryCloseEvent.getHandlerList().unregister(this); + if(callbacks.containsKey(-1)) + callbacks.get(-1).clicked(); + } + + + @Override + public int getSize() {return inventorySize;} + @Override + public int getMaxStackSize() {return 999;} + @Override + public void setMaxStackSize(int size) {} + + @Override + public String getName() { + return title; + } + + @Override + public ItemStack getItem(int index) { + return contents[index]; + } + + @Override + public void setItem(int index, ItemStack item) {} + + @Override + public HashMap addItem(ItemStack... items) throws IllegalArgumentException {return null;} + + @Override + public HashMap removeItem(ItemStack... items) throws IllegalArgumentException {return null;} + @Override + public ItemStack[] getContents() {return contents;} + @Override + public void setContents(ItemStack[] items) throws IllegalArgumentException {} + @Override + public ItemStack[] getStorageContents() {return contents;} + @Override + public void setStorageContents(ItemStack[] items) throws IllegalArgumentException {} + + @Override + public boolean contains(int materialId) { + return false; + } + @Override + public boolean contains(Material material) throws IllegalArgumentException { + return false; + } + @Override + public boolean contains(ItemStack item) { + return false; + } + + @Override + public boolean contains(int materialId, int amount) { + return false; + } + + @Override + public boolean contains(Material material, int amount) throws IllegalArgumentException { + return false; + } + + @Override + public boolean contains(ItemStack item, int amount) { + return false; + } + + @Override + public boolean containsAtLeast(ItemStack item, int amount) { + return false; + } + + @Override + public HashMap all(int materialId) { + return null; + } + + @Override + public HashMap all(Material material) throws IllegalArgumentException { + return null; + } + + @Override + public HashMap all(ItemStack item) { + return null; + } + + @Override + public int first(int materialId) { + return 0; + } + + @Override + public int first(Material material) throws IllegalArgumentException { + return 0; + } + + @Override + public int first(ItemStack item) { + return 0; + } + + @Override + public int firstEmpty() { + return 0; + } + + @Override + public void remove(int materialId) { + + } + + @Override + public void remove(Material material) throws IllegalArgumentException { + + } + + @Override + public void remove(ItemStack item) { + + } + + @Override + public void clear(int index) { + + } + + @Override + public void clear() { + + } + + @Override + public List getViewers() { + List l = new ArrayList<>(); + l.add(player); + return l; + } + + @Override + public String getTitle() { + return title; + } + + @Override + public InventoryType getType() { + return InventoryType.CHEST; + } + + @Override + public InventoryHolder getHolder() { + return player; + } + + @Override + public ListIterator iterator() { + return null; + } + + @Override + public ListIterator iterator(int index) { + return null; + } + + @Override + public Location getLocation() { + return null; + } +}