Jump to content

Recommended Posts

Posted

So I have what should be a working GUI that shows the current fluid level, However when I call getSteam() it always evaluates to 0 meaning my fluid bar doesn't show up

 

public int getSteam() {

        return this.internaltank.getFluidAmount();
    }

 

 

package com.brady131313.steamreborn.client.gui.machines;

import com.brady131313.steamreborn.inventory.ContainerAlloyCompressor;
import com.brady131313.steamreborn.reference.Names;
import com.brady131313.steamreborn.reference.Textures;
import com.brady131313.steamreborn.tileentity.TileEntityAlloyCompressor;
import com.brady131313.steamreborn.utility.LogHelper;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.StatCollector;
import org.lwjgl.opengl.GL11;


@SideOnly(Side.CLIENT)
public class GuiAlloyCompressor extends GuiContainer {

    private TileEntityAlloyCompressor tileEntityAlloyCompressor;

    public GuiAlloyCompressor(InventoryPlayer inventoryPlayer, TileEntityAlloyCompressor tileEntityAlloyCompressor) {

        super(new ContainerAlloyCompressor(inventoryPlayer, tileEntityAlloyCompressor));
        this.tileEntityAlloyCompressor = tileEntityAlloyCompressor;
        xSize = 176;
        ySize = 187;
    }

    @Override
    protected void drawGuiContainerForegroundLayer(int x, int y) {

        String containerName = StatCollector.translateToLocal(tileEntityAlloyCompressor.getInventoryName());
        fontRendererObj.drawString(containerName, xSize / 2 - fontRendererObj.getStringWidth(containerName) / 2, 6, 4210752);
        fontRendererObj.drawString(StatCollector.translateToLocal(Names.Containers.VANNILLA_INVENTORY), 8, ySize - 96 + 2, 4210752);
    }

    @Override
    protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) {

        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        TileEntityAlloyCompressor tileEntity = new TileEntityAlloyCompressor();

        this.mc.getTextureManager().bindTexture(Textures.Gui.ALLOY_COMPRESSOR);

        int xStart = (width - xSize) / 2;
        int yStart = (height - ySize) / 2;

        this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, ySize);
        int scaleAdjustment;
        int steamLevel;

        if (this.tileEntityAlloyCompressor.getState() == 1) {
            scaleAdjustment = this.tileEntityAlloyCompressor.getBurnTimeRemainingScaled(12);
            this.drawTexturedModalRect(xStart + 45, yStart + 36 + 34 - scaleAdjustment, 176, 12 - scaleAdjustment, 14, scaleAdjustment + 2);
        }

        if (this.tileEntityAlloyCompressor.internaltank.getFluidAmount() > 0) {
            steamLevel = this.tileEntityAlloyCompressor.getSteam();
            LogHelper.info(steamLevel);
            this.drawTexturedModalRect(xStart + 25, yStart + 83, 2, 191, steamLevel + 1, 9);
        }

        scaleAdjustment = this.tileEntityAlloyCompressor.getCookProgressScaled(36);
        this.drawTexturedModalRect(xStart + 63 , yStart + 32, 176, 34, scaleAdjustment + 1, 30);

    }

}

Posted

So I tried looking at the code for the furnace, and i added a updateProgress bar to my container for the machine, and I have the container however the fluid still does not show up. And when I log the the value, it comes up as 0, when it should be 10000 when filled.

 

package com.brady131313.steamreborn.inventory;

import com.brady131313.steamreborn.tileentity.TileEntityAlloyCompressor;
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.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntityFurnace;

public class ContainerAlloyCompressor extends ContainerSR {

    private TileEntityAlloyCompressor tileEntityAlloyCompressor;
    private int lastDeviceCookTime;
    private int lastFuelBurnTime;
    private int lastItemCookTime;
    private int lastSteamLevel;

    public ContainerAlloyCompressor(InventoryPlayer inventoryPlayer, TileEntityAlloyCompressor tileEntityAlloyCompressor) {

        this.tileEntityAlloyCompressor = tileEntityAlloyCompressor;

        //this.addSlotToContainer(new Slot(tileEntityAlloyCompressor, TileEntityAlloyCompressor.FUEL_INVENTORY_INDEX, 44, 74));
        this.addSlotToContainer(new Slot(tileEntityAlloyCompressor, TileEntityAlloyCompressor.INGOT1_INVENTORY_INXEX, 44, 26));
        this.addSlotToContainer(new Slot(tileEntityAlloyCompressor, TileEntityAlloyCompressor.INGOT2_INVENTORY_INDEX, 44, 53));
        this.addSlotToContainer(new SlotAlloyCompressorOutput(tileEntityAlloyCompressor, TileEntityAlloyCompressor.OUTPUT_INVENTORY_INDEX, 120, 39));

        // Add the players inventory slots to the container
        for (int inventoryRowIndex = 0; inventoryRowIndex < PLAYER_INVENTORY_ROWS; ++inventoryRowIndex) {
            for (int inventoryColumnIndex = 0; inventoryColumnIndex < PLAYER_INVENTORY_COLUMNS; ++inventoryColumnIndex) {
                this.addSlotToContainer(new Slot(inventoryPlayer, inventoryColumnIndex + inventoryRowIndex * 9 + 9, 8 + inventoryColumnIndex * 18, 106 + inventoryRowIndex * 18));
            }
        }

        // Add the players action bar slots to the container
        for (int actionBarSlotIndex = 0; actionBarSlotIndex < PLAYER_INVENTORY_COLUMNS; ++actionBarSlotIndex) {
            this.addSlotToContainer(new Slot(inventoryPlayer, actionBarSlotIndex, 8 + actionBarSlotIndex * 18, 164));
        }
    }

    @Override
    public void addCraftingToCrafters(ICrafting iCrafting) {

        super.addCraftingToCrafters(iCrafting);
        iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityAlloyCompressor.deviceCookTime);
        iCrafting.sendProgressBarUpdate(this, 1, this.tileEntityAlloyCompressor.fuelBurnTime );
        iCrafting.sendProgressBarUpdate(this, 2, this.tileEntityAlloyCompressor.itemCookTime);
        iCrafting.sendProgressBarUpdate(this, 3, this.tileEntityAlloyCompressor.steamAmount);
    }

    @Override
    public void detectAndSendChanges() {

        super.detectAndSendChanges();

        for (Object crafter : this.crafters) {
            ICrafting iCrafting = (ICrafting) crafter;

            if (this.lastDeviceCookTime != this.tileEntityAlloyCompressor.deviceCookTime) {
                iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityAlloyCompressor.deviceCookTime);
            }

            if (this.lastFuelBurnTime != this.tileEntityAlloyCompressor.fuelBurnTime) {
                iCrafting.sendProgressBarUpdate(this, 1, this.tileEntityAlloyCompressor.fuelBurnTime);
            }

            if (this.lastItemCookTime != this.tileEntityAlloyCompressor.itemCookTime) {
                iCrafting.sendProgressBarUpdate(this, 2, this.tileEntityAlloyCompressor.itemCookTime);
            }

            if (this.lastSteamLevel != this.tileEntityAlloyCompressor.steamAmount) {
                iCrafting.sendProgressBarUpdate(this, 3, this.tileEntityAlloyCompressor.steamAmount);
            }
        }

        this.lastDeviceCookTime = this.tileEntityAlloyCompressor.deviceCookTime;
        this.lastFuelBurnTime = this.tileEntityAlloyCompressor.fuelBurnTime;
        this.lastItemCookTime = this.tileEntityAlloyCompressor.itemCookTime;
        this.lastSteamLevel = this.tileEntityAlloyCompressor.steamAmount;
    }

    @Override
    public ItemStack transferStackInSlot(EntityPlayer entityPlayer, int slotIndex) {

        ItemStack itemStack = null;
        Slot slot = (Slot) inventorySlots.get(slotIndex);

        if (slot != null && slot.getHasStack()) {
            ItemStack slotItemStack = slot.getStack();
            itemStack = slotItemStack.copy();

            /**
             * If we are shift-clicking an item out of the alloy compressors container,
             * attempt to put it in the first available slot in the players
             * inventory
             */
            if (slotIndex < TileEntityAlloyCompressor.INVENTORY_SIZE) {
                if (!this.mergeItemStack(slotItemStack, TileEntityAlloyCompressor.INVENTORY_SIZE, inventorySlots.size(), false)) {
                    return null;
                }
            } else {
                /**If the stack being shift-clicked into the alloy compressor container
                 * is a fuel, first try to put it in the fuel slot.
                 * if it cannot be mearged into the fuel slot, try to put it into the imput
                 * slot


                if (TileEntityFurnace.isItemFuel(slotItemStack)) {
                    if (!this.mergeItemStack(slotItemStack, TileEntityAlloyCompressor.FUEL_INVENTORY_INDEX, TileEntityAlloyCompressor.OUTPUT_INVENTORY_INDEX, false)) {
                        return null;
                    }
                }*/

                /**
                 * if the stack being shift-clicked into the alloy compressors container
                 * is a ingot first try to put it in the ingot1 slot. if it cannot
                 * be merged into the ingot1 slot, try to put it in the input slot
                 */

                if (slotItemStack.getItem() instanceof Item) {
                    if (!this.mergeItemStack(slotItemStack, TileEntityAlloyCompressor.INGOT2_INVENTORY_INDEX, TileEntityAlloyCompressor.OUTPUT_INVENTORY_INDEX, false)) {
                        return null;
                    }
                }

                /**
                 * finally, attempt to put stack into the input slot
                 */

                else if (!this.mergeItemStack(slotItemStack, TileEntityAlloyCompressor.INGOT1_INVENTORY_INXEX, TileEntityAlloyCompressor.INGOT2_INVENTORY_INDEX, false)) {
                    return null;
                }
            }

            if (slotItemStack.stackSize == 0) {
                slot.putStack(null);
            } else {
                slot.onSlotChanged();
            }
        }

        return itemStack;
    }

    @SideOnly(Side.CLIENT)
    public void updateProgressBar(int valueType, int updatedValue) {

        if (valueType == 0) {
            this.tileEntityAlloyCompressor.deviceCookTime = updatedValue;
        }

        if (valueType == 1) {
            this.tileEntityAlloyCompressor.fuelBurnTime = updatedValue;
        }

        if (valueType == 2) {
            this.tileEntityAlloyCompressor.itemCookTime = updatedValue;
        }

        if (valueType == 3) {
            this.tileEntityAlloyCompressor.steamAmount = updatedValue;
        }
    }
}

