Posted August 5, 201312 yr Hi. I'm working on a custom furnace and I've searched and searched and nobody else seems to have had this problem. When I open up my gui and smelt a custom recipe, it doesn't update the textures. Any help? Here's my code: package Kenoba10.Too_Much_Tools.machine; import org.lwjgl.opengl.GL11; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; public class GuiIngotOven extends GuiContainer{ public static final ResourceLocation texture = new ResourceLocation("TooMuchTools:textures/gui/container/IngotOven.png"); private TileEntityIngotOven ingotInventory; public GuiIngotOven(InventoryPlayer player, TileEntityIngotOven tileEntity) { super(new ContainerIngotOven(player, tileEntity)); ingotInventory = new TileEntityIngotOven(); } protected void drawCuiContainerForegroundLayer(int i, int j) { fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, (ySize - 96) + 2, 0xffffff); } protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); mc.func_110434_K().func_110577_a(texture); int x = (width - xSize) / 2; int y = (height - ySize) / 2; drawTexturedModalRect(x, y, 0, 0, xSize, ySize); int i1; if (ingotInventory.isBurning()) { i1 = ingotInventory.getBurnTimeRemainingScaled(14); drawTexturedModalRect(x + 56, y + 36, 176, 0, 14, i1); } i1 = ingotInventory.getCookProgressScaled(15); drawTexturedModalRect(x + 79, y + 34, 176, 14, i1, 17); } }
August 5, 201312 yr If you expand a little more on what the problem is, it helps people pin point the actual problem. So could you please expand? I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes. I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there
August 5, 201312 yr Author ingotInventory.isBurning() Is it supposed to change on client side ? Ok here's my TileEntity class: package Kenoba10.Too_Much_Tools.machine; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.src.ModLoader; import net.minecraft.tileentity.TileEntity; public class TileEntityIngotOven extends TileEntity implements IInventory{ public int ingotBurnTime; public int ingotItemBurnTime; public int ingotCookTime; public int front; private ItemStack ingotItemStacks[]; private boolean isActive; public TileEntityIngotOven() { ingotItemStacks = new ItemStack[3]; ingotBurnTime = 0; ingotItemBurnTime = 0; ingotCookTime = 0; } public void setFrontDirection(int f) { front = f; } public int getFrontDirection() { return front; } public int getSizeInventory() { return ingotItemStacks.length; } public ItemStack getStackInSlot(int i) { return ingotItemStacks[i]; } public ItemStack decrStackSize(int i, int j) { if(ingotItemStacks[i] != null) { if(ingotItemStacks[i].stackSize <= j) { ItemStack itemStack = ingotItemStacks[i]; ingotItemStacks[i] = null; return itemStack; } ItemStack itemStack = ingotItemStacks[i].splitStack(j); if(ingotItemStacks[i].stackSize == 0) { ingotItemStacks[i] = null; } return itemStack; } else { return null; } } public ItemStack getStackInSlotOnClosing(int i) { if(ingotItemStacks[i] != null) { ItemStack itemStack = ingotItemStacks[i]; ingotItemStacks[i] = null; return itemStack; } else { return null; } } public void setInventorySlotContents(int i, ItemStack itemStack) { ingotItemStacks[i] = itemStack; if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { itemStack.stackSize = getInventoryStackLimit(); } } public String getInvName() { return "Ingot Oven"; } public void readFromNBT(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); NBTTagList tagList = tagCompound.getTagList("Items"); ingotItemStacks = new ItemStack[getSizeInventory()]; for(int i = 0; i < tagList.tagCount(); i++) { NBTTagCompound tagCompound1 = (NBTTagCompound)tagList.tagAt(i); byte byte0 = tagCompound1.getByte("Slot"); if(byte0 >= 0 && byte0 < ingotItemStacks.length) { ingotItemStacks[byte0] = ItemStack.loadItemStackFromNBT(tagCompound1); } } front = tagCompound.getInteger("FrontDirection"); ingotBurnTime = tagCompound.getShort("BurnTime"); ingotCookTime = tagCompound.getShort("CookTime"); ingotItemBurnTime = getItemBurnTime(ingotItemStacks[1]); System.out.println("Front: " + front); } public void writeToNBT(NBTTagCompound tagCompound) { super.writeToNBT(tagCompound); tagCompound.setInteger("FrontDirection", (int)front); tagCompound.setShort("BurnTime", (short)ingotBurnTime); tagCompound.setShort("CookTime", (short)ingotCookTime); NBTTagList tagList = new NBTTagList(); for(int i = 0; i < ingotItemStacks.length; i++) { if(ingotItemStacks[i] != null) { NBTTagCompound tagCompound1 = new NBTTagCompound(); tagCompound1.setByte("Slot", (byte)i); ingotItemStacks[i].writeToNBT(tagCompound1); tagList.appendTag(tagCompound1); } } tagCompound.setTag("Items", tagList); System.out.println("Write: " + front); } public boolean isInvNameLocalized() { return true; } public int getInventoryStackLimit() { return 64; } public int getCookProgressScaled(int i) { return (ingotCookTime * i) / 200; } public int getBurnTimeRemainingScaled(int i) { if(ingotItemBurnTime == 0) { ingotItemBurnTime = 200; } return (ingotBurnTime * i) / ingotItemBurnTime; } public boolean isBurning() { return ingotBurnTime > 0; } public void updateEntity() { boolean var1 = ingotBurnTime > 0; boolean var2 = false; if(ingotBurnTime > 0) { --ingotBurnTime; } if(!worldObj.isRemote) { if(ingotBurnTime == 0 && canSmelt()) { ingotItemBurnTime = ingotBurnTime = getItemBurnTime(ingotItemStacks[1]); if(ingotBurnTime > 0) { var2 = true; if(ingotItemStacks[1] != null) { --ingotItemStacks[1].stackSize; if(ingotItemStacks[1].stackSize == 0) { Item var3 = ingotItemStacks[1].getItem().getContainerItem(); ingotItemStacks[1] = var3 == null ? null : new ItemStack(var3); } } } } if(isBurning() && canSmelt()) { ++ingotCookTime; if(ingotCookTime == 200) { ingotCookTime = 0; smeltItem(); var2 = true; } } else { ingotCookTime = 0; } if(var1 != ingotBurnTime > 0) { var2 = true; validate(); } } boolean check = isActive; isActive = isBurning(); if(isActive != check) { worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } if(var2) { onInventoryChanged(); } } private boolean canSmelt() { if(ingotItemStacks[0] == null) { return false; } ItemStack itemStack = RecipesIngotOven.smelting().getSmeltingResult(ingotItemStacks[0].getItem().itemID); if(itemStack == null) { return false; } if(ingotItemStacks[2] == null) { return true; } if(!ingotItemStacks[2].isItemEqual(itemStack)) { return false; } if(ingotItemStacks[2].stackSize < getInventoryStackLimit() && ingotItemStacks[2].stackSize < ingotItemStacks[2].getMaxStackSize()) { return true; } return ingotItemStacks[2].stackSize < itemStack.getMaxStackSize(); } public void smeltItem() { if(canSmelt()) { ItemStack itemStack = RecipesIngotOven.smelting().getSmeltingResult(ingotItemStacks[0].getItem().itemID); if(ingotItemStacks[2] == null) { ingotItemStacks[2] = itemStack.copy(); } else if(ingotItemStacks[2].itemID == itemStack.itemID) { ++ingotItemStacks[2].stackSize; } --ingotItemStacks[0].stackSize; if(ingotItemStacks[0].stackSize == 0) { Item item = ingotItemStacks[0].getItem().getContainerItem(); ingotItemStacks[0] = item == null ? null : new ItemStack(item); } } } public static boolean isItemFuel(ItemStack itemStack) { return getItemBurnTime(itemStack) > 0; } public static int getItemBurnTime(ItemStack itemStack) { if(itemStack == null) { return 0; } int i = itemStack.getItem().itemID; if(i < 256 && Block.blocksList[i].blockMaterial == Material.wood) { return 300; } 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; } else { return GameRegistry.getFuelValue(itemStack); } } public boolean isUseableByPlayer(EntityPlayer entityPlayer) { if(worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this) { return false; } return entityPlayer.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64D; } public void openChest() { } public void closeChest() { } public boolean isItemValidForSlot(int i, ItemStack itemStack) { return false; } public boolean isActive() { return isActive(); } }
August 5, 201312 yr are you even sending the updates to your client ? how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
August 5, 201312 yr Author are you even sending the updates to your client ? I pretty much followed a tutorial on how to do this and edited it to fit my mod but I'd think that i am because this is called on the client side the Gui
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.