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;
+ }
+}