Posted

Ya all the methods are called because the fluid one is in the same method I use to update the progress bar and that works fine, and shows up in the gui, but the fluid still doesnt show up

Posted

I removed get state and the and the if statement that was using it because that was used to check if the machine was being used, but know i have it set to use a liquid so that was no longer needed, these are the gui and tile entity now

 

package com.brady131313.steamreborn.tileentity;

import com.brady131313.steamreborn.item.crafting.RecipeAlloyCompressor;
import com.brady131313.steamreborn.network.PacketHandler;
import com.brady131313.steamreborn.network.message.MessageTileEntityAlloyCompressor;
import com.brady131313.steamreborn.recipe.RecipesAlloyCompressor;
import com.brady131313.steamreborn.reference.Names;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.Packet;
import net.minecraft.util.ChatComponentText;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.*;

public class TileEntityAlloyCompressor extends TileEntitySR implements ISidedInventory, IFluidHandler {

    public static final int INVENTORY_SIZE = 3;
    //public static final int FUEL_INVENTORY_INDEX = 0;
    public static final int INGOT1_INVENTORY_INXEX = 0;
    public static final int INGOT2_INVENTORY_INDEX = 1;
    public static final int OUTPUT_INVENTORY_INDEX = 2;

    public int deviceCookTime; //How long the smelter will cook
    public int fuelBurnTime;   //the fuel value for the currently burning fuel
    public int itemCookTime;   //How long the current item has been cooking

    public ItemStack outputItemStack;

    private ItemStack[] inventory;

    //FLuids
    private final int tankCapacity = 10000;
    public FluidTank steamTank = new FluidTank(this.tankCapacity);

    public int steamAmount = this.steamTank.getFluidAmount();

    public TileEntityAlloyCompressor() {

        inventory = new ItemStack[iNVENTORY_SIZE];
    }

    @Override
    public int[] getAccessibleSlotsFromSide(int side) {

        return side == ForgeDirection.DOWN.ordinal() ? new int[]{OUTPUT_INVENTORY_INDEX} : new int[]{INGOT1_INVENTORY_INXEX, INGOT2_INVENTORY_INDEX, OUTPUT_INVENTORY_INDEX};
    }

    @Override
    public boolean canInsertItem(int slotIndex, ItemStack itemStack, int side) {

        if (worldObj.getTileEntity(xCoord, yCoord, zCoord) instanceof TileEntityAlloyCompressor) {
            return isItemValidForSlot(slotIndex, itemStack);
        } else {
            return false;
        }
    }

    @Override
    public boolean canExtractItem(int slotIndex, ItemStack itemStack, int side) {

        return slotIndex == OUTPUT_INVENTORY_INDEX;
    }

    @Override
    public void readFromNBT(NBTTagCompound nbtTagCompound) {

        super.readFromNBT(nbtTagCompound);

        // read in the itemstacks in the inventory from NBT
        NBTTagList tagList = nbtTagCompound.getTagList(Names.NBT.ITEMS, 10);
        inventory = new ItemStack[this.getSizeInventory()];

        for (int i = 0; i < tagList.tagCount(); ++i) {
            NBTTagCompound tagCompound = tagList.getCompoundTagAt(i);
            byte slotIndex = tagCompound.getByte("Slot");
            if (slotIndex >= 0 && slotIndex < inventory.length) {
                inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound);
            }
        }

        this.steamTank.readFromNBT(nbtTagCompound.getCompoundTag("steamTank"));

        deviceCookTime = nbtTagCompound.getInteger("deviceCookTime");
        fuelBurnTime = nbtTagCompound.getInteger("fuelBurnTime");
        itemCookTime = nbtTagCompound.getInteger("itemCookTime");
        //hasGlassbell = nbtTagCompound.getBoolean("hasGlassBell");
    }

    @Override
    public int getSizeInventory() {

        return inventory.length;
    }

    @Override
    public ItemStack getStackInSlot(int slotIndex) {

        return inventory[slotIndex];
    }

    @Override
    public ItemStack decrStackSize(int slotIndex, int decrementAmount) {

        ItemStack itemStack = getStackInSlot(slotIndex);
        if (itemStack != null) {
            if (itemStack.stackSize <= decrementAmount) {
                setInventorySlotContents(slotIndex, null);
            } else {
                itemStack = itemStack.splitStack(decrementAmount);
                if (itemStack.stackSize == 0) {
                    setInventorySlotContents(slotIndex, null);
                }
            }
        }

        return itemStack;
    }

    @Override
    public ItemStack getStackInSlotOnClosing(int slotIndex) {

        ItemStack itemStack = getStackInSlot(slotIndex);
        if (itemStack != null) {
            setInventorySlotContents(slotIndex, null);
        }
        return itemStack;
    }

    @Override
    public void setInventorySlotContents(int slotIndex, ItemStack itemStack) {

        inventory[slotIndex] = itemStack;
        if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) {
            itemStack.stackSize = getInventoryStackLimit();
        }
    }

    @Override
    public String getInventoryName() {

        return this.hasCustomName() ? this.getCustomName() : Names.Containers.STEAM_SMELTER;
    }

    @Override
    public boolean hasCustomInventoryName() {

        return this.hasCustomName();
    }

    @Override
    public int getInventoryStackLimit() {

        return 64;
    }

    @Override
    public boolean isUseableByPlayer(EntityPlayer var1) {

        return true;
    }

    @Override
    public void openInventory() {

        //IDK
    }

    @Override
    public void closeInventory() {

        //IDK
    }

    @Override
    public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack) {

        switch (slotIndex) {

            case INGOT1_INVENTORY_INXEX: {
                return true;
            }
            case INGOT2_INVENTORY_INDEX: {
                return true;
            }
            default: {
                return false;
            }
        }
    }

    @Override
    public void writeToNBT(NBTTagCompound nbtTagCompound) {

        super.writeToNBT(nbtTagCompound);

        // Write the Itemstacks in the inventory to NBT
        NBTTagList tagList = new NBTTagList();
        for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex) {
            if (inventory[currentIndex] != null) {
                NBTTagCompound tagCompound = new NBTTagCompound();
                tagCompound.setByte("Slot", (byte) currentIndex);
                inventory[currentIndex].writeToNBT(tagCompound);
                tagList.appendTag(tagCompound);
            }
        }

        nbtTagCompound.setTag("steamTank", this.steamTank.writeToNBT(new NBTTagCompound()));

        nbtTagCompound.setTag(Names.NBT.ITEMS, tagList);
        nbtTagCompound.setInteger("deviceCookTime", deviceCookTime);
        nbtTagCompound.setInteger("fuelBurnTime", fuelBurnTime);
        nbtTagCompound.setInteger("itemCookTime", itemCookTime);
        //nbtTagCompound.setBoolean("hasGlassBell", hasGlassBell);
    }

    @Override
    public Packet getDescriptionPacket() {

        return PacketHandler.INSTANCE.getPacketFrom(new MessageTileEntityAlloyCompressor(this, inventory[OUTPUT_INVENTORY_INDEX]));
    }

    @Override
    public void updateEntity() {

        boolean isBurning = this.deviceCookTime > 0;
        boolean sendUpdate = false;

        //If the smelter still has burn time, decrement it
        if (this.deviceCookTime > 0) {
            this.deviceCookTime--;
        }

        if (!this.worldObj.isRemote) {
            //Start cooking new item, if we can
            if (this.deviceCookTime == 0 && this.canAlloy()) {
                if (this.steamTank.getFluidAmount() >= 100) {
                    this.deviceCookTime += 1;
                    //TODO better implementation of steam use
                }
            }

            // Continue cooking the same item if we can
            if (this.deviceCookTime > 0 && this.canAlloy()) {
                this.itemCookTime++;

                if (this.itemCookTime == 200) {
                    this.itemCookTime = 0;
                    this.alloyItem();
                    sendUpdate = true;
                }
            } else {
                this.itemCookTime = 0;
            }

            // If the state has changed, cath something changed
            if (isBurning != this.deviceCookTime > 0) {
                sendUpdate = true;
            }
        }

        if (sendUpdate) {

            this.markDirty();
            this.state = this.deviceCookTime > 0 ? (byte) 1 : (byte) 0;
            this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 1, this.state);
            PacketHandler.INSTANCE.sendToAllAround(new MessageTileEntityAlloyCompressor(this, inventory[OUTPUT_INVENTORY_INDEX]), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, (double) this.xCoord, (double) this.yCoord, (double) this.zCoord, 128d));
            this.worldObj.notifyBlockChange(this.xCoord, this.yCoord, this.zCoord, this.getBlockType());
        }
    }

    @Override
    public void markDirty() {

        PacketHandler.INSTANCE.sendToAllAround(new MessageTileEntityAlloyCompressor(this, inventory[OUTPUT_INVENTORY_INDEX]), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, (double) this.xCoord, (double) this.yCoord, (double) this.zCoord, 128d));

        worldObj.func_147451_t(xCoord, yCoord, zCoord);
    }

    private boolean canAlloy() {

        if (inventory[iNGOT1_INVENTORY_INXEX] == null || inventory[iNGOT2_INVENTORY_INDEX] == null) {
            return false;
        } else {
            ItemStack alloyedItemStack = RecipesAlloyCompressor.getInstance().getResult(inventory[iNGOT1_INVENTORY_INXEX], inventory[iNGOT2_INVENTORY_INDEX]);

            if (alloyedItemStack == null) {
                return false;
            }

            if (inventory[OUTPUT_INVENTORY_INDEX] == null) {
                return true;
            } else {
                boolean outputEquals = this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(alloyedItemStack);
                int mergedOutputStackSize = this.inventory[OUTPUT_INVENTORY_INDEX].stackSize + alloyedItemStack.stackSize;

                if (outputEquals) {
                    return mergedOutputStackSize <= getInventoryStackLimit() && mergedOutputStackSize <= alloyedItemStack.getMaxStackSize();
                }
            }
        }

        return false;
    }

    public void alloyItem() {

        if (this.canAlloy()) {
            RecipeAlloyCompressor recipe = RecipesAlloyCompressor.getInstance().getRecipe(inventory[iNGOT1_INVENTORY_INXEX], inventory[iNGOT2_INVENTORY_INDEX]);

            if (this.inventory[OUTPUT_INVENTORY_INDEX] == null) {
                this.inventory[OUTPUT_INVENTORY_INDEX] = recipe.getRecipeOutput().copy();
            } else if (this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(recipe.getRecipeOutput())) {
                inventory[OUTPUT_INVENTORY_INDEX].stackSize += recipe.getRecipeOutput().stackSize;
            }

            decrStackSize(INGOT1_INVENTORY_INXEX, recipe.getRecipeInputs()[0].getStackSize());
            decrStackSize(INGOT2_INVENTORY_INDEX, recipe.getRecipeInputs()[1].getStackSize());
            this.steamTank.drain(100, true);
        }
    }

    @SideOnly(Side.CLIENT)
    public int getCookProgressScaled(int scale) {

        return this.itemCookTime * scale / 200;
    }

    @SideOnly(Side.CLIENT)
    public int getBurnTimeRemainingScaled(int scale) {

        if (this.fuelBurnTime > 0) {
            return this.deviceCookTime * scale / this.fuelBurnTime;
        }
        return 0;
    }

    public int getScaledSteamLevel(int scale) {

        final double steamLevel = this.steamTank.getFluid() == null ? 0 : this.steamTank.getFluid().amount;

        return (int) (steamLevel * scale / this.tankCapacity);
    }

    // ITankContainer
    @Override
    public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {

        int used = 0;
        FluidStack resourceUsing = resource.copy();

        used += steamTank.fill(resourceUsing, doFill);
        resourceUsing.amount -= used;

        return used;
    }

    @Override
    public FluidStack drain(ForgeDirection from, int maxEmpty, boolean doDrain) {

        return steamTank.drain(maxEmpty, doDrain);
    }

    @Override
    public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {

        if (resource == null || !resource.isFluidEqual(steamTank.getFluid())) {
            return null;
        }

        return drain(from, resource.amount, doDrain);
    }

    @Override
    public FluidTankInfo[] getTankInfo(ForgeDirection from) {

        return new FluidTankInfo[] { new FluidTankInfo(this.steamTank)};
    }

    @Override
    public boolean canFill(ForgeDirection from, Fluid fluid) {

        return true;
    }

    @Override
    public boolean canDrain(ForgeDirection from, Fluid fluid) {

        return false;
    }

    public void sendChatInfoToPlayer(EntityPlayer player) {

        player.addChatMessage(new ChatComponentText("Tanks Fluid Level: " + this.steamTank.getFluidAmount()));
        player.addChatMessage(new ChatComponentText("Tanks Capacity: " + this.steamTank.getCapacity()));
        player.addChatMessage(new ChatComponentText("Tank Fluid: " + this.steamTank.getFluid()));
    }

}

 

 

package com.brady131313.steamreborn.client.gui.machines;

import com.brady131313.steamreborn.inventory.ContainerAlloyCompressor;
import com.brady131313.steamreborn.reference.Names;
import com.brady131313.steamreborn.reference.Textures;
import com.brady131313.steamreborn.tileentity.TileEntityAlloyCompressor;
import com.brady131313.steamreborn.utility.LogHelper;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.StatCollector;
import org.lwjgl.opengl.GL11;


@SideOnly(Side.CLIENT)
public class GuiAlloyCompressor extends GuiContainer {

    private TileEntityAlloyCompressor tileEntityAlloyCompressor;

    public GuiAlloyCompressor(InventoryPlayer inventoryPlayer, TileEntityAlloyCompressor tileEntityAlloyCompressor) {

        super(new ContainerAlloyCompressor(inventoryPlayer, tileEntityAlloyCompressor));
        this.tileEntityAlloyCompressor = tileEntityAlloyCompressor;
        xSize = 176;
        ySize = 187;
    }

    @Override
    protected void drawGuiContainerForegroundLayer(int x, int y) {

        String containerName = StatCollector.translateToLocal(tileEntityAlloyCompressor.getInventoryName());
        fontRendererObj.drawString(containerName, xSize / 2 - fontRendererObj.getStringWidth(containerName) / 2, 6, 4210752);
        fontRendererObj.drawString(StatCollector.translateToLocal(Names.Containers.VANNILLA_INVENTORY), 8, ySize - 96 + 2, 4210752);
    }

    @Override
    protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) {

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

        this.mc.getTextureManager().bindTexture(Textures.Gui.ALLOY_COMPRESSOR);

        int xStart = (width - xSize) / 2;
        int yStart = (height - ySize) / 2;

        this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, ySize);
        int scaleAdjustment;

        final int steamLevel = this.tileEntityAlloyCompressor.getScaledSteamLevel(125);
        this.drawTexturedModalRect(xStart + 25, yStart + 83, 2, 191, steamLevel + 1, 9);
        LogHelper.info(steamLevel);

        scaleAdjustment = this.tileEntityAlloyCompressor.getCookProgressScaled(36);
        this.drawTexturedModalRect(xStart + 63 , yStart + 32, 176, 34, scaleAdjustment + 1, 30);

    }

}

Posted

Thanks for the help, I removed the steamAmount field and accessed the tank directly but know I crash when opening the gui

 

GUI

package com.brady131313.steamreborn.client.gui.machines;

import com.brady131313.steamreborn.inventory.ContainerAlloyCompressor;
import com.brady131313.steamreborn.reference.Names;
import com.brady131313.steamreborn.reference.Textures;
import com.brady131313.steamreborn.tileentity.TileEntityAlloyCompressor;
import com.brady131313.steamreborn.utility.LogHelper;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.StatCollector;
import org.lwjgl.opengl.GL11;


@SideOnly(Side.CLIENT)
public class GuiAlloyCompressor extends GuiContainer {

    private TileEntityAlloyCompressor tileEntityAlloyCompressor;

    public GuiAlloyCompressor(InventoryPlayer inventoryPlayer, TileEntityAlloyCompressor tileEntityAlloyCompressor) {

        super(new ContainerAlloyCompressor(inventoryPlayer, tileEntityAlloyCompressor));
        this.tileEntityAlloyCompressor = tileEntityAlloyCompressor;
        xSize = 176;
        ySize = 187;
    }

    @Override
    protected void drawGuiContainerForegroundLayer(int x, int y) {

        String containerName = StatCollector.translateToLocal(tileEntityAlloyCompressor.getInventoryName());
        fontRendererObj.drawString(containerName, xSize / 2 - fontRendererObj.getStringWidth(containerName) / 2, 6, 4210752);
        fontRendererObj.drawString(StatCollector.translateToLocal(Names.Containers.VANNILLA_INVENTORY), 8, ySize - 96 + 2, 4210752);
    }

    @Override
    protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) {

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

        this.mc.getTextureManager().bindTexture(Textures.Gui.ALLOY_COMPRESSOR);

        int xStart = (width - xSize) / 2;
        int yStart = (height - ySize) / 2;

        this.drawTexturedModalRect(xStart, yStart, 0, 0, xSize, ySize);
        int scaleAdjustment;

        final int steamLevel = this.tileEntityAlloyCompressor.getScaledSteamLevel(125);
        this.drawTexturedModalRect(xStart + 25, yStart + 83, 2, 191, steamLevel + 1, 9);
        LogHelper.info(steamLevel);

        scaleAdjustment = this.tileEntityAlloyCompressor.getCookProgressScaled(36);
        this.drawTexturedModalRect(xStart + 63 , yStart + 32, 176, 34, scaleAdjustment + 1, 30);

    }

}

 

Container

package com.brady131313.steamreborn.inventory;

import com.brady131313.steamreborn.tileentity.TileEntityAlloyCompressor;
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.ICrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntityFurnace;

public class ContainerAlloyCompressor extends ContainerSR {

    private TileEntityAlloyCompressor tileEntityAlloyCompressor;
    private int lastDeviceCookTime;
    private int lastFuelBurnTime;
    private int lastItemCookTime;
    private int lastSteamLevel;

    public ContainerAlloyCompressor(InventoryPlayer inventoryPlayer, TileEntityAlloyCompressor tileEntityAlloyCompressor) {

        this.tileEntityAlloyCompressor = tileEntityAlloyCompressor;

        //this.addSlotToContainer(new Slot(tileEntityAlloyCompressor, TileEntityAlloyCompressor.FUEL_INVENTORY_INDEX, 44, 74));
        this.addSlotToContainer(new Slot(tileEntityAlloyCompressor, TileEntityAlloyCompressor.INGOT1_INVENTORY_INXEX, 44, 26));
        this.addSlotToContainer(new Slot(tileEntityAlloyCompressor, TileEntityAlloyCompressor.INGOT2_INVENTORY_INDEX, 44, 53));
        this.addSlotToContainer(new SlotAlloyCompressorOutput(tileEntityAlloyCompressor, TileEntityAlloyCompressor.OUTPUT_INVENTORY_INDEX, 120, 39));

        // Add the players inventory slots to the container
        for (int inventoryRowIndex = 0; inventoryRowIndex < PLAYER_INVENTORY_ROWS; ++inventoryRowIndex) {
            for (int inventoryColumnIndex = 0; inventoryColumnIndex < PLAYER_INVENTORY_COLUMNS; ++inventoryColumnIndex) {
                this.addSlotToContainer(new Slot(inventoryPlayer, inventoryColumnIndex + inventoryRowIndex * 9 + 9, 8 + inventoryColumnIndex * 18, 106 + inventoryRowIndex * 18));
            }
        }

        // Add the players action bar slots to the container
        for (int actionBarSlotIndex = 0; actionBarSlotIndex < PLAYER_INVENTORY_COLUMNS; ++actionBarSlotIndex) {
            this.addSlotToContainer(new Slot(inventoryPlayer, actionBarSlotIndex, 8 + actionBarSlotIndex * 18, 164));
        }
    }

