Моб не убирает блок из рук

Версия Minecraft
1.12.2
117
7
Сделал несколько условий для моба:
1)Если есть цель для атаки, то значение переменной istriggered = true;
2)Если значение istriggered = true, то моб должен взять блок в руки;
3)Если есть такой блок, который можно взять и моб его взял, то значение переменной isheldblock = true;
4)Если моб выстрелил, то значение переменной isheldblock = false;
5)Если значение переменной isheldblock = false, то заменяем блок в руках моба на пустоту и делаем всё с третьего пункта по новой.
Но, видимо, в моих логических рассуждениях где-то оказалась ошибка и блок в руках остается, что мешает мобу атаковать снова. Для большей понятности прикреплю нужные кусочки кода:

Java:
public void attackEntityWithRangedAttack(EntityLivingBase target, float distanceFactor)
    {
        if (isheldblock == true)
        {
            *моб стреляет*
            isheldblock = false;
        }
    }

Код:
public void updateTask()
        {
            Random random = this.tank.getRNG();
            World world = this.tank.world;
            int i = MathHelper.floor(this.tank.posX - 2.0D + random.nextDouble() * 4.0D);
            int j = MathHelper.floor(this.tank.posY - 1.0D); //+ random.nextDouble() * 3.0D);
            int k = MathHelper.floor(this.tank.posZ - 2.0D + random.nextDouble() * 4.0D);
            BlockPos blockpos = new BlockPos(i, j, k);
            IBlockState iblockstate = world.getBlockState(blockpos);
            Block block = iblockstate.getBlock();
            RayTraceResult raytraceresult = world.rayTraceBlocks(new Vec3d((double)((float)MathHelper.floor(this.tank.posX) + 0.5F), (double)((float)j + 0.5F), (double)((float)MathHelper.floor(this.tank.posZ) + 0.5F)), new Vec3d((double)((float)i + 0.5F), (double)((float)j + 0.5F), (double)((float)k + 0.5F)), false, true, false);
            boolean flag = raytraceresult != null && raytraceresult.getBlockPos().equals(blockpos);

            if (EntityTank.CARRIABLE_BLOCKS.contains(block) && flag)
            {
                isheldblock = true;
                this.tank.setHeldBlockState(iblockstate);
                world.setBlockToAir(blockpos);
            }
            
            if (isheldblock == false)
            {
                this.tank.setHeldBlockState((IBlockState)null);
            }
        }
 
Сверху