Faire un nouveau four
-
Je vois pas du tout d’où ça viens

-
Dommage

-
Bon la je comprend pas, j’ai remis mon TileEntityFour comme avant, mais mon Four ne veut pu rien faire cuir!!!
package havre; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemHoe; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.item.ItemTool; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class TileEntityFour extends TileEntity implements ISidedInventory { private ItemStack[] furnaceItemStacks = new ItemStack[3]; public int getSizeInventory() { return this.furnaceItemStacks.length; } public ItemStack getStackInSlot(int par1) { return this.furnaceItemStacks[par1]; } public ItemStack decrStackSize(int par1, int par2) { if (this.furnaceItemStacks[par1] != null) { ItemStack itemstack; if (this.furnaceItemStacks[par1].stackSize <= par2) { itemstack = this.furnaceItemStacks[par1]; this.furnaceItemStacks[par1] = null; return itemstack; } else { itemstack = this.furnaceItemStacks[par1].splitStack(par2); if (this.furnaceItemStacks[par1].stackSize == 0) { this.furnaceItemStacks[par1] = null; } return itemstack; } } else { return null; } } public ItemStack getStackInSlotOnClosing(int par1) { if (this.furnaceItemStacks[par1] != null) { ItemStack itemstack = this.furnaceItemStacks[par1]; this.furnaceItemStacks[par1] = null; return itemstack; } else { return null; } } public void setInventorySlotContents(int par1, ItemStack par2ItemStack) { this.furnaceItemStacks[par1] = par2ItemStack; if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit()) { par2ItemStack.stackSize = this.getInventoryStackLimit(); } } private String field_94130_e; // Variable a mettre au debut de votre classe public String getInvName() { return this.isInvNameLocalized() ? this.field_94130_e : "container.four"; // Ici, c'est en rapport avec le fichier // lang :o } public boolean isInvNameLocalized() { return this.field_94130_e != null && this.field_94130_e.length() > 0; } public void setGuiDisplayName(String par1Str) { this.field_94130_e = par1Str; } public void readFromNBT(NBTTagCompound par1NBTTagCompound) { super.readFromNBT(par1NBTTagCompound); NBTTagList nbttaglist = par1NBTTagCompound.getTagList("Items"); this.furnaceItemStacks = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < nbttaglist.tagCount(); ++i) { NBTTagCompound nbttagcompound1 = (NBTTagCompound) nbttaglist .tagAt(i); byte b0 = nbttagcompound1.getByte("Slot"); if (b0 >= 0 && b0 < this.furnaceItemStacks.length) { this.furnaceItemStacks[b0] = ItemStack .loadItemStackFromNBT(nbttagcompound1); } } this.furnaceBurnTime = par1NBTTagCompound.getShort("BurnTime"); this.furnaceCookTime = par1NBTTagCompound.getShort("CookTime"); this.currentItemBurnTime = getItemBurnTime(this.furnaceItemStacks[1]); if (par1NBTTagCompound.hasKey("CustomName")) { this.field_94130_e = par1NBTTagCompound.getString("CustomName"); } } public void writeToNBT(NBTTagCompound par1NBTTagCompound) { super.writeToNBT(par1NBTTagCompound); par1NBTTagCompound.setShort("BurnTime", (short) this.furnaceBurnTime); par1NBTTagCompound.setShort("CookTime", (short) this.furnaceCookTime); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i < this.furnaceItemStacks.length; ++i) { if (this.furnaceItemStacks* != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte) i); this.furnaceItemStacks*.writeToNBT(nbttagcompound1); nbttaglist.appendTag(nbttagcompound1); } } par1NBTTagCompound.setTag("Items", nbttaglist); if (this.isInvNameLocalized()) { par1NBTTagCompound.setString("CustomName", this.field_94130_e); } } private static final int[] slots_top = new int[] { 0 }; private static final int[] slots_bottom = new int[] { 2, 1 }; private static final int[] slots_sides = new int[] { 1 }; public int furnaceBurnTime; public int furnaceCookTime; public int currentItemBurnTime; public int getInventoryStackLimit() { return 64; } @SideOnly(Side.CLIENT) public int getCookProgressScaled(int par1) { return this.furnaceCookTime * par1 / 200; } @SideOnly(Side.CLIENT) public int getBurnTimeRemainingScaled(int par1) { if (this.currentItemBurnTime == 0) { this.currentItemBurnTime = 200; } return this.furnaceBurnTime * par1 / this.currentItemBurnTime; } public boolean isBurning() { return this.furnaceBurnTime > 0; } public void updateEntity() { boolean flag = this.furnaceBurnTime > 0; boolean flag1 = false; if (this.furnaceBurnTime > 0) { –this.furnaceBurnTime; } if (!this.worldObj.isRemote) { if (this.furnaceBurnTime == 0 && this.canSmelt()) { this.currentItemBurnTime = this.furnaceBurnTime = getItemBurnTime(this.furnaceItemStacks[1]); if (this.furnaceBurnTime > 0) { flag1 = true; if (this.furnaceItemStacks[1] != null) { –this.furnaceItemStacks[1].stackSize; if (this.furnaceItemStacks[1].stackSize == 0) { this.furnaceItemStacks[1] = this.furnaceItemStacks[1] .getItem().getContainerItemStack( furnaceItemStacks[1]); } } } } if (this.isBurning() && this.canSmelt()) { ++this.furnaceCookTime; if (this.furnaceCookTime == 200) { this.furnaceCookTime = 0; this.smeltItem(); flag1 = true; } } else { this.furnaceCookTime = 0; } if (flag != this.furnaceBurnTime > 0) { flag1 = true; BlockFour.updateFurnaceBlockState(this.furnaceBurnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); } } if (flag1) { this.onInventoryChanged(); } } private boolean canSmelt() { if (this.furnaceItemStacks[0] == null) { return false; } else { ItemStack itemstack = RecipesFour.smelting().getSmeltingResult( this.furnaceItemStacks[0]); if (itemstack == null) return false; if (this.furnaceItemStacks[2] == null) return true; if (!this.furnaceItemStacks[2].isItemEqual(itemstack)) return false; int result = furnaceItemStacks[2].stackSize + itemstack.stackSize; return (result <= getInventoryStackLimit() && result <= itemstack .getMaxStackSize()); } } public void smeltItem() { if (this.canSmelt()) { ItemStack itemstack = RecipesFour.smelting().getSmeltingResult( this.furnaceItemStacks[0]); if (this.furnaceItemStacks[2] == null) { this.furnaceItemStacks[2] = itemstack.copy(); } else if (this.furnaceItemStacks[2].isItemEqual(itemstack)) { furnaceItemStacks[2].stackSize += itemstack.stackSize; } –this.furnaceItemStacks[0].stackSize; if (this.furnaceItemStacks[0].stackSize <= 0) { this.furnaceItemStacks[0] = null; } } } public static int getItemBurnTime(ItemStack par0ItemStack) { if (par0ItemStack == null) { return 0; } else { int i = par0ItemStack.getItem().itemID; Item item = par0ItemStack.getItem(); if (par0ItemStack.getItem() instanceof ItemBlock && Block.blocksList* != null) { Block block = Block.blocksList*; if (block == Block.woodSingleSlab) { return 150; } if (block.blockMaterial == Material.wood) { return 300; } if (block == Block.field_111034_cE) { return 16000; } } 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).getMaterialName().equals("WOOD")) return 200; if (i == Item.stick.itemID) return 100; if (i == Item.coal.itemID) return 1600; if (i == Item.bucketLava.itemID) return 20000; if (i == Block.sapling.blockID) return 100; if (i == Item.blazeRod.itemID) return 2400; return GameRegistry.getFuelValue(par0ItemStack); } } public static boolean isItemFuel(ItemStack par0ItemStack) { return getItemBurnTime(par0ItemStack) > 0; } public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) { return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq( (double) this.xCoord + 0.5D, (double) this.yCoord + 0.5D, (double) this.zCoord + 0.5D) <= 64.0D; } public void openChest() { } public void closeChest() { } public boolean isItemValidForSlot(int par1, ItemStack par2ItemStack) { return par1 == 2 ? false : (par1 == 1 ? isItemFuel(par2ItemStack) : true); } public int[] getAccessibleSlotsFromSide(int par1) { return par1 == 0 ? slots_bottom : (par1 == 1 ? slots_top : slots_sides); } public boolean canInsertItem(int par1, ItemStack par2ItemStack, int par3) { return this.isItemValidForSlot(par1, par2ItemStack); } public boolean canExtractItem(int par1, ItemStack par2ItemStack, int par3) { return par3 != 0 || par1 != 1 || par2ItemStack.itemID == Item.bucketEmpty.itemID; } }–------------------------------------------------
Edit: Désolé c’est moi qui était con depuis le début: j’avais oublier que j’avais changer les craft possible de mon four --'. Vous pouvez rire de ma gueule j’ai bien foiré sur ce coup! xD -
@‘Oniro’:
–------------------------------------------------
Edit: Désolé c’est moi qui était con depuis le début: j’avais oublier que j’avais changer les craft possible de mon four --'. Vous pouvez rire de ma gueule j’ai bien foiré sur ce coup! xDT’en fais pas x), sa m’arrive quand je suis fatiguai x).
-
surtout qu’il était pas passer 6h am quand je cherchais la réponse(Ouais je suis québecois). xD
-
Bonjour, je me permets de up ce topic pour donner une solution à un problème sans doute due à une autre version, dans le GUIFour.drawGuiContainerBackgroundLayer: (Je suis en 1.6.4)
this.mc.func_110434_K().func_110577_a(field_110410_t);
doit être remplacé par:
this.mc.getTextureManager().bindTexture(field_110410_t);et
I18n.func_135053_a
par:
I18n.getString -
En effet il y avait encore les anciennes mapping (forge < 849). Je vais éditer le poste merci.
-
Ah, désolé, j’utilise jamais les bonnes versions de Forge ^^
-
très bon tuto, mais si on pourrait avoir les modifications à apporter pour avoir un slot fonctionnel de plus, ce serait parfait.
merci d’avance (quand j’essaye, soit c’est une copie d’un autre slot (on voit deux fois l’item…) soit il sert juste à stocker un stack comme dans un coffre)
d’autres codes à mettre à jour:
11e code java dans le block four : func_96440_m --> getScoreboard
modification classe principale : func_111022_d --> setTextureName
16e code java du TileEntity field_111034_cE --> coalBlock
2e Guifour field_110410_t --> furnaceGuiTextures
Recipes field_111032_cD --> hardenedClay -
C’est un peu plus complexe, j’attend la 1.7 pour mettre a jour le tuto.
Mais ça reste assez simple, dans le système de craft, la ou il check si le slot X a X item, tu ajoute pour qu’il check aussi le slot Y
-
J’aimerais qu’au lieu de “remplir” le slotFour quand je cuis quelque chose, j’invoque une entité quand je peux m’y prendre ?
-
Salut Gugu esque tu peut me dire comment faire pour cree un nouveau GameRegistry, genre que le block ne sois pas un four mais par exemple que l’on puisse cree de nouvelle reçette qui son propre a ce four ( genre gameRegistry.addBurnatorSmelting ( bla blabla )
-
ce serait possible de faire une update pour la 1.7.10
merci -
Merci de rechercher la prochaine fois : https://www.minecraftforgefrance.fr/showthread.php?tid=2017