Revisions for untitled paste

View the changes made to this paste.

unlisted ⁨1⁩ ⁨file⁩ 2022-03-17 22:09:05 UTC

pastefile1

@@ -0,0 +1,106 @@

+package me.alexmc.blockcosmetics.inventories;
+
+import com.google.common.base.Enums;
+import fr.minuskube.inv.ClickableItem;
+import fr.minuskube.inv.SmartInventory;
+import fr.minuskube.inv.content.*;
+import me.alexmc.blockcosmetics.BlockCosmetics;
+import me.alexmc.blockcosmetics.enums.ConfigSettings;
+import me.alexmc.blockcosmetics.objects.CosmeticUser;
+import me.alexmc.nicecore.objects.PlaceHolder;
+import me.alexmc.nicecore.objects.builders.ItemBuilder;
+import me.alexmc.nicecore.utils.ColorUtils;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+
+public class BlocksMenu implements InventoryProvider {
+    private static final BlockCosmetics plugin = BlockCosmetics.getInstance();
+
+    private static SmartInventory BLOCKS_MENU = SmartInventory.builder()
+            .provider(new BlocksMenu())
+            .id("blocks_menu")
+            .title(ConfigSettings.BLOCKS_INVENTORY_TITLE.getFormattedString())
+            .size(3, 9)
+            .build();
+
+
+    @Override
+    public void init(Player player, InventoryContents contents) {
+        Pagination pagination = contents.pagination();
+        CosmeticUser user = plugin.getUserHandler().getUser(player.getUniqueId()).get();
+        Material material = Enums.getIfPresent(Material.class, ConfigSettings.BLOCKS_INVENTORY_FILL.getString()).or(Material.GRAY_STAINED_GLASS_PANE);
+
+        contents.fill(ClickableItem.empty(new ItemStack(material)));
+
+        int size = user.getOwnedMaterials().size();
+        ClickableItem[] clickableItems = new ClickableItem[size];
+
+        for (int i = 0; i < size; i++) {
+            clickableItems[i] = ClickableItem.empty(new ItemStack(user.getOwnedMaterials().get(i)));
+        }
+
+        pagination.setItems(clickableItems);
+        pagination.setItemsPerPage(18);
+
+        SlotIterator slotIterator = contents.newIterator(SlotIterator.Type.HORIZONTAL, new SlotPos(0, 0));
+
+        slotIterator.allowOverride(true);
+        pagination.addToIterator(slotIterator);
+
+        ItemStack previousPage = new ItemBuilder()
+                .material(Material.ARROW)
+                .displayName(ColorUtils.miniMessage(ConfigSettings.PREVIOUS_PAGE_NAME.getString()))
+                .lore(ConfigSettings.PREVIOUS_PAGE_LORE.getList())
+                .build();
+
+        ItemStack nextPage = new ItemBuilder()
+                .material(Material.ARROW)
+                .displayName(ColorUtils.miniMessage(ConfigSettings.NEXT_PAGE_NAME.getString()))
+                .lore(ConfigSettings.NEXT_PAGE_LORE.getList())
+                .build();
+
+        ItemStack page = new ItemBuilder()
+                .material(Material.PAPER)
+                .displayName(ColorUtils.miniMessage(ConfigSettings.PAGE_NAME.getString(new PlaceHolder("page", "0"))))
+                .lore(ConfigSettings.PAGE_LORE.getList())
+                .build();
+
+        contents.set(2, 3, ClickableItem.of(previousPage, e -> BLOCKS_MENU.open(player, pagination.previous().getPage())));
+        contents.set(2, 5, ClickableItem.of(nextPage, e -> BLOCKS_MENU.open(player, pagination.next().getPage())));
+        contents.set(2, 4, ClickableItem.empty(page));
+    }
+
+    @Override
+    public void update(Player player, InventoryContents contents) {
+        Pagination pagination = contents.pagination();
+
+        int state = contents.property("state", 0);
+        contents.setProperty("state", state + 1);
+
+        if (state % 5 != 0) {
+            return;
+        }
+
+        ItemStack page = new ItemBuilder()
+                .material(Material.PAPER)
+                .displayName(ColorUtils.miniMessage(ConfigSettings.PAGE_NAME.getString(new PlaceHolder("page", pagination.getPage() + ""))))
+                .lore(ConfigSettings.PAGE_LORE.getList())
+                .build();
+
+        contents.set(2, 4, ClickableItem.empty(page));
+    }
+
+    public static void resetInventory() {
+        BLOCKS_MENU = SmartInventory.builder()
+                .provider(new BlocksMenu())
+                .id("blocks_menu")
+                .title(ConfigSettings.BLOCKS_INVENTORY_TITLE.getFormattedString())
+                .size(3, 9)
+                .build();
+    }
+
+    public static SmartInventory getBlocksMenu() {
+        return BLOCKS_MENU;
+    }
+}