package net.minecraft.entity.ai.attributes; import com.google.common.collect.HashMultimap; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import java.util.Collection; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import net.minecraft.server.management.LowerStringMap; public abstract class BaseAttributeMap { protected final Map attributes = Maps.newHashMap(); protected final Map attributesByName = new LowerStringMap(); protected final Multimap field_180377_c = HashMultimap.create(); private static final String __OBFID = "CL_00001566"; public IAttributeInstance getAttributeInstance(IAttribute p_111151_1_) { return (IAttributeInstance)this.attributes.get(p_111151_1_); } public IAttributeInstance getAttributeInstanceByName(String p_111152_1_) { return (IAttributeInstance)this.attributesByName.get(p_111152_1_); } /** * Registers an attribute with this AttributeMap, returns a modifiable AttributeInstance associated with this map */ public IAttributeInstance registerAttribute(IAttribute p_111150_1_) { if (this.attributesByName.containsKey(p_111150_1_.getAttributeUnlocalizedName())) { throw new IllegalArgumentException("Attribute is already registered!"); } else { IAttributeInstance var2 = this.func_180376_c(p_111150_1_); this.attributesByName.put(p_111150_1_.getAttributeUnlocalizedName(), var2); this.attributes.put(p_111150_1_, var2); for (IAttribute var3 = p_111150_1_.func_180372_d(); var3 != null; var3 = var3.func_180372_d()) { this.field_180377_c.put(var3, p_111150_1_); } return var2; } } protected abstract IAttributeInstance func_180376_c(IAttribute p_180376_1_); public Collection getAllAttributes() { return this.attributesByName.values(); } public void func_180794_a(IAttributeInstance p_180794_1_) {} public void removeAttributeModifiers(Multimap p_111148_1_) { Iterator var2 = p_111148_1_.entries().iterator(); while (var2.hasNext()) { Entry var3 = (Entry)var2.next(); IAttributeInstance var4 = this.getAttributeInstanceByName((String)var3.getKey()); if (var4 != null) { var4.removeModifier((AttributeModifier)var3.getValue()); } } } public void applyAttributeModifiers(Multimap p_111147_1_) { Iterator var2 = p_111147_1_.entries().iterator(); while (var2.hasNext()) { Entry var3 = (Entry)var2.next(); IAttributeInstance var4 = this.getAttributeInstanceByName((String)var3.getKey()); if (var4 != null) { var4.removeModifier((AttributeModifier)var3.getValue()); var4.applyModifier((AttributeModifier)var3.getValue()); } } } }