Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

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

}

}

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

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

}

}

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-

  • 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.

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.