package me.km.skills; import java.util.ArrayList; import java.util.List; import java.util.Map; import me.km.inventory.CustomContainer; import me.km.inventory.EntityInventory; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Items; import net.minecraft.inventory.ClickType; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; public class SkillContainer extends CustomContainer { private final List> skills; private final ArrayList> pages; private int page; public SkillContainer(String title, EntityPlayerMP p, List stacks, List> list) { super(title, stacks.size() % 9 != 0 ? ((stacks.size() / 9) + 1) + 9 : stacks.size(), p); //System.out.println("ANZAHL DER SKILLS: " + stacks.size()); EntityInventory inv = (EntityInventory) super.getShownInventory(); if(inv.getSizeInventory() > 45) { inv.setContents(stacks.subList(0, 45)); placeButtons(inv); } else { inv.setContents(stacks); } this.skills = list; this.page = 0; if(stacks.size() > 45) { this.pages = new ArrayList<>(); int size = stacks.size(); int counter = 0; while(counter < size) { pages.add(stacks.subList(counter, Math.min(counter + 45, size))); counter += 45; } } else { this.pages = null; } } private List getNextPage() { page++; if(page >= pages.size()) { page--; return null; } return pages.get(page); } private List getPreviousPage() { page--; if(page < 0) { page = 0; return null; } return pages.get(page); } private Map.Entry getSkill(int slot) { slot += page * 45; if(skills == null || slot >= skills.size()) { return null; } return skills.get(slot); } private void placeButtons(IInventory inv) { inv.setInventorySlotContents(45, new ItemStack(Items.IRON_DOOR).setStackDisplayName("§6Zurück")); inv.setInventorySlotContents(53, new ItemStack(Items.OAK_DOOR).setStackDisplayName("§Vorwärts")); } public boolean castClickedSkill() { return false; } public void onCastSkill(EntityPlayerMP p, Skill s, byte level) { } @Override public void onCanceledClick(int slot, int dragType, ClickType clickTypeIn, EntityPlayerMP p) { if(slot >= 45) { if(slot == 45) { List list = getPreviousPage(); if(list == null) { return; } EntityInventory inv = (EntityInventory) getShownInventory(); inv.setContents(list); placeButtons(inv); } else if(slot == 53) { List list = getNextPage(); if(list == null) { return; } EntityInventory inv = (EntityInventory) getShownInventory(); inv.setContents(list); placeButtons(inv); } return; } if(castClickedSkill()) { Map.Entry entry = getSkill(slot); if(entry == null) { return; } Skill s = entry.getKey(); if(s == null) { return; } onCastSkill(p, s, entry.getValue()); } } }