Guest User

Untitled

a guest
Feb 26th, 2018
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.64 KB | None | 0 0
  1. package halestormxv.api;
  2.  
  3. import halestormxv.capabilities.runebag.RuneBagProvider;
  4. import halestormxv.objects.items.RuneBag;
  5. import halestormxv.utils.interfaces.IRuneBagProvider;
  6. import net.minecraft.entity.player.EntityPlayer;
  7. import net.minecraft.item.EnumDyeColor;
  8. import net.minecraft.item.Item;
  9. import net.minecraft.item.ItemStack;
  10. import net.minecraft.world.World;
  11. import net.minecraftforge.items.CapabilityItemHandler;
  12. import net.minecraftforge.items.IItemHandler;
  13.  
  14. import static halestormxv.utils.Logging.getLogger;
  15.  
  16. public class ReagentControl
  17. {
  18.     public static boolean checkAndConsumeReagent(EntityPlayer thePlayer, ItemStack itemStack, int reagentCost)
  19.     {
  20.         int total;
  21.         Item reagentItem;
  22.         IItemHandler playerInventory = thePlayer.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
  23.         IRuneBagProvider theRuneBag = thePlayer.getCapability(RuneBagProvider.RUNEBAG_CAP, null);
  24.         reagentItem = itemStack.getItem();
  25.         boolean hasReagent = thePlayer.inventory.hasItemStack(itemStack);
  26.         if(hasReagent)
  27.         {
  28.             for (int slot = 0; slot < playerInventory.getSlots(); slot++)
  29.             {
  30.                 ItemStack stack = playerInventory.getStackInSlot(slot);
  31.                 if (!stack.isEmpty() && stack.getItem().equals(reagentItem) && stack.getMetadata() == itemStack.getMetadata())
  32.                 {
  33.                     total = stack.getCount();
  34.                     if (total >= reagentCost)
  35.                     {
  36.                         stack.shrink(reagentCost);
  37.                         getLogger().info("Player has " + (total-reagentCost) +" "+ stack.getDisplayName() +
  38.                                 " in the slot cause I ate "+reagentCost);
  39.                         return true;
  40.                     }
  41.                 }
  42.             }
  43.         }else{
  44.             for (int slot = 0; slot < playerInventory.getSlots(); slot++)
  45.             {
  46.                 ItemStack stack = playerInventory.getStackInSlot(slot);
  47.                 if (!stack.isEmpty() && stack.getItem() instanceof RuneBag)
  48.                 {
  49.                     IItemHandler bagInventory = theRuneBag.getBag(EnumDyeColor.byMetadata(stack.getMetadata()));
  50.                     reagentItem = itemStack.getItem();
  51.                     for (int bagSlots = 0; bagSlots < bagInventory.getSlots(); bagSlots++)
  52.                     {
  53.                         ItemStack stackInBagSlot = bagInventory.getStackInSlot(bagSlots);
  54.                         if (!stackInBagSlot.isEmpty() && stackInBagSlot.getItem().equals(reagentItem) && stackInBagSlot.getMetadata() == itemStack.getMetadata())
  55.                         {
  56.                             total = stackInBagSlot.getCount();
  57.                             if (total >= reagentCost)
  58.                             {
  59.                                 bagInventory.getStackInSlot(bagSlots).shrink(reagentCost);
  60.                                 getLogger().info("Player has " + (total-reagentCost) +" "+ stackInBagSlot.getDisplayName() +
  61.                                         " in the Rune Bag cause I ate "+reagentCost);
  62.                                 return true;
  63.                             }
  64.                         }
  65.                     }
  66.                 }
  67.             }
  68.         }
  69.         return false;
  70.     }
  71.  
  72.     public static int checkForReagentQuantityRuneBag(ItemStack itemStack, EntityPlayer thePlayer, int reagentCost)
  73.     {
  74.         int total = 0;
  75.         Item reagentItem;
  76.         IItemHandler itemHandler = thePlayer.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
  77.         for (int slot = 0; slot < itemHandler.getSlots(); slot++)
  78.         {
  79.             ItemStack stack = itemHandler.getStackInSlot(slot);
  80.             if (!stack.isEmpty() && stack.getItem() instanceof RuneBag)
  81.             {
  82.                 IRuneBagProvider theRuneBag = thePlayer.getCapability(RuneBagProvider.RUNEBAG_CAP, null);
  83.                 reagentItem = itemStack.getItem();
  84.                 IItemHandler bagHandler = theRuneBag.getBag(EnumDyeColor.WHITE);
  85.                 for (int bagSlots = 0; bagSlots < bagHandler.getSlots(); bagSlots++)
  86.                 {
  87.                     ItemStack stackInBagSlot = bagHandler.getStackInSlot(bagSlots);
  88.                     if (!stackInBagSlot.isEmpty() && stackInBagSlot.getItem().equals(reagentItem))
  89.                     {
  90.                         total = stackInBagSlot.getCount();
  91.                         bagHandler.getStackInSlot(bagSlots).shrink(reagentCost);
  92.                         return total;
  93.                     }
  94.                 }
  95.             }
  96.         }
  97.         return total;
  98.     }
  99.  
  100.     public static int checkForReagentQuantity(ItemStack itemStack, EntityPlayer player) {
  101.         int count = 0;
  102.         Item reagentItem = itemStack.getItem();
  103.         boolean hasReagent = player.inventory.hasItemStack(itemStack);
  104.         if (hasReagent) {
  105.             for (int slot = 0; slot < player.inventory.getSizeInventory(); slot++) {
  106.                 ItemStack stack = player.inventory.getStackInSlot(slot);
  107.                 if (stack != null && stack.getItem().equals(reagentItem)) {
  108.                     int total = count += stack.getCount();
  109.                     //System.out.println("Player has: " + total);
  110.                     return total;
  111.                 }
  112.             }
  113.         } else {
  114.             return 0;
  115.         }
  116.         return 0;
  117.     }
  118.  
  119.     public static void consumeReagent(ItemStack itemStack, int meta, int reagentCost, World worldIn, EntityPlayer entityLiving) {
  120.         Item reagentItem = itemStack.getItem();
  121.         entityLiving.inventory.clearMatchingItems(reagentItem, meta, reagentCost, null);
  122.     }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment