Проблемы в коде.

Версия Minecraft
1.12+
586
32
136
Есть два вопроса:
1)Как оптимизировать данный код?
2)Почему всё действия выполняются дважды, и как это исправить?
Код:
@Override
    public boolean onBlockActivated (World worldIn, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
        ItemStack stack = player.getHeldItem(hand);
        if(!stack.getItem().getRegistryName().equals(ModItem.DARK_RING.getRegistryName()))return false;
        DE.checkDE(stack);
        if(state.getBlock() != this)return false;
        if (DE.getDE(stack) < 5000){
            player.sendMessage(new TextComponentString(TextFormatting.GRAY+ "You haven't minimum DE"));
        }
        else if(DE.getDE(stack) >= 5000 && DE.getDE(stack)< 25000){
            worldIn.setBlockToAir(pos);
            for(int i = -1;i <=1;i++){
                worldIn.spawnEntity(new EntityTNTPrimed(worldIn, pos.getX()+i,  pos.getY(),  pos.getZ(), player));
                for(int g = -1;g <= 1;g++){
                    worldIn.spawnEntity(new EntityTNTPrimed(worldIn, pos.getX(),  pos.getY(),  pos.getZ()+g, player));
                }
            }
        }
           else if(DE.getDE(stack) >= 25000 && DE.getDE(stack) <50000){
                worldIn.setBlockToAir(pos);
                worldIn.spawnEntity(new EntityDarkTNTPrimed(worldIn, pos.getX(),  pos.getY(),  pos.getZ(),15));
                DE.setDE(stack,DE.getDE(stack)%25000);
        }
            else if (DE.getDE(stack) >= 50000){
            worldIn.spawnEntity(new EntityDarkTNTPrimed(worldIn, pos.getX(),  pos.getY(),  pos.getZ(),30));
                DE.setDE(stack,DE.getDE(stack)%50000);
            }
        worldIn.setBlockToAir(pos);
        return true;
    }
 
Решение
Ну код, вроде, никак не сократить. Действия выполняются удвоенно из-за клиента и сервера. Тебе нужно выполнить на сервере, скорее всего, поэтому в самое начало вставь: if(worldIn.isRemote) return false

CumingSoon

Местный стендапер
1,634
12
269
Ну код, вроде, никак не сократить. Действия выполняются удвоенно из-за клиента и сервера. Тебе нужно выполнить на сервере, скорее всего, поэтому в самое начало вставь: if(worldIn.isRemote) return false
 
Сверху