[Не знаю как назвать] Вопрос, помощь.

Версия Minecraft
1.12.2
2,932
44
598
Доброго времени суток Земляне и Чужие!
Сегодня я столкнулся с такой проблемой: У меня есть вот такой код:
Java:
    public void updateTick(World worldIn, BlockPos pos, IBlockState istate, Random rand) { //Каждый тик
        
        if (worldIn.getLightFor(EnumSkyBlock.BLOCK, pos) > 11 - this.getDefaultState().getLightOpacity()) { //Уровень освещённости
            
            if (worldIn.getBlockState(pos).getBlock() == Blocks.SNOW_LAYER.getDefaultState().withProperty(BlockSnow.LAYERS, 1)) { //Блок снега в один слой
                
                IBlockState state = BlockRegister.puddle_plus_plus.getDefaultState();
                worldIn.setBlockState(pos, state);
                
            } else { //Иначе
                
                int prevValue = worldIn.getBlockState(pos).getValue(BlockSnow.LAYERS);
                IBlockState state = Blocks.SNOW_LAYER.getDefaultState().withProperty(BlockSnow.LAYERS, prevValue - 1);
                worldIn.setBlockState(pos, state);
                
            }
            
        }
    }
(Я думаю всем понятно что он делает)
Проблема в том что когда остаётся один слой снега, игра крашиться так как не может из одного слоя снега убрать один слой. В общем то я попытался решить это сделав проверку на то что остался блок снега в один слой и то что его надо заменить на мой блок, однако это не сработало :/ Как можно сделать так что бы когда оставался один слой снега он заменялся на другой блок ? :/
 
Решение
Переделал твой код:
Java:
public void updateTick(World worldIn, BlockPos pos, IBlockState istate, Random rand) {
        if (worldIn.getLightFor(EnumSkyBlock.BLOCK, pos) > 11 - this.getDefaultState().getLightOpacity()) {
       
            IBlockState state = worldIn.getBlockState(pos);
       
            if (state.getBlock() == Blocks.SNOW_LAYER) {
                if (state.getValue(BlockSnow.LAYERS) == 1) {
                    IBlockState state = BlockRegister.puddle_plus_plus.getDefaultState();
                    worldIn.setBlockState(pos, state);
                } else {
                    int prevValue = state.getValue(BlockSnow.LAYERS) - 1;
                    if (prevValue >= 0 && prevValue < 16) {...
1,560
86
204
Переделал твой код:
Java:
public void updateTick(World worldIn, BlockPos pos, IBlockState istate, Random rand) {
        if (worldIn.getLightFor(EnumSkyBlock.BLOCK, pos) > 11 - this.getDefaultState().getLightOpacity()) {
       
            IBlockState state = worldIn.getBlockState(pos);
       
            if (state.getBlock() == Blocks.SNOW_LAYER) {
                if (state.getValue(BlockSnow.LAYERS) == 1) {
                    IBlockState state = BlockRegister.puddle_plus_plus.getDefaultState();
                    worldIn.setBlockState(pos, state);
                } else {
                    int prevValue = state.getValue(BlockSnow.LAYERS) - 1;
                    if (prevValue >= 0 && prevValue < 16) {
                        IBlockState state = Blocks.SNOW_LAYER.getDefaultState().withProperty(BlockSnow.LAYERS, prevValue);
                        worldIn.setBlockState(pos, state);
                   }
                }
           
            }
        }
    }
 
Сверху