    @Override
    public void addCraftingToCrafters(ICrafting iCrafting) {

        super.addCraftingToCrafters(iCrafting);
        iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityAlloyCompressor.deviceCookTime);
        iCrafting.sendProgressBarUpdate(this, 1, this.tileEntityAlloyCompressor.fuelBurnTime );
        iCrafting.sendProgressBarUpdate(this, 2, this.tileEntityAlloyCompressor.itemCookTime);
        iCrafting.sendProgressBarUpdate(this, 3, this.tileEntityAlloyCompressor.steamTank.getFluid().amount);
    }

    @Override
    public void detectAndSendChanges() {

        super.detectAndSendChanges();

        for (Object crafter : this.crafters) {
            ICrafting iCrafting = (ICrafting) crafter;

            if (this.lastDeviceCookTime != this.tileEntityAlloyCompressor.deviceCookTime) {
                iCrafting.sendProgressBarUpdate(this, 0, this.tileEntityAlloyCompressor.deviceCookTime);
            }

            if (this.lastFuelBurnTime != this.tileEntityAlloyCompressor.fuelBurnTime) {
                iCrafting.sendProgressBarUpdate(this, 1, this.tileEntityAlloyCompressor.fuelBurnTime);
            }

            if (this.lastItemCookTime != this.tileEntityAlloyCompressor.itemCookTime) {
                iCrafting.sendProgressBarUpdate(this, 2, this.tileEntityAlloyCompressor.itemCookTime);
            }

            if (this.lastSteamLevel != this.tileEntityAlloyCompressor.steamTank.getFluid().amount) {
                iCrafting.sendProgressBarUpdate(this, 3, this.tileEntityAlloyCompressor.steamTank.getFluid().amount);
            }
        }

        this.lastDeviceCookTime = this.tileEntityAlloyCompressor.deviceCookTime;
        this.lastFuelBurnTime = this.tileEntityAlloyCompressor.fuelBurnTime;
        this.lastItemCookTime = this.tileEntityAlloyCompressor.itemCookTime;
        this.lastSteamLevel = this.tileEntityAlloyCompressor.steamTank.getFluid().amount;
    }

    @Override
    public ItemStack transferStackInSlot(EntityPlayer entityPlayer, int slotIndex) {

        ItemStack itemStack = null;
        Slot slot = (Slot) inventorySlots.get(slotIndex);

        if (slot != null && slot.getHasStack()) {
            ItemStack slotItemStack = slot.getStack();
            itemStack = slotItemStack.copy();

            /**
             * If we are shift-clicking an item out of the alloy compressors container,
             * attempt to put it in the first available slot in the players
             * inventory
             */
            if (slotIndex < TileEntityAlloyCompressor.INVENTORY_SIZE) {
                if (!this.mergeItemStack(slotItemStack, TileEntityAlloyCompressor.INVENTORY_SIZE, inventorySlots.size(), false)) {
                    return null;
                }
            } else {
                /**If the stack being shift-clicked into the alloy compressor container
                 * is a fuel, first try to put it in the fuel slot.
                 * if it cannot be mearged into the fuel slot, try to put it into the imput
                 * slot


                if (TileEntityFurnace.isItemFuel(slotItemStack)) {
                    if (!this.mergeItemStack(slotItemStack, TileEntityAlloyCompressor.FUEL_INVENTORY_INDEX, TileEntityAlloyCompressor.OUTPUT_INVENTORY_INDEX, false)) {
                        return null;
                    }
                }*/

                /**
                 * if the stack being shift-clicked into the alloy compressors container
                 * is a ingot first try to put it in the ingot1 slot. if it cannot
                 * be merged into the ingot1 slot, try to put it in the input slot
                 */

                if (slotItemStack.getItem() instanceof Item) {
                    if (!this.mergeItemStack(slotItemStack, TileEntityAlloyCompressor.INGOT2_INVENTORY_INDEX, TileEntityAlloyCompressor.OUTPUT_INVENTORY_INDEX, false)) {
                        return null;
                    }
                }

                /**
                 * finally, attempt to put stack into the input slot
                 */

                else if (!this.mergeItemStack(slotItemStack, TileEntityAlloyCompressor.INGOT1_INVENTORY_INXEX, TileEntityAlloyCompressor.INGOT2_INVENTORY_INDEX, false)) {
                    return null;
                }
            }

            if (slotItemStack.stackSize == 0) {
                slot.putStack(null);
            } else {
                slot.onSlotChanged();
            }
        }

        return itemStack;
    }

    @SideOnly(Side.CLIENT)
    public void updateProgressBar(int valueType, int updatedValue) {

        if (valueType == 0) {
            this.tileEntityAlloyCompressor.deviceCookTime = updatedValue;
        }

        if (valueType == 1) {
            this.tileEntityAlloyCompressor.fuelBurnTime = updatedValue;
        }

        if (valueType == 2) {
            this.tileEntityAlloyCompressor.itemCookTime = updatedValue;
        }

        if (valueType == 3) {
            this.tileEntityAlloyCompressor.steamTank.getFluid().amount = updatedValue;
        }
    }
}

 

TileEntity

package com.brady131313.steamreborn.tileentity;

import com.brady131313.steamreborn.item.crafting.RecipeAlloyCompressor;
import com.brady131313.steamreborn.network.PacketHandler;
import com.brady131313.steamreborn.network.message.MessageTileEntityAlloyCompressor;
import com.brady131313.steamreborn.recipe.RecipesAlloyCompressor;
import com.brady131313.steamreborn.reference.Names;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.Packet;
import net.minecraft.util.ChatComponentText;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.*;

public class TileEntityAlloyCompressor extends TileEntitySR implements ISidedInventory, IFluidHandler {

    public static final int INVENTORY_SIZE = 3;
    //public static final int FUEL_INVENTORY_INDEX = 0;
    public static final int INGOT1_INVENTORY_INXEX = 0;
    public static final int INGOT2_INVENTORY_INDEX = 1;
    public static final int OUTPUT_INVENTORY_INDEX = 2;

    public int deviceCookTime; //How long the smelter will cook
    public int fuelBurnTime;   //the fuel value for the currently burning fuel
    public int itemCookTime;   //How long the current item has been cooking

    public ItemStack outputItemStack;

    private ItemStack[] inventory;

    //FLuids
    private final int tankCapacity = 10000;
    public FluidTank steamTank = new FluidTank(this.tankCapacity);

    public TileEntityAlloyCompressor() {

        inventory = new ItemStack[iNVENTORY_SIZE];
    }

    @Override
    public int[] getAccessibleSlotsFromSide(int side) {

        return side == ForgeDirection.DOWN.ordinal() ? new int[]{OUTPUT_INVENTORY_INDEX} : new int[]{INGOT1_INVENTORY_INXEX, INGOT2_INVENTORY_INDEX, OUTPUT_INVENTORY_INDEX};
    }

    @Override
    public boolean canInsertItem(int slotIndex, ItemStack itemStack, int side) {

        if (worldObj.getTileEntity(xCoord, yCoord, zCoord) instanceof TileEntityAlloyCompressor) {
            return isItemValidForSlot(slotIndex, itemStack);
        } else {
            return false;
        }
    }

    @Override
    public boolean canExtractItem(int slotIndex, ItemStack itemStack, int side) {

        return slotIndex == OUTPUT_INVENTORY_INDEX;
    }

    @Override
    public void readFromNBT(NBTTagCompound nbtTagCompound) {

        super.readFromNBT(nbtTagCompound);

        // read in the itemstacks in the inventory from NBT
        NBTTagList tagList = nbtTagCompound.getTagList(Names.NBT.ITEMS, 10);
        inventory = new ItemStack[this.getSizeInventory()];

        for (int i = 0; i < tagList.tagCount(); ++i) {
            NBTTagCompound tagCompound = tagList.getCompoundTagAt(i);
            byte slotIndex = tagCompound.getByte("Slot");
            if (slotIndex >= 0 && slotIndex < inventory.length) {
                inventory[slotIndex] = ItemStack.loadItemStackFromNBT(tagCompound);
            }
        }

        this.steamTank.readFromNBT(nbtTagCompound.getCompoundTag("steamTank"));

        deviceCookTime = nbtTagCompound.getInteger("deviceCookTime");
        fuelBurnTime = nbtTagCompound.getInteger("fuelBurnTime");
        itemCookTime = nbtTagCompound.getInteger("itemCookTime");
        //hasGlassbell = nbtTagCompound.getBoolean("hasGlassBell");
    }

    @Override
    public int getSizeInventory() {

        return inventory.length;
    }

    @Override
    public ItemStack getStackInSlot(int slotIndex) {

        return inventory[slotIndex];
    }

    @Override
    public ItemStack decrStackSize(int slotIndex, int decrementAmount) {

        ItemStack itemStack = getStackInSlot(slotIndex);
        if (itemStack != null) {
            if (itemStack.stackSize <= decrementAmount) {
                setInventorySlotContents(slotIndex, null);
            } else {
                itemStack = itemStack.splitStack(decrementAmount);
                if (itemStack.stackSize == 0) {
                    setInventorySlotContents(slotIndex, null);
                }
            }
        }

        return itemStack;
    }

    @Override
    public ItemStack getStackInSlotOnClosing(int slotIndex) {

        ItemStack itemStack = getStackInSlot(slotIndex);
        if (itemStack != null) {
            setInventorySlotContents(slotIndex, null);
        }
        return itemStack;
    }

