- 586
- 32
- 136
Есть два вопроса:
1)Как оптимизировать данный код?
2)Почему всё действия выполняются дважды, и как это исправить?
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;
}