Created
May 20, 2015 16:08
-
-
Save anonymous/7675ec7aacbedc9fbe58 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package fr.ah26.futura.common; | |
import java.util.HashMap; | |
import java.util.Map; | |
import java.util.Map.Entry; | |
import com.ibm.icu.util.BytesTrie.Iterator; | |
import net.minecraft.block.Block; | |
import net.minecraft.init.Blocks; | |
import net.minecraft.init.Items; | |
import net.minecraft.item.Item; | |
import net.minecraft.item.ItemStack; | |
public class XFurnaceRecipes | |
{ | |
private static final XFurnaceRecipes smeltingBase = new XFurnaceRecipes(); //Permet d'instancier votre classe car vous le l'instancierez nul part ailleur | |
private Map smeltingList = new HashMap(); //Ceci permet de mettre vos recettes | |
//----------------------------------------------------------- | |
public XFurnaceRecipes() | |
{ | |
this.addRecipe(Items.apple, Items.apple, Items.arrow, new ItemStack(Blocks.diamond_block)); //Ajout d'une recette, on fait un bloc de diamant à partie de deux pommes et une flèche | |
} | |
//----------------------------------------------------------- | |
public void addRecipe(ItemStack stack1, ItemStack stack2, ItemStack stack3, ItemStack stack4) //Cette fonction de comprend que des ItemStack, c'est celle qui ajoute les recettes à la HashMap | |
{ | |
ItemStack[] stackList = new ItemStack[]{stack1, stack2, stack3}; | |
this.smeltingList.put(stackList, stack4); | |
} | |
public void addRecipe(Item item1, Item item2, Item item3, ItemStack stack) //1er cas | |
{ | |
this.addRecipe(new ItemStack(item1), new ItemStack(item2), new ItemStack(item3), stack); | |
} | |
public void addRecipe(Block block1, Item item2, Item item3, ItemStack stack) //2nd cas | |
{ | |
this.addRecipe(Item.getItemFromBlock(block1), item2, item3, stack); | |
} | |
public void addRecipe(Block block1, Block block2, Item item3, ItemStack stack) //3ème cas | |
{ | |
this.addRecipe(Item.getItemFromBlock(block1), Item.getItemFromBlock(block2), item3, stack); | |
} | |
public void addRecipe(Block block1, Block block2, Block block3, ItemStack stack) //4ème cas | |
{ | |
this.addRecipe(Item.getItemFromBlock(block1), Item.getItemFromBlock(block2), Item.getItemFromBlock(block3), stack); | |
} | |
public ItemStack getSmeltingResult(ItemStack[] stack) //En argument : un tableau avec le contenu des trois slots d'input | |
{ | |
java.util.Iterator iterator = this.smeltingList.entrySet().iterator(); | |
Entry entry; | |
do | |
{ | |
if (!iterator.hasNext()) // Si il n'y a plus de recettes dans la liste | |
{ | |
return null; //Il n'y a pas de recette correspondante | |
} | |
entry = (Entry)iterator.next(); //prend la recette suivante | |
} | |
while (!this.isSameKey(stack, (ItemStack[])entry.getKey())); //Check si le tableau passé en argument correspond à celui de la recette, vous avez une erreur ici, on crée la fonction tout de suite. | |
return (ItemStack)entry.getValue(); //retourne l'itemstack : resultat de la recette | |
} | |
private boolean isSameKey(ItemStack[] stackList, ItemStack[] stackList2) | |
{ | |
boolean isSame = false; //Au début ce n'est pas la même | |
for(int i=0; i<=2; i++) // Pour les 3 items | |
{ | |
if(stackList[i].getItem() == stackList2[i].getItem()) //On vérifie si ce sont les même | |
{ | |
isSame = true; // Si c'est le cas alors isSame vaut true | |
} | |
else | |
{ | |
return false; //Si un seul n'est pas bon, on cherche pas, c'est pas la bonne recette | |
} | |
} | |
return isSame; | |
} | |
public Map getSmeltingList() | |
{ | |
return this.smeltingList; | |
} | |
public static XFurnaceRecipes smelting() | |
{ | |
return smeltingBase; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment