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