diff --git a/.classpath b/.classpath deleted file mode 100644 index 1483c3b..0000000 --- a/.classpath +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.gitignore b/.gitignore index d8fa897..a2805ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,36 @@ -/media -/bin -/.externalToolBuilders +# Eclipse stuff +/.classpath +/.project /.settings -/archive + +# netbeans +/nbproject +/nbactions.xml +/nb-configuration.xml + +# we use maven! +/build.xml + +# maven /target +/dependency-reduced-pom.xml +*/target +*/dependency-reduced-pom.xml + +# vim +.*.sw[a-p] + +# various other potential build files +/build +/bin +/dist +/manifest.mf + +# Mac filesystem dust +/.DS_Store + +# intellij +*.iml +*.ipr +*.iws +.idea/ diff --git a/.project b/.project deleted file mode 100644 index 64ffda4..0000000 --- a/.project +++ /dev/null @@ -1,84 +0,0 @@ - - - Controllable Mobs API - - - libraries - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.ui.externaltools.ExternalToolBuilder - full,incremental, - - - LaunchConfigHandle - <project>/.externalToolBuilders/CMAPI Build snapshot jar.launch - - - - - org.eclipse.ui.externaltools.ExternalToolBuilder - full,incremental, - - - LaunchConfigHandle - <project>/.externalToolBuilders/CMAPI Build release jar.launch - - - - - org.eclipse.ui.externaltools.ExternalToolBuilder - full,incremental, - - - LaunchConfigHandle - <project>/.externalToolBuilders/CMAPI Build release javadoc.launch - - - - - org.eclipse.ui.externaltools.ExternalToolBuilder - full,incremental, - - - LaunchConfigHandle - <project>/.externalToolBuilders/CMAPI Debug Copyplugin.launch - - - - - org.eclipse.ui.externaltools.ExternalToolBuilder - full,incremental, - - - LaunchConfigHandle - <project>/.externalToolBuilders/CMAPI Debug Mafia CopyPlugin.launch - - - - - org.eclipse.ui.externaltools.ExternalToolBuilder - full,incremental, - - - LaunchConfigHandle - <project>/.externalToolBuilders/CMAPI Debug CopyPlugin To Test.launch - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.m2e.core.maven2Nature - org.eclipse.jdt.core.javanature - - diff --git a/pom.xml b/pom.xml index 27ca29b..2ff2737 100644 --- a/pom.xml +++ b/pom.xml @@ -122,13 +122,4 @@ - - - - internal.repo - Temporary Staging Repository - file://${project.build.directory}/mvn-repo - - - \ No newline at end of file diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AISwim.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AISwim.java index 7a6fb2d..bad2fda 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AISwim.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AISwim.java @@ -1,13 +1,11 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; +import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; +import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; import net.minecraft.server.v1_7_R1.PathfinderGoal; import net.minecraft.server.v1_7_R1.PathfinderGoalFloat; - import org.bukkit.entity.LivingEntity; -import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; -import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; - /** * Very important AIBehavior that lets the entity swim. * Must be added if the entity should not drown when it gets into the water. @@ -34,14 +32,13 @@ public AISwim(final int priority) { super(priority); } - @Override - public PathfinderGoal createPathfinderGoal(CraftControllableMob mob) { - return new PathfinderGoalFloat(mob.nmsEntity); - } - @Override public AIType getType() { return AIType.MOVE_SWIM; } + @Override + public PathfinderGoal createPathfinderGoal(CraftControllableMob mob) { + return new PathfinderGoalFloat(mob.nmsEntity); + } } diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetNearest.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetNearest.java index e791372..9100466 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetNearest.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetNearest.java @@ -109,7 +109,7 @@ public AITargetNearest(int priority, double maximumDistance, boolean ignoreInvul } @Override - public PathfinderGoal createPathfinderGoal(CraftControllableMob mob) { + public PathfinderGoal createPathfinderGoal(CraftControllableMob mob) { return new PathfinderGoalTargetNearest(mob, this.maximumNoEyeContactTicks, this.ignoreInvulnerability, this.maximumDistance, this.targetClasses, this.entitySelector); } diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAI.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAI.java index 6ad49aa..0926b4d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAI.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAI.java @@ -1,14 +1,13 @@ package de.ntcomputer.minecraft.controllablemobs.implementation; -import java.util.ArrayList; - -import org.bukkit.entity.LivingEntity; - import de.ntcomputer.minecraft.controllablemobs.api.ControllableMobAI; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIPart; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors.AIBehavior; import de.ntcomputer.minecraft.controllablemobs.implementation.ai.AIDispatcher; +import org.bukkit.entity.LivingEntity; + +import java.util.ArrayList; public class CraftControllableMobAI implements ControllableMobAI { private AIDispatcher dispatcher; @@ -67,7 +66,7 @@ public void reset() { public AIPart[] getParts() { ArrayList> parts = new ArrayList>(); this.dispatcher.get(parts,null); - return parts.toArray(new AIPart[0]); + return parts.toArray(new AIPart[parts.size()]); } @Override @@ -80,7 +79,7 @@ public boolean hasBehavior(AIType type) { public AIPart[] getPartsOf(AIType... types) { ArrayList> parts = new ArrayList>(); this.dispatcher.get(parts,types); - return parts.toArray(new AIPart[0]); + return parts.toArray(new AIPart[parts.size()]); } @Override diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIController.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIController.java index ecd2dc7..a3d05a7 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIController.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIController.java @@ -1,23 +1,5 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import net.minecraft.server.v1_7_R1.EntityInsentient; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalSelector; - -import org.bukkit.craftbukkit.v1_7_R1.util.UnsafeList; -import org.bukkit.entity.LivingEntity; - import de.ntcomputer.minecraft.controllablemobs.api.ai.AIState; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors.AIBehavior; @@ -26,9 +8,16 @@ import de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors.PathfinderGoalWrapper; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.NativeInterfaces; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldObject; +import net.minecraft.server.v1_7_R1.EntityInsentient; +import net.minecraft.server.v1_7_R1.PathfinderGoal; +import net.minecraft.server.v1_7_R1.PathfinderGoalSelector; +import org.bukkit.craftbukkit.v1_7_R1.util.UnsafeList; +import org.bukkit.entity.LivingEntity; + +import java.util.*; public abstract class AIController implements Comparator { - private List actionGoals; + private List actionGoals; private List> attachedParts; private List> defaultParts; private PathfinderGoalAIMonitor monitor; @@ -62,7 +51,7 @@ public AIController(CraftControllableMob mob, NativeFieldObject(); + this.actionGoals = new ArrayList(); this.createActionGoals(); this.monitor = new PathfinderGoalAIMonitor(this,activeDefaultGoals); this.addActionGoal(0, monitor); @@ -99,7 +88,7 @@ private void removeGoal(PathfinderGoal goal) { break; } } - ((UnsafeList.Itr) iterator).valid = false; + ((UnsafeList.Itr) iterator).valid = false; // remove item iterator = NativeInterfaces.PATHFINDERGOALSELECTOR.FIELD_GOALITEMS.get(this.selector).iterator(); @@ -110,7 +99,7 @@ private void removeGoal(PathfinderGoal goal) { break; } } - ((UnsafeList.Itr) iterator).valid = false; + ((UnsafeList.Itr) iterator).valid = false; } private void clearGoals() { @@ -125,7 +114,7 @@ private void clearGoals() { iterator.remove(); } } - ((UnsafeList.Itr) iterator).valid = false; + ((UnsafeList.Itr) iterator).valid = false; // remove all non-action items iterator = NativeInterfaces.PATHFINDERGOALSELECTOR.FIELD_GOALITEMS.get(this.selector).iterator(); @@ -133,7 +122,7 @@ private void clearGoals() { searchGoal = NativeInterfaces.PATHFINDERGOALSELECTORITEM.FIELD_GOAL.get(iterator.next()); if(!this.actionGoals.contains(searchGoal) ) iterator.remove(); } - ((UnsafeList.Itr) iterator).valid = false; + ((UnsafeList.Itr) iterator).valid = false; } private void sortGoals() { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIDispatcher.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIDispatcher.java index 452e35e..47ca3a4 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIDispatcher.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIDispatcher.java @@ -1,17 +1,16 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.bukkit.entity.LivingEntity; - import de.ntcomputer.minecraft.controllablemobs.api.ai.AIPart; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors.AIBehavior; import de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors.AITargetBehavior; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; +import org.bukkit.entity.LivingEntity; + +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; public class AIDispatcher { private AIController goalController; @@ -35,10 +34,8 @@ public void remove(AIType[] types, boolean remove) { } public boolean contains(AIType type) { - if(this.goalController.contains(type)) return true; - if(this.targetController.contains(type)) return true; - return false; - } + return this.goalController.contains(type) || this.targetController.contains(type); + } public boolean contains(AIType... types) { for(AIType type: types) { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionBase.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionBase.java index 061d4be..beb502f 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionBase.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionBase.java @@ -69,9 +69,9 @@ protected boolean canContinue() { @Override protected void onTick() { this.onTickAction(); - }; - - @Override + } + + @Override protected final void onEnd() { this.onEndAction(); if(this.action.getState()!=ActionState.BLOCKED) { @@ -94,8 +94,11 @@ protected boolean canStartAction() { return true; } protected abstract boolean canContinueAction(); - protected void onStartAction() {}; - protected void onTickAction() {}; - protected void onEndAction() {} + + protected void onStartAction() {} + + protected void onTickAction() {} + + protected void onEndAction() {} } diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetEx.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetEx.java index 6a3ea9c..38fbd26 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetEx.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetEx.java @@ -51,7 +51,7 @@ protected boolean target(EntityLiving target, EntityTargetEvent.TargetReason rea if(!assignable) return false; // invulnerability and invisibility check - if((!this.ignoreInvulnerability) && (target instanceof EntityHuman) && (((EntityHuman) target).abilities.isInvulnerable || ((EntityHuman) target).isInvisible())) return false; + if((!this.ignoreInvulnerability) && (target instanceof EntityHuman) && (((EntityHuman) target).abilities.isInvulnerable || target.isInvisible())) return false; // range check if(this.maximumDistanceSquared>0 && NativeInterfaces.ENTITY.METHOD_GETDISTANCETOENTITYSQUARED.invoke(this.entity,target)>this.maximumDistanceSquared) return false; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldDouble.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldDouble.java index 7ed0c88..09ed0cb 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldDouble.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldDouble.java @@ -2,7 +2,7 @@ import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeFieldPrivate; -public class NativeFieldDouble extends NativeFieldPrivate { +public class NativeFieldDouble extends NativeFieldPrivate { public NativeFieldDouble(final String fieldName) { super(fieldName); diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldInt.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldInt.java index 09625da..db705b7 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldInt.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldInt.java @@ -2,7 +2,7 @@ import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeFieldPrivate; -public class NativeFieldInt extends NativeFieldPrivate { +public class NativeFieldInt extends NativeFieldPrivate { public NativeFieldInt(final String fieldName) { super(fieldName); diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldObject.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldObject.java index f98c533..2f94ade 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldObject.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeFieldObject.java @@ -2,7 +2,7 @@ import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeFieldPrivate; -public class NativeFieldObject extends NativeFieldPrivate { +public class NativeFieldObject extends NativeFieldPrivate { public NativeFieldObject(final String fieldName) { super(fieldName); diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeStaticFieldObject.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeStaticFieldObject.java index 1f45417..8513cdf 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeStaticFieldObject.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/primitives/NativeStaticFieldObject.java @@ -2,7 +2,7 @@ import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeFieldPrivate; -public class NativeStaticFieldObject extends NativeFieldPrivate { +public class NativeStaticFieldObject extends NativeFieldPrivate { public NativeStaticFieldObject(final Class nativeClass, final String fieldName) { super(nativeClass, fieldName);