Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class AbstractGui implements Listener, IGui {
- @Getter private Inventory inventory;
- @Getter @Setter private InventoryType inventoryType = InventoryType.CHEST;
- @Getter @Setter private String title, key;
- @Getter @Setter private int slots;
- @Getter private int maxPages;
- @Getter private int currentPage = 1;
- @Getter private final Map<Integer, Map<Integer, ItemStack>> pages = new HashMap<>();
- @Getter private final HashMap<Integer, ItemStack> items = new HashMap<>();
- public abstract void run(Player player);
- public Inventory initializeInventory() throws InventoryDoesNotExistException {
- if (inventoryType.equals(InventoryType.CHEST)) {
- inventory = Bukkit.createInventory(null, slots, title);
- Map<Integer, ItemStack> items = pages.get(currentPage);
- items.forEach((slot, item) -> inventory.setItem(slot, item));
- return inventory;
- } else if (inventoryType.equals(InventoryType.ANVIL)) {
- return Bukkit.createInventory(null, InventoryType.ANVIL, title);
- } else {
- throw new InventoryDoesNotExistException();
- }
- }
- private void queueItems(Player player) {
- pages.get(currentPage).forEach((slot, item) -> inventory.setItem(slot, item));
- player.openInventory(inventory);
- }
- public void nextPage(Player player) {
- if (currentPage < maxPages) {
- currentPage++;
- this.queueItems(player);
- } else {
- player.closeInventory();
- player.sendMessage(MessagesUtils.getMessage("gui.last-page"));
- }
- }
- public void initializeSlots() {
- if (items.keySet().size() > slots) {
- int pagesEst = items.keySet().size() / slots;
- boolean leftOver = items.keySet().size() % slots > 0;
- if (leftOver || pagesEst == 0) {
- pagesEst++;
- }
- for (int i = 0; i < items.size(); i++) {
- Map<Integer, ItemStack> page = new HashMap<>();
- // finish this please ty
- }
- } else {
- Map<Integer, ItemStack> page = new HashMap<>();
- for (int slot : items.keySet()) {
- page.put(slot, items.get(slot));
- pages.put(1, page);
- }
- }
- }
- @EventHandler
- public void onInventoryClick(final InventoryClickEvent e) {
- if (e.getInventory() == inventory) {
- e.setCancelled(true);
- if (e.getRawSlot() == slots) {
- }
- }
- }
- @EventHandler
- public void onInventoryDrag(final InventoryDragEvent e) {
- if (e.getInventory() == inventory) {
- e.setCancelled(true);
- }
- }
- @EventHandler
- public void onInventoryMoveItem(final InventoryMoveItemEvent e) {
- if (e.getInitiator() == inventory) {
- e.setCancelled(true);
- }
- }
- }
Add Comment
Please, Sign In to add comment