Скорость в броне

Версия Minecraft
1.7.10
71
1
Доброго времени суток, подскажите, в чем моя ошибка? при снятии брони не убирается модификатор, т.е. я накладываю скорость на броню, а при снятии она не убирается.
Java:
public class Events {

    private static HashMap<EntityPlayer, ItemStack[]> map = new HashMap<EntityPlayer, ItemStack[]>();


    @SubscribeEvent
    public void tickplayers(TickEvent.PlayerTickEvent event) {
        switch (event.phase) {
        case END:
            if (map.containsKey(event.player)){
                ItemStack[] armor = map.get(event.player);
                for (int i = 0; i < 4; i++)
                    if (event.player.getCurrentArmor(i) != armor[i]) checkArmor(i, event.player, event.player.getCurrentArmor(i), armor[i]);

                armor = new ItemStack[4];
                for (int i = 0; i < 4; i++)
                    armor[i] = event.player.getCurrentArmor(i);
                map.put(event.player, armor);
            }
            else {
                ItemStack[] armor = new ItemStack[4];
                for (int i = 0; i < 4; i++)
                    armor[i] = event.player.getCurrentArmor(i);
                map.put(event.player, armor);
            }

            if (event.player.getCurrentArmor(1) != null && event.player.getCurrentArmor(1).getItem() == MyMod.set2Leg){
                float f = 1.4F;
                if (event.player.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getModifier(babySpeedBoostUUID) == null)
                    event.player.getEntityAttribute(SharedMonsterAttributes.movementSpeed).applyModifier(babySpeedBoostModifier);
            //    event.player.motionX *= (double)(-MathHelper.sin(event.player.rotationYaw / 180.0F *  (float)Math.PI) +  f);
                //event.player.motionZ *= (double)(MathHelper.cos(event.player.rotationYaw / 180.0F  * (float)Math.PI) + f);
            }

            break;
        default:
            break;
        }
    }

    public boolean isReady(int time, int mod) {
        return true; // всегда готово
    }

    private static final UUID babySpeedBoostUUID = UUID.fromString("91AEAA56-376B-0000-935B-2F7F68070635");
    private static final AttributeModifier babySpeedBoostModifier = new AttributeModifier(babySpeedBoostUUID, "Baby speed boost", 0.6D, 2);
    
    private void checkArmor(int i, EntityPlayer player, ItemStack currentArmor, ItemStack oldArmor) {
        if (i == 2 && currentArmor != null && currentArmor.getItem() == MyMod.set2Body && oldArmor == null){
            System.out.println(i + " Надел");
            player.capabilities.allowFlying = true;
        }

        if (i == 2 && currentArmor == null && oldArmor != null && oldArmor.getItem() == MyMod.set2Body){
            System.out.println(i + " Снял");
            player.capabilities.allowFlying = false;
            player.capabilities.isFlying = false;
        }

        if (i == 1 && currentArmor != null && currentArmor.getItem() == MyMod.set2Leg && oldArmor == null){
            System.out.println(i + " Надел");
        //    if (player.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getModifier(babySpeedBoostUUID) == null){
            //    player.getEntityAttribute(SharedMonsterAttributes.movementSpeed).applyModifier(babySpeedBoostModifier);
        }


        if (i == 1 && currentArmor == null && oldArmor != null && oldArmor.getItem() == MyMod.set2Leg){
            System.out.println(i + " Снял");
            if (player.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getModifier(babySpeedBoostUUID) != null){
                player.getEntityAttribute(SharedMonsterAttributes.movementSpeed).removeModifier(babySpeedBoostModifier);
            }
        }
        

    }
 
682
20
319
Судя по твоему коду, оно и не будет убераться, ты изменяешь атрибут игроку если на нем есть сет брони, а если нету сета ничего не происходит, а должен убераться атрибут
 
Сверху