Jump to content

[1.6.4] Custom Furnace isn't Smelting/GUI Bug


MinecrafterImob

Recommended Posts

Hello everybody

 

I need some help with my custom furnace. When i open the GUI of my Furnace it is all fine. But when I put some fuel and something for smelting into the furnace it displays something on the right and the Furnace isn't smelting. All the code is below the text. Sorry for my bad English. Thank you for answers.

 

 

package ch.MinecrafterImob.Resmelting;

 

import net.minecraft.block.Block;

import net.minecraft.creativetab.CreativeTabs;

import cpw.mods.fml.common.Mod;

import cpw.mods.fml.common.Mod.EventHandler;

import cpw.mods.fml.common.Mod.Init;

import cpw.mods.fml.common.Mod.Instance;

import cpw.mods.fml.common.Mod.PostInit;

import cpw.mods.fml.common.Mod.PreInit;

import cpw.mods.fml.common.event.FMLInitializationEvent;

import cpw.mods.fml.common.event.FMLPostInitializationEvent;

import cpw.mods.fml.common.event.FMLPreInitializationEvent;

import cpw.mods.fml.common.network.NetworkMod;

import cpw.mods.fml.common.network.NetworkRegistry;

import cpw.mods.fml.common.registry.GameRegistry;

import cpw.mods.fml.common.registry.LanguageRegistry;

 

@Mod(modid = Resmelting.modid, name = "Resmelting Mod", version = "1.0")

@NetworkMod(clientSideRequired = true, serverSideRequired = false)

public class Resmelting {

 

public static final String modid = "resmelting";

 

@Instance(modid)

public static Resmelting instance;

 

public static Block ResmelterIdle;

public static Block ResmelterActiv;

 

public static final int guiIdResmelter = 0;

 

@EventHandler

public void preInit(FMLPreInitializationEvent event) {

 

}

 

@EventHandler

public void init(FMLInitializationEvent event) {

 

ResmelterIdle = new BlockResmelter(180, false).setUnlocalizedName("ResmelterIdle").setHardness(3.5F).setCreativeTab(CreativeTabs.tabBlock);

ResmelterActiv = new BlockResmelter(181, true).setUnlocalizedName("ResmelterActiv").setHardness(3.5F).setLightValue(0.9F);

 

NetworkRegistry.instance().registerGuiHandler(this, new GuiHandler());

 

GameRegistry.registerTileEntity(TileEntityResmelter.class, "Resmelter");

 

GameRegistry.registerBlock(ResmelterIdle, "Resmelter");

GameRegistry.registerBlock(ResmelterActiv, "Resmelter Activ");

 

LanguageRegistry.addName(ResmelterIdle, "Resmelter");

LanguageRegistry.addName(ResmelterActiv, "Resmelter Activ");

 

LanguageRegistry.instance().addStringLocalization("conatiner.Resmelter", "Resmelter");

 

GuiHandler guiHandler = new GuiHandler();

 

}

 

@EventHandler

public static void postInit(FMLPostInitializationEvent event) {

 

}

}

 

 

package ch.MinecrafterImob.Resmelting;

 

import java.util.Random;

 

import cpw.mods.fml.common.network.FMLNetworkHandler;

import cpw.mods.fml.relauncher.Side;

import cpw.mods.fml.relauncher.SideOnly;

import net.minecraft.block.Block;

import net.minecraft.block.BlockContainer;

import net.minecraft.block.material.Material;

import net.minecraft.client.renderer.texture.IconRegister;

import net.minecraft.entity.EntityLivingBase;

import net.minecraft.entity.item.EntityItem;

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.inventory.Container;

import net.minecraft.inventory.IInventory;

import net.minecraft.item.ItemStack;

import net.minecraft.nbt.NBTTagCompound;

import net.minecraft.tileentity.TileEntity;

import net.minecraft.tileentity.TileEntityFurnace;

import net.minecraft.util.Icon;

import net.minecraft.util.MathHelper;

import net.minecraft.world.World;

 

public class BlockResmelter extends BlockContainer{

 

private Random rand = new Random();

 

private final boolean IsActiv;

 

@SideOnly(Side.CLIENT)

private Icon iconFront;

 

private static boolean keepInventory;

 

public BlockResmelter(int id, boolean IsActiv) {

super(id, Material.rock);

 

this.IsActiv = IsActiv;

}

 

@SideOnly(Side.CLIENT)

public void registerIcons(IconRegister reg){

this.blockIcon = reg.registerIcon(Resmelting.modid + ":" + "resmelterSide");

this.iconFront = reg.registerIcon(Resmelting.modid + ":" + (this.IsActiv ? "ResmelterFrontActiv" : "ResmelterFrontIdle"));

}

 

public Icon getIcon(int side, int metadata){

return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon);

}

 

