Posted December 3, 201410 yr Thats the Block class public class Candle extends BlockContainer { public Candle() { super(Material.cake); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float hitX, float hitY, float hitZ) { int data = world.getBlockMetadata(x, y, z); if(data%2==0) world.setBlockMetadataWithNotify(x, y, z, data+1, 2); else world.setBlockMetadataWithNotify(x, y, z, data-1, 2); this.randomDisplayTick(world, x, y, z, world.rand); return true; } @Override public TileEntity createNewTileEntity(World var1, int var2) { return new TileEntityCandle(); } @Override public int getRenderType(){ return -1; } @Override public boolean isOpaqueCube(){ return false; } @Override public boolean renderAsNormalBlock(){ return false; } @Override public int getLightValue(IBlockAccess world, int x, int y, int z) { return world.getBlockMetadata(x, y, z)%2==0 ? 0 : 12; } @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { return null; } @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random rand) { int l = world.getBlockMetadata(x, y, z); double d0 = (double)((float)x + 0.5F); double d1 = (double)((float)y + 0.5F); double d2 = (double)((float)z + 0.5F); double d3 = 0.2199999988079071D; double d4 = 0.27000001072883606D; if (l == 1) { world.spawnParticle("smoke", d0, d1, d2, 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", d0, d1, d2, 0.0D, 0.0D, 0.0D); } else if (l == 3) { world.spawnParticle("smoke", d0 + d4, d1 + d3, d2, 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", d0 + d4, d1 + d3, d2, 0.0D, 0.0D, 0.0D); } else if (l == 5) { world.spawnParticle("smoke", d0, d1 + d3, d2 - d4, 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", d0, d1 + d3, d2 - d4, 0.0D, 0.0D, 0.0D); } else if (l == 7) { world.spawnParticle("smoke", d0, d1 + d3, d2 + d4, 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", d0, d1 + d3, d2 + d4, 0.0D, 0.0D, 0.0D); } else if (l == 9) { world.spawnParticle("smoke", d0 - d4, d1 + d3, d2, 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", d0 - d4, d1 + d3, d2, 0.0D, 0.0D, 0.0D); } } } Actually working, but when i relog into the world the candels still emit light, but it looks buggy (only with a really small range) when i place a torch and remove it the light updates and its normal again (sry some names deobfuscated )
December 4, 201410 yr Hi > world.setBlockMetadataWithNotify(x, y, z, data+1, 2); try replacing the "2" with "3" * Sets the block ID and metadata at a given location. Args: X, Y, Z, new block ID, new metadata, flags. Flag 1 will * cause a block update. Flag 2 will send the change to clients (you almost always want this). I think you should also only use setBlockMetadataWithNotify on the server side. eg if (!world.isRemote) { .. etc.. world.setBlockMetadataWithNotify(..etc..) } -TGG
December 5, 201410 yr Author still buggy not every single one, but > 0! is the getLightValue causing the problem? Can i maybe do something like updating the light level for the first time the block gets ticked ater relog or sth?
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.