Advertisement
ModMCdl

PestleRecipe.java

Nov 2nd, 2017
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.70 KB | None | 0 0
  1. package com.modmcdl.magitech.recipe;
  2.  
  3. import java.util.Map;
  4. import java.util.Map.Entry;
  5.  
  6. import com.google.common.collect.HashBasedTable;
  7. import com.google.common.collect.Maps;
  8. import com.google.common.collect.Table;
  9. import com.modmcdl.magitech.init.ModItems;
  10.  
  11. import net.minecraft.item.ItemStack;
  12. import net.minecraftforge.fml.common.FMLLog;
  13.  
  14. public class PestleRecipe {
  15.  
  16.     private static final PestleRecipe MIXING = new PestleRecipe();
  17.     private final Table<ItemStack, ItemStack, ItemStack> pestleList = HashBasedTable.<ItemStack, ItemStack, ItemStack>create();
  18.     private final Map<ItemStack, Float> experienceList = Maps.<ItemStack, Float>newHashMap();
  19.    
  20.     public static PestleRecipe instance() {
  21.         return MIXING;
  22.     }
  23.    
  24.     private PestleRecipe() {
  25.         //this.addPestleRecipe(new ItemStack(INPUT ONE), new ItemStack(INPUT TWO), new ItemStack(WHAT IT CRAFTS), 0.0F); <--Format to Follow
  26.         this.addPestleRecipe(new ItemStack(ModItems.salts), new ItemStack(ModItems.lilacbloom), new ItemStack(ModItems.dsalt), 0.0F);
  27.     }
  28.     //adding recipe - makes sure that mod recipes dont conflict
  29.     public void addPestleRecipe(ItemStack input1, ItemStack input2, ItemStack result, float experience) {
  30.         if(getPestleResult(input1, input2) != ItemStack.EMPTY) {
  31.             FMLLog.info("Ignored pestle recipe with conflicting input: " + input1 + " and " + input2 + " = " + result);
  32.             return;
  33.         }
  34.         this.pestleList.put(input1, input2, result);
  35.         this.experienceList.put(result, Float.valueOf(experience));
  36.     }
  37.    
  38.     //registers inputs and cross-checks them with recipes
  39.     public ItemStack getPestleResult(ItemStack input1, ItemStack input2) {
  40.         for(Entry<ItemStack, Map<ItemStack, ItemStack>> entry : this.pestleList.columnMap().entrySet())
  41.             if(this.compareItemStacks(input1, (ItemStack)entry.getKey()))
  42.                 for(Entry<ItemStack, ItemStack> ent : entry.getValue().entrySet())
  43.                     if(this.compareItemStacks(input2, (ItemStack)ent.getKey()))
  44.                         return (ItemStack)ent.getValue();
  45.         //if no recipe found, do nothing
  46.         return ItemStack.EMPTY;
  47.     }
  48.    
  49.     //Checks and compares inputs in table ^above to recipe (finds result)
  50.     private boolean compareItemStacks(ItemStack stack1, ItemStack stack2) {
  51.         return stack2.getItem() == stack1.getItem() && (stack2.getMetadata() == 32767 || stack2.getMetadata() == stack1.getMetadata());
  52.     }
  53.    
  54.     public Table<ItemStack, ItemStack, ItemStack> getPestleList() {
  55.         return this.pestleList;
  56.     }
  57.     //If output is "X" then give certain experience | else "0"
  58.     public float getPestleExperience(ItemStack stack) {
  59.         for(Entry<ItemStack, Float> entry : this.experienceList.entrySet())
  60.             if(this.compareItemStacks(stack, (ItemStack)entry.getKey()))
  61.                 return ((Float)entry.getValue()).floatValue();
  62.         return 0.0F;
  63.     }
  64.    
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement