Доброго времени суток, подскажите, в чем моя ошибка? при снятии брони не убирается модификатор, т.е. я накладываю скорость на броню, а при снятии она не убирается.
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);
}
}
}