package net.minecraft.entity.ai.attributes;
import com.google.common.collect.Sets;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import net.minecraft.server.management.LowerStringMap;
public class ServersideAttributeMap extends BaseAttributeMap
{
private final Set attributeInstanceSet = Sets.newHashSet();
protected final Map descriptionToAttributeInstanceMap = new LowerStringMap();
private static final String __OBFID = "CL_00001569";
public ModifiableAttributeInstance getAttributeInstance(IAttribute p_111151_1_)
{
return (ModifiableAttributeInstance)super.getAttributeInstance(p_111151_1_);
}
public ModifiableAttributeInstance getAttributeInstanceByName(String p_111152_1_)
{
IAttributeInstance iattributeinstance = super.getAttributeInstanceByName(p_111152_1_);
if (iattributeinstance == null)
{
iattributeinstance = (IAttributeInstance)this.descriptionToAttributeInstanceMap.get(p_111152_1_);
}
return (ModifiableAttributeInstance)iattributeinstance;
}
/**
* 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
{
ModifiableAttributeInstance modifiableattributeinstance = new ModifiableAttributeInstance(this, p_111150_1_);
this.attributesByName.put(p_111150_1_.getAttributeUnlocalizedName(), modifiableattributeinstance);
if (p_111150_1_ instanceof RangedAttribute && ((RangedAttribute)p_111150_1_).getDescription() != null)
{
this.descriptionToAttributeInstanceMap.put(((RangedAttribute)p_111150_1_).getDescription(), modifiableattributeinstance);
}
this.attributes.put(p_111150_1_, modifiableattributeinstance);
return modifiableattributeinstance;
}
}
public void addAttributeInstance(ModifiableAttributeInstance p_111149_1_)
{
if (p_111149_1_.getAttribute().getShouldWatch())
{
this.attributeInstanceSet.add(p_111149_1_);
}
}
public Set getAttributeInstanceSet()
{
return this.attributeInstanceSet;
}
public Collection getWatchedAttributes()
{
HashSet hashset = Sets.newHashSet();
Iterator iterator = this.getAllAttributes().iterator();
while (iterator.hasNext())
{
IAttributeInstance iattributeinstance = (IAttributeInstance)iterator.next();
if (iattributeinstance.getAttribute().getShouldWatch())
{
hashset.add(iattributeinstance);
}
}
return hashset;
}
}