Posted August 3, 201411 yr 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); } }
August 3, 201411 yr Author 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; } } }
August 3, 201411 yr Author 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
August 3, 201411 yr Author Get state is letting the GUI know if the machine is processing, and if it is than it updates the fuel time remaining
August 3, 201411 yr Author 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); } }
August 3, 201411 yr Author 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
August 3, 201411 yr 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
August 3, 201411 yr Author 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.
August 3, 201411 yr if it isn't that it is probably the tank.getFluid() being null then s diesieben07 said
August 3, 201411 yr Author 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
August 3, 201411 yr 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
August 3, 201411 yr Author 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
August 3, 201411 yr if it is null your still using the variable, if it is null you can't use it at all
August 4, 201411 yr 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.
August 4, 201411 yr Author Ok that makes sense, So then in my Tile Entity how do I set the fluid, being steam, and only allow that
August 4, 201411 yr 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.