MSpace-Dev Posted November 17, 2019 Posted November 17, 2019 (edited) I've set TileEntity#shouldRefresh to false so that I can update the blockstate without it resetting its values. However, this makes the tile entity persist when its block is broken. I've added world.removeTileEntity(pos) in theBlock#blockBreak override function. However, the TE still persists. I can verify it is getting called. Am I missing something here? @Override public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { if (!worldIn.isRemote) { if (worldIn.getTileEntity(pos) != null) { if (worldIn.getTileEntity(pos) instanceof TileEntityTotemBase) { TileEntityTotemBase totemBase = (TileEntityTotemBase) worldIn.getTileEntity(pos); // Update totem on Client totemBase.setTotemProperties(); totemBase.sendUpdates(); } } } worldIn.removeTileEntity(pos); // Redundant as super() calls it anyways. Probably need some other calls to remove TE! super.breakBlock(worldIn, pos, state); } Edited November 17, 2019 by MSpace-Dev ugly copy from Discord Quote
MSpace-Dev Posted November 17, 2019 Author Posted November 17, 2019 Ah, I see thanks. Got it working nicely like this @Override public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) { // Only refresh if new state is not an instance of BlockTotemBase return !(newState.getBlock() instanceof BlockTotemBase); } Quote
Recommended Posts
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.