Jump to content

Recommended Posts

Posted

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);

}

}

Posted

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 xD

Posted

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();

}

}

Posted

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.