Advertisement
broken-arrow

Untitled

Jun 6th, 2021
685
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.96 KB | None | 0 0
  1. public class CraftingUtility {
  2.  
  3.     private Inventory inventory;
  4.  
  5.     private List<String> listOfItems;
  6.  
  7.     public CraftingUtility(Inventory inventory, List<String> listOfItems) {
  8.         this.inventory = inventory;
  9.         this.listOfItems = listOfItems;
  10.     }
  11.  
  12.     public HashMap<Integer, ItemStack> checkCraftingRecipeExist() {
  13.         HashMap<Integer, ItemStack> outputItemsIfNoSpaceInChest = new HashMap<>();
  14.         for (Crafting craftingRecipe : Crafting.values()) {
  15.             String recipeValues = craftingRecipe.toString();
  16.  
  17.             String matrialNameFirst = Crafting.valueOf(recipeValues).getmatrialName();
  18.             String matrialNameSecond = Crafting.valueOf(recipeValues).getmatrialNames1();
  19.             String matrialNameThird = Crafting.valueOf(recipeValues).getmatrialNames2();
  20.  
  21.             int itemAmountNeededFirst = Crafting.valueOf(recipeValues).getAmontNeededCrafting();
  22.             int itemAmountNeededSecond = Crafting.valueOf(recipeValues).getAmontNeededCrafting1();
  23.             int itemAmountNeededThird = Crafting.valueOf(recipeValues).getAmontNeededCrafting2();
  24.  
  25.             for (String itemListForCrafting : listOfItems) {
  26.  
  27.                 Map<Material, Integer> mapvalues = getItemsAmount(craftingRecipe, itemListForCrafting, inventory);
  28.  
  29.                 if (!mapvalues.isEmpty()) {
  30.                     List<ItemStack> itemStacks = convertMatrialToItemstacks(mapvalues, craftingRecipe);
  31.                     if (matrialNameFirst != null && matrialNameSecond == null && matrialNameThird == null) {
  32.  
  33.                         if (itemListForCrafting.equals(Crafting.valueOf(recipeValues).name()) &&
  34.                                 itemStacks.get(0) != null && itemStacks.get(0).getAmount() >= itemAmountNeededFirst) {
  35.                             inventory.remove(Material.valueOf(matrialNameFirst));
  36.                             Material getmatrialName = Material.valueOf(Crafting.valueOf(recipeValues).name());
  37.                             outputItemsIfNoSpaceInChest = inventory.addItem(new ItemStack(getmatrialName, Crafting.valueOf(recipeValues).getNumberOutput() * itemStacks.get(0).getAmount()));
  38.  
  39.                         }
  40.                     } else if (matrialNameFirst != null && matrialNameSecond != null && matrialNameThird == null) {
  41.                         if (itemListForCrafting.equals(Crafting.valueOf(recipeValues).name()) &&
  42.                                 itemStacks.get(0) != null && itemStacks.get(0).getAmount() >= itemAmountNeededFirst &&
  43.                                 itemStacks.get(1).getAmount() >= itemAmountNeededSecond) {
  44.                             System.out.println("2items recipe ");
  45.                             takeItemsRecipeIngrediens(inventory, craftingRecipe, itemStacks);
  46.                             Material getmatrialName = Material.valueOf(Crafting.valueOf(recipeValues).name());
  47.  
  48.                             outputItemsIfNoSpaceInChest = inventory.addItem(new ItemStack(getmatrialName, Crafting.valueOf(recipeValues).getNumberOutput()));
  49.                         }
  50.  
  51.                     } else if (matrialNameFirst != null && matrialNameSecond != null && matrialNameThird != null) {
  52.  
  53.                         if (itemListForCrafting.equals(Crafting.valueOf(recipeValues).name()) &&
  54.                                 itemStacks.get(0) != null && itemStacks.get(0).getAmount() >= itemAmountNeededFirst &&
  55.                                 itemStacks.get(1).getAmount() >= itemAmountNeededSecond &&
  56.                                 itemStacks.get(2).getAmount() >= itemAmountNeededThird) {
  57.                             System.out.println("matrial of items ");
  58.                             takeItemsRecipeIngrediens(inventory, craftingRecipe, itemStacks);
  59.                             Material getmatrialName = Material.valueOf(Crafting.valueOf(recipeValues).name());
  60.  
  61.                             outputItemsIfNoSpaceInChest = inventory.addItem(new ItemStack(getmatrialName, Crafting.valueOf(recipeValues).getNumberOutput()));
  62.  
  63.                         }
  64.                     }
  65.                 }
  66.             }
  67.         }
  68.         return outputItemsIfNoSpaceInChest;
  69.     }
  70.  
  71.  
  72.     public List<ItemStack> convertMatrialToItemstacks(Map<Material, Integer> values, Crafting value) {
  73.         List<ItemStack> itemstacks = new ArrayList<>();
  74.  
  75.         ItemStack recipeMatrial = null;
  76.         ItemStack recipeMatrialSecond = null;
  77.         ItemStack recipeMatrialThird = null;
  78.  
  79.         if (value.getmatrialName() != null && values.containsKey(Material.valueOf(value.getmatrialName()))) {
  80.             Material matrialNameFirst = Material.valueOf(value.getmatrialName());
  81.             int itemAmount = values.get(matrialNameFirst);
  82.             recipeMatrial = new ItemStack(matrialNameFirst, itemAmount);
  83.         }
  84.         if (value.getmatrialNames1() != null && values.containsKey(Material.valueOf(value.getmatrialNames1()))) {
  85.             Material matrialNameSecond = Material.valueOf(value.getmatrialNames1());
  86.             int itemAmountSecond = values.get(matrialNameSecond);
  87.             recipeMatrialSecond = new ItemStack(matrialNameSecond, itemAmountSecond);
  88.         }
  89.         if (value.getmatrialNames2() != null && values.containsKey(Material.valueOf(value.getmatrialNames2()))) {
  90.             Material matrialNameThird = Material.valueOf(value.getmatrialNames2());
  91.             int itemAmountThird = values.get(matrialNameThird);
  92.             recipeMatrialThird = new ItemStack(matrialNameThird, itemAmountThird);
  93.         }
  94.  
  95.         itemstacks.add(recipeMatrial);
  96.         itemstacks.add(recipeMatrialSecond);
  97.         itemstacks.add(recipeMatrialThird);
  98.  
  99.         return itemstacks;
  100.     }
  101.  
  102.     public Map<Material, Integer> getItemsAmount(Crafting values, String listOfItems, Inventory inventory) {
  103.         Map<Material, Integer> map = new HashMap<>();
  104.         int amountFirst = 0;
  105.         int amountSecond = 0;
  106.         int amountThird = 0;
  107.  
  108.         for (ItemStack itemStacks : inventory) {
  109.             if (listOfItems.equals(values.toString()) && itemStacks != null) {
  110.                 if (itemStacks.getType().toString().equals(values.getmatrialName())) {
  111.                     amountFirst += itemStacks.getAmount();
  112.                     map.put(itemStacks.getType(), amountFirst);
  113.  
  114.                 } else if (itemStacks.getType().toString().equals(values.getmatrialNames1())) {
  115.                     amountSecond += itemStacks.getAmount();
  116.                     map.put(itemStacks.getType(), amountSecond);
  117.  
  118.                 } else if (itemStacks.getType().toString().equals(values.getmatrialNames2())) {
  119.                     amountThird += itemStacks.getAmount();
  120.                     map.put(itemStacks.getType(), amountThird);
  121.                 }
  122.             }
  123.         }
  124.         return map;
  125.     }
  126.  
  127.     public void getItemsInventory(Inventory inventory, String matrialName) {
  128.         for (int i = 0; i < inventory.getSize(); i++) {
  129.             ItemStack itemStacks = inventory.getContents()[i];
  130.             if (itemStacks != null && itemStacks.isSimilar(new ItemStack(Material.valueOf(matrialName)))) {
  131.                 inventory.setItem(i, new ItemStack(Material.AIR));
  132.             }
  133.  
  134.         }
  135.     }
  136.  
  137.     public void takeItemsRecipeIngrediens(Inventory inventory, Crafting values, List<ItemStack> itemStacks) {
  138.         for (ItemStack itemStack : itemStacks)
  139.             if (itemStack != null && itemStack.getType().toString().equals(values.getmatrialName())) {
  140.                 getItemsInventory(inventory, values.getmatrialName());
  141.                 itemStack.setAmount(itemStack.getAmount() - values.getAmontNeededCrafting());
  142.                 inventory.addItem(itemStack);
  143.             } else if (itemStack != null && itemStack.getType().toString().equals(values.getmatrialNames1())) {
  144.                 getItemsInventory(inventory, values.getmatrialNames1());
  145.                 itemStack.setAmount(itemStack.getAmount() - values.getAmontNeededCrafting1());
  146.                 inventory.addItem(itemStack);
  147.             } else if (itemStack != null && itemStack.getType().toString().equals(values.getmatrialNames2())) {
  148.                 getItemsInventory(inventory, values.getmatrialNames2());
  149.                 itemStack.setAmount(itemStack.getAmount() - values.getAmontNeededCrafting2());
  150.                 inventory.addItem(itemStack);
  151.  
  152.             }
  153.     }
  154.  
  155. }
  156.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement