Confirmation Disband GUI Created
This commit is contained in:
@@ -21,14 +21,9 @@ public class ItemBuilder {
|
||||
this.meta = item.getItemMeta();
|
||||
}
|
||||
|
||||
public ItemBuilder(Material material, int amount, int durability) {
|
||||
this(new ItemStack(material, amount, (short) durability));
|
||||
}
|
||||
|
||||
public ItemBuilder(Material material, int amount) {
|
||||
this(material, amount, 0);
|
||||
this(new ItemStack(material, amount));
|
||||
}
|
||||
|
||||
public ItemBuilder(Material material) {
|
||||
this(material, 1);
|
||||
}
|
||||
|
||||
@@ -1,151 +0,0 @@
|
||||
package com.massivecraft.factions.util.serializable;
|
||||
|
||||
/**
|
||||
* @author Driftay
|
||||
*/
|
||||
import com.massivecraft.factions.FactionsPlugin;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
|
||||
public abstract class SaberGUI {
|
||||
public static Set<String> allGUINames = new HashSet<>();
|
||||
public static Map<UUID, SaberGUI> activeGUIs = new ConcurrentHashMap<>();
|
||||
public SaberGUI parentGUI;
|
||||
protected String title;
|
||||
protected int size;
|
||||
protected Player player;
|
||||
protected Inventory inventory;
|
||||
private Map<Integer, InventoryItem> inventoryItems;
|
||||
private String owningPluginName;
|
||||
private Runnable closeRunnable;
|
||||
|
||||
public SaberGUI(Player player, String title, int size) {
|
||||
this(player, title, size, InventoryType.CHEST);
|
||||
}
|
||||
|
||||
public SaberGUI(Player player, String title, int size, InventoryType type) {
|
||||
this.inventoryItems = new HashMap<>();
|
||||
this.inventory = type == InventoryType.CHEST ? Bukkit.createInventory(null, size, title) : Bukkit.createInventory(null, type, title);
|
||||
this.player = player;
|
||||
this.size = size;
|
||||
this.title = title;
|
||||
allGUINames.add(this.title);
|
||||
}
|
||||
|
||||
public SaberGUI setParentGUI(SaberGUI parent) {
|
||||
this.parentGUI = parent;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void onUnknownItemClick(InventoryClickEvent event) {
|
||||
}
|
||||
|
||||
public abstract void redraw();
|
||||
|
||||
public void openGUI(JavaPlugin owning) {
|
||||
this.owningPluginName = owning.getName();
|
||||
SaberGUI currentlyActive = activeGUIs.get(this.player.getUniqueId());
|
||||
if (currentlyActive != null) {
|
||||
Bukkit.getLogger().info("Closing already open menu first!");
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(owning, () -> {
|
||||
currentlyActive.close();
|
||||
activeGUIs.put(this.player.getUniqueId(), this);
|
||||
this.redraw();
|
||||
this.player.openInventory(this.inventory);
|
||||
});
|
||||
} else {
|
||||
activeGUIs.put(this.player.getUniqueId(), this);
|
||||
this.redraw();
|
||||
this.player.openInventory(this.inventory);
|
||||
}
|
||||
}
|
||||
|
||||
public void setItem(int slot, InventoryItem inventoryItem) {
|
||||
if (inventoryItem != null && inventoryItem.getItem() != null) {
|
||||
this.inventoryItems.put(slot, inventoryItem);
|
||||
this.inventory.setItem(slot, inventoryItem.getItem());
|
||||
} else {
|
||||
this.removeItem(slot);
|
||||
}
|
||||
}
|
||||
|
||||
public void closeWithDelay() {
|
||||
this.closeWithDelay(null);
|
||||
}
|
||||
|
||||
public void closeWithDelay(Consumer<Player> afterClose) {
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(FactionsPlugin.instance, () -> {
|
||||
this.player.closeInventory();
|
||||
if (afterClose != null) {
|
||||
afterClose.accept(this.player);
|
||||
}
|
||||
|
||||
}, 1L);
|
||||
}
|
||||
|
||||
public void setItem(int slot, ItemStack item, Runnable runnable) {
|
||||
this.setItem(slot, (new InventoryItem(item)).click(runnable));
|
||||
}
|
||||
|
||||
public void onInventoryClose() {
|
||||
if (this.closeRunnable != null) {
|
||||
this.closeRunnable.run();
|
||||
}
|
||||
}
|
||||
|
||||
public void close() {
|
||||
this.onInventoryClose();
|
||||
this.player.closeInventory();
|
||||
}
|
||||
|
||||
public void removeItem(int slot) {
|
||||
this.inventory.setItem(slot, null);
|
||||
this.inventoryItems.remove(slot);
|
||||
}
|
||||
|
||||
public SaberGUI setOnClose(Runnable runnable) {
|
||||
this.closeRunnable = runnable;
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean isInventory(Inventory inventory) {
|
||||
return this.inventory.equals(inventory);
|
||||
}
|
||||
|
||||
public static SaberGUI getActiveGUI(UUID uuid) { return activeGUIs.get(uuid); }
|
||||
|
||||
public static void removeGUI(UUID uuid) {
|
||||
activeGUIs.remove(uuid);
|
||||
}
|
||||
|
||||
public SaberGUI getParentGUI() {
|
||||
return this.parentGUI;
|
||||
}
|
||||
|
||||
public Map<Integer, InventoryItem> getInventoryItems() {
|
||||
return this.inventoryItems;
|
||||
}
|
||||
|
||||
public String getOwningPluginName() {
|
||||
return this.owningPluginName;
|
||||
}
|
||||
|
||||
public void setOwningPluginName(String owningPluginName) {
|
||||
this.owningPluginName = owningPluginName;
|
||||
}
|
||||
|
||||
public Runnable getCloseRunnable() {
|
||||
return this.closeRunnable;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user