    @Override
    public void setInventorySlotContents(int slotIndex, ItemStack itemStack) {

        inventory[slotIndex] = itemStack;
        if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) {
            itemStack.stackSize = getInventoryStackLimit();
        }
    }

    @Override
    public String getInventoryName() {

        return this.hasCustomName() ? this.getCustomName() : Names.Containers.STEAM_SMELTER;
    }

    @Override
    public boolean hasCustomInventoryName() {

        return this.hasCustomName();
    }

    @Override
    public int getInventoryStackLimit() {

        return 64;
    }

    @Override
    public boolean isUseableByPlayer(EntityPlayer var1) {

        return true;
    }

    @Override
    public void openInventory() {

        //IDK
    }

    @Override
    public void closeInventory() {

        //IDK
    }

    @Override
    public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack) {

        switch (slotIndex) {

            case INGOT1_INVENTORY_INXEX: {
                return true;
            }
            case INGOT2_INVENTORY_INDEX: {
                return true;
            }
            default: {
                return false;
            }
        }
    }

    @Override
    public void writeToNBT(NBTTagCompound nbtTagCompound) {

        super.writeToNBT(nbtTagCompound);

        // Write the Itemstacks in the inventory to NBT
        NBTTagList tagList = new NBTTagList();
        for (int currentIndex = 0; currentIndex < inventory.length; ++currentIndex) {
            if (inventory[currentIndex] != null) {
                NBTTagCompound tagCompound = new NBTTagCompound();
                tagCompound.setByte("Slot", (byte) currentIndex);
                inventory[currentIndex].writeToNBT(tagCompound);
                tagList.appendTag(tagCompound);
            }
        }

        nbtTagCompound.setTag("steamTank", this.steamTank.writeToNBT(new NBTTagCompound()));

        nbtTagCompound.setTag(Names.NBT.ITEMS, tagList);
        nbtTagCompound.setInteger("deviceCookTime", deviceCookTime);
        nbtTagCompound.setInteger("fuelBurnTime", fuelBurnTime);
        nbtTagCompound.setInteger("itemCookTime", itemCookTime);
        //nbtTagCompound.setBoolean("hasGlassBell", hasGlassBell);
    }

    @Override
    public Packet getDescriptionPacket() {

        return PacketHandler.INSTANCE.getPacketFrom(new MessageTileEntityAlloyCompressor(this, inventory[OUTPUT_INVENTORY_INDEX]));
    }

    @Override
    public void updateEntity() {

        boolean isBurning = this.deviceCookTime > 0;
        boolean sendUpdate = false;

        //If the smelter still has burn time, decrement it
        if (this.deviceCookTime > 0) {
            this.deviceCookTime--;
        }

        if (!this.worldObj.isRemote) {
            //Start cooking new item, if we can
            if (this.deviceCookTime == 0 && this.canAlloy()) {
                if (this.steamTank.getFluidAmount() >= 100) {
                    this.deviceCookTime += 1;
                    //TODO better implementation of steam use
                }
            }

            // Continue cooking the same item if we can
            if (this.deviceCookTime > 0 && this.canAlloy()) {
                this.itemCookTime++;

                if (this.itemCookTime == 200) {
                    this.itemCookTime = 0;
                    this.alloyItem();
                    sendUpdate = true;
                }
            } else {
                this.itemCookTime = 0;
            }

            // If the state has changed, cath something changed
            if (isBurning != this.deviceCookTime > 0) {
                sendUpdate = true;
            }
        }

        if (sendUpdate) {

            this.markDirty();
            this.state = this.deviceCookTime > 0 ? (byte) 1 : (byte) 0;
            this.worldObj.addBlockEvent(this.xCoord, this.yCoord, this.zCoord, this.getBlockType(), 1, this.state);
            PacketHandler.INSTANCE.sendToAllAround(new MessageTileEntityAlloyCompressor(this, inventory[OUTPUT_INVENTORY_INDEX]), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, (double) this.xCoord, (double) this.yCoord, (double) this.zCoord, 128d));
            this.worldObj.notifyBlockChange(this.xCoord, this.yCoord, this.zCoord, this.getBlockType());
        }
    }

    @Override
    public void markDirty() {

        PacketHandler.INSTANCE.sendToAllAround(new MessageTileEntityAlloyCompressor(this, inventory[OUTPUT_INVENTORY_INDEX]), new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, (double) this.xCoord, (double) this.yCoord, (double) this.zCoord, 128d));

        worldObj.func_147451_t(xCoord, yCoord, zCoord);
    }

    private boolean canAlloy() {

        if (inventory[iNGOT1_INVENTORY_INXEX] == null || inventory[iNGOT2_INVENTORY_INDEX] == null) {
            return false;
        } else {
            ItemStack alloyedItemStack = RecipesAlloyCompressor.getInstance().getResult(inventory[iNGOT1_INVENTORY_INXEX], inventory[iNGOT2_INVENTORY_INDEX]);

            if (alloyedItemStack == null) {
                return false;
            }

            if (inventory[OUTPUT_INVENTORY_INDEX] == null) {
                return true;
            } else {
                boolean outputEquals = this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(alloyedItemStack);
                int mergedOutputStackSize = this.inventory[OUTPUT_INVENTORY_INDEX].stackSize + alloyedItemStack.stackSize;

                if (outputEquals) {
                    return mergedOutputStackSize <= getInventoryStackLimit() && mergedOutputStackSize <= alloyedItemStack.getMaxStackSize();
                }
            }
        }

        return false;
    }

    public void alloyItem() {

        if (this.canAlloy()) {
            RecipeAlloyCompressor recipe = RecipesAlloyCompressor.getInstance().getRecipe(inventory[iNGOT1_INVENTORY_INXEX], inventory[iNGOT2_INVENTORY_INDEX]);

            if (this.inventory[OUTPUT_INVENTORY_INDEX] == null) {
                this.inventory[OUTPUT_INVENTORY_INDEX] = recipe.getRecipeOutput().copy();
            } else if (this.inventory[OUTPUT_INVENTORY_INDEX].isItemEqual(recipe.getRecipeOutput())) {
                inventory[OUTPUT_INVENTORY_INDEX].stackSize += recipe.getRecipeOutput().stackSize;
            }

            decrStackSize(INGOT1_INVENTORY_INXEX, recipe.getRecipeInputs()[0].getStackSize());
            decrStackSize(INGOT2_INVENTORY_INDEX, recipe.getRecipeInputs()[1].getStackSize());
            this.steamTank.drain(100, true);
        }
    }

    @SideOnly(Side.CLIENT)
    public int getCookProgressScaled(int scale) {

        return this.itemCookTime * scale / 200;
    }

    @SideOnly(Side.CLIENT)
    public int getBurnTimeRemainingScaled(int scale) {

        if (this.fuelBurnTime > 0) {
            return this.deviceCookTime * scale / this.fuelBurnTime;
        }
        return 0;
    }

    public int getScaledSteamLevel(int scale) {

        final double steamLevel = steamTank.getFluid() == null ? 0 : this.steamTank.getFluid().amount;

        return (int) (steamLevel * scale / this.tankCapacity);
    }

    // ITankContainer
    @Override
    public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {

        int used = 0;
        FluidStack resourceUsing = resource.copy();

        used += steamTank.fill(resourceUsing, doFill);
        resourceUsing.amount -= used;

        return used;
    }

    @Override
    public FluidStack drain(ForgeDirection from, int maxEmpty, boolean doDrain) {

        return steamTank.drain(maxEmpty, doDrain);
    }

    @Override
    public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) {

        if (resource == null || !resource.isFluidEqual(steamTank.getFluid())) {
            return null;
        }

        return drain(from, resource.amount, doDrain);
    }

    @Override
    public FluidTankInfo[] getTankInfo(ForgeDirection from) {

        return new FluidTankInfo[] { new FluidTankInfo(this.steamTank)};
    }

    @Override
    public boolean canFill(ForgeDirection from, Fluid fluid) {

        return true;
    }

    @Override
    public boolean canDrain(ForgeDirection from, Fluid fluid) {

        return false;
    }

    public void sendChatInfoToPlayer(EntityPlayer player) {

        player.addChatMessage(new ChatComponentText("Tanks Fluid Level: " + this.steamTank.getFluidAmount()));
        player.addChatMessage(new ChatComponentText("Tanks Capacity: " + this.steamTank.getCapacity()));
        player.addChatMessage(new ChatComponentText("Tank Fluid: " + this.steamTank.getFluid()));
    }

}

 

 

Crash Log

Time: 8/3/14 3:46 PM
Description: Unexpected error