public int idDropped(int par1, Random random, int par3){

return Resmelting.ResmelterIdle.blockID;

}

 

public void onBlockAdded(World world, int x, int y, int z){

super.onBlockAdded(world, x, y, z);

this.setDefaultDirection(world, x, y, z);

}

 

private void setDefaultDirection(World world, int x, int y, int z){

 

if (!world.isRemote){

int l = world.getBlockId(x, y, z - 1);

int il = world.getBlockId(x, y, z + 1);

int jl = world.getBlockId(x - 1, y, z);

int kl = world.getBlockId(x + 1, y, z);

byte b0 = 3;

 

if (Block.opaqueCubeLookup[l] && ! Block.opaqueCubeLookup[il]){

b0 = 3;

}

if(Block.opaqueCubeLookup[il] && ! Block.opaqueCubeLookup[l]){

b0 = 2;

}

 

if(Block.opaqueCubeLookup[kl] && ! Block.opaqueCubeLookup[jl]){

b0 = 5;

}

 

if(Block.opaqueCubeLookup[jl] && ! Block.opaqueCubeLookup[kl]){

b0 = 4;

}

 

world.setBlockMetadataWithNotify(x, y, z, b0, 2);

}

 

}

@Override

    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ){

if(!world.isRemote){

FMLNetworkHandler.openGui(player, Resmelting.instance, Resmelting.guiIdResmelter, world, x, y, z);

}

return true;

}

 

public TileEntity createNewTileEntity(World world){

return new TileEntityResmelter();

 

 

}

@SideOnly(Side.CLIENT)

public void randomDisplayTick(World world, int x, int y, int z, Random random){

if(this.IsActiv){

int direction = world.getBlockMetadata(x, y, z);

float x1 = (float)x + 0.5F;

float y1 = (float)y + random.nextFloat();

float z1 = (float)z + 0.5F;

 

float f = 0.52F;

float f1 = random.nextFloat() * 0.6F - 0.3F;

 

if(direction == 4){

world.spawnParticle("smoke", (double)(x1 - f), (double)(y1), (double)(z1 + f1), 0D, 0D, 0D);

world.spawnParticle("flame", (double)(x1 - f), (double)(y1), (double)(z1 + f1), 0D, 0D, 0D);

}else if(direction == 5){

world.spawnParticle("smoke", (double)(x1 + f), (double)(y1), (double)(z1 + f1), 0D, 0D, 0D);

world.spawnParticle("flame", (double)(x1 + f), (double)(y1), (double)(z1 + f1), 0D, 0D, 0D);

}else if(direction == 2){

world.spawnParticle("smoke", (double)(x1 + f1), (double)(y1), (double)(z1 - f), 0D, 0D, 0D);

world.spawnParticle("flame", (double)(x1 + f1), (double)(y1), (double)(z1 - f), 0D, 0D, 0D);

}else if(direction == 3){

world.spawnParticle("smoke", (double)(x1 + f1), (double)(y1), (double)(z1 + f), 0D, 0D, 0D);

world.spawnParticle("flame", (double)(x1 + f1), (double)(y1), (double)(z1 + f), 0D, 0D, 0D);

}

 

}

}

 

