@Override public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase living, ItemStack stack) { if (stack.getTagCompound() != null) { TileMachineBase tile = (TileMachineBase) world.getTileEntity(pos); tile.setLevel(stack.getTagCompound().getByte("Level")); tile.readAugmentsFromNBT(stack.getTagCompound()); tile.updateAugmentStatus(); tile.setEnergyStored(stack.getTagCompound().getInteger(CoreProps.ENERGY)); int facing = BlockHelper.determineXZPlaceFacing(living); int storedFacing = ReconfigurableHelper.getFacing(stack); byte[] sideCache = ReconfigurableHelper.getSideCache(stack, tile.getDefaultSides()); for (int i = 0; i < sideCache.length; i++) { if (sideCache[i] >= tile.getNumConfig(i)) { sideCache[i] = 0; } } tile.sideCache[0] = sideCache[0]; tile.sideCache[1] = sideCache[1]; tile.sideCache[facing] = 0; tile.sideCache[BlockHelper.getLeftSide(facing)] = sideCache[BlockHelper.getLeftSide(storedFacing)]; tile.sideCache[BlockHelper.getRightSide(facing)] = sideCache[BlockHelper.getRightSide(storedFacing)]; tile.sideCache[BlockHelper.getOppositeSide(facing)] = sideCache[BlockHelper.getOppositeSide(storedFacing)]; } super.onBlockPlacedBy(world, pos, state, living, stack); }