Jump to content

[1.7.10] Issue with a furnace like block


The_SlayerMC

Recommended Posts

Ive made an incubator, but when you put the recipe inside the gui, it doesnt smelt and when you exit the gui the items inside it are gone! The block doesnt update like it should (go from idle to active)

 

So can someone please help? :)

 

Block registry:

public static final Block incubatorIdle = new BlockIncubator("incubatorIdle", false);
public static final Block incubatorActive = new BlockIncubator("incubatorActive", true);

 

The block:

 

 

public class BlockIncubator extends BlockContainer {

protected boolean active;
protected static boolean keepInventory;
protected Random rand = new Random();

public BlockIncubator(String name, boolean act) {
	super(Material.rock);
	setStepSound(Block.soundTypeStone);
	if(!act) setCreativeTab(EssenceTabs.blocks);
	setBlockName(name);
	GameRegistry.registerBlock(this, name);
	active = act;
	if(act) setLightLevel(0.875F);
}

@Override
public Item getItemDropped(int i, Random r, int j) {
	return SlayerAPI.toItem(this);
}

@Override
public void onBlockAdded(World w, int x, int y, int z) {
	super.onBlockAdded(w, x, y, z);
	if(!w.isRemote) {
		int meta = 3;
		Block block = w.getBlock(x, y, z - 1), block1 = w.getBlock(x, y, z + 1), block2 = w.getBlock(x - 1, y, z), block3 = w.getBlock(x + 1, y, z);
		if(block.func_149730_j() && !block1.func_149730_j()) meta = 3;
		if(block1.func_149730_j() && !block.func_149730_j()) meta = 2;
		if(block2.func_149730_j() && !block3.func_149730_j()) meta = 5;
		if(block3.func_149730_j() && !block2.func_149730_j()) meta = 4;
		w.setBlockMetadataWithNotify(x, y, z, meta, 2);
	}
}

@Override
public boolean onBlockActivated(World w, int x, int y, int z, EntityPlayer p, int i, float j, float k, float f) {
	TileEntityIncubator furnace  = (TileEntityIncubator)w.getTileEntity(x, y, z);
	if(!w.isRemote && furnace != null){
		if(!p.isSneaking()){
			p.openGui(Essence.instance, GuiHandler.incubator, w, x, y, z);
		}
	}
	return false;
}

public static void update(boolean active, World w, int x, int y, int z) {
	int meta = w.getBlockMetadata(x, y, z);
	TileEntity tileentity = w.getTileEntity(x, y, z);
	keepInventory = true;
	if(active) w.setBlock(x, y, z, EssenceBlocks.incubatorActive);
	else w.setBlock(x, y, z, EssenceBlocks.incubatorIdle);
	keepInventory = false;
	w.setBlockMetadataWithNotify(x, y, z, meta, 2);
	if(tileentity != null) {
		tileentity.validate();
		w.setTileEntity(x, y, z, tileentity);
	}
}

@Override
public void onBlockPlacedBy(World w, int x, int y, int z, EntityLivingBase living, ItemStack item) {
	int meta = MathHelper.floor_double((double)(living.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
	if(meta == 0) w.setBlockMetadataWithNotify(x, y, z, 2, 2);
	if(meta == 1) w.setBlockMetadataWithNotify(x, y, z, 5, 2);
	if(meta == 2) w.setBlockMetadataWithNotify(x, y, z, 3, 2);
	if(meta == 3) w.setBlockMetadataWithNotify(x, y, z, 4, 2);
	if(item.hasDisplayName()) ((TileEntityIncubator)w.getTileEntity(x, y, z)).setCustomName(item.getDisplayName());
}

@Override
public void breakBlock(World w, int x, int y, int z, Block b, int meta) {
	if(!keepInventory) {
		TileEntityIncubator entity = (TileEntityIncubator)w.getTileEntity(x, y, z);
		if(entity != null) {
			for(int i1 = 0; i1 < entity.getSizeInventory(); ++i1) {
				ItemStack itemstack = entity.getStackInSlot(i1);
				if(itemstack != null) {
					float f = this.rand.nextFloat() * 0.8F + 0.1F;
					float f1 = this.rand.nextFloat() * 0.8F + 0.1F;
					float f2 = this.rand.nextFloat() * 0.8F + 0.1F;

					while(itemstack.stackSize > 0) {
						int j1 = this.rand.nextInt(21) + 10;
						if(j1 > itemstack.stackSize) j1 = itemstack.stackSize;
						itemstack.stackSize -= j1;
						EntityItem entityitem = new EntityItem(w, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
						if(itemstack.hasTagCompound()) entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
						float f3 = 0.05F;
						entityitem.motionX = (double)((float)this.rand.nextGaussian() * f3);
						entityitem.motionY = (double)((float)this.rand.nextGaussian() * f3 + 0.2F);
						entityitem.motionZ = (double)((float)this.rand.nextGaussian() * f3);
						w.spawnEntityInWorld(entityitem);
					}
				}
			}
			w.func_147453_f(x, y, z, b);
		}
	}
	super.breakBlock(w, x, y, z, b, meta);
}

@Override
@SideOnly(Side.CLIENT)
public void randomDisplayTick(World w, int x, int y, int z, Random r) {
	if(active) {
		int meta = w.getBlockMetadata(x, y, z);
		float f = (float)x + 0.5F;
		float f1 = (float)y + 0.0F + r.nextFloat() * 6.0F / 16.0F;
		float f2 = (float)z + 0.5F;
		float f3 = 0.52F;
		float f4 = r.nextFloat() * 0.6F - 0.3F;

		if(meta == 4) {
			w.spawnParticle("smoke", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
			w.spawnParticle("flame", (double)(f - f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
		}
		else if(meta == 5) {
			w.spawnParticle("smoke", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
			w.spawnParticle("flame", (double)(f + f3), (double)f1, (double)(f2 + f4), 0.0D, 0.0D, 0.0D);
		}
		else if(meta == 2) {
			w.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D);
			w.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 - f3), 0.0D, 0.0D, 0.0D);
		}
		else if(meta == 3) {
			w.spawnParticle("smoke", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D);
			w.spawnParticle("flame", (double)(f + f4), (double)f1, (double)(f2 + f3), 0.0D, 0.0D, 0.0D);
		}
	}
}

@Override
public Item getItem(World w, int x, int y, int z) {
	return SlayerAPI.toItem(this);
}

@Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
	return new TileEntityIncubator();
}
}

 

 

 

The container:

 

 

public class ContainerIncubator extends Container {

private TileEntityIncubator tileFurnace;
private int lastCookTime, lastBurnTime, lastItemBurnTime;

public ContainerIncubator(InventoryPlayer player, TileEntityIncubator furnace) {
	this.tileFurnace = furnace;
	this.addSlotToContainer(new Slot(furnace, 0, 56, 17));
	this.addSlotToContainer(new Slot(furnace, 1, 56, 53));
	this.addSlotToContainer(new SlotFurnace(player.player, furnace, 2, 116, 35));
	int i;
	for(i = 0; i < 3; ++i) {
		for(int j = 0; j < 9; ++j) this.addSlotToContainer(new Slot(player, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
	}
	for(i = 0; i < 9; ++i) this.addSlotToContainer(new Slot(player, i, 8 + i * 18, 142));
}

@Override
public void addCraftingToCrafters(ICrafting par1ICrafting) {
	super.addCraftingToCrafters(par1ICrafting);
	par1ICrafting.sendProgressBarUpdate(this, 0, this.tileFurnace.furnaceCookTime);
	par1ICrafting.sendProgressBarUpdate(this, 1, this.tileFurnace.furnaceBurnTime);
	par1ICrafting.sendProgressBarUpdate(this, 2, this.tileFurnace.currentItemBurnTime);
}

@Override
public void detectAndSendChanges() {
	super.detectAndSendChanges();
	for(int i = 0; i < this.crafters.size(); ++i) {
		ICrafting icrafting = (ICrafting)this.crafters.get(i);
		if(this.lastCookTime != this.tileFurnace.furnaceCookTime) 
			icrafting.sendProgressBarUpdate(this, 0, this.tileFurnace.furnaceCookTime);
		if(this.lastBurnTime != this.tileFurnace.furnaceBurnTime)
			icrafting.sendProgressBarUpdate(this, 1, this.tileFurnace.furnaceBurnTime);
		if(this.lastItemBurnTime != this.tileFurnace.currentItemBurnTime)
			icrafting.sendProgressBarUpdate(this, 2, this.tileFurnace.currentItemBurnTime);
	}
	this.lastCookTime = this.tileFurnace.furnaceCookTime;
	this.lastBurnTime = this.tileFurnace.furnaceBurnTime;
	this.lastItemBurnTime = this.tileFurnace.currentItemBurnTime;
}

@Override
@SideOnly(Side.CLIENT)
public void updateProgressBar(int par1, int par2) {
	if(par1 == 0) this.tileFurnace.furnaceCookTime = par2;
	if(par1 == 1) this.tileFurnace.furnaceBurnTime = par2;
	if(par1 == 2) this.tileFurnace.currentItemBurnTime = par2;
}

@Override
public boolean canInteractWith(EntityPlayer par1EntityPlayer) {
	return this.tileFurnace.isUseableByPlayer(par1EntityPlayer);
}

@Override
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2) {
        ItemStack itemstack = null;
        Slot slot = (Slot)this.inventorySlots.get(par2);

        if(slot != null && slot.getHasStack()) {
            ItemStack itemstack1 = slot.getStack();
            itemstack = itemstack1.copy();
            if(par2 == 0) {
                if(!this.mergeItemStack(itemstack1, 1, 37, true)) return null;
            } else {
                if(((Slot)this.inventorySlots.get(0)).getHasStack() || !((Slot)this.inventorySlots.get(0)).isItemValid(itemstack1))
                    return null;

                if(itemstack1.hasTagCompound() && itemstack1.stackSize == 1) {
                    ((Slot)this.inventorySlots.get(0)).putStack(itemstack1.copy());
                    itemstack1.stackSize = 0;
                }
                else if(itemstack1.stackSize >= 1) {
                    ((Slot)this.inventorySlots.get(0)).putStack(new ItemStack(itemstack1.getItem(), 1, itemstack1.getItemDamage()));
                    itemstack1.stackSize--;
                }
            }

            if(itemstack1.stackSize == 0) slot.putStack((ItemStack)null);
            else slot.onSlotChanged();
            if(itemstack1.stackSize == itemstack.stackSize)  return null;
            slot.onPickupFromSlot(par1EntityPlayer, itemstack1);
        }
        return itemstack;
    }
}

 

 

 

The tile entity:

 

 

public class TileEntityIncubator extends TileEntity implements ISidedInventory {

private static final int[] slotsTop = new int[] {0};
private static final int[] slotsBottom = new int[] {2, 1};
private static final int[] slotsSides = new int[] {1};
private ItemStack[] furnaceItemStacks = new ItemStack[3];
public int furnaceBurnTime, currentItemBurnTime, furnaceCookTime, speed;
private String customName;

public TileEntityIncubator() {
	setCustomName("incubator");
	this.speed = 200;
}

@Override
public int getSizeInventory() {
	return this.furnaceItemStacks.length;
}

@Override
public ItemStack getStackInSlot(int par1) {
	return this.furnaceItemStacks[par1];
}

@Override
public ItemStack decrStackSize(int par1, int par2) {
	if(this.furnaceItemStacks[par1] != null) {
		ItemStack itemstack;
		if(this.furnaceItemStacks[par1].stackSize <= par2) {
			itemstack = this.furnaceItemStacks[par1];
			this.furnaceItemStacks[par1] = null;
			return itemstack;
		} else {
			itemstack = this.furnaceItemStacks[par1].splitStack(par2);
			if(this.furnaceItemStacks[par1].stackSize == 0) this.furnaceItemStacks[par1] = null;
			return itemstack;
		}
	} else {
		return null;
	}
}

@Override
public ItemStack getStackInSlotOnClosing(int par1) {
	if(this.furnaceItemStacks[par1] != null) {
		ItemStack itemstack = this.furnaceItemStacks[par1];
		this.furnaceItemStacks[par1] = null;
		return itemstack;
	} else {
		return null;
	}
}

@Override
public void setInventorySlotContents(int par1, ItemStack par2ItemStack) {
	this.furnaceItemStacks[par1] = par2ItemStack;
	if(par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit()) 
		par2ItemStack.stackSize = this.getInventoryStackLimit();
}

@Override
public String getInventoryName() {
	return this.customName;
}

@Override
public boolean hasCustomInventoryName() {
	return true;
}

public void setCustomName(String s) {
	this.customName = s;
}

@Override
public void readFromNBT(NBTTagCompound nbt) {
	super.readFromNBT(nbt);
	NBTTagList nbttaglist = nbt.getTagList("Items", 10);
	this.furnaceItemStacks = new ItemStack[this.getSizeInventory()];

	for(int i = 0; i < nbttaglist.tagCount(); ++i) {
		NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
		byte b = nbttagcompound1.getByte("Slot");

		if(b >= 0 && b < this.furnaceItemStacks.length) this.furnaceItemStacks[b] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
	}
	this.furnaceBurnTime = nbt.getShort("BurnTime");
	this.furnaceCookTime = nbt.getShort("CookTime");
	this.currentItemBurnTime = getItemBurnTime(this.furnaceItemStacks[1]);

	if(nbt.hasKey("CustomName", ) this.customName = nbt.getString("CustomName");
}

@Override
public void writeToNBT(NBTTagCompound nbt) {
	super.writeToNBT(nbt);
	nbt.setShort("BurnTime", (short)this.furnaceBurnTime);
	nbt.setShort("CookTime", (short)this.furnaceCookTime);
	NBTTagList nbttaglist = new NBTTagList();
	for(int i = 0; i < this.furnaceItemStacks.length; ++i) {
		if(this.furnaceItemStacks[i] != null) {
			NBTTagCompound nbttagcompound1 = new NBTTagCompound();
			nbttagcompound1.setByte("Slot", (byte)i);
			this.furnaceItemStacks[i].writeToNBT(nbttagcompound1);
			nbttaglist.appendTag(nbttagcompound1);
		}
	}

	nbt.setTag("Items", nbttaglist);
	if(this.hasCustomInventoryName()) nbt.setString("CustomName", this.customName);
}

@Override
public int getInventoryStackLimit() {
	return 64;
}

@SideOnly(Side.CLIENT)
public int getCookProgressScaled(int i) {
	return this.furnaceCookTime * i / speed;
}

@SideOnly(Side.CLIENT)
public int getBurnTimeRemainingScaled(int i) {
	if(this.currentItemBurnTime == 0) {
		this.currentItemBurnTime = speed;
	}
	return this.furnaceBurnTime * i / this.currentItemBurnTime;
}

public boolean isBurning() {
	return this.furnaceBurnTime > 0;
}

@Override
public void updateEntity() {
	boolean flag = this.furnaceBurnTime > 0;
	boolean flag1 = false;

	if(this.furnaceBurnTime > 0) --this.furnaceBurnTime;

	if(!this.worldObj.isRemote) {
		if(this.furnaceBurnTime == 0 && this.canSmelt()) {
			this.currentItemBurnTime = this.furnaceBurnTime = getItemBurnTime(this.furnaceItemStacks[1]);

			if(this.furnaceBurnTime > 0) {
				flag1 = true;

				if(this.furnaceItemStacks[1] != null) {
					--this.furnaceItemStacks[1].stackSize;

					if(this.furnaceItemStacks[1].stackSize == 0) {
						this.furnaceItemStacks[1] = furnaceItemStacks[1].getItem().getContainerItem(furnaceItemStacks[1]);
					}
				}
			}
		}

		if(this.isBurning() && this.canSmelt()) {
			++this.furnaceCookTime;

			if(this.furnaceCookTime == speed) {
				this.furnaceCookTime = 0;
				this.smeltItem();
				flag1 = true;
			}
		} else {
			this.furnaceCookTime = 0;
		}

		if(flag != this.furnaceBurnTime > 0) {
			flag1 = true;
			BlockIncubator.update(this.furnaceCookTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord);
		}
	}

	if(flag1) this.markDirty();
}

protected boolean canSmelt() {
	if(this.furnaceItemStacks[0] == null) {
		return false;
	} else {
		ItemStack itemstack = IncubatorRecipes.smelting().getSmeltingResult(this.furnaceItemStacks[0]);
		if(itemstack == null) return false;
		if(this.furnaceItemStacks[2] == null) return true;
		if(!this.furnaceItemStacks[2].isItemEqual(itemstack)) return false;
		int result = furnaceItemStacks[2].stackSize + itemstack.stackSize;
		return result <= getInventoryStackLimit() && result <= this.furnaceItemStacks[2].getMaxStackSize();
	}
}


public void smeltItem() {
	if(this.canSmelt()) {
		ItemStack itemstack = IncubatorRecipes.smelting().getSmeltingResult(this.furnaceItemStacks[0]);

		if(this.furnaceItemStacks[2] == null) this.furnaceItemStacks[2] = itemstack.copy();

		else if(this.furnaceItemStacks[2].getItem() == itemstack.getItem()) this.furnaceItemStacks[2].stackSize += itemstack.stackSize;

		--this.furnaceItemStacks[0].stackSize;
		if(this.furnaceItemStacks[0].stackSize <= 0) this.furnaceItemStacks[0] = null;
	}
}

public int getItemBurnTime(ItemStack stack) {
	Item item = stack.getItem();
	if(item == Items.coal) return 1600 / speed;
	return GameRegistry.getFuelValue(stack);
}

public boolean isItemFuel(ItemStack i) {
	return getItemBurnTime(i) > 0;
}

@Override
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) {
	return true;
}

@Override
public void openInventory() {}

@Override
public void closeInventory() {}

@Override
public boolean isItemValidForSlot(int slot, ItemStack par2ItemStack) {
	return slot == 2 ? false : (slot == 1 ? isItemFuel(par2ItemStack) : true);
}

@Override
public int[] getAccessibleSlotsFromSide(int slot) {
	return slot == 0 ? slotsBottom : (slot == 1 ? slotsTop : slotsSides);
}

@Override
public boolean canInsertItem(int par1, ItemStack par2ItemStack, int par3) {
	return this.isItemValidForSlot(par1, par2ItemStack);
}

@Override
public boolean canExtractItem(int par1, ItemStack par2ItemStack, int par3) {
	return par3 != 0 || par1 != 1 || par2ItemStack.getItem() == Items.bucket;
}
}

 

 

 

If i use this instead of just returning true:

@Override
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer) {
	return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : par1EntityPlayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord  + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
}

 

I get this crash when i open the block:

 

 

[09:23:28] [server thread/ERROR]: Encountered an unexpected exception
net.minecraft.util.ReportedException: Ticking player
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 net.essence.blocks.tileentity.TileEntityIncubator.isUseableByPlayer(TileEntityIncubator.java:240) ~[TileEntityIncubator.class:?]
at net.essence.blocks.tileentity.container.ContainerIncubator.canInteractWith(ContainerIncubator.java:66) ~[ContainerIncubator.class:?]
at net.minecraftforge.event.entity.player.PlayerOpenContainerEvent.<init>(PlayerOpenContainerEvent.java:27) ~[PlayerOpenContainerEvent.class:?]
at net.minecraftforge.common.ForgeHooks.canInteractWith(ForgeHooks.java:381) ~[ForgeHooks.class:?]
at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:343) ~[EntityPlayer.class:?]
at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:334) ~[EntityPlayerMP.class:?]
at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:329) ~[NetHandlerPlayServer.class:?]
at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37) ~[C03PacketPlayer.class:?]
at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:111) ~[C03PacketPlayer.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
[09:23:28] [server thread/ERROR]: This crash report has been saved to: C:\Development\Forge 1.7.10\eclipse\.\crash-reports\crash-2014-08-17_09.23.28-server.txt
[09:23:28] [server thread/INFO]: Stopping server
[09:23:28] [server thread/INFO]: Saving players
[09:23:28] [server thread/INFO]: Saving worlds
[09:23:28] [server thread/INFO]: Saving chunks for level 'New World'/Overworld
[09:23:28] [server thread/INFO]: Saving chunks for level 'New World'/Nether
[09:23:28] [server thread/INFO]: Saving chunks for level 'New World'/The End
[09:23:28] [server thread/INFO]: Saving chunks for level 'New World'/Depths
[09:23:28] [server thread/INFO]: Saving chunks for level 'New World'/Euca
[09:23:28] [server thread/INFO]: Saving chunks for level 'New World'/Boiling Point
---- Minecraft Crash Report ----
// Uh... Did I do that?

Time: 17/08/14 9:23 AM
Description: Ticking player

java.lang.NullPointerException: Ticking player
at net.essence.blocks.tileentity.TileEntityIncubator.isUseableByPlayer(TileEntityIncubator.java:240)
at net.essence.blocks.tileentity.container.ContainerIncubator.canInteractWith(ContainerIncubator.java:66)
at net.minecraftforge.event.entity.player.PlayerOpenContainerEvent.<init>(PlayerOpenContainerEvent.java:27)
at net.minecraftforge.common.ForgeHooks.canInteractWith(ForgeHooks.java:381)
at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:343)
at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:334)
at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:329)
at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37)
at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:111)
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 net.essence.blocks.tileentity.TileEntityIncubator.isUseableByPlayer(TileEntityIncubator.java:240)
at net.essence.blocks.tileentity.container.ContainerIncubator.canInteractWith(ContainerIncubator.java:66)
at net.minecraftforge.event.entity.player.PlayerOpenContainerEvent.<init>(PlayerOpenContainerEvent.java:27)
at net.minecraftforge.common.ForgeHooks.canInteractWith(ForgeHooks.java:381)
at net.minecraft.entity.player.EntityPlayer.onUpdate(EntityPlayer.java:343)

-- Player being ticked --
Details:
Entity Type: null (net.minecraft.entity.player.EntityPlayerMP)
Entity ID: 92
Entity Name: The_SlayerMC
Entity's Exact location: -44.28, 4.00, 258.03
Entity's Block location: World: (-45,4,258), Chunk: (at 3,0,2 in -3,16; contains blocks -48,0,256 to -33,255,271), 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
Stacktrace:
at net.minecraft.entity.player.EntityPlayerMP.onUpdateEntity(EntityPlayerMP.java:334)
at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:329)
at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:37)
at net.minecraft.network.play.client.C03PacketPlayer.processPacket(C03PacketPlayer.java:111)
at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:247)

-- Ticking connection --
Details:
Connection: net.minecraft.network.NetworkManager@72da3450
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 7 (amd64) version 6.1
Java Version: 1.7.0_67, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 732840280 bytes (698 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 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.1199 Minecraft Forge 10.13.0.1199 6 mods loaded, 6 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.1199} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.0.1199.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Forge{10.13.0.1199} [Minecraft Forge] (forgeSrc-1.7.10-10.13.0.1199.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
eotg{0.0.1} [Essence Of The Gods] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
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['The_SlayerMC'/92, l='New World', x=-44.28, y=4.00, z=258.03]]
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-17_09.23.28-server.txt

 

 

Former developer for DivineRPG, Pixelmon and now the maker of Essence of the Gods

Link to comment
Share on other sites

I don't know what you have wrong, because the code I can see seems fine.

 

It kind of seems like your client and server containers are not both active. What code opens your Incubator gui? Please show that.

Link to comment
Share on other sites

public class GuiHandler implements IGuiHandler {

private static int guiID = 0;
public static int stats = guiID++, enrichmentTable = guiID++, incubator = guiID++;

@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
	if(ID == stats) return new ContainerEmpty();
	if(ID == enrichmentTable) return new ContainerEnrichedTable(player.inventory, world, x, y, z, player);
	if(ID == incubator) return new ContainerIncubator(player.inventory, new TileEntityIncubator());
	return null;
}

@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
	if(ID == stats) return new GuiStats();
	if(ID == enrichmentTable) return new GuiEnrichedEnchantmentTable(player.inventory, world, x, y, z, player);
	if(ID == incubator) return new GuiIncubator(player.inventory, new TileEntityIncubator());
	return null;
}
}

Former developer for DivineRPG, Pixelmon and now the maker of Essence of the Gods

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...

Important Information

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