// Path: src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/NativeInterfaces.java
// public final class NativeInterfaces {
// 	public static final NmsControllerJump CONTROLLERJUMP = new NmsControllerJump();
// 	public static final NmsControllerLook CONTROLLERLOOK = new NmsControllerLook();
// 	public static final NmsEntity ENTITY = new NmsEntity();
// 	public static final CBInterfaceJavaPluginLoader JAVAPLUGINLOADER = new CBInterfaceJavaPluginLoader();
// 	public static final NmsNavigation NAVIGATION = new NmsNavigation();
// 	public static final NmsInterfacePathfinderGoal PATHFINDERGOAL = new NmsInterfacePathfinderGoal();
// 	public static final NmsPathfinderGoalSelector PATHFINDERGOALSELECTOR = new NmsPathfinderGoalSelector();
// 	public static final NmsPathfinderGoalSelectorItem PATHFINDERGOALSELECTORITEM = new NmsPathfinderGoalSelectorItem();
// 	public static final CBInterfacePluginClassLoader PLUGINCLASSLOADER = new CBInterfacePluginClassLoader();
// 	public static final NmsWorld WORLD = new NmsWorld();
// 	public static final NmsIAttribute IATTRIBUTE = new NmsIAttribute();
// 	public static final NmsAttributeRanged ATTRIBUTERANGED = new NmsAttributeRanged();
// 	public static final NmsAttributeModifiable ATTRIBUTEMODIFIABLE = new NmsAttributeModifiable();
// 	public static final NmsAttributeModifier ATTRIBUTEMODIFIER = new NmsAttributeModifier();
// 	public static final NmsGenericAttributes GENERICATTRIBUTES = new NmsGenericAttributes();
// 	public static final NmsEntityInsentient ENTITYINSENTIENT = new NmsEntityInsentient();
// 	public static final NmsEntityTypes ENTITYTYPES = new NmsEntityTypes();
// 	
// 	private NativeInterfaces() {
// 		throw new AssertionError();
// 	}
// 
// }


import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import de.ntcomputer.minecraft.controllablemobs.api.attributes.Attribute;
import de.ntcomputer.minecraft.controllablemobs.api.attributes.AttributeModifier;
import de.ntcomputer.minecraft.controllablemobs.api.attributes.ModifyOperation;
import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.NativeInterfaces;

package de.ntcomputer.minecraft.controllablemobs.implementation.attributes;




public class CraftAttributeModifier implements AttributeModifier {
	private final UUID uniqueID; 
	private final String name;
	private final double value;
	private final ModifyOperation operation;
	private net.minecraft.server.v1_7_R1.AttributeModifier nativeModifier = null;
	private final Set<CraftAttribute> attachedAttributes = new HashSet<CraftAttribute>();
	private final boolean custom;
	
	public CraftAttributeModifier(UUID uniqueID, String name, double modifierValue, ModifyOperation operation) {
		this.uniqueID = uniqueID;
		this.name = name;
		this.value = modifierValue;
		this.operation = operation;
		this.custom = true;
	}
	
	public CraftAttributeModifier(UUID uuid, net.minecraft.server.v1_7_R1.AttributeModifier nativeModifier) {
		this.uniqueID = uuid;
		this.nativeModifier = nativeModifier;

// Path: src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/NativeInterfaces.java
// public final class NativeInterfaces {
// 	public static final NmsControllerJump CONTROLLERJUMP = new NmsControllerJump();
// 	public static final NmsControllerLook CONTROLLERLOOK = new NmsControllerLook();
// 	public static final NmsEntity ENTITY = new NmsEntity();
// 	public static final CBInterfaceJavaPluginLoader JAVAPLUGINLOADER = new CBInterfaceJavaPluginLoader();
// 	public static final NmsNavigation NAVIGATION = new NmsNavigation();
// 	public static final NmsInterfacePathfinderGoal PATHFINDERGOAL = new NmsInterfacePathfinderGoal();
// 	public static final NmsPathfinderGoalSelector PATHFINDERGOALSELECTOR = new NmsPathfinderGoalSelector();
// 	public static final NmsPathfinderGoalSelectorItem PATHFINDERGOALSELECTORITEM = new NmsPathfinderGoalSelectorItem();
// 	public static final CBInterfacePluginClassLoader PLUGINCLASSLOADER = new CBInterfacePluginClassLoader();
// 	public static final NmsWorld WORLD = new NmsWorld();
// 	public static final NmsIAttribute IATTRIBUTE = new NmsIAttribute();
// 	public static final NmsAttributeRanged ATTRIBUTERANGED = new NmsAttributeRanged();
// 	public static final NmsAttributeModifiable ATTRIBUTEMODIFIABLE = new NmsAttributeModifiable();
// 	public static final NmsAttributeModifier ATTRIBUTEMODIFIER = new NmsAttributeModifier();
// 	public static final NmsGenericAttributes GENERICATTRIBUTES = new NmsGenericAttributes();
// 	public static final NmsEntityInsentient ENTITYINSENTIENT = new NmsEntityInsentient();
// 	public static final NmsEntityTypes ENTITYTYPES = new NmsEntityTypes();
// 	
// 	private NativeInterfaces() {
// 		throw new AssertionError();
// 	}
// 
// }


// Path: src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttributeModifier.java
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import de.ntcomputer.minecraft.controllablemobs.api.attributes.Attribute;
import de.ntcomputer.minecraft.controllablemobs.api.attributes.AttributeModifier;
import de.ntcomputer.minecraft.controllablemobs.api.attributes.ModifyOperation;
import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.NativeInterfaces;

package de.ntcomputer.minecraft.controllablemobs.implementation.attributes;




public class CraftAttributeModifier implements AttributeModifier {
	private final UUID uniqueID; 
	private final String name;
	private final double value;
	private final ModifyOperation operation;
	private net.minecraft.server.v1_7_R1.AttributeModifier nativeModifier = null;
	private final Set<CraftAttribute> attachedAttributes = new HashSet<CraftAttribute>();
	private final boolean custom;
	
	public CraftAttributeModifier(UUID uniqueID, String name, double modifierValue, ModifyOperation operation) {
		this.uniqueID = uniqueID;
		this.name = name;
		this.value = modifierValue;
		this.operation = operation;
		this.custom = true;
	}
	
	public CraftAttributeModifier(UUID uuid, net.minecraft.server.v1_7_R1.AttributeModifier nativeModifier) {
		this.uniqueID = uuid;
		this.nativeModifier = nativeModifier;

		this.name = NativeInterfaces.ATTRIBUTEMODIFIER.METHOD_GETNAME.invoke(nativeModifier);
