Advertisement
SavageKiller13

Dense Furnace Recipes

Apr 12th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.06 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package com.Savage_Killer13.CompressedBlocks.objects.blocks.machines.densefurnace;
  7.  
  8. import com.Savage_Killer13.CompressedBlocks.init.BlockInit;
  9. import com.Savage_Killer13.CompressedBlocks.objects.blocks.BlockOres;
  10. import com.Savage_Killer13.CompressedBlocks.util.handlers.EnumHandler;
  11. import com.google.common.collect.HashBasedTable;
  12. import com.google.common.collect.Maps;
  13. import com.google.common.collect.Table;
  14. import java.util.Map;
  15. import java.util.Map.Entry;
  16. import net.minecraft.block.Block;
  17. import net.minecraft.init.Items;
  18. import net.minecraft.item.ItemStack;
  19.  
  20. /**
  21.  *
  22.  * @author Soren Mortimer
  23.  */
  24. public class DenseFurnaceRecipes {
  25.     private static final DenseFurnaceRecipes INSTANCE = new DenseFurnaceRecipes();
  26.     private final Table<ItemStack, ItemStack, ItemStack> smeltingList = HashBasedTable.<ItemStack, ItemStack, ItemStack>create();
  27.     private final Map<ItemStack, Float> experienceList = Maps.<ItemStack, Float>newHashMap();
  28.    
  29.     public static DenseFurnaceRecipes getInstance() {
  30.         return INSTANCE;
  31.     }
  32.    
  33.     private DenseFurnaceRecipes() {
  34.         addDenseRecipe(new ItemStack((Block) BlockInit.ORE_OVERWORLD.getDefaultState().withProperty(BlockOres.VARIANT, EnumHandler.EnumType.DENSE_IRON)), ItemStack.EMPTY, new ItemStack(Items.IRON_INGOT, 8), 10.0f);
  35.     }
  36.    
  37.     public void addDenseRecipe(ItemStack input1, ItemStack input2, ItemStack result, float experience) {
  38.         if(getDenseResult(input1, input2) != ItemStack.EMPTY) return;
  39.         this.smeltingList.put(input1, input2, result);
  40.         this.experienceList.put(result, Float.valueOf(experience));
  41.     }
  42.    
  43.     public ItemStack getDenseResult(ItemStack input1, ItemStack input2) {
  44.         for(Entry<ItemStack, Map<ItemStack, ItemStack>> entry : this.smeltingList.columnMap().entrySet()) {
  45.             if(this.compareItemStacks(input1, (ItemStack)entry.getKey())) {
  46.                 for(Entry<ItemStack, ItemStack> ent : entry.getValue().entrySet()) {
  47.                     if(this.compareItemStacks(input2, (ItemStack)ent.getKey())) {
  48.                         return (ItemStack)ent.getValue();
  49.                     }
  50.                 }
  51.             }
  52.         }
  53.         return ItemStack.EMPTY;
  54.     }
  55.    
  56.     private boolean compareItemStacks(ItemStack stack1, ItemStack stack2) {
  57.         return stack2.getItem() == stack1.getItem() && (stack2.getMetadata() == 32767 || stack2.getMetadata() == stack1.getMetadata());
  58.     }
  59.    
  60.     public Table<ItemStack, ItemStack, ItemStack> getDualSmeltingList() {
  61.         return this.smeltingList;
  62.     }
  63.    
  64.     public float getDenseExperience(ItemStack stack) {
  65.         for(Entry<ItemStack, Float> entry : this.experienceList.entrySet()) {
  66.             if(this.compareItemStacks(stack, (ItemStack)entry.getKey())) {
  67.                 return((Float)entry.getValue()).floatValue();
  68.             }
  69.         }
  70.         return 0.0f;
  71.     }
  72.    
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement