Deux petites erreurs dans mon four
-
Apparement personne veut m’aider
-
J’avais déjà regardé mais sans trouvé le problème, la je viens de regarder à nouveau je crois avoir trouvé où est le problème.
Ta fonction
public static int getItemBurnTime(ItemStack itemstack){
ne m’a pas l’air correcte.Sur mon mod j’ai fait comme ça :
public static int getItemBurnTime(ItemStack stack) { return TileEntityFurnace.getItemBurnTime(stack); }Donc a mon avis tu devrais plutôt faire comme ça :
public static int getItemBurnTime(ItemStack stack) { if(stack == null) { return 0; } else { // les conditions pour tes items customs return TileEntityFurnace.getItemBurnTime(stack); } } -
@‘robin4002’:
J’avais déjà regardé mais sans trouvé le problème, la je viens de regarder à nouveau je crois avoir trouvé où est le problème.
Ta fonction
public static int getItemBurnTime(ItemStack itemstack){
ne m’a pas l’air correcte.Sur mon mod j’ai fait comme ça :
public static int getItemBurnTime(ItemStack stack) { return TileEntityFurnace.getItemBurnTime(stack); }Donc a mon avis tu devrais plutôt faire comme ça :
public static int getItemBurnTime(ItemStack stack) { if(stack == null) { return 0; } else { // les conditions pour tes items customs return TileEntityFurnace.getItemBurnTime(stack); } }Nope … marche pas … Je peux mettre les items de base mais leur valeur de cuisson est totalement bugué
-
Pourtant dans mon mod ça fonctionne très bien, c’est étrange

-
Sûrement que dans ton mod tu n’a pas de carburant personnalisé
EDIT : Nope vient pas de là non plus. Tu as dû coder quelque chose différemment c’est sûrement pour ça.
-
Pour mon four j’ai créer mon propre fichier de recettes crée en un et met le a la place de FurnaceRecipes et voit si sa marche
private boolean canSmelt(){ if (this.slots[0] == null){ return false; }else{ ItemStack itemstack = FourArcRecipes.smelting().getSmeltingResult(this.slots[0]); if(itemstack == null) return false; if(this.slots[2] == null) return true; if(!this.slots[2].isItemEqual(itemstack)) return false; int result = slots[2].stackSize + (itemstack.stackSize); return (result <= getInventoryStackLimit() && result <= itemstack.getMaxStackSize()); } }Ton fichier de recettes devrait ressembler a sa
package com.bowser.robotic.common; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class FourArcRecipes { private static final FourArcRecipes SMELTING_BASE = new FourArcRecipes(); private Map smeltingList = new HashMap(); private Map experienceList = new HashMap(); public static FourArcRecipes smelting() { return SMELTING_BASE; } //RECETTES FOUR A ARC private FourArcRecipes(){ //this.addRecipie(Robotic.copperIngot, new ItemStack(Robotic.cuivreOre), 0.8F); this.addRecipie(Item.getItemFromBlock(Robotic.tungsteneOre), new ItemStack(Robotic.tungsteneIngot), 0.8F); this.addRecipie(Item.getItemFromBlock(Robotic.siliciumOre), new ItemStack(Robotic.siliciumIngot), 0.8F); this.addRecipie(Item.getItemFromBlock(Robotic.cuivreOre), new ItemStack(Robotic.copperIngot), 0.8F); } public void addRecipie(Item item, ItemStack itemstack, float experience){ this.addLists(item, itemstack, experience); } public void addLists(Item item, ItemStack itemstack, float experience){ this.putLists(new ItemStack(item, 1, 32767), itemstack, experience); } public void putLists(ItemStack itemstack, ItemStack itemstack2, float experience){ this.smeltingList.put(itemstack, itemstack2); this.experienceList.put(itemstack2, Float.valueOf(experience)); } public ItemStack getSmeltingResult(ItemStack itemstack) { Iterator iterator = this.smeltingList.entrySet().iterator(); Entry entry; do { if (!iterator.hasNext()) { return null; } entry = (Entry) iterator.next(); } while (!canBeSmelted(itemstack, (ItemStack) entry.getKey())); return (ItemStack) entry.getValue(); } private boolean canBeSmelted(ItemStack itemstack, ItemStack itemstack2) { return itemstack2.getItem() == itemstack.getItem() && (itemstack2.getItemDamage() == 32767 || itemstack2.getItemDamage() == itemstack.getItemDamage()); } public float giveExperience(ItemStack itemstack){ Iterator iterator = this.experienceList.entrySet().iterator(); Entry entry; do{ if(!iterator.hasNext()){ return 0.0f; } entry = (Entry) iterator.next(); } while(!this.canBeSmelted(itemstack, (ItemStack) entry.getKey())); if(itemstack.getItem().getSmeltingExperience(itemstack) != -1){ return itemstack.getItem().getSmeltingExperience(itemstack); } return ((Float) entry.getValue()).floatValue(); } } -
@‘Bowser338’:
Pour mon four j’ai créer mon propre fichier de recettes crée en un et met le a la place de FurnaceRecipes et voit si sa marche
private boolean canSmelt(){ if (this.slots[0] == null){ return false; }else{ ItemStack itemstack = FourArcRecipes.smelting().getSmeltingResult(this.slots[0]); if(itemstack == null) return false; if(this.slots[2] == null) return true; if(!this.slots[2].isItemEqual(itemstack)) return false; int result = slots[2].stackSize + (itemstack.stackSize); return (result <= getInventoryStackLimit() && result <= itemstack.getMaxStackSize()); } }Ton fichier de recettes devrait ressembler a sa
package com.bowser.robotic.common; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class FourArcRecipes { private static final FourArcRecipes SMELTING_BASE = new FourArcRecipes(); private Map smeltingList = new HashMap(); private Map experienceList = new HashMap(); public static FourArcRecipes smelting() { return SMELTING_BASE; } //RECETTES FOUR A ARC private FourArcRecipes(){ //this.addRecipie(Robotic.copperIngot, new ItemStack(Robotic.cuivreOre), 0.8F); this.addRecipie(Item.getItemFromBlock(Robotic.tungsteneOre), new ItemStack(Robotic.tungsteneIngot), 0.8F); this.addRecipie(Item.getItemFromBlock(Robotic.siliciumOre), new ItemStack(Robotic.siliciumIngot), 0.8F); this.addRecipie(Item.getItemFromBlock(Robotic.cuivreOre), new ItemStack(Robotic.copperIngot), 0.8F); } public void addRecipie(Item item, ItemStack itemstack, float experience){ this.addLists(item, itemstack, experience); } public void addLists(Item item, ItemStack itemstack, float experience){ this.putLists(new ItemStack(item, 1, 32767), itemstack, experience); } public void putLists(ItemStack itemstack, ItemStack itemstack2, float experience){ this.smeltingList.put(itemstack, itemstack2); this.experienceList.put(itemstack2, Float.valueOf(experience)); } public ItemStack getSmeltingResult(ItemStack itemstack) { Iterator iterator = this.smeltingList.entrySet().iterator(); Entry entry; do { if (!iterator.hasNext()) { return null; } entry = (Entry) iterator.next(); } while (!canBeSmelted(itemstack, (ItemStack) entry.getKey())); return (ItemStack) entry.getValue(); } private boolean canBeSmelted(ItemStack itemstack, ItemStack itemstack2) { return itemstack2.getItem() == itemstack.getItem() && (itemstack2.getItemDamage() == 32767 || itemstack2.getItemDamage() == itemstack.getItemDamage()); } public float giveExperience(ItemStack itemstack){ Iterator iterator = this.experienceList.entrySet().iterator(); Entry entry; do{ if(!iterator.hasNext()){ return 0.0f; } entry = (Entry) iterator.next(); } while(!this.canBeSmelted(itemstack, (ItemStack) entry.getKey())); if(itemstack.getItem().getSmeltingExperience(itemstack) != -1){ return itemstack.getItem().getSmeltingExperience(itemstack); } return ((Float) entry.getValue()).floatValue(); } }Hum… Je ne vois pas l’utilité car mon problème est juste que je ne peux pas utiliser les carburants de base
-
Ah oui excuse moi
en regardant dans ton tile entity par rapport au getItemBurnTime
public static int getItemBurnTime(ItemStack itemstack){ if(itemstack == null){ return 0; }else{ Item item = itemstack.getItem(); if(item instanceof ItemBlock && Block.getBlockFromItem(item) != Blocks.air){ Block block = Block.getBlockFromItem(item); if(block == ModBlocks.HoleChest) { return 512000; } } if(item == ModItems.awesomeCrystal) return 128000; if(item instanceof ItemTool && ((ItemTool) item).getToolMaterialName().equals("awesomeToolMaterial")) return256000; return GameRegistry.getFuelValue(itemstack); } }voila les carburants de ton four ( qui ont des valeurs un peux folles xD

HoleChest
awesomeCrystal
et tout les outils du material awesomeToolMaterialSi je dit pas de conneries ton four marche uniquement avec ces 2 items ou blocks
-
exactement et j’ai changer les valeurs entre-temps aussi elles sont moins abusive xD
-
donc si tu rajoute les carburants de minecraft vanilla sa marche pas ?
-
le truc est que les valeurs sont complètements buguer quand je réussi à les ajouter donc

-
tu met ces valeurs la ?
if (item instanceof ItemTool && ((ItemTool)item).getToolMaterialName().equals("WOOD")) return 200; if (item instanceof ItemSword && ((ItemSword)item).getToolMaterialName().equals("WOOD")) return 200; if (item instanceof ItemHoe && ((ItemHoe)item).getToolMaterialName().equals("WOOD")) return 200; if (item == Items.stick) return 100; if (item == Items.coal) return 1600; if (item == Items.lava_bucket) return 20000; if (item == Item.getItemFromBlock(Blocks.sapling)) return 100; if (item == Items.blaze_rod) return 2400; -
non mais la personne juste avant m’avait donner une ligne de code qui devrait être dans ce style … mais le probleme de ces valeurs est quelles ne couvrent pas tous les item de base.
-
Beh tu change le Items.item et tu le fais avec tout le comburant
-
mais c’est long

-
Si c’est tout les items/blocks de base, j’ai trouver sa dans le four minecraft basique tout y est listé
Tu as tout les outils de type bois tu as les stick le charbon etc y a rien de moins après tu rajoute si tu as des carburants spécifiques à ton mod ou des blocks/items vanilla que tu veux utiliser comme carburant. -
Ah bah oui j’ai juste a copier tu as raison je n’y avait pas penser ^^’
-
Sinon tu fais une array et apres tu appellé ton array dans une seule fonction. C’est possible je crois
-
les valeurs ne sont pas buguées du coup ? sa marche correctement ?
-
Je sais pas je penses que ca peux marcher