Posted June 29, 201213 yr Hello everyone, I lastly tried to make my mod with some custom furnaces into 1 BlockId. Everything works fine for now except for changing the light level. I tried it with a MinecraftForge method already: public int getLightValue(IBlockAccess world,int x,int y,int z){ TileEntityBFurnace tebf=(TileEntityBFurnace) world.getBlockTileEntity( x, y, z); if (tebf!=null){ if (tebf.isActive){ return 14; } } return 0; } But it doesn't make light at all... I tried to add a System.out.println() to show me if there'S no tileEntity, and then I get a ton of text saying there is not even a TileEntity there. So, now I am totally confused. Please help me, by telling me either how to do it, or how this method is supposed to be used. Thanks, froschi3b
June 29, 201213 yr You need to cause an update of your block so it recalculates, such as changing the metadata or so.
July 2, 201213 yr Did not work is not descriptive at all. We need to see a complete and reproducible testcase.
July 5, 201213 yr Author It's as I say, I tried to update it but it didn't even give me light then (as i said.) I don't want to know how to fix my problem, i need someone telling me how to add light values based on a tileEntity.
July 6, 201213 yr Author I now got it to work by adding 1 method and updating the light renderer: public int getLightValue(IBlockAccess world,int x,int y,int z){ TileEntityBFurnace tebf=getTileEntityaround(world,x,y,z); if (tebf!=null){ if (tebf.isActive){ return 14; } } return 0; } /** * Returns one of the TileEntityBFurnace around it. * Args: IBlockAccess,x,y,z */ private TileEntityBFurnace getTileEntityaround(IBlockAccess world,int x,int y,int z){ TileEntity te[]={world.getBlockTileEntity(x, y, z) ,world.getBlockTileEntity(x+1, y, z) ,world.getBlockTileEntity(x-1, y, z) ,world.getBlockTileEntity(x, y+1, z) ,world.getBlockTileEntity(x, y-1, z) ,world.getBlockTileEntity(x, y, z+1) ,world.getBlockTileEntity(x, y, z-1)}; int i=0; while(i<te.length){ if ((te[i]!=null) && (te[i] instanceof TileEntityBFurnace)){ return (TileEntityBFurnace) te[i]; } i++; } return null; } in my Block file, because you have to tell the light level to the blocks around it too, and then called this.worldObj.updateAllLightTypes(xCoord, yCoord, zCoord); in my TileEntity on activation and deactivation Just so everyone knows who wants to make a similar thing
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.