More proper fix for #1019

This commit is contained in:
Nicholas Ignoffo 2017-02-13 19:35:14 -08:00
parent 5bf5fd570d
commit 2ee2cc5ee6
7 changed files with 17 additions and 32 deletions

View file

@ -81,7 +81,6 @@ public class LivingArmour implements ILivingArmour
{
HashMultimap<String, AttributeModifier> modifierMap = HashMultimap.create();
int count = 0;
for (Entry<String, LivingArmourUpgrade> entry : upgradeMap.entrySet())
{
LivingArmourUpgrade upgrade = entry.getValue();
@ -90,35 +89,12 @@ public class LivingArmour implements ILivingArmour
continue;
}
Multimap<String, AttributeModifier> upgradeModifiers = upgrade.getAttributeModifiers();
for (String key : upgradeModifiers.keySet())
{
if (modifierMap.containsKey(key))
{
Collection<AttributeModifier> renamed = renameModifiers(upgradeModifiers.get(key), count);
modifierMap.get(key).addAll(renamed);
count += renamed.size();
} else
modifierMap.putAll(upgradeModifiers);
}
modifierMap.putAll(upgrade.getAttributeModifiers());
}
return modifierMap;
}
private static Set<AttributeModifier> renameModifiers(Collection<AttributeModifier> modifiers, int count)
{
Set<AttributeModifier> newModifiers = new HashSet<AttributeModifier>();
for (AttributeModifier modifier : modifiers)
{
String newName = modifier.getName().substring(0, modifier.getName().length() - 1) + count;
newModifiers.add(new AttributeModifier(UUID.nameUUIDFromBytes(new byte[] {(byte)count}), newName, modifier.getAmount(), modifier.getOperation()));
count++;
}
return newModifiers;
}
@Override
public boolean upgradeArmour(EntityPlayer user, LivingArmourUpgrade upgrade)
{

View file

@ -36,7 +36,7 @@ public class LivingArmourUpgradeMeleeDecrease extends LivingArmourUpgrade
{
Multimap<String, AttributeModifier> modifierMap = HashMultimap.<String, AttributeModifier>create();
modifierMap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(new UUID(0271023, 5321), "damage modifier" + 2, meleeDamage[this.level], 1));
modifierMap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(new UUID(0271023, 5321), getUniqueIdentifier() + "-DamageModifier" + 2, meleeDamage[this.level], 1));
return modifierMap;
}

View file

@ -29,7 +29,7 @@ public class LivingArmourUpgradeSlowness extends LivingArmourUpgrade
{
Multimap<String, AttributeModifier> modifierMap = HashMultimap.<String, AttributeModifier>create();
modifierMap.put(SharedMonsterAttributes.MOVEMENT_SPEED.getName(), new AttributeModifier(new UUID(85472, 8502), "speed modifier" + 2, speedModifier[this.level], 1));
modifierMap.put(SharedMonsterAttributes.MOVEMENT_SPEED.getName(), new AttributeModifier(new UUID(85472, 8502), getUniqueIdentifier() + "-SpeedModifier" + 1, speedModifier[this.level], 1));
return modifierMap;
}

View file

@ -10,6 +10,7 @@ import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import org.apache.commons.codec.binary.StringUtils;
import java.util.UUID;
@ -34,7 +35,8 @@ public class LivingArmourUpgradeHealthboost extends LivingArmourUpgrade
{
Multimap<String, AttributeModifier> modifierMap = HashMultimap.<String, AttributeModifier>create();
modifierMap.put(SharedMonsterAttributes.MAX_HEALTH.getName(), new AttributeModifier(new UUID(9423688, 1), "Health modifier" + 1, healthModifier[this.level], 0));
String name = getUniqueIdentifier() + "-HealthModifier1";
modifierMap.put(SharedMonsterAttributes.MAX_HEALTH.getName(), new AttributeModifier(UUID.nameUUIDFromBytes(StringUtils.getBytesUtf8(name)), "HealthModifier1", healthModifier[this.level], 0));
return modifierMap;
}

View file

@ -7,6 +7,7 @@ import com.google.common.collect.Multimap;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.nbt.NBTTagCompound;
import org.apache.commons.codec.binary.StringUtils;
import java.util.UUID;
@ -26,11 +27,13 @@ public class LivingArmourUpgradeKnockbackResist extends LivingArmourUpgrade
{
Multimap<String, AttributeModifier> modifierMap = HashMultimap.<String, AttributeModifier>create();
modifierMap.put(SharedMonsterAttributes.KNOCKBACK_RESISTANCE.getName(), new AttributeModifier(new UUID(895132, 1), "Knockback modifier" + 1, kbModifier[this.level], 0));
String name = getUniqueIdentifier() + "-KnockbackModifier1";
modifierMap.put(SharedMonsterAttributes.KNOCKBACK_RESISTANCE.getName(), new AttributeModifier(UUID.nameUUIDFromBytes(StringUtils.getBytesUtf8(name)), "KnockbackModifier1", kbModifier[this.level], 0));
if (healthModifier[this.level] > 0)
{
modifierMap.put(SharedMonsterAttributes.MAX_HEALTH.getName(), new AttributeModifier(new UUID(952142, 1), "Health modifier" + 1, healthModifier[this.level], 0));
name = getUniqueIdentifier() + "-HealthModifier1";
modifierMap.put(SharedMonsterAttributes.MAX_HEALTH.getName(), new AttributeModifier(UUID.nameUUIDFromBytes(StringUtils.getBytesUtf8(name)), "HealthModifier1", healthModifier[this.level], 0));
}
return modifierMap;

View file

@ -10,6 +10,7 @@ import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import org.apache.commons.codec.binary.StringUtils;
import java.util.UUID;
@ -34,7 +35,8 @@ public class LivingArmourUpgradeMeleeDamage extends LivingArmourUpgrade
{
Multimap<String, AttributeModifier> modifierMap = HashMultimap.<String, AttributeModifier>create();
modifierMap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(new UUID(9423688, 1), "damage modifier" + 1, meleeDamage[this.level], 0));
String name = getUniqueIdentifier() + "-DamageModifier1";
modifierMap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(UUID.nameUUIDFromBytes(StringUtils.getBytesUtf8(name)), "DamageModifier1", meleeDamage[this.level], 0));
return modifierMap;
}

View file

@ -15,6 +15,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import org.apache.commons.codec.binary.StringUtils;
public class LivingArmourUpgradeSpeed extends LivingArmourUpgrade
{
@ -61,7 +62,8 @@ public class LivingArmourUpgradeSpeed extends LivingArmourUpgrade
if (healthModifier[this.level] > 0)
{
modifierMap.put(SharedMonsterAttributes.MAX_HEALTH.getName(), new AttributeModifier(new UUID(952142, 1), "Health modifier" + 1, healthModifier[this.level], 0));
String name = getUniqueIdentifier() + "-HealthModifier1";
modifierMap.put(SharedMonsterAttributes.MAX_HEALTH.getName(), new AttributeModifier(UUID.nameUUIDFromBytes(StringUtils.getBytesUtf8(name)), "HealthModifier1", healthModifier[this.level], 0));
}
return modifierMap;