94 lines
3.0 KiB
Java
94 lines
3.0 KiB
Java
package eu.univento.core.api.items;
|
|
|
|
import eu.univento.core.api.player.CustomPlayer;
|
|
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.InventoryDragEvent;
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* @author joethei
|
|
* @version 0.1
|
|
*/
|
|
public class InventoryManager implements Listener{
|
|
|
|
private static List<ClickInventory> inventoryList;
|
|
|
|
public static List<ClickInventory> getInventoryList() {
|
|
return inventoryList;
|
|
}
|
|
|
|
public static void addInventory(ClickInventory inventory) {
|
|
inventoryList.add(inventory);
|
|
}
|
|
|
|
public static void removeInventory(ClickInventory inventory) {
|
|
inventoryList.remove(inventory);
|
|
}
|
|
|
|
public static NamedInventory[] getNamedInventories(final CustomPlayer p) {
|
|
if(!p.hasMetadata("NamedInventory")) return new NamedInventory[2];
|
|
return ((NamedInventory[])p.getMetadata("NamedInventory").get(0).value()).clone();
|
|
}
|
|
|
|
public static NamedInventory getNamedInventory(final CustomPlayer p) {
|
|
return getNamedInventories(p)[0];
|
|
}
|
|
|
|
public static PageInventory[] getPageInventories(final CustomPlayer p) {
|
|
if(!p.hasMetadata("PageInventory")) return new PageInventory[2];
|
|
return ((PageInventory[])p.getMetadata("PageInventory").get(0).value()).clone();
|
|
}
|
|
|
|
public static PageInventory getPageInventory(CustomPlayer p) {
|
|
return getPageInventories(p)[0];
|
|
}
|
|
|
|
public static ItemStack[] generateEmptyPage(int size) {
|
|
size = (int) (Math.ceil(size / 9.0) * 9);
|
|
return new ItemStack[Math.min(54, size)];
|
|
}
|
|
|
|
@EventHandler
|
|
public void onInventoryClick(InventoryClickEvent e) {
|
|
int i = 0;
|
|
CustomPlayer p = CustomPlayer.getPlayer((Player) e.getWhoClicked());
|
|
if(e.getInventory() instanceof ClickInventory) {
|
|
for(ClickInventory inventory : inventoryList) {
|
|
if(inventory.getPlayer() == p)
|
|
inventory.onInventoryClick(e);
|
|
if(i++ == 1) break;
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onInventoryDrag(InventoryDragEvent e) {
|
|
int i = 0;
|
|
CustomPlayer p = CustomPlayer.getPlayer((Player) e.getWhoClicked());
|
|
for(ClickInventory inventory : inventoryList) {
|
|
if(inventory.getPlayer() == p) {
|
|
inventory.onInventoryDrag(e);
|
|
if(i++ == 1) break;
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onQuit(PlayerQuitEvent e) {
|
|
int i = 0;
|
|
CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer());
|
|
if(inventoryList == null) return;
|
|
for(ClickInventory inventory : inventoryList) {
|
|
if(inventory.getPlayer() == p) {
|
|
if(inventory.isInUse()) inventory.closeInventory(false);
|
|
if(i ++ == 1) break;
|
|
}
|
|
}
|
|
}
|
|
} |