java.lang.NullPointerException: Unexpected error
at com.brady131313.steamreborn.inventory.ContainerAlloyCompressor.updateProgressBar(ContainerAlloyCompressor.java:164)
at net.minecraft.client.network.NetHandlerPlayClient.handleWindowProperty(NetHandlerPlayClient.java:1313)
at net.minecraft.network.play.server.S31PacketWindowProperty.processPacket(S31PacketWindowProperty.java:32)
at net.minecraft.network.play.server.S31PacketWindowProperty.processPacket(S31PacketWindowProperty.java:78)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247)
at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:321)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1692)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1038)
at net.minecraft.client.Minecraft.run(Minecraft.java:961)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at GradleStart.bounce(GradleStart.java:108)
at GradleStart.startClient(GradleStart.java:101)
at GradleStart.main(GradleStart.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at com.brady131313.steamreborn.inventory.ContainerAlloyCompressor.updateProgressBar(ContainerAlloyCompressor.java:164)
at net.minecraft.client.network.NetHandlerPlayClient.handleWindowProperty(NetHandlerPlayClient.java:1313)
at net.minecraft.network.play.server.S31PacketWindowProperty.processPacket(S31PacketWindowProperty.java:32)
at net.minecraft.network.play.server.S31PacketWindowProperty.processPacket(S31PacketWindowProperty.java:78)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247)
at net.minecraft.client.multiplayer.PlayerControllerMP.updateController(PlayerControllerMP.java:321)

-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityClientPlayerMP['ForgeDevName'/24, l='MpServer', x=8.62, y=238.62, z=-6.65]]
Chunk stats: MultiplayerChunkCache: 623, 623
Level seed: 0
Level generator: ID 01 - flat, ver 0. Features enabled: false
Level generator options: 
Level spawn location: World: (0,4,0), Chunk: (at 0,0,0 in 0,0; contains blocks 0,0,0 to 15,255,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 71731 game time, 6000 day time
Level dimension: 0
Level storage version: 0x00000 - Unknown?
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
Forced entities: 14 total; [EntityCow['Cow'/16, l='MpServer', x=81.40, y=237.00, z=14.06], EntityCow['Cow'/19, l='MpServer', x=80.75, y=237.00, z=62.16], EntitySheep['Sheep'/18, l='MpServer', x=80.84, y=237.00, z=29.09], EntityPig['Pig'/5, l='MpServer', x=-17.94, y=237.00, z=-42.13], EntityChicken['Chicken'/6, l='MpServer', x=-20.47, y=237.00, z=10.47], EntityChicken['Chicken'/7, l='MpServer', x=4.41, y=237.00, z=35.59], EntityClientPlayerMP['ForgeDevName'/24, l='MpServer', x=8.62, y=238.62, z=-6.65], EntityChicken['Chicken'/8, l='MpServer', x=21.53, y=237.00, z=-76.47], EntityPig['Pig'/9, l='MpServer', x=47.69, y=237.00, z=-37.16], EntityChicken['Chicken'/10, l='MpServer', x=45.38, y=237.00, z=-18.44], EntityChicken['Chicken'/11, l='MpServer', x=34.56, y=237.00, z=16.41], EntityChicken['Chicken'/12, l='MpServer', x=42.44, y=237.00, z=39.56], EntitySheep['Sheep'/13, l='MpServer', x=54.28, y=237.00, z=23.25], EntitySheep['Sheep'/15, l='MpServer', x=86.97, y=237.00, z=14.97]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:417)
at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2567)
at net.minecraft.client.Minecraft.run(Minecraft.java:990)
at net.minecraft.client.main.Main.main(Main.java:164)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at GradleStart.bounce(GradleStart.java:108)
at GradleStart.startClient(GradleStart.java:101)
at GradleStart.main(GradleStart.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 8.1 (amd64) version 6.3
Java Version: 1.7.0_65, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 507962584 bytes (484 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.05 FML v7.10.25.1194 Minecraft Forge 10.13.0.1194 17 mods loaded, 17 mods active
mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{7.10.25.1194} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.0.1194.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{10.13.0.1194} [Minecraft Forge] (forgeSrc-1.7.10-10.13.0.1194.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
CodeChickenCore{1.0.2.9} [CodeChicken Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
NotEnoughItems{1.0.2.15} [Not Enough Items] (NotEnoughItems-1.7.10-1.0.2.15-universal.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
TConstruct-Preloader{0.1.1} [Tinkers Corestruct] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
steamreborn{1.7.10-0.1} [steam Reborn] (steamreborn) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Core{6.0.17} [buildCraft] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Builders{6.0.17} [bC Builders] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Energy{6.0.17} [bC Energy] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Factory{6.0.17} [bC Factory] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Transport{6.0.17} [bC Transport] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Silicon{6.0.17} [bC Silicon] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
EE3{0.2.280} [Equivalent Exchange 3] (EquivalentExchange3-1.7.10-0.2.280.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
ExtraUtilities{1.1.0e} [Extra Utilities] (extrautilities-1.1.0e.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Mantle{1.7.10-165.4bc3343} [Mantle] (Mantle_mc1.7.10_0.3.0.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
TConstruct{1.7.10-1.6.0.jenkins541} [Tinkers' Construct] (TConstruct_mc1.7.10_1.6.0d35.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Mantle Environment: Environment healthy.
TConstruct Environment: Environment healthy.
Launched Version: 1.7.10
LWJGL: 2.9.1
OpenGL: GeForce GTX 760/PCIe/SSE2 GL version 4.4.0, NVIDIA Corporation
GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.

Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Packs: []
Current Language: English (US)
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Anisotropic Filtering: Off (1)
#@!@# Game crashed! Crash report saved to: #@!@# D:\Users\Documents\Development\Minecraft\steamreborn\idea\.\crash-reports\crash-2014-08-03_15.46.37-client.txt
AL lib: (EE) alc_cleanup: 1 device not closed

Process finished with exit code -1

Posted

I believe your problem is you aren't defining the default values such as 0 on the cook and burn time variables inside of your tile entity, so that in your container's updateProgressBar, the value is null and crashes the game

Posted

I tried setting cook, and burn time values to 0 in the TE however I am still getting the exact same java.lang.nullpointerexception, which shouldnt happen because the tank im testing on already has a higher value than 0 in it.

Posted

so then what should I use, I tried changing getFluid().amount to getFluidAmount(), how ever on

if (valueType == 3) {
            this.tileEntityAlloyCompressor.steamTank.getFluidAmount() = updatedValue;
        }

 

It says variable expected.

Sorry if I seem like a noob, but I'm just out of ideas on why this isn't working

Posted

your tank does not have a default fluid in it so when you get the amount of fluid in it there sometimes is no fluid so it returns null.  since it is null when you call it, it crashes your game

Posted

I Tried checking if the tank was null by doing

if (valueType == 3) {
            if (tileEntityAlloyCompressor.steamTank.getFluid() != null) {
                this.tileEntityAlloyCompressor.steamTank.getFluid().amount = updatedValue;
            } else {
                this.tileEntityAlloyCompressor.steamTank.getFluid().amount = -1;
            }
        }

 

but I just got an error and crashed again

Starting up SoundSystem...
Initializing LWJGL OpenAL
    (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
OpenAL initialized.

[16:50:50] [sound Library Loader/INFO]: Sound engine started
[16:50:56] [server thread/INFO]: Starting integrated minecraft server version 1.7.10
[16:50:56] [server thread/INFO]: Generating keypair
[16:50:56] [server thread/INFO] [FML]: Injecting existing block and item data into this server instance
[16:50:56] [server thread/INFO] [FML]: Applying holder lookups
[16:50:56] [server thread/INFO] [FML]: Holder lookups applied
[16:50:57] [server thread/INFO] [FML]: Loading dimension 0 (Test) (net.minecraft.server.integrated.IntegratedServer@a61a404)
[16:50:57] [server thread/INFO] [FML]: Loading dimension -100 (Test) (net.minecraft.server.integrated.IntegratedServer@a61a404)
[16:50:57] [server thread/INFO] [FML]: Loading dimension 1 (Test) (net.minecraft.server.integrated.IntegratedServer@a61a404)
[16:50:57] [server thread/INFO] [FML]: Loading dimension -1 (Test) (net.minecraft.server.integrated.IntegratedServer@a61a404)
[16:50:57] [server thread/INFO]: Preparing start region for level 0
[16:50:57] [DynamicEV Thread/INFO] [Equivalent Exchange 3]: DynamicEV system initialized after 441 ms
[16:50:58] [server thread/INFO]: Preparing spawn area: 83%
[16:50:58] [server thread/INFO]: Changing view distance to 12, from 10
[16:50:58] [Netty Client IO #0/INFO] [FML]: Server protocol version 1
[16:50:58] [Netty IO #1/INFO] [FML]: Client protocol version 1
[16:50:58] [Netty IO #1/INFO] [FML]: Client attempting to join with 17 mods : [email protected],BuildCraft|[email protected],[email protected],[email protected],BuildCraft|[email protected],BuildCraft|[email protected],[email protected],[email protected],BuildCraft|[email protected],[email protected],BuildCraft|[email protected],[email protected],[email protected],[email protected],BuildCraft|[email protected],[email protected],[email protected]
[16:50:58] [Netty IO #1/INFO] [FML]: Attempting connection with missing mods [] at CLIENT
[16:50:58] [Netty Client IO #0/INFO] [FML]: Attempting connection with missing mods [] at SERVER
[16:50:59] [server thread/INFO] [FML]: [server thread] Server side modded connection established
[16:50:59] [server thread/INFO]: ForgeDevName[local:E:cb64c69d] logged in with entity id 24 at (5.300000011920929, 237.0, -6.748409260851123)
[16:50:59] [Client thread/INFO] [FML]: [Client thread] Client side modded connection established
[16:50:59] [server thread/INFO]: ForgeDevName joined the game
[16:51:03] [Client thread/INFO] [extrautils]: Added NEI integration
[16:51:05] [server thread/ERROR]: Encountered an unexpected exception
net.minecraft.util.ReportedException: Ticking memory connection
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:198) ~[NetworkSystem.class:?]
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:736) ~[MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:624) ~[MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) ~[integratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:495) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:762) [MinecraftServer$2.class:?]
Caused by: java.lang.NullPointerException
at com.brady131313.steamreborn.inventory.ContainerAlloyCompressor.detectAndSendChanges(ContainerAlloyCompressor.java:74) ~[ContainerAlloyCompressor.class:?]
at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:56) ~[Container.class:?]
at com.brady131313.steamreborn.inventory.ContainerAlloyCompressor.addCraftingToCrafters(ContainerAlloyCompressor.java:47) ~[ContainerAlloyCompressor.class:?]
at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88) ~[FMLNetworkHandler.class:?]
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2514) ~[EntityPlayer.class:?]
at com.brady131313.steamreborn.block.machines.MachineAlloyCompressor.onBlockActivated(MachineAlloyCompressor.java:56) ~[MachineAlloyCompressor.class:?]
at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409) ~[itemInWorldManager.class:?]
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:591) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74) ~[C08PacketPlayerBlockPlacement.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122) ~[C08PacketPlayerBlockPlacement.class:?]
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247) ~[NetworkManager.class:?]
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) ~[NetworkSystem.class:?]
... 5 more
[16:51:05] [server thread/ERROR]: This crash report has been saved to: D:\Users\Documents\Development\Minecraft\steamreborn\idea\.\crash-reports\crash-2014-08-03_16.51.05-server.txt
[16:51:05] [server thread/INFO]: Stopping server
[16:51:05] [server thread/INFO]: Saving players
---- Minecraft Crash Report ----
// Don't do that.

Time: 8/3/14 4:51 PM
Description: Ticking memory connection

java.lang.NullPointerException: Ticking memory connection
at com.brady131313.steamreborn.inventory.ContainerAlloyCompressor.detectAndSendChanges(ContainerAlloyCompressor.java:74)
at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:56)
at com.brady131313.steamreborn.inventory.ContainerAlloyCompressor.addCraftingToCrafters(ContainerAlloyCompressor.java:47)
at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2514)
at com.brady131313.steamreborn.block.machines.MachineAlloyCompressor.onBlockActivated(MachineAlloyCompressor.java:56)
at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:591)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247)
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:736)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:624)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:495)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:762)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Stacktrace:
at com.brady131313.steamreborn.inventory.ContainerAlloyCompressor.detectAndSendChanges(ContainerAlloyCompressor.java:74)
at net.minecraft.inventory.Container.addCraftingToCrafters(Container.java:56)
at com.brady131313.steamreborn.inventory.ContainerAlloyCompressor.addCraftingToCrafters(ContainerAlloyCompressor.java:47)
at cpw.mods.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88)
at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2514)
at com.brady131313.steamreborn.block.machines.MachineAlloyCompressor.onBlockActivated(MachineAlloyCompressor.java:56)
at net.minecraft.server.management.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:409)
at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:591)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247)

-- Ticking connection --
Details:
Connection: net.minecraft.network.NetworkManager@3c6c3497
Stacktrace:
at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:736)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:624)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:495)
at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:762)

-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 8.1 (amd64) version 6.3
Java Version: 1.7.0_65, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 369412608 bytes (352 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.05 FML v7.10.25.1194 Minecraft Forge 10.13.0.1194 17 mods loaded, 17 mods active
mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
FML{7.10.25.1194} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.0.1194.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{10.13.0.1194} [Minecraft Forge] (forgeSrc-1.7.10-10.13.0.1194.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
CodeChickenCore{1.0.2.9} [CodeChicken Core] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
NotEnoughItems{1.0.2.15} [Not Enough Items] (NotEnoughItems-1.7.10-1.0.2.15-universal.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
TConstruct-Preloader{0.1.1} [Tinkers Corestruct] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
steamreborn{1.7.10-0.1} [steam Reborn] (steamreborn) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Core{6.0.17} [buildCraft] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Builders{6.0.17} [bC Builders] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Energy{6.0.17} [bC Energy] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Factory{6.0.17} [bC Factory] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Transport{6.0.17} [bC Transport] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
BuildCraft|Silicon{6.0.17} [bC Silicon] (buildcraft-6.0.17 (1).jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
EE3{0.2.280} [Equivalent Exchange 3] (EquivalentExchange3-1.7.10-0.2.280.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
ExtraUtilities{1.1.0e} [Extra Utilities] (extrautilities-1.1.0e.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Mantle{1.7.10-165.4bc3343} [Mantle] (Mantle_mc1.7.10_0.3.0.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
TConstruct{1.7.10-1.6.0.jenkins541} [Tinkers' Construct] (TConstruct_mc1.7.10_1.6.0d35.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Mantle Environment: Environment healthy.
TConstruct Environment: Environment healthy.
Profiler Position: N/A (disabled)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Player Count: 1 / 8; [EntityPlayerMP['ForgeDevName'/24, l='Test', x=5.30, y=237.00, z=-6.75]]
Type: Integrated Server (map_client.txt)
Is Modded: Definitely; Client brand changed to 'fml,forge'
#@!@# Game crashed! Crash report saved to: #@!@# .\crash-reports\crash-2014-08-03_16.51.05-server.txt
[16:51:05] [Client thread/INFO] [FML]: Waiting for the server to terminate/save.
[16:51:05] [server thread/INFO]: Saving worlds
[16:51:05] [server thread/INFO]: Saving chunks for level 'Test'/Overworld
[16:51:05] [server thread/INFO]: Saving chunks for level 'Test'/Nether
[16:51:05] [server thread/INFO]: Saving chunks for level 'Test'/The End
[16:51:05] [server thread/INFO]: Saving chunks for level 'Test'/Underdark
[16:51:05] [server thread/INFO] [FML]: Unloading dimension 0
[16:51:05] [server thread/INFO] [FML]: Unloading dimension -1
[16:51:05] [server thread/INFO] [FML]: Unloading dimension 1
[16:51:05] [server thread/INFO] [FML]: Unloading dimension -100
[16:51:05] [server thread/INFO] [FML]: Applying holder lookups
[16:51:05] [server thread/INFO] [FML]: Holder lookups applied
[16:51:05] [server thread/INFO] [FML]: The state engine was in incorrect state SERVER_STOPPING and forced into state SERVER_STOPPED. Errors may have been discarded.
[16:51:05] [Client thread/INFO] [FML]: Server terminated.
AL lib: (EE) alc_cleanup: 1 device not closed

Process finished with exit code -1

 

Posted

when your checking if it is not null and then using it, you also have an else which still used the variable if it is null. if it is null the fluid itself does not exist including the amount, so you would need to either do nothing with the variable or set the fluid to be the fluid you want it to be.

Posted

public FluidTank steamTank = new FluidTank({fluid}, 0, this.tankCapacity);

 

the {fluid} is your steam fluid similar to how if it were water it would be FluidRegistry.WATER

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.