diff options
Diffstat (limited to 'src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java')
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java new file mode 100644 index 00000000..1ed4aa94 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/attribute/CraftAttributeInstance.java @@ -0,0 +1,70 @@ +package org.bukkit.craftbukkit.attribute; + +import com.google.common.base.Preconditions; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeInstance; +import org.bukkit.attribute.AttributeModifier; + +public class CraftAttributeInstance implements AttributeInstance { + + private final net.minecraft.server.AttributeInstance handle; + private final Attribute attribute; + + public CraftAttributeInstance(net.minecraft.server.AttributeInstance handle, Attribute attribute) { + this.handle = handle; + this.attribute = attribute; + } + + @Override + public Attribute getAttribute() { + return attribute; + } + + @Override + public double getBaseValue() { + return handle.b(); + } + + @Override + public void setBaseValue(double d) { + handle.setValue(d); + } + + @Override + public Collection<AttributeModifier> getModifiers() { + List<AttributeModifier> result = new ArrayList<AttributeModifier>(); + for (net.minecraft.server.AttributeModifier nms : handle.c()) { + result.add(convert(nms)); + } + + return result; + } + + @Override + public void addModifier(AttributeModifier modifier) { + Preconditions.checkArgument(modifier != null, "modifier"); + handle.b(convert(modifier)); + } + + @Override + public void removeModifier(AttributeModifier modifier) { + Preconditions.checkArgument(modifier != null, "modifier"); + handle.c(convert(modifier)); + } + + @Override + public double getValue() { + return handle.getValue(); + } + + private static net.minecraft.server.AttributeModifier convert(AttributeModifier bukkit) { + return new net.minecraft.server.AttributeModifier(bukkit.getUniqueId(), bukkit.getName(), bukkit.getAmount(), bukkit.getOperation().ordinal()); + } + + private static AttributeModifier convert(net.minecraft.server.AttributeModifier nms) { + return new AttributeModifier(nms.a(), nms.b(), nms.d(), AttributeModifier.Operation.values()[nms.c()]); + } +} |