123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- 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<Map.Entry<Skill, Byte>> skills;
- private final ArrayList<List<ItemStack>> pages;
- private int page;
-
- public SkillContainer(String title, EntityPlayerMP p, List<ItemStack> stacks, List<Map.Entry<Skill, Byte>> 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<ItemStack> getNextPage()
- {
- page++;
- if(page >= pages.size())
- {
- page--;
- return null;
- }
- return pages.get(page);
- }
-
- private List<ItemStack> getPreviousPage()
- {
- page--;
- if(page < 0)
- {
- page = 0;
- return null;
- }
- return pages.get(page);
- }
-
- private Map.Entry<Skill, Byte> 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<ItemStack> list = getPreviousPage();
- if(list == null)
- {
- return;
- }
- EntityInventory inv = (EntityInventory) getShownInventory();
- inv.setContents(list);
- placeButtons(inv);
- }
- else if(slot == 53)
- {
- List<ItemStack> list = getNextPage();
- if(list == null)
- {
- return;
- }
- EntityInventory inv = (EntityInventory) getShownInventory();
- inv.setContents(list);
- placeButtons(inv);
- }
- return;
- }
- if(castClickedSkill())
- {
- Map.Entry<Skill, Byte> entry = getSkill(slot);
- if(entry == null)
- {
- return;
- }
- Skill s = entry.getKey();
- if(s == null)
- {
- return;
- }
- onCastSkill(p, s, entry.getValue());
- }
- }
- }
|