sorry to bother you again but i have made a new gui and it crashes when i open the block.
Crash Report:
---- Minecraft Crash Report ----
// Ouch. That hurt :(
Time: 9/9/18 9:46 AM
Description: Ticking player
java.lang.NullPointerException: Ticking player
at net.minecraftforge.items.SlotItemHandler.getStack(SlotItemHandler.java:79)
at net.minecraft.inventory.Container.detectAndSendChanges(Container.java:97)
at me.Wilfsadude.MyMod.Blocks.Energy.ContainerRedstoneGenerator.detectAndSendChanges(ContainerRedstoneGenerator.java:53)
at net.minecraft.entity.player.EntityPlayerMP.onUpdate(EntityPlayerMP.java:365)
at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2168)
at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:871)
at net.minecraft.world.World.updateEntity(World.java:2127)
at net.minecraft.world.WorldServer.tickPlayers(WorldServer.java:672)
at net.minecraft.world.World.updateEntities(World.java:1903)
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:643)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:842)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592)
at java.lang.Thread.run(Thread.java:748)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Thread: Server thread
Stacktrace:
at net.minecraftforge.items.SlotItemHandler.getStack(SlotItemHandler.java:79)
at net.minecraft.inventory.Container.detectAndSendChanges(Container.java:97)
at me.Wilfsadude.MyMod.Blocks.Energy.ContainerRedstoneGenerator.detectAndSendChanges(ContainerRedstoneGenerator.java:53)
at net.minecraft.entity.player.EntityPlayerMP.onUpdate(EntityPlayerMP.java:365)
at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2168)
at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:871)
at net.minecraft.world.World.updateEntity(World.java:2127)
-- Player being ticked --
Details:
Entity Type: null (net.minecraft.entity.player.EntityPlayerMP)
Entity ID: 224
Entity Name: Player66
Entity's Exact location: -193.74, 110.00, 420.20
Entity's Block location: World: (-194,110,420), Chunk: (at 14,6,4 in -13,26; contains blocks -208,0,416 to -193,255,431), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
Entity's Momentum: 0.00, -0.08, 0.00
Entity's Passengers: []
Entity's Vehicle: ~~ERROR~~ NullPointerException: null
Stacktrace:
at net.minecraft.world.WorldServer.tickPlayers(WorldServer.java:672)
at net.minecraft.world.World.updateEntities(World.java:1903)
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:643)
-- Affected level --
Details:
Level name: New World
All players: 1 total; [EntityPlayerMP['Player66'/224, l='New World', x=-193.74, y=110.00, z=420.20]]
Chunk stats: ServerChunkCache: 925 Drop: 0
Level seed: -8751245432881597772
Level generator: ID 00 - default, ver 1. Features enabled: true
Level generator options:
Level spawn location: World: (203,64,284), Chunk: (at 11,4,12 in 12,17; contains blocks 192,0,272 to 207,255,287), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
Level time: 88306 game time, 88306 day time
Level dimension: 0
Level storage version: 0x04ABD - Anvil
Level weather: Rain time: 67671 (now: false), thunder time: 103579 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true
Stacktrace:
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:842)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592)
at java.lang.Thread.run(Thread.java:748)
-- System Details --
Details:
Minecraft Version: 1.12.2
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_172, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 494818048 bytes (471 MB) / 1469579264 bytes (1401 MB) up to 3787980800 bytes (3612 MB)
JVM Flags: 0 total;
IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94
FML: MCP 9.42 Powered by Forge 14.23.4.2705 5 mods loaded, 5 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
| State | ID | Version | Source | Signature |
|:--------- |:--------- |:------------ |:-------------------------------- |:--------- |
| UCHIJAAAA | minecraft | 1.12.2 | minecraft.jar | None |
| UCHIJAAAA | mcp | 9.42 | minecraft.jar | None |
| UCHIJAAAA | FML | 8.0.99.99 | forgeSrc-1.12.2-14.23.4.2705.jar | None |
| UCHIJAAAA | forge | 14.23.4.2705 | forgeSrc-1.12.2-14.23.4.2705.jar | None |
| UCHIJAAAA | mm | 1.0 | modid-1.0.jar | None |
Loaded coremods (and transformers):
GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
Profiler Position: N/A (disabled)
Player Count: 1 / 8; [EntityPlayerMP['Player66'/224, l='New World', x=-193.74, y=110.00, z=420.20]]
Type: Integrated Server (map_client.txt)
Is Modded: Definitely; Client brand changed to 'fml,forge'
Contianer class:
public class ContainerRedstoneGenerator extends Container {
private final TileEntityRedstoneGenerator tileentity;
private int energy, cookTime;
public ContainerRedstoneGenerator(InventoryPlayer player, TileEntityRedstoneGenerator tileentity)
{
this.tileentity = tileentity;
IItemHandler handler = tileentity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
this.addSlotToContainer(new SlotItemHandler(handler, 0, 80, 33));
for(int y = 0; y < 3; y++)
{
for(int x = 0; x < 9; x++)
{
this.addSlotToContainer(new Slot(player, x + y*9 + 9, 8 + x*18, 84 + y*18));
}
}
for(int x = 0; x < 9; x++)
{
this.addSlotToContainer(new Slot(player, x, 8 + x * 18, 142));
}
}
@Override
public boolean canInteractWith(EntityPlayer playerIn)
{
return this.tileentity.isUsableByPlayer(playerIn);
}
@Override
public void updateProgressBar(int id, int data)
{
this.tileentity.setField(id, data);
}
@Override
public void detectAndSendChanges()
{
super.detectAndSendChanges();
for(int i = 0; i < this.listeners.size(); ++i)
{
IContainerListener listener = (IContainerListener)this.listeners.get(i);
if(this.energy != this.tileentity.getField(0)) listener.sendWindowProperty(this, 0, this.tileentity.getField(0));
if(this.cookTime != this.tileentity.getField(1)) listener.sendWindowProperty(this, 1, this.tileentity.getField(1));
}
this.energy = this.tileentity.getField(0);
this.cookTime = this.tileentity.getField(1);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer playerIn, int index)
{
ItemStack stack = ItemStack.EMPTY;
Slot slot = (Slot)this.inventorySlots.get(index);
if(slot != null && slot.getHasStack())
{
ItemStack stack1 = slot.getStack();
stack = stack1.copy();
if(index >= 0 && index < 27)
{
if(!this.mergeItemStack(stack1, 27, 36, false)) return ItemStack.EMPTY;
}
else if(index >= 27 && index < 36)
{
if(!this.mergeItemStack(stack1, 0, 27, false)) return ItemStack.EMPTY;
}
else if(!this.mergeItemStack(stack1, 0, 36, false))
{
return ItemStack.EMPTY;
}
if(stack1.isEmpty()) slot.putStack(ItemStack.EMPTY);
else slot.onSlotChanged();
if(stack1.getCount() == stack.getCount()) return ItemStack.EMPTY;
slot.onTake(playerIn, stack1);
}
return stack;
}
}
Gui Class:
public class GuiRedstoneGenerator extends GuiContainer {
private static final ResourceLocation TEXTURES = new ResourceLocation(Reference.MOD_ID + ":textures/gui/redstone_generator.png");
private final InventoryPlayer player;
private final TileEntityRedstoneGenerator tileentity;
public GuiRedstoneGenerator(InventoryPlayer player, TileEntityRedstoneGenerator tileentity)
{
super(new ContainerRedstoneGenerator(player, tileentity));
this.player = player;
this.tileentity = tileentity;
}
@Override
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
{
String tileName = this.tileentity.getDisplayName().getUnformattedText();
this.fontRenderer.drawString(tileName, (this.xSize / 2 - this.fontRenderer.getStringWidth(tileName) / 2) -5, 6, 4210752);
this.fontRenderer.drawString(this.player.getDisplayName().getUnformattedText(), 7, this.ySize - 96 + 2, 4210752);
this.fontRenderer.drawString(Integer.toString(this.tileentity.getEnergyStored()), 115, 72, 4210752);
}
@Override
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY)
{
GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f);
this.mc.getTextureManager().bindTexture(TEXTURES);
this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
int l = this.getCookProgressScaled(24);
this.drawTexturedModalRect(this.guiLeft + 113, this.guiTop + 32, 176, 14, l + 1, 16);
int k = this.getEnergyStoredScaled(75);
this.drawTexturedModalRect(this.guiLeft + 152, this.guiTop + 7, 176, 32, 16, 76 - k);
}
private int getEnergyStoredScaled(int pixels)
{
int i = this.tileentity.getEnergyStored();
int j = this.tileentity.getMaxEnergyStored();
return i != 0 && j != 0 ? i * pixels / j : 0;
}
private int getCookProgressScaled(int pixels)
{
int i = this.tileentity.cookTime;
return i != 0 ? i * pixels / 25 : 0;
}
}
Tile Entity Class
public class TileEntityRedstoneGenerator extends TileEntity implements ITickable {
public ItemStackHandler handler = new ItemStackHandler(1);
private CustomEnergyStorage storage = new CustomEnergyStorage(100000);
public int energy = storage.getEnergyStored();
private String customName;
public int cookTime;
@Override
public void update() {
if (!handler.getStackInSlot(0).isEmpty() && isItemFuel(handler.getStackInSlot(0))) {
cookTime++;
if (cookTime == 25) {
energy += getFuelValue(handler.getStackInSlot(0));
handler.getStackInSlot(0).shrink(1);
cookTime = 0;
}
}
}
private boolean isItemFuel(ItemStack stack) {
return getFuelValue(stack) > 0;
}
private int getFuelValue(ItemStack stack) {
if (stack.getItem() == Items.REDSTONE) return 500;
else return 0;
}
@Override
public <T> T getCapability(Capability<T> capability, EnumFacing facing) {
if (capability == CapabilityEnergy.ENERGY) return (T)this.storage;
return super.getCapability(capability, facing);
}
@Override
public boolean hasCapability(Capability<?> capability, EnumFacing facing) {
if (capability == CapabilityEnergy.ENERGY) return true;
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return true;
return super.hasCapability(capability, facing);
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound compound) {
super.writeToNBT(compound);
compound.setTag("Inventory", this.handler.serializeNBT());
compound.setInteger("CookTime", cookTime);
compound.setInteger("GuiEnergy", this.energy);
compound.setString("Name", getDisplayName().toString());
this.storage.writeToNBT(compound);
return compound;
}
@Override
public void readFromNBT(NBTTagCompound compound) {
super.readFromNBT(compound);
this.handler.deserializeNBT(compound.getCompoundTag("Inventory"));
this.cookTime = compound.getInteger("CookTime");
this.energy = compound.getInteger("Energy");
this.customName = compound.getString("Name");
this.storage.readFromNBT(compound);
}
@Override
public ITextComponent getDisplayName() {
return new TextComponentTranslation("container.redstone_generator");
}
public int getEnergyStored() {
return this.energy;
}
public int getMaxEnergyStored() {
return this.storage.getMaxEnergyStored();
}
public int getField(int id) {
switch (id) {
case 0:
return this.energy;
case 1:
return this.cookTime;
default:
return 0;
}
}
public void setField(int id, int value) {
switch (id) {
case 0:
this.energy = value;
case 1:
this.cookTime = value;
}
}
public boolean isUsableByPlayer(EntityPlayer player)
{
return this.world.getTileEntity(this.pos) != this ? false : player.getDistanceSq((double)this.pos.getX() + 0.5D, (double)this.pos.getY() + 0.5D, (double)this.pos.getZ() + 0.5D) <= 64.0D;
}
}
Please help. I am guessing it is something wrong with the container class but i dont know what