public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityLivingBase, ItemStack itemStack){

int l = MathHelper.floor_double((double)entityLivingBase.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;

 

if (l == 0){

world.setBlockMetadataWithNotify(x, y, z, 2, 2);

}

 

if (l == 1){

world.setBlockMetadataWithNotify(x, y, z, 5, 2);

}

 

if (l == 2){

world.setBlockMetadataWithNotify(x, y, z, 3, 2);

}

 

if (l == 3){

world.setBlockMetadataWithNotify(x, y, z, 4, 2);

}

 

if (itemStack.hasDisplayName()){

((TileEntityResmelter)world.getBlockTileEntity(x, y, z)).setGuiDisplayName(itemStack.getDisplayName());

}

}

 

 

 

public static void updateResmelterBlockState(boolean par0, World par1World, int par2, int par3, int par4)

    {

        int l = par1World.getBlockMetadata(par2, par3, par4);

        TileEntity tileentity = par1World.getBlockTileEntity(par2, par3, par4);

        keepInventory = true;

 

        if (par0)

        {

            par1World.setBlock(par2, par3, par4, Resmelting.ResmelterActiv.blockID);

        }

        else

        {

            par1World.setBlock(par2, par3, par4, Resmelting.ResmelterIdle.blockID);

        }

 

        keepInventory = false;

        par1World.setBlockMetadataWithNotify(par2, par3, par4, l, 2);

 

        if (tileentity != null)

        {

            tileentity.validate();

            par1World.setBlockTileEntity(par2, par3, par4, tileentity);

        }

    }

 

public void breakBlock(World world, int x, int y, int z, int oldBlockID, int oldMetadata){

if(!keepInventory){

TileEntityResmelter tileentity = (TileEntityResmelter) world.getBlockTileEntity(x, y, z);

 

if(tileentity != null){

for(int i = 0; i < tileentity.getSizeInventory(); i++){

ItemStack itemstack = tileentity.getStackInSlot(i);

 

if(itemstack != null){

float f = this.rand.nextFloat() * 0.8F + 0.1F;

float f1 = this.rand.nextFloat() * 0.8F + 0.1F;

float f2 = this.rand.nextFloat() * 0.8F + 0.1F;

 

while(itemstack.stackSize > 0){

int j = this.rand.nextInt(21) + 10;

 

if(j > itemstack.stackSize){

j = itemstack.stackSize;

}

 

itemstack.stackSize -= j;

EntityItem item = new EntityItem(world, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(itemstack.itemID, j, itemstack.getItemDamage()));

 

if(itemstack.hasTagCompound()){

item.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());

}

 

float f3 = 0.05F;

item.motionX = (double)((float)this.rand.nextGaussian() * f3);

item.motionY = (double)((float)this.rand.nextGaussian() * f3 + 0.2F);

item.motionZ = (double)((float)this.rand.nextGaussian() * f3);

 

world.spawnEntityInWorld(item);

}

}

}

 

world.func_96440_m(x, y, z, oldBlockID);

}

}

 

super.breakBlock(world, x, y, z, oldBlockID, oldMetadata);

 

}

 

public boolean hasComparatorInputOverride(){

return true;

}

 

public int getComparatorInputOverride(World world, int x, int y, int z, int i){

return Container.calcRedstoneFromInventory((IInventory)world.getBlockTileEntity(x, y, z));

}

 

public int idPicked(World world, int x, int y, int z){

return Resmelting.ResmelterIdle.blockID;

}

 

}

 

 

 

package ch.MinecrafterImob.Resmelting;

 

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.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.item.crafting.FurnaceRecipes;

import net.minecraft.nbt.NBTTagCompound;

import net.minecraft.nbt.NBTTagList;

import net.minecraft.tileentity.TileEntity;

 

public class TileEntityResmelter extends TileEntity implements ISidedInventory{

 

private String localizedname;

 

private static final int[] slots_top = new int[]{0};

private static final int[] slots_bottom = new int[]{2};

private static final int[] slots_sides = new int[]{1};

 

private ItemStack[] slots = new ItemStack[3];

 

public int furnaceSpeed = 200;

 

public int burnTime;

 

public int currentItemBurnTime;

 

public int cookTime;

 

public int getSizeInventory(){

return this.slots.length;

}

 

public String getInvName(){

return this.isInvNameLocalized() ? this.localizedname : "conatiner.Resmelter";

}

 

public boolean isInvNameLocalized(){

return this.localizedname != null && this.localizedname.length() > 0;

}

 

public void setGuiDisplayName(String displayName) {

this.localizedname = displayName;

}

 

 

public ItemStack getStackInSlot(int par1)

    {

        return this.slots[par1];

    }

 

 

public ItemStack decrStackSize(int i, int j) {

if(this.slots != null){

ItemStack itemstack;

 

if(this.slots.stackSize <= j){

itemstack = this.slots;

this.slots = null;

return itemstack;

}else{

itemstack= this.slots.splitStack(j);

 

if(this.slots.stackSize == 0){

this.slots = null;

}

 

return itemstack;

}

}

 

return null;

}

 

 

public ItemStack getStackInSlotOnClosing(int i) {

 

if(this.slots != null){

ItemStack itemstack = this.slots;

this.slots = null;

return itemstack;

}

return null;

}

 

 

public void setInventorySlotContents(int i, ItemStack itemstack) {

this.slots = itemstack;

 

if(itemstack != null && itemstack.stackSize > this.getInventoryStackLimit()){

itemstack.stackSize = this.getInventoryStackLimit();

}

 

}

 

 

public int getInventoryStackLimit() {

return 64;

}

 

public void readFromNBT(NBTTagCompound nbt){

super.readFromNBT(nbt);

 

NBTTagList list = nbt.getTagList("Items");

this.slots = new ItemStack[this.getSizeInventory()];

 

for(int i = 0; i < list.tagCount(); i++){

NBTTagCompound compound = (NBTTagCompound) list.tagAt(i);

byte b = compound.getByte("slot");

 

if(b >= 0 && b < this.slots.length){

this.slots = ItemStack.loadItemStackFromNBT(compound);

 

}

}

 

this.burnTime = (int)nbt.getShort("BurnTime");

this.cookTime = (int)nbt.getShort("CookTime");

this.currentItemBurnTime = getItemBurnTime(this.slots[1]);

 

if(nbt.hasKey("Name")){

this.localizedname = nbt.getString("Name");

}

}

 

public void writeToNBT(NBTTagCompound nbt){

super.writeToNBT(nbt);

 

nbt.setShort("BurnTime", (short)burnTime);

nbt.setShort("CookTime", (short)cookTime);

nbt.setShort("CurrentBurnTime", (short)this.currentItemBurnTime);

 

NBTTagList list = new NBTTagList();

 

for(int i = 0; i < this.slots.length; i++){

if(this.slots != null){

NBTTagCompound compound = new NBTTagCompound();

compound.setByte("slot", (byte)i);

this.slots.writeToNBT(compound);

list.appendTag(compound);

}

}

 

nbt.setTag("Items", list);

 

if(this.isInvNameLocalized()){

nbt.setString("Name", this.localizedname);

}

}

 

 

public boolean isUseableByPlayer(EntityPlayer entityplayer) {

 

return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : entityplayer.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 isBurning(){

return this.burnTime > 0;

}

 

public void updateEntity(){

boolean flag = this.burnTime > 0;

boolean flag1 = false;

 

 

if(this.burnTime > 0){

this.burnTime--;

}

 

if(!this.worldObj.isRemote){

if(this.burnTime == 0 && this.canSmelt()){

this.currentItemBurnTime= this.burnTime = getItemBurnTime(this.slots[1]);

 

if(this.burnTime > 0){

flag1 = true;

 

if(this.slots[1] != null){

this.slots[1].stackSize--;

 

if(this.slots[1].stackSize == 0){

this.slots[1] = this.slots[1].getItem().getContainerItemStack(this.slots[1]);

}

}

}

}

 

if(this.isBurning() && this.canSmelt()){

this.cookTime++;

}else{

this.cookTime = 0;

 

if(this.cookTime == this.furnaceSpeed){

this.cookTime = 0;

this.smeltItem();

flag1 = true;

}

}

 

if(flag != this.isBurning()){

flag1 = true;

BlockResmelter.updateResmelterBlockState(this.burnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);

}

}

 

if(flag1){

this.onInventoryChanged();

}

}

 

private boolean canSmelt(){

if(this.slots[0] == null){

return false;

}else{

ItemStack itemstack = FurnaceRecipes.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 = this.slots[2].stackSize + itemstack.stackSize;

 

return (result <= getInventoryStackLimit() && result <= itemstack.getMaxStackSize());

}

}

 

public void smeltItem(){

if(this.canSmelt()){

ItemStack itemstack = FurnaceRecipes.smelting().getSmeltingResult(this.slots[0]);

 

if(this.slots[2] == null){

this.slots[2] = itemstack.copy();

}else if(this.slots[2].isItemEqual(itemstack)){

this.slots[2].stackSize += itemstack.stackSize;

}

this.slots[0].stackSize--;

 

if(this.slots[0].stackSize <= 0){

this.slots[0] = null;

}

}

}

 

public static int getItemBurnTime(ItemStack itemstack){

if(itemstack == null){

return 0;

}else{

int i = itemstack.getItem().itemID;

Item item = itemstack.getItem();

 

if(item 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.coalBlock){

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

}

}

 

public static boolean isItemFuel(ItemStack itemstack){

return getItemBurnTime(itemstack) > 0;

}

 

 

public boolean isItemValidForSlot(int i, ItemStack itemstack) {

return i == 2 ? false : (1 == i ? isItemFuel(itemstack) : true);

}

 

 

public int[] getAccessibleSlotsFromSide(int var1) {

return var1 == 0 ? slots_bottom : (var1 == 1 ? slots_top : slots_sides);

}

 

 

public boolean canInsertItem(int i, ItemStack itemstack, int j) {

return this.isItemValidForSlot(i, itemstack);

}

 

 

public boolean canExtractItem(int i, ItemStack itemstack, int j) {

return j != 0 || i != 1 || itemstack.itemID == Item.bucketEmpty.itemID;

}

 

public int getBurnTimeRemainigScaled(int i){

if(this.currentItemBurnTime == 0){

this.currentItemBurnTime = this.furnaceSpeed;

 

}

 

return this.burnTime * i / this.currentItemBurnTime;

}

 

public int getCookProgressScaled(int i){

return this.cookTime * i / this.furnaceSpeed;

}

 

}

 

 

 

package ch.MinecrafterImob.Resmelting;

 

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.tileentity.TileEntity;

import net.minecraft.world.World;

import cpw.mods.fml.common.network.IGuiHandler;

import cpw.mods.fml.common.network.NetworkRegistry;

 

public class GuiHandler implements IGuiHandler{

 

 

 

public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {

TileEntity entity = world.getBlockTileEntity(x, y, z);

 

if(entity != null){

switch(ID){

case Resmelting.guiIdResmelter:

if(entity instanceof TileEntityResmelter){

return new ContainerResmelter(player.inventory, (TileEntityResmelter) entity);

}

}

}

 

return null;

}

 

public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {

TileEntity entity = world.getBlockTileEntity(x, y, z);

 

if(entity != null){

switch(ID){

case Resmelting.guiIdResmelter:

if(entity instanceof TileEntityResmelter){

return new GuiResmelter(player.inventory, (TileEntityResmelter) entity);

}

}

}

 

return null;

}

 

}

 

 

 

package ch.MinecrafterImob.Resmelting;

 

import org.lwjgl.opengl.GL11;

 

import net.minecraft.client.Minecraft;

import net.minecraft.client.gui.inventory.GuiContainer;

import net.minecraft.client.resources.I18n;

import net.minecraft.entity.player.InventoryPlayer;

import net.minecraft.inventory.Container;

import net.minecraft.tileentity.TileEntity;

import net.minecraft.util.ResourceLocation;

 

public class GuiResmelter extends GuiContainer{

 

public static final ResourceLocation texture = new ResourceLocation(Resmelting.modid, "textures/gui/Resmelter.png");

 

public TileEntityResmelter Resmelter;

 

public GuiResmelter(InventoryPlayer inventoryPlayer, TileEntityResmelter entity) {

super(new ContainerResmelter(inventoryPlayer, entity));

 

this.Resmelter = entity;

 

this.xSize = 176;

this.ySize = 166;

}

 

public void drawGuiContainerForegroundLayer(int par1, int par2){

String name = this.Resmelter.isInvNameLocalized() ? this.Resmelter.getInvName() : I18n.getString(this.Resmelter.getInvName());

 

this.fontRenderer.drawString(name, this.xSize / 2 - this.fontRenderer.getStringWidth(name) / 2, 6, 4210752);

this.fontRenderer.drawString(I18n.getString("container.inventory"), 8, this.ySize -96, 4210752);

}

 

 

public void drawGuiContainerBackgroundLayer(float f, int i, int j) {

GL11.glColor4f(1F, 1F, 1F, 1F);

 

Minecraft.getMinecraft().getTextureManager().bindTexture(texture);

drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);

 

if(this.Resmelter.isBurning()){

int k = this.Resmelter.getBurnTimeRemainigScaled(12);

drawTexturedModalRect(guiLeft + 56, guiTop + 36 + 12 - k, 176, 12 - k, 14, k + 2);

}

 

int k = this.Resmelter.getCookProgressScaled(24);

drawTexturedModalRect(guiLeft + 79, guiTop + 34, 176, 14, k + 1, 16);

 

}

 

}

 

 

 

package ch.MinecrafterImob.Resmelting;

 

import cpw.mods.fml.relauncher.Side;

import cpw.mods.fml.relauncher.SideOnly;

import net.minecraft.entity.player.EntityPlayer;

import net.minecraft.entity.player.InventoryPlayer;

import net.minecraft.inventory.Container;

import net.minecraft.inventory.ICrafting;

import net.minecraft.inventory.Slot;

import net.minecraft.inventory.SlotFurnace;

import net.minecraft.item.ItemStack;

import net.minecraft.item.crafting.FurnaceRecipes;

import net.minecraft.tileentity.TileEntityFurnace;

 

public class ContainerResmelter extends Container{

 

private TileEntityResmelter Resmelter;

 

public int lastBurnTime;

 

public int lastItemBurnTime;

 

public int lastCookTime;

 

public ContainerResmelter(InventoryPlayer inevntory, TileEntityResmelter tileentity){

this.Resmelter = tileentity;

 

this.addSlotToContainer(new Slot(tileentity, 0, 56, 17));

this.addSlotToContainer(new Slot(tileentity, 1, 56, 53));

this.addSlotToContainer(new SlotFurnace(inevntory.player, tileentity, 2, 35, 116));

 

for(int i = 0; i < 3; i++){

for(int j = 0; j < 9; j++){

this.addSlotToContainer(new Slot(inevntory, j + i*9 + 9, 8 + j*18, 84 + i*18));

}

 

}

 

for(int i = 0; i < 9; i++){

this.addSlotToContainer(new Slot(inevntory, i, 8 + i*18, 142));

}

}

 

public void addCraftingToCrafters(ICrafting icrafting){

super.addCraftingToCrafters(icrafting);

icrafting.sendProgressBarUpdate(this, 0, this.Resmelter.cookTime);

icrafting.sendProgressBarUpdate(this, 1, this.Resmelter.burnTime);

icrafting.sendProgressBarUpdate(this, 2, this.Resmelter.currentItemBurnTime);

}

 

public void detectAndSendChanges(){

super.detectAndSendChanges();

 

for(int i = 0; i < this.crafters.size(); i++){

ICrafting icrafting = (ICrafting) this.crafters.get(i);

 

if(this.lastCookTime != this.Resmelter.cookTime){

icrafting.sendProgressBarUpdate(this, 0, this.Resmelter.cookTime);

}

if(this.lastBurnTime != this.Resmelter.burnTime){

icrafting.sendProgressBarUpdate(this, 0, this.Resmelter.burnTime);

}

if(this.lastItemBurnTime != this.Resmelter.currentItemBurnTime){

icrafting.sendProgressBarUpdate(this, 0, this.Resmelter.currentItemBurnTime);

}

}

 

this.lastCookTime = this.Resmelter.cookTime;

this.lastBurnTime = this.Resmelter.burnTime;

this.lastItemBurnTime = this.Resmelter.currentItemBurnTime;

}

 

@SideOnly(Side.CLIENT)

public void updateProgressBar(int slot, int newValue){

if(slot == 0)this.Resmelter.cookTime = newValue;

if(slot == 1)this.Resmelter.burnTime = newValue;

if(slot == 2)this.Resmelter.currentItemBurnTime = newValue;

}

 

public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)

    {

        ItemStack itemstack = null;

        Slot slot = (Slot)this.inventorySlots.get(par2);

 

        if (slot != null && slot.getHasStack())

        {

            ItemStack itemstack1 = slot.getStack();

            itemstack = itemstack1.copy();

 

            if (par2 == 2)

            {

                if (!this.mergeItemStack(itemstack1, 3, 39, true))

                {

                    return null;

                }

 

                slot.onSlotChange(itemstack1, itemstack);

            }

            else if (par2 != 1 && par2 != 0)

            {

                if (FurnaceRecipes.smelting().getSmeltingResult(itemstack1) != null)

                {

                    if (!this.mergeItemStack(itemstack1, 0, 1, false))

                    {

                        return null;

                    }

                }

                else if (TileEntityFurnace.isItemFuel(itemstack1))

                {

                    if (!this.mergeItemStack(itemstack1, 1, 2, false))

                    {

                        return null;

                    }

                }

                else if (par2 >= 3 && par2 < 30)

                {

                    if (!this.mergeItemStack(itemstack1, 30, 39, false))

                    {

                        return null;

                    }

                }

                else if (par2 >= 30 && par2 < 39 && !this.mergeItemStack(itemstack1, 3, 30, false))

                {

                    return null;

                }

            }

            else if (!this.mergeItemStack(itemstack1, 3, 39, false))

            {

                return null;

            }

 

            if (itemstack1.stackSize == 0)

            {

                slot.putStack((ItemStack)null);

            }

            else

            {

                slot.onSlotChanged();

            }

 

            if (itemstack1.stackSize == itemstack.stackSize)

            {

                return null;

            }

 

            slot.onPickupFromSlot(par1EntityPlayer, itemstack1);

        }

 

        return itemstack;

}

 

@Override

public boolean canInteractWith(EntityPlayer entityplayer) {

return this.Resmelter.isUseableByPlayer(entityplayer);

}

 

}

 

 

 

The GUI texture is the normal furnace GUI texture

Link to comment
Share on other sites

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.