Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @EventHandler
- public void onClick(InventoryCloseEvent e) {
- Map<String, Integer> map = new HashMap<>();
- List<String> items = new ArrayList<>();
- items.add("REPEATER");
- Inventory clickedInventory = e.getView().getTopInventory();
- Player player = (Player) e.getPlayer();
- InventoryHolder inventoryHolder = InventoryHolder.getInstance();
- Location location = SerializeUtil.deserializeLocation(CompMetadata.getMetadata(player, CHEST_METADATA));
- if (!inventoryHolder.getInventory(location).contains(clickedInventory)) {
- String matrial;
- int number;
- String item;
- String stringtes;
- Map<List<Integer>, Integer> slots = countItems(e.getInventory());
- for (Crafting string : Crafting.values()) {
- stringtes = string.toString();
- for (String itemas : items) {
- item = itemas;
- for (Map.Entry<List<Integer>, Integer> entry : slots.entrySet()) {
- for (int page : entry.getKey()) {
- int amount = 0;
- ItemStack itemStack1 = e.getInventory().getItem(page);
- if (item.equals(String.valueOf(Crafting.valueOf(stringtes))) && itemStack1 != null) {
- if (itemStack1.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialName())) {
- amount += itemStack1.getAmount();
- map.put(itemStack1.getType().toString(), amount);
- } else if (itemStack1.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialNames1())) {
- amount += itemStack1.getAmount();
- map.put(itemStack1.getType().toString(), amount);
- } else if (itemStack1.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialNames2())) {
- amount += itemStack1.getAmount();
- map.put(itemStack1.getType().toString(), amount);
- }
- }
- }
- }
- }
- for (Map.Entry<String, Integer> entrys : map.entrySet()) {
- matrial = entrys.getKey();
- number = entrys.getValue();
- for (String itemse : items) {
- System.out.println("test test " + itemse + " " + matrial + " " + number + " " + map.get(Crafting.valueOf(stringtes).getmatrialName()));
- if (number >= Crafting.valueOf(stringtes).getAmontNeededCrafting() && map.get(Crafting.valueOf(stringtes).getmatrialName()) != null) {
- System.out.println(Crafting.valueOf(stringtes).getmatrialNames2() + Crafting.valueOf(stringtes).getAmontNeededCrafting());
- if (Objects.equals(matrial, Crafting.valueOf(stringtes).getmatrialName()) && Crafting.valueOf(stringtes).getmatrialNames1() == null && Crafting.valueOf(stringtes).getmatrialNames2() == null) {
- if (itemse.equals(String.valueOf(Crafting.valueOf(stringtes)))) {
- System.out.println("crafting values " + Crafting.valueOf(stringtes).getmatrialName() + " " + Crafting.valueOf(stringtes).getAmontNeededCrafting() + " " + Crafting.valueOf(stringtes).getNumberOutput());
- e.getInventory().remove(Material.valueOf(Crafting.valueOf(stringtes).getmatrialName()));
- Material getmatrialName = Material.valueOf(Crafting.valueOf(stringtes).name());
- System.out.println("matrial " + map.get(Crafting.valueOf(stringtes).getmatrialName()));
- e.getInventory().addItem(new ItemStack(getmatrialName, Crafting.valueOf(stringtes).getNumberOutput() * map.get(Crafting.valueOf(stringtes).getmatrialName())));
- return;
- }
- } else if ((Objects.equals(matrial, Crafting.valueOf(stringtes).getmatrialName()) || Crafting.valueOf(stringtes).getmatrialName() != null) && Crafting.valueOf(stringtes).getmatrialNames1() != null && Crafting.valueOf(stringtes).getmatrialNames2() != null) {
- //System.out.println("matrial of stone " + map.get(Crafting.valueOf(stringtes).getmatrialName()));
- if (itemse.equals(String.valueOf(Crafting.valueOf(stringtes))) &&
- map.get(Crafting.valueOf(stringtes).getmatrialName()) >= Crafting.valueOf(stringtes).getAmontNeededCrafting() &&
- map.get(Crafting.valueOf(stringtes).getmatrialNames1()) >= Crafting.valueOf(stringtes).getAmontNeededCrafting1() &&
- map.get(Crafting.valueOf(stringtes).getmatrialNames2()) >= Crafting.valueOf(stringtes).getAmontNeededCrafting2()) {
- for (Map.Entry<List<Integer>, Integer> entryes : slots.entrySet()) {
- for (int page : entryes.getKey()) {
- ItemStack itemStack = e.getInventory().getItem(page);
- System.out.println(itemStack);
- if (itemStack.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialName()))
- itemStack.setAmount(itemStack.getAmount() - Crafting.valueOf(stringtes).getAmontNeededCrafting());
- else if (itemStack.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialNames1()))
- itemStack.setAmount(itemStack.getAmount() - Crafting.valueOf(stringtes).getAmontNeededCrafting1());
- else if (itemStack.getType().toString().equals(Crafting.valueOf(stringtes).getmatrialNames2()))
- itemStack.setAmount(itemStack.getAmount() - Crafting.valueOf(stringtes).getAmontNeededCrafting2());
- }
- }
- Material getmatrialName = Material.valueOf(Crafting.valueOf(stringtes).name());
- System.out.println("matrial number " + map.get(Crafting.valueOf(stringtes).getmatrialName()));
- e.getInventory().addItem(new ItemStack(getmatrialName, Crafting.valueOf(stringtes).getNumberOutput()));
- }
- }
- }
- }
- }
- }
- }
- }
- public Map<List<Integer>, Integer> countItems(Inventory inventory) {
- Map<List<Integer>, Integer> itemStackMap = new HashMap<>();
- List<Integer> slots = new ArrayList<>();
- int amount = 0;
- for (int i = 0; i < inventory.getSize(); i++) {
- ItemStack itemStack = inventory.getContents()[i];
- if (itemStack != null) {
- amount += itemStack.getAmount();
- slots.add(i);
- }
- }
- itemStackMap.put(slots, amount);
- return itemStackMap;
- }
Add Comment
Please, Sign In to add comment