Posted August 16, 20187 yr I am using the item handler capability to create a custom furnace but although I have it implemented correctly (I think), the container reference to it returns null. Here's the code: Tile Entity package harry.mods.tutorialmod.blocks.tileentity; import harry.mods.tutorialmod.blocks.BlockElectricSinteringFurnace; import harry.mods.tutorialmod.blocks.recipes.SinteringFurnaceRecipes; import harry.mods.tutorialmod.energy.CustomEnergyStorage; import harry.mods.tutorialmod.handlers.NBTHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextComponentTranslation; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityInject; import net.minecraftforge.energy.CapabilityEnergy; import net.minecraftforge.energy.IEnergyStorage; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemStackHandler; public class TileEntityElectricSinteringFurnace extends TileEntity implements ITickable { public CustomEnergyStorage storage; public ItemStackHandler handler; public int smeltingTime = 0, itemSmeltTime = 100; private ItemStack smelting; private String customName; public TileEntityElectricSinteringFurnace() { this.storage = new CustomEnergyStorage(75000); this.handler = new ItemStackHandler(3); } @Override public ITextComponent getDisplayName() { return hasCustomName() ? new TextComponentString(customName) : new TextComponentTranslation("container.electric_sintering_furnace"); } public boolean hasCustomName() { return !this.customName.isEmpty() && this.customName != null; } private EnumFacing getFacing() { return world.getBlockState(pos).getValue(BlockElectricSinteringFurnace.FACING); } @Override public boolean hasCapability(Capability<?> capability, EnumFacing facing) { if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return true; if(capability == CapabilityEnergy.ENERGY) return true; return super.hasCapability(capability, facing); } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return (T)this.handler; if(capability == CapabilityEnergy.ENERGY) return (T)this.storage; return super.getCapability(capability, facing); } @Override public void readFromNBT(NBTTagCompound compound) { compound.getInteger("smeltingTime"); this.handler.deserializeNBT(compound.getCompoundTag("handler")); this.storage.readFromNBT(compound); smelting = NBTHandler.stackFromNBT((NBTTagCompound) compound.getTag("smelting")); super.readFromNBT(compound); } @Override public NBTTagCompound writeToNBT(NBTTagCompound compound) { compound.setTag("handler", this.handler.serializeNBT()); compound.setTag("smelting", NBTHandler.stackToNBT(smelting)); compound.setInteger("smeltingTime", smeltingTime); this.storage.writeToNBT(compound); super.writeToNBT(compound); return compound; } @Override public void update() { ItemStack input1 = handler.getStackInSlot(0); ItemStack input2 = handler.getStackInSlot(1); if(world.isBlockPowered(pos)) storage.receiveEnergy(100, false); if(storage.getEnergyStored() >= 20) { if(smeltingTime > 0) { storage.extractEnergy(20, false); smeltingTime++; if(smeltingTime == itemSmeltTime) { handler.insertItem(2, smelting, false); smelting = null; smeltingTime = 0; return; } } else { if(!input1.isEmpty() && !input2.isEmpty()) { SinteringFurnaceRecipes recipes = SinteringFurnaceRecipes.getInstance(); ItemStack output = recipes.getSinteringResult(input1, input2); if(!output.isEmpty()) { smelting = output; smeltingTime ++; input1.shrink(1); input2.shrink(1); handler.setStackInSlot(0, input1); handler.setStackInSlot(1, input2); storage.extractEnergy(20, false); } } } } } 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; } } Container public class ContainerElectricSinteringFurnace extends Container { private final TileEntityElectricSinteringFurnace tileentity; public ContainerElectricSinteringFurnace(InventoryPlayer player, TileEntityElectricSinteringFurnace tileentity) { this.tileentity = tileentity; IItemHandler handler = tileentity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); this.addSlotToContainer(new SlotItemHandler(handler, 0, 26, 11)); this.addSlotToContainer(new SlotItemHandler(handler, 1, 26, 59)); this.addSlotToContainer(new SlotElectricSinteringFurnaceOutput(handler, 3, 81, 36)); 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)); } } Error log Caused by: java.lang.NullPointerException at harry.mods.tutorialmod.blocks.container.ContainerElectricSinteringFurnace.<init>(ContainerElectricSinteringFurnace.java:26) ~[ContainerElectricSinteringFurnace.class:?] at harry.mods.tutorialmod.handlers.GuiHandler.getServerGuiElement(GuiHandler.java:25) ~[GuiHandler.class:?] at net.minecraftforge.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:253) ~[NetworkRegistry.class:?] at net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88) ~[FMLNetworkHandler.class:?] at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2809) ~[EntityPlayer.class:?] at harry.mods.tutorialmod.blocks.BlockElectricSinteringFurnace.onBlockActivated(BlockElectricSinteringFurnace.java:58) ~[BlockElectricSinteringFurnace.class:?] at net.minecraft.server.management.PlayerInteractionManager.processRightClickBlock(PlayerInteractionManager.java:472) ~[PlayerInteractionManager.class:?] at net.minecraft.network.NetHandlerPlayServer.processTryUseItemOnBlock(NetHandlerPlayServer.java:767) ~[NetHandlerPlayServer.class:?] at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:68) ~[CPacketPlayerTryUseItemOnBlock.class:?] at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:13) ~[CPacketPlayerTryUseItemOnBlock.class:?] at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_172] at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_172] at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?] ... 5 more If you have any idea why this may return null, I would love to know. Thanks!
August 16, 20187 yr Author 1 minute ago, diesieben07 said: From the code it is more likely that you are passing in null for the tileentity parameter of ContainerElectricSinteringFurnace. No the error specifies the line of the capability unfortunately
August 16, 20187 yr Author 52 minutes ago, diesieben07 said: From the code it is more likely that you are passing in null for the tileentity parameter of ContainerElectricSinteringFurnace. Oh my god ffs. You were right, I was using the local te instead of the global te variable. So frustrating. Thanks Still doesn't work Edited August 16, 20187 yr by HarryTechReviews I hate my life
August 16, 20187 yr 41 minutes ago, HarryTechReviews said: global te variable What. Why do you have a global variable? Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
August 16, 20187 yr Author 2 minutes ago, Draco18s said: What. Why do you have a global variable? Might be wrong phrasing I don't know. Didnt work anyway
August 16, 20187 yr 4 minutes ago, HarryTechReviews said: Might be wrong phrasing I don't know. Didnt work anyway Well post updated code, the new error report and which line it is crashing on. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 16, 20187 yr Author Just now, Animefan8888 said: Well post updated code, the new error report and which line it is crashing on. Still same error, I tried something & it didn't work so I reversed it
August 16, 20187 yr 57 minutes ago, HarryTechReviews said: 1 hour ago, diesieben07 said: From the code it is more likely that you are passing in null for the tileentity parameter of ContainerElectricSinteringFurnace. Oh my god ffs. You were right, I was using the local te instead of the global te variable. So frustrating. Thanks You realize the thing you did doesn't fucking matter because you passed null to the constructor, right? 2 hours ago, HarryTechReviews said: this.tileentity = tileentity; IItemHandler handler = tileentity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); both this.tileentity and tileentity are null. Changing tileentity to this.tileentity on the second line doesn't change that fact. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
August 16, 20187 yr 2 hours ago, HarryTechReviews said: IItemHandler handler = tileentity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); The only thing that could be causing a null pointer crash here would be "tileentity" you have to be passing null to the constructor. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 16, 20187 yr Author 6 minutes ago, Animefan8888 said: The only thing that could be causing a null pointer crash here would be "tileentity" you have to be passing null to the constructor. I'm not, here it is in gui handler. if(ID == Reference.GUI_ELECTRIC_SINTERING_FURNACE) return new ContainerElectricSinteringFurnace(player.inventory, (TileEntityElectricSinteringFurnace)world.getTileEntity(new BlockPos(x,y,z))); if(ID == Reference.GUI_ELECTRIC_SINTERING_FURNACE) return new ContainerElectricSinteringFurnace(player.inventory, (TileEntityElectricSinteringFurnace)world.getTileEntity(new BlockPos(x,y,z)));
August 16, 20187 yr 1 minute ago, HarryTechReviews said: world.getTileEntity(new BlockPos(x,y,z) This can return null. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 16, 20187 yr Author 1 minute ago, Animefan8888 said: This can return null. Same code for the other two gui and containers and they dont return null
August 16, 20187 yr 1 minute ago, HarryTechReviews said: Same code for the other two gui and containers and they dont return null Is the TileEntity actually being placed down where the block is? Is the TileEntity registered? VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 16, 20187 yr Author 57 minutes ago, Animefan8888 said: Is the TileEntity actually being placed down where the block is? Is the TileEntity registered? Yep, all other tile entities are the same but this one doesn't work
August 16, 20187 yr 14 minutes ago, HarryTechReviews said: Yep, all other tile entities are the same but this one doesn't work  Could you post your Block class and parent classes. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 16, 20187 yr Author 3 minutes ago, Animefan8888 said: Could you post your Block class and parent classes. Block Class package harry.mods.tutorialmod.blocks; import java.util.Random; import harry.mods.tutorialmod.Main; import harry.mods.tutorialmod.Reference; import harry.mods.tutorialmod.blocks.tileentity.TileEntitySinteringFurnace; import harry.mods.tutorialmod.init.BlockInit; import net.minecraft.block.BlockHorizontal; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.Mirror; import net.minecraft.util.Rotation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class BlockElectricSinteringFurnace extends BlockBase { public static final PropertyDirection FACING = BlockHorizontal.FACING; public static final PropertyBool BURNING = PropertyBool.create("burning"); public BlockElectricSinteringFurnace(String name) { super(name, Material.IRON, Main.TUTORIAL); this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(BURNING, false)); } @Override public Item getItemDropped(IBlockState state, Random rand, int fortune) { return Item.getItemFromBlock(BlockInit.ELECTRIC_SINTERING_FURNACE); } @Override public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) { return new ItemStack(BlockInit.ELECTRIC_SINTERING_FURNACE); } @Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { if(!worldIn.isRemote) { playerIn.openGui(Main.instance, Reference.GUI_ELECTRIC_SINTERING_FURNACE, worldIn, pos.getX(), pos.getY(), pos.getZ()); } return true; } @Override public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) { if (!worldIn.isRemote) { IBlockState north = worldIn.getBlockState(pos.north()); IBlockState south = worldIn.getBlockState(pos.south()); IBlockState west = worldIn.getBlockState(pos.west()); IBlockState east = worldIn.getBlockState(pos.east()); EnumFacing face = (EnumFacing)state.getValue(FACING); if (face == EnumFacing.NORTH && north.isFullBlock() && !south.isFullBlock()) face = EnumFacing.SOUTH; else if (face == EnumFacing.SOUTH && south.isFullBlock() && !north.isFullBlock()) face = EnumFacing.NORTH; else if (face == EnumFacing.WEST && west.isFullBlock() && !east.isFullBlock()) face = EnumFacing.EAST; else if (face == EnumFacing.EAST && east.isFullBlock() && !west.isFullBlock()) face = EnumFacing.WEST; worldIn.setBlockState(pos, state.withProperty(FACING, face), 2); } } public static void setState(boolean active, World worldIn, BlockPos pos) { IBlockState state = worldIn.getBlockState(pos); TileEntity tileentity = worldIn.getTileEntity(pos); if(active) worldIn.setBlockState(pos, BlockInit.ELECTRIC_SINTERING_FURNACE.getDefaultState().withProperty(FACING, state.getValue(FACING)).withProperty(BURNING, true), 3); else worldIn.setBlockState(pos, BlockInit.ELECTRIC_SINTERING_FURNACE.getDefaultState().withProperty(FACING, state.getValue(FACING)).withProperty(BURNING, false), 3); if(tileentity != null) { tileentity.validate(); worldIn.setTileEntity(pos, tileentity); } } @Override public boolean hasTileEntity() { return true; } @Override public TileEntity createTileEntity(World world, IBlockState state) { return new TileEntityElectricSinteringFurnace(); } @Override public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand) { return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()); } @Override public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) { worldIn.setBlockState(pos, this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()), 2); } @Override public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { TileEntitySinteringFurnace tileentity = (TileEntitySinteringFurnace)worldIn.getTileEntity(pos); worldIn.spawnEntity(new EntityItem(worldIn, pos.getX(), pos.getY(), pos.getZ(), tileentity.getStackInSlot(0))); worldIn.spawnEntity(new EntityItem(worldIn, pos.getX(), pos.getY(), pos.getZ(), tileentity.getStackInSlot(1))); worldIn.spawnEntity(new EntityItem(worldIn, pos.getX(), pos.getY(), pos.getZ(), tileentity.getStackInSlot(2))); worldIn.spawnEntity(new EntityItem(worldIn, pos.getX(), pos.getY(), pos.getZ(), tileentity.getStackInSlot(3))); super.breakBlock(worldIn, pos, state); } @Override public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.MODEL; } @Override public IBlockState withRotation(IBlockState state, Rotation rot) { return state.withProperty(FACING, rot.rotate((EnumFacing)state.getValue(FACING))); } @Override public IBlockState withMirror(IBlockState state, Mirror mirrorIn) { return state.withRotation(mirrorIn.toRotation((EnumFacing)state.getValue(FACING))); } @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] {BURNING,FACING}); } @Override public IBlockState getStateFromMeta(int meta) { EnumFacing facing = EnumFacing.getFront(meta); if(facing.getAxis() == EnumFacing.Axis.Y) facing = EnumFacing.NORTH; return this.getDefaultState().withProperty(FACING, facing); } @Override public int getMetaFromState(IBlockState state) { return ((EnumFacing)state.getValue(FACING)).getIndex(); } } GUI Class package harry.mods.tutorialmod.blocks.gui; import harry.mods.tutorialmod.Reference; import harry.mods.tutorialmod.blocks.TileEntityElectricSinteringFurnace; import harry.mods.tutorialmod.blocks.container.ContainerElectricSinteringFurnace; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; public class GuiElectricSinteringFurnace extends GuiContainer { private static final ResourceLocation TEXTURES = new ResourceLocation(Reference.MODID + ":textures/gui/electric_sintering_furnace.png"); private final InventoryPlayer player; private final TileEntityElectricSinteringFurnace tileentity; public GuiElectricSinteringFurnace(InventoryPlayer player, TileEntityElectricSinteringFurnace tileentity) { super(new ContainerElectricSinteringFurnace(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()), 125, 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 + 44, this.guiTop + 36, 176, 14, l + 1, 16); int k = this.getEnergyStoredScaled(75); this.drawTexturedModalRect(this.guiLeft + 152, this.guiTop + 7, 176, 32, 16, 75 - k); } private int getCookProgressScaled(int pixels) { int i = this.tileentity.cookTime; return i != 0 ? i * pixels / 100 : 0; } private int getEnergyStoredScaled(int pixels) { int i = this.tileentity.getEnergyStored(); int j = this.tileentity.getMaxEnergyStored(); return i != 0 && j != 0 ? i * pixels / j : 0; } } GUIHandler package harry.mods.tutorialmod.handlers; import harry.mods.tutorialmod.Reference; import harry.mods.tutorialmod.blocks.TileEntityElectricSinteringFurnace; import harry.mods.tutorialmod.blocks.container.ContainerCopperChest; import harry.mods.tutorialmod.blocks.container.ContainerElectricSinteringFurnace; import harry.mods.tutorialmod.blocks.container.ContainerSinteringFurnace; import harry.mods.tutorialmod.blocks.gui.GuiCopperChest; import harry.mods.tutorialmod.blocks.gui.GuiElectricSinteringFurnace; import harry.mods.tutorialmod.blocks.gui.GuiSinteringFurnace; import harry.mods.tutorialmod.blocks.tileentity.TileEntityCopperChest; import harry.mods.tutorialmod.blocks.tileentity.TileEntitySinteringFurnace; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; public class GuiHandler implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if(ID == Reference.GUI_SINTERING_FURNACE) return new ContainerSinteringFurnace(player.inventory, (TileEntitySinteringFurnace)world.getTileEntity(new BlockPos(x,y,z))); if(ID == Reference.GUI_COPPER_CHEST) return new ContainerCopperChest(player.inventory, (TileEntityCopperChest)world.getTileEntity(new BlockPos(x,y,z)), player); if(ID == Reference.GUI_ELECTRIC_SINTERING_FURNACE) return new ContainerElectricSinteringFurnace(player.inventory, (TileEntityElectricSinteringFurnace)world.getTileEntity(new BlockPos(x,y,z))); return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if(ID == Reference.GUI_SINTERING_FURNACE) return new GuiSinteringFurnace(player.inventory, (TileEntitySinteringFurnace)world.getTileEntity(new BlockPos(x,y,z))); if(ID == Reference.GUI_COPPER_CHEST) return new GuiCopperChest(player.inventory, (TileEntityCopperChest)world.getTileEntity(new BlockPos(x,y,z)), player); if(ID == Reference.GUI_ELECTRIC_SINTERING_FURNACE) return new GuiElectricSinteringFurnace(player.inventory, (TileEntityElectricSinteringFurnace)world.getTileEntity(new BlockPos(x,y,z))); return null; } }
August 17, 20187 yr Author 11 minutes ago, diesieben07 said: The version of hasTileEntity you are using is deprecated. Deprecations exist for a reason, do not just ignore them. Also, please, do not do this terrible vanilla furnace two-blocks-tile-entity hack. OMFG thank you!
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.