From 09b8ea0ae373840f41b5582e08e90af1040f4b96 Mon Sep 17 00:00:00 2001 From: RaynLegends Date: Mon, 11 May 2015 17:32:39 +0200 Subject: [PATCH 1/5] Updated to 1.7.10 (1_7_R4) --- pom.xml | 117 ++---------------- .../api/ControllableMobs.java | 23 +--- .../controllablemobs/api/ai/AIType.java | 88 ++++++------- .../api/ai/behaviors/AIAttackMelee.java | 6 +- .../api/ai/behaviors/AIAttackRanged.java | 6 +- .../api/ai/behaviors/AIBehavior.java | 2 +- .../api/ai/behaviors/AIDoorBreak.java | 4 +- .../api/ai/behaviors/AIDoorOpen.java | 4 +- .../api/ai/behaviors/AIFleeSun.java | 6 +- .../api/ai/behaviors/AILookAtEntity.java | 8 +- .../api/ai/behaviors/AIPlayerTrade.java | 6 +- .../api/ai/behaviors/AIPlayerTradingLook.java | 6 +- .../api/ai/behaviors/AIRandomLookaround.java | 4 +- .../api/ai/behaviors/AIRandomStroll.java | 6 +- .../api/ai/behaviors/AIRestrictSun.java | 6 +- .../api/ai/behaviors/AISwim.java | 4 +- .../api/ai/behaviors/AITargetBehaviorEx.java | 2 +- .../api/ai/behaviors/AITargetHurtBy.java | 6 +- .../api/ai/behaviors/AITargetNearest.java | 2 +- .../implementation/ControllableMobHelper.java | 18 +-- .../implementation/CraftControllableMob.java | 2 +- .../CraftControllableMobAttributes.java | 8 +- .../actions/ControllableMobActionDie.java | 4 +- .../actions/ControllableMobActionFollow.java | 4 +- .../actions/ControllableMobActionLook.java | 2 +- .../ControllableMobActionLookBlock.java | 4 +- .../ControllableMobActionLookEntity.java | 6 +- .../ControllableMobActionMoveAbstract.java | 4 +- .../actions/ControllableMobActionTarget.java | 4 +- .../ControllableMobActionTeleportEntity.java | 2 +- .../ai/AIComponentHandlers.java | 10 +- .../ai/AIComponentListener.java | 2 +- .../implementation/ai/AIController.java | 8 +- .../implementation/ai/CraftAIPart.java | 2 +- .../implementation/ai/EntitySelector.java | 4 +- .../ai/behaviors/PathfinderGoalAIMonitor.java | 2 +- .../behaviors/PathfinderGoalActionFollow.java | 2 +- .../PathfinderGoalActionMoveAbstract.java | 2 +- .../behaviors/PathfinderGoalActionTarget.java | 2 +- .../ai/behaviors/PathfinderGoalTargetEx.java | 12 +- .../PathfinderGoalTargetNearest.java | 6 +- .../ai/behaviors/PathfinderGoalWrapper.java | 2 +- .../attributes/CraftAttribute.java | 12 +- .../attributes/CraftAttributeModifier.java | 8 +- .../nativeinterfaces/NativeInterfaces.java | 2 - .../server/CBInterfacePluginClassLoader.java | 11 -- .../server/NmsAttributeModifiable.java | 8 +- .../server/NmsAttributeModifier.java | 2 +- .../server/NmsAttributeRanged.java | 2 +- .../server/NmsControllerJump.java | 2 +- .../server/NmsControllerLook.java | 2 +- .../nativeinterfaces/server/NmsEntity.java | 2 +- .../server/NmsEntityInsentient.java | 4 +- .../server/NmsEntityTypes.java | 4 +- .../server/NmsGenericAttributes.java | 6 +- .../server/NmsIAttribute.java | 4 +- .../server/NmsInterfacePathfinderGoal.java | 2 +- .../server/NmsNavigation.java | 6 +- .../server/NmsPathfinderGoalSelector.java | 6 +- .../server/NmsPathfinderGoalSelectorItem.java | 2 +- .../nativeinterfaces/server/NmsWorld.java | 8 +- 61 files changed, 195 insertions(+), 316 deletions(-) delete mode 100644 src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/CBInterfacePluginClassLoader.java diff --git a/pom.xml b/pom.xml index 27ca29b..fc0bfdf 100644 --- a/pom.xml +++ b/pom.xml @@ -1,134 +1,43 @@ + 4.0.0 + de.ntcomputer controllable-mobs-api - 1.7.2.6-snapshot - Controllable Mobs API - http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/ + 0.0.1-SNAPSHOT + jar - 1.6 - 1.6 UTF-8 - 1.7.2 - 1_7_R1 - github - - - repobo-snap - http://repo.bukkit.org/content/groups/public - - - - - - org.bukkit - craftbukkit - 1.7.2-R0.2 - provided - - - + clean install - src/main/resources + . true + ${basedir}/src/main/resources + + *.yml + - - org.apache.maven.plugins - maven-jar-plugin + maven-shade-plugin 2.1 - - - - Controllable-Mobs-API - ${project.version} - DevCybran - false - - - - - - - com.github.github - site-maven-plugin - 0.8 - - Maven artifacts for ${project.version} - true - ${project.build.directory}/mvn-repo - refs/heads/mvn-repo - - **/* - - Controllable-Mobs-API - DevCybran - + package - site + shade - deploy - - - maven-deploy-plugin - 2.7 - - internal.repo::default::file://${project.build.directory}/mvn-repo - - - - - maven-compiler-plugin - 3.0 - - 1.6 - 1.6 - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - de.ntcomputer.minecraft.controllablemobs.implementation;de.ntcomputer.minecraft.controllablemobs.plugin - - http://jd.bukkit.org/apidocs/ - - - - - attach-javadocs - - jar - - - - - - - - - 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/ControllableMobs.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ControllableMobs.java index d55f8b7..c36f34f 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ControllableMobs.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ControllableMobs.java @@ -4,16 +4,13 @@ import java.util.Map; import java.util.logging.Logger; -import net.minecraft.server.v1_7_R1.EntityInsentient; -import net.minecraft.server.v1_7_R1.EntityLiving; +import net.minecraft.server.v1_7_R4.EntityInsentient; +import net.minecraft.server.v1_7_R4.EntityLiving; -import org.bukkit.craftbukkit.v1_7_R1.entity.CraftLivingEntity; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity; import org.bukkit.entity.LivingEntity; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.java.PluginClassLoader; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; -import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.NativeInterfaces; /** * This is a static class which lets you retrieve instances of {@link ControllableMob}. @@ -30,20 +27,6 @@ public final class ControllableMobs { } private static void onLoad() { - try { - PluginClassLoader cl = (PluginClassLoader) ControllableMobs.class.getClassLoader(); - Plugin[] plugins = NativeInterfaces.JAVAPLUGINLOADER.FIELD_SERVER.get(NativeInterfaces.PLUGINCLASSLOADER.FIELD_LOADER.get(cl)).getPluginManager().getPlugins(); - for(Plugin plugin: plugins) { - if(plugin.getClass().getClassLoader()==cl) { - if(plugin.getName().equals("ControllableMobsAPI")) { - plugin.getLogger().info("initialized API plugin"); - } else { - plugin.getLogger().info("initialized Controllable Mobs API library"); - } - return; - } - } - } catch(Throwable t) {} Logger.getLogger("Minecraft").info("[ControllableMobsAPI] initialized by an unknown component"); } diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/AIType.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/AIType.java index e33d9d3..8f2627a 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/AIType.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/AIType.java @@ -3,50 +3,50 @@ import java.util.HashMap; import java.util.Map; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalArrowAttack; -import net.minecraft.server.v1_7_R1.PathfinderGoalAvoidPlayer; -import net.minecraft.server.v1_7_R1.PathfinderGoalBeg; -import net.minecraft.server.v1_7_R1.PathfinderGoalBreakDoor; -import net.minecraft.server.v1_7_R1.PathfinderGoalBreed; -import net.minecraft.server.v1_7_R1.PathfinderGoalDefendVillage; -import net.minecraft.server.v1_7_R1.PathfinderGoalEatTile; -import net.minecraft.server.v1_7_R1.PathfinderGoalFleeSun; -import net.minecraft.server.v1_7_R1.PathfinderGoalFloat; -import net.minecraft.server.v1_7_R1.PathfinderGoalFollowOwner; -import net.minecraft.server.v1_7_R1.PathfinderGoalFollowParent; -import net.minecraft.server.v1_7_R1.PathfinderGoalHurtByTarget; -import net.minecraft.server.v1_7_R1.PathfinderGoalInteract; -import net.minecraft.server.v1_7_R1.PathfinderGoalJumpOnBlock; -import net.minecraft.server.v1_7_R1.PathfinderGoalLeapAtTarget; -import net.minecraft.server.v1_7_R1.PathfinderGoalLookAtPlayer; -import net.minecraft.server.v1_7_R1.PathfinderGoalLookAtTradingPlayer; -import net.minecraft.server.v1_7_R1.PathfinderGoalMakeLove; -import net.minecraft.server.v1_7_R1.PathfinderGoalMeleeAttack; -import net.minecraft.server.v1_7_R1.PathfinderGoalMoveIndoors; -import net.minecraft.server.v1_7_R1.PathfinderGoalMoveThroughVillage; -import net.minecraft.server.v1_7_R1.PathfinderGoalMoveTowardsRestriction; -import net.minecraft.server.v1_7_R1.PathfinderGoalMoveTowardsTarget; -import net.minecraft.server.v1_7_R1.PathfinderGoalNearestAttackableTarget; -import net.minecraft.server.v1_7_R1.PathfinderGoalOcelotAttack; -import net.minecraft.server.v1_7_R1.PathfinderGoalOfferFlower; -import net.minecraft.server.v1_7_R1.PathfinderGoalOpenDoor; -import net.minecraft.server.v1_7_R1.PathfinderGoalOwnerHurtByTarget; -import net.minecraft.server.v1_7_R1.PathfinderGoalOwnerHurtTarget; -import net.minecraft.server.v1_7_R1.PathfinderGoalPanic; -import net.minecraft.server.v1_7_R1.PathfinderGoalPassengerCarrotStick; -import net.minecraft.server.v1_7_R1.PathfinderGoalPlay; -import net.minecraft.server.v1_7_R1.PathfinderGoalRandomLookaround; -import net.minecraft.server.v1_7_R1.PathfinderGoalRandomStroll; -import net.minecraft.server.v1_7_R1.PathfinderGoalRandomTargetNonTamed; -import net.minecraft.server.v1_7_R1.PathfinderGoalRestrictOpenDoor; -import net.minecraft.server.v1_7_R1.PathfinderGoalRestrictSun; -import net.minecraft.server.v1_7_R1.PathfinderGoalSit; -import net.minecraft.server.v1_7_R1.PathfinderGoalSwell; -import net.minecraft.server.v1_7_R1.PathfinderGoalTakeFlower; -import net.minecraft.server.v1_7_R1.PathfinderGoalTame; -import net.minecraft.server.v1_7_R1.PathfinderGoalTempt; -import net.minecraft.server.v1_7_R1.PathfinderGoalTradeWithPlayer; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalArrowAttack; +import net.minecraft.server.v1_7_R4.PathfinderGoalAvoidPlayer; +import net.minecraft.server.v1_7_R4.PathfinderGoalBeg; +import net.minecraft.server.v1_7_R4.PathfinderGoalBreakDoor; +import net.minecraft.server.v1_7_R4.PathfinderGoalBreed; +import net.minecraft.server.v1_7_R4.PathfinderGoalDefendVillage; +import net.minecraft.server.v1_7_R4.PathfinderGoalEatTile; +import net.minecraft.server.v1_7_R4.PathfinderGoalFleeSun; +import net.minecraft.server.v1_7_R4.PathfinderGoalFloat; +import net.minecraft.server.v1_7_R4.PathfinderGoalFollowOwner; +import net.minecraft.server.v1_7_R4.PathfinderGoalFollowParent; +import net.minecraft.server.v1_7_R4.PathfinderGoalHurtByTarget; +import net.minecraft.server.v1_7_R4.PathfinderGoalInteract; +import net.minecraft.server.v1_7_R4.PathfinderGoalJumpOnBlock; +import net.minecraft.server.v1_7_R4.PathfinderGoalLeapAtTarget; +import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtPlayer; +import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtTradingPlayer; +import net.minecraft.server.v1_7_R4.PathfinderGoalMakeLove; +import net.minecraft.server.v1_7_R4.PathfinderGoalMeleeAttack; +import net.minecraft.server.v1_7_R4.PathfinderGoalMoveIndoors; +import net.minecraft.server.v1_7_R4.PathfinderGoalMoveThroughVillage; +import net.minecraft.server.v1_7_R4.PathfinderGoalMoveTowardsRestriction; +import net.minecraft.server.v1_7_R4.PathfinderGoalMoveTowardsTarget; +import net.minecraft.server.v1_7_R4.PathfinderGoalNearestAttackableTarget; +import net.minecraft.server.v1_7_R4.PathfinderGoalOcelotAttack; +import net.minecraft.server.v1_7_R4.PathfinderGoalOfferFlower; +import net.minecraft.server.v1_7_R4.PathfinderGoalOpenDoor; +import net.minecraft.server.v1_7_R4.PathfinderGoalOwnerHurtByTarget; +import net.minecraft.server.v1_7_R4.PathfinderGoalOwnerHurtTarget; +import net.minecraft.server.v1_7_R4.PathfinderGoalPanic; +import net.minecraft.server.v1_7_R4.PathfinderGoalPassengerCarrotStick; +import net.minecraft.server.v1_7_R4.PathfinderGoalPlay; +import net.minecraft.server.v1_7_R4.PathfinderGoalRandomLookaround; +import net.minecraft.server.v1_7_R4.PathfinderGoalRandomStroll; +import net.minecraft.server.v1_7_R4.PathfinderGoalRandomTargetNonTamed; +import net.minecraft.server.v1_7_R4.PathfinderGoalRestrictOpenDoor; +import net.minecraft.server.v1_7_R4.PathfinderGoalRestrictSun; +import net.minecraft.server.v1_7_R4.PathfinderGoalSit; +import net.minecraft.server.v1_7_R4.PathfinderGoalSwell; +import net.minecraft.server.v1_7_R4.PathfinderGoalTakeFlower; +import net.minecraft.server.v1_7_R4.PathfinderGoalTame; +import net.minecraft.server.v1_7_R4.PathfinderGoalTempt; +import net.minecraft.server.v1_7_R4.PathfinderGoalTradeWithPlayer; /** * An enum that lists all AI components built into the minecraft server core.
diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackMelee.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackMelee.java index e3834e6..ba8cd3f 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackMelee.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackMelee.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.EntityCreature; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalMeleeAttack; +import net.minecraft.server.v1_7_R4.EntityCreature; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalMeleeAttack; import org.bukkit.entity.Creature; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackRanged.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackRanged.java index 89e7e22..4e0bca5 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackRanged.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackRanged.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.IRangedEntity; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalArrowAttack; +import net.minecraft.server.v1_7_R4.IRangedEntity; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalArrowAttack; import org.bukkit.entity.Creature; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIBehavior.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIBehavior.java index 09a3f3f..f5bef1b 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIBehavior.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIBehavior.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoal; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorBreak.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorBreak.java index eb3560c..b3f61e0 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorBreak.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorBreak.java @@ -1,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalBreakDoor; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalBreakDoor; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorOpen.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorOpen.java index 58d0e71..7f7bbe3 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorOpen.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorOpen.java @@ -1,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalOpenDoor; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalOpenDoor; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIFleeSun.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIFleeSun.java index e3e26ae..ccfa15d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIFleeSun.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIFleeSun.java @@ -2,9 +2,9 @@ import org.bukkit.entity.Creature; -import net.minecraft.server.v1_7_R1.EntityCreature; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalFleeSun; +import net.minecraft.server.v1_7_R4.EntityCreature; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalFleeSun; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AILookAtEntity.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AILookAtEntity.java index 448badb..55c0bf8 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AILookAtEntity.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AILookAtEntity.java @@ -1,9 +1,9 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.Entity; -import net.minecraft.server.v1_7_R1.EntityHuman; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalLookAtPlayer; +import net.minecraft.server.v1_7_R4.Entity; +import net.minecraft.server.v1_7_R4.EntityHuman; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtPlayer; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTrade.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTrade.java index 617f02d..e7b7bf1 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTrade.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTrade.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.EntityVillager; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalTradeWithPlayer; +import net.minecraft.server.v1_7_R4.EntityVillager; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalTradeWithPlayer; import org.bukkit.entity.Villager; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTradingLook.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTradingLook.java index e2e569b..1bf645f 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTradingLook.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTradingLook.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.EntityVillager; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalLookAtTradingPlayer; +import net.minecraft.server.v1_7_R4.EntityVillager; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtTradingPlayer; import org.bukkit.entity.Villager; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomLookaround.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomLookaround.java index 4da5624..e938cc6 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomLookaround.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomLookaround.java @@ -2,8 +2,8 @@ import org.bukkit.entity.LivingEntity; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalRandomLookaround; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalRandomLookaround; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomStroll.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomStroll.java index 9574af2..300ea37 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomStroll.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomStroll.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.EntityCreature; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalRandomStroll; +import net.minecraft.server.v1_7_R4.EntityCreature; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalRandomStroll; import org.bukkit.entity.Creature; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRestrictSun.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRestrictSun.java index bb63d42..d0164df 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRestrictSun.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRestrictSun.java @@ -2,9 +2,9 @@ import org.bukkit.entity.Creature; -import net.minecraft.server.v1_7_R1.EntityCreature; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalRestrictSun; +import net.minecraft.server.v1_7_R4.EntityCreature; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalRestrictSun; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; 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..544960c 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,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalFloat; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalFloat; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetBehaviorEx.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetBehaviorEx.java index 787ddc7..87dd3f0 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetBehaviorEx.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetBehaviorEx.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.EntityLiving; +import net.minecraft.server.v1_7_R4.EntityLiving; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetHurtBy.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetHurtBy.java index b804b83..c8f86e2 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetHurtBy.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetHurtBy.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.EntityCreature; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalHurtByTarget; +import net.minecraft.server.v1_7_R4.EntityCreature; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalHurtByTarget; import org.bukkit.entity.Creature; 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..4004b3b 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 @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R1.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoal; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ControllableMobHelper.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ControllableMobHelper.java index dc84490..7e2b510 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ControllableMobHelper.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ControllableMobHelper.java @@ -13,13 +13,13 @@ public class ControllableMobHelper { @SuppressWarnings("deprecation") - public static Class getNmsEntityClass(final Class entityClass) throws IllegalArgumentException { + public static Class getNmsEntityClass(final Class entityClass) throws IllegalArgumentException { if(entityClass==null) throw new IllegalArgumentException("entityClass must not be null"); - if(entityClass==HumanEntity.class || entityClass==Player.class) return net.minecraft.server.v1_7_R1.EntityHuman.class; - if(entityClass==Monster.class) return net.minecraft.server.v1_7_R1.EntityMonster.class; - if(entityClass==Creature.class) return net.minecraft.server.v1_7_R1.EntityCreature.class; - if(entityClass==Animals.class) return net.minecraft.server.v1_7_R1.EntityAnimal.class; - if(entityClass==LivingEntity.class) return net.minecraft.server.v1_7_R1.EntityLiving.class; + if(entityClass==HumanEntity.class || entityClass==Player.class) return net.minecraft.server.v1_7_R4.EntityHuman.class; + if(entityClass==Monster.class) return net.minecraft.server.v1_7_R4.EntityMonster.class; + if(entityClass==Creature.class) return net.minecraft.server.v1_7_R4.EntityCreature.class; + if(entityClass==Animals.class) return net.minecraft.server.v1_7_R4.EntityAnimal.class; + if(entityClass==LivingEntity.class) return net.minecraft.server.v1_7_R4.EntityLiving.class; for(EntityType entityType: EntityType.values()) { if(entityType.getEntityClass()==null || entityType.getTypeId()==-1) continue; @@ -32,12 +32,12 @@ public static Class getNmsEntityC } @SuppressWarnings("deprecation") - public static Class getNmsEntityClass(final EntityType entityType) throws IllegalArgumentException { + public static Class getNmsEntityClass(final EntityType entityType) throws IllegalArgumentException { if(entityType==null) throw new IllegalArgumentException("EntityType must not be null"); - if(entityType==EntityType.PLAYER) return net.minecraft.server.v1_7_R1.EntityHuman.class; + if(entityType==EntityType.PLAYER) return net.minecraft.server.v1_7_R4.EntityHuman.class; try { - final Class entityClass = NativeInterfaces.ENTITYTYPES.METHOD_GETCLASSBYID.invoke(entityType.getTypeId()); + final Class entityClass = NativeInterfaces.ENTITYTYPES.METHOD_GETCLASSBYID.invoke(entityType.getTypeId()); if(entityClass==null) throw new IllegalArgumentException("EntityType "+entityType+" is not resolvable to a net.minecraft Class"); return entityClass; } catch(Exception e) { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMob.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMob.java index 22e0dbc..df5e154 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMob.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMob.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation; -import net.minecraft.server.v1_7_R1.EntityInsentient; +import net.minecraft.server.v1_7_R4.EntityInsentient; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAttributes.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAttributes.java index b22f231..a83c2cd 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAttributes.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAttributes.java @@ -1,9 +1,9 @@ package de.ntcomputer.minecraft.controllablemobs.implementation; -import net.minecraft.server.v1_7_R1.AttributeInstance; -import net.minecraft.server.v1_7_R1.AttributeModifiable; -import net.minecraft.server.v1_7_R1.EntityInsentient; -import net.minecraft.server.v1_7_R1.IAttribute; +import net.minecraft.server.v1_7_R4.AttributeInstance; +import net.minecraft.server.v1_7_R4.AttributeModifiable; +import net.minecraft.server.v1_7_R4.EntityInsentient; +import net.minecraft.server.v1_7_R4.IAttribute; import de.ntcomputer.minecraft.controllablemobs.api.ControllableMobAttributes; import de.ntcomputer.minecraft.controllablemobs.api.attributes.Attribute; import de.ntcomputer.minecraft.controllablemobs.implementation.attributes.CraftAttribute; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionDie.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionDie.java index 9395106..77ba6e1 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionDie.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionDie.java @@ -1,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R1.DamageSource; -import net.minecraft.server.v1_7_R1.EntityLiving; +import net.minecraft.server.v1_7_R4.DamageSource; +import net.minecraft.server.v1_7_R4.EntityLiving; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionFollow.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionFollow.java index 5f098d5..b5e8028 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionFollow.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionFollow.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R1.EntityLiving; +import net.minecraft.server.v1_7_R4.EntityLiving; -import org.bukkit.craftbukkit.v1_7_R1.entity.CraftLivingEntity; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity; import org.bukkit.entity.LivingEntity; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLook.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLook.java index 3d95e44..6646c52 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLook.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLook.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R1.World; +import net.minecraft.server.v1_7_R4.World; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; public abstract class ControllableMobActionLook extends ControllableMobActionBase { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookBlock.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookBlock.java index d59c198..ce61a85 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookBlock.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookBlock.java @@ -1,9 +1,9 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R1.World; +import net.minecraft.server.v1_7_R4.World; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_7_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_7_R4.CraftWorld; public class ControllableMobActionLookBlock extends ControllableMobActionLook { private final double[] values; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookEntity.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookEntity.java index 55aa668..eee18b7 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookEntity.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookEntity.java @@ -1,14 +1,14 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R1.World; +import net.minecraft.server.v1_7_R4.World; -import org.bukkit.craftbukkit.v1_7_R1.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity; import org.bukkit.entity.Entity; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; public class ControllableMobActionLookEntity extends ControllableMobActionLook { - private final net.minecraft.server.v1_7_R1.Entity entity; + private final net.minecraft.server.v1_7_R4.Entity entity; public ControllableMobActionLookEntity(final CraftControllableMob mob, final Entity entity) { super(mob.getActionManager()); diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionMoveAbstract.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionMoveAbstract.java index 5301d19..d32447d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionMoveAbstract.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionMoveAbstract.java @@ -1,9 +1,9 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R1.World; +import net.minecraft.server.v1_7_R4.World; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_7_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_7_R4.CraftWorld; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTarget.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTarget.java index bfa882a..b177791 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTarget.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTarget.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R1.EntityLiving; +import net.minecraft.server.v1_7_R4.EntityLiving; -import org.bukkit.craftbukkit.v1_7_R1.entity.CraftLivingEntity; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity; import org.bukkit.entity.LivingEntity; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTeleportEntity.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTeleportEntity.java index 8a31cbf..7538153 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTeleportEntity.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTeleportEntity.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R1.Entity; +import net.minecraft.server.v1_7_R4.Entity; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentHandlers.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentHandlers.java index 6fe70de..302eb1d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentHandlers.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentHandlers.java @@ -3,11 +3,11 @@ import java.util.HashMap; import java.util.Map; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalBreakDoor; -import net.minecraft.server.v1_7_R1.PathfinderGoalDoorInteract; -import net.minecraft.server.v1_7_R1.PathfinderGoalFloat; -import net.minecraft.server.v1_7_R1.PathfinderGoalOpenDoor; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalBreakDoor; +import net.minecraft.server.v1_7_R4.PathfinderGoalDoorInteract; +import net.minecraft.server.v1_7_R4.PathfinderGoalFloat; +import net.minecraft.server.v1_7_R4.PathfinderGoalOpenDoor; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.NativeInterfaces; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentListener.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentListener.java index 11652c0..9e1f7db 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentListener.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentListener.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai; -import net.minecraft.server.v1_7_R1.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoal; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; public interface AIComponentListener { 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..c41067d 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 @@ -11,11 +11,11 @@ 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 net.minecraft.server.v1_7_R4.EntityInsentient; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalSelector; -import org.bukkit.craftbukkit.v1_7_R1.util.UnsafeList; +import org.bukkit.craftbukkit.v1_7_R4.util.UnsafeList; import org.bukkit.entity.LivingEntity; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIState; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/CraftAIPart.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/CraftAIPart.java index b3edc8c..317fed6 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/CraftAIPart.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/CraftAIPart.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai; -import net.minecraft.server.v1_7_R1.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoal; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/EntitySelector.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/EntitySelector.java index e25cb82..693c19f 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/EntitySelector.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/EntitySelector.java @@ -1,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai; -import net.minecraft.server.v1_7_R1.Entity; -import net.minecraft.server.v1_7_R1.IEntitySelector; +import net.minecraft.server.v1_7_R4.Entity; +import net.minecraft.server.v1_7_R4.IEntitySelector; import de.ntcomputer.minecraft.controllablemobs.api.ai.EntityFilter; public final class EntitySelector implements IEntitySelector { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalAIMonitor.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalAIMonitor.java index 74e8fef..ae67ded 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalAIMonitor.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalAIMonitor.java @@ -3,7 +3,7 @@ import java.util.HashSet; import java.util.List; -import net.minecraft.server.v1_7_R1.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoal; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIState; import de.ntcomputer.minecraft.controllablemobs.implementation.ai.AIController; import de.ntcomputer.minecraft.controllablemobs.implementation.ai.CraftAIPart; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionFollow.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionFollow.java index 56249ea..402b3ff 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionFollow.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionFollow.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors; -import net.minecraft.server.v1_7_R1.PathEntity; +import net.minecraft.server.v1_7_R4.PathEntity; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; import de.ntcomputer.minecraft.controllablemobs.implementation.actions.ControllableMobActionFollow; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionMoveAbstract.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionMoveAbstract.java index 5542958..aa2f566 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionMoveAbstract.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionMoveAbstract.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors; -import net.minecraft.server.v1_7_R1.PathEntity; +import net.minecraft.server.v1_7_R4.PathEntity; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; import de.ntcomputer.minecraft.controllablemobs.implementation.actions.ControllableMobActionMoveAbstract; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionTarget.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionTarget.java index f74609e..2cee90c 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionTarget.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionTarget.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors; -import net.minecraft.server.v1_7_R1.EntityCreature; +import net.minecraft.server.v1_7_R4.EntityCreature; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; import de.ntcomputer.minecraft.controllablemobs.implementation.actions.ControllableMobActionTarget; 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..76d8f55 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 @@ -1,12 +1,12 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors; -import net.minecraft.server.v1_7_R1.EntityCreature; -import net.minecraft.server.v1_7_R1.EntityHuman; -import net.minecraft.server.v1_7_R1.EntityInsentient; -import net.minecraft.server.v1_7_R1.EntityLiving; +import net.minecraft.server.v1_7_R4.EntityCreature; +import net.minecraft.server.v1_7_R4.EntityHuman; +import net.minecraft.server.v1_7_R4.EntityInsentient; +import net.minecraft.server.v1_7_R4.EntityLiving; -import org.bukkit.craftbukkit.v1_7_R1.entity.CraftLivingEntity; -import org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity; +import org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory; import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetNearest.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetNearest.java index a7a1f67..1473bce 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetNearest.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetNearest.java @@ -4,9 +4,9 @@ import java.util.Collections; import java.util.List; -import net.minecraft.server.v1_7_R1.DistanceComparator; -import net.minecraft.server.v1_7_R1.EntityHuman; -import net.minecraft.server.v1_7_R1.EntityLiving; +import net.minecraft.server.v1_7_R4.DistanceComparator; +import net.minecraft.server.v1_7_R4.EntityHuman; +import net.minecraft.server.v1_7_R4.EntityLiving; import org.bukkit.event.entity.EntityTargetEvent.TargetReason; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalWrapper.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalWrapper.java index e324036..ac35ef7 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalWrapper.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalWrapper.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors; -import net.minecraft.server.v1_7_R1.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoal; public abstract class PathfinderGoalWrapper extends PathfinderGoal { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttribute.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttribute.java index bb06ccf..2e86c93 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttribute.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttribute.java @@ -7,8 +7,8 @@ import java.util.Set; import java.util.UUID; -import net.minecraft.server.v1_7_R1.AttributeModifiable; -import net.minecraft.server.v1_7_R1.AttributeRanged; +import net.minecraft.server.v1_7_R4.AttributeModifiable; +import net.minecraft.server.v1_7_R4.AttributeRanged; import de.ntcomputer.minecraft.controllablemobs.api.attributes.Attribute; import de.ntcomputer.minecraft.controllablemobs.api.attributes.AttributeModifier; import de.ntcomputer.minecraft.controllablemobs.api.attributes.ModifyOperation; @@ -35,8 +35,8 @@ public CraftAttribute(AttributeModifiable nativeAttribute) { this.nativeAttributeTemplate = (AttributeRanged) NativeInterfaces.ATTRIBUTEMODIFIABLE.METHOD_GETATTRIBUTETEMPLATE.invoke(nativeAttribute); this.defaultBasisValue = this.getBasisValue(); - Collection nativeModifiers = NativeInterfaces.ATTRIBUTEMODIFIABLE.METHOD_GETMODIFIERS.invoke(nativeAttribute); - for(net.minecraft.server.v1_7_R1.AttributeModifier nativeModifier: nativeModifiers) { + Collection nativeModifiers = NativeInterfaces.ATTRIBUTEMODIFIABLE.METHOD_GETMODIFIERS.invoke(nativeAttribute); + for(net.minecraft.server.v1_7_R4.AttributeModifier nativeModifier: nativeModifiers) { UUID uuid = NativeInterfaces.ATTRIBUTEMODIFIER.METHOD_GETUUID.invoke(nativeModifier); CraftAttributeModifier modifier = modifierMap.get(uuid); if(modifier!=null) modifier.setAttributeAttached(this); @@ -50,10 +50,10 @@ public double getValue() { return nativeAttribute.getValue(); } - private CraftAttributeModifier[] resolveNativeModifiers(Collection nativeModifiers) { + private CraftAttributeModifier[] resolveNativeModifiers(Collection nativeModifiers) { CraftAttributeModifier[] result = new CraftAttributeModifier[nativeModifiers.size()]; int i = 0; - for(net.minecraft.server.v1_7_R1.AttributeModifier nativeModifier: nativeModifiers) { + for(net.minecraft.server.v1_7_R4.AttributeModifier nativeModifier: nativeModifiers) { UUID uuid = NativeInterfaces.ATTRIBUTEMODIFIER.METHOD_GETUUID.invoke(nativeModifier); CraftAttributeModifier modifier = modifierMap.get(uuid); if(modifier==null) { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttributeModifier.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttributeModifier.java index 848b06c..b4695ca 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttributeModifier.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttributeModifier.java @@ -15,7 +15,7 @@ public class CraftAttributeModifier implements AttributeModifier { private final String name; private final double value; private final ModifyOperation operation; - private net.minecraft.server.v1_7_R1.AttributeModifier nativeModifier = null; + private net.minecraft.server.v1_7_R4.AttributeModifier nativeModifier = null; private final Set attachedAttributes = new HashSet(); private final boolean custom; @@ -27,7 +27,7 @@ public CraftAttributeModifier(UUID uniqueID, String name, double modifierValue, this.custom = true; } - public CraftAttributeModifier(UUID uuid, net.minecraft.server.v1_7_R1.AttributeModifier nativeModifier) { + public CraftAttributeModifier(UUID uuid, net.minecraft.server.v1_7_R4.AttributeModifier nativeModifier) { this.uniqueID = uuid; this.nativeModifier = nativeModifier; this.name = NativeInterfaces.ATTRIBUTEMODIFIER.METHOD_GETNAME.invoke(nativeModifier); @@ -51,9 +51,9 @@ public double getModifierValue() { return this.value; } - net.minecraft.server.v1_7_R1.AttributeModifier getNativeModifier() { + net.minecraft.server.v1_7_R4.AttributeModifier getNativeModifier() { if(this.nativeModifier==null) { - this.nativeModifier = new net.minecraft.server.v1_7_R1.AttributeModifier(uniqueID, name, value, this.operation.getIntType()); + this.nativeModifier = new net.minecraft.server.v1_7_R4.AttributeModifier(uniqueID, name, value, this.operation.getIntType()); } return this.nativeModifier; } diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/NativeInterfaces.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/NativeInterfaces.java index 81b0839..0484dd4 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/NativeInterfaces.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/NativeInterfaces.java @@ -1,7 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server.CBInterfaceJavaPluginLoader; -import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server.CBInterfacePluginClassLoader; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server.NmsAttributeModifiable; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server.NmsAttributeModifier; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server.NmsAttributeRanged; @@ -27,7 +26,6 @@ public final class NativeInterfaces { 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(); diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/CBInterfacePluginClassLoader.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/CBInterfacePluginClassLoader.java deleted file mode 100644 index 5e164be..0000000 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/CBInterfacePluginClassLoader.java +++ /dev/null @@ -1,11 +0,0 @@ -package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; - -import org.bukkit.plugin.java.JavaPluginLoader; -import org.bukkit.plugin.java.PluginClassLoader; - -import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldObject; - -public final class CBInterfacePluginClassLoader { - public NativeFieldObject FIELD_LOADER = new NativeFieldObject(PluginClassLoader.class, "loader"); - -} diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifiable.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifiable.java index 2fe1c2b..9c180c6 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifiable.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifiable.java @@ -4,9 +4,9 @@ import java.util.Collections; import java.util.UUID; -import net.minecraft.server.v1_7_R1.AttributeModifiable; -import net.minecraft.server.v1_7_R1.AttributeModifier; -import net.minecraft.server.v1_7_R1.IAttribute; +import net.minecraft.server.v1_7_R4.AttributeModifiable; +import net.minecraft.server.v1_7_R4.AttributeModifier; +import net.minecraft.server.v1_7_R4.IAttribute; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public final class NmsAttributeModifiable { @@ -21,7 +21,7 @@ public final class NmsAttributeModifiable { public final class GetTemplate extends NativeMethodPublic { public IAttribute invoke(AttributeModifiable attribute) { try { - return attribute.a(); + return attribute.getAttribute(); } catch(Throwable t) { this.handleException(t); return null; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifier.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifier.java index 3a03e9b..ad02942 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifier.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifier.java @@ -2,7 +2,7 @@ import java.util.UUID; -import net.minecraft.server.v1_7_R1.AttributeModifier; +import net.minecraft.server.v1_7_R4.AttributeModifier; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public final class NmsAttributeModifier { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeRanged.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeRanged.java index 7ffc817..a32f053 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeRanged.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeRanged.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.AttributeRanged; +import net.minecraft.server.v1_7_R4.AttributeRanged; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldDouble; public final class NmsAttributeRanged { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerJump.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerJump.java index 974daff..6b5fba9 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerJump.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerJump.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.ControllerJump; +import net.minecraft.server.v1_7_R4.ControllerJump; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public class NmsControllerJump { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerLook.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerLook.java index c247872..1a04bb5 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerLook.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerLook.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.ControllerLook; +import net.minecraft.server.v1_7_R4.ControllerLook; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public class NmsControllerLook { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntity.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntity.java index 61c999d..042827d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntity.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntity.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.Entity; +import net.minecraft.server.v1_7_R4.Entity; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public class NmsEntity { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityInsentient.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityInsentient.java index d7cb11e..d207672 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityInsentient.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityInsentient.java @@ -1,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.EntityInsentient; -import net.minecraft.server.v1_7_R1.PathfinderGoalSelector; +import net.minecraft.server.v1_7_R4.EntityInsentient; +import net.minecraft.server.v1_7_R4.PathfinderGoalSelector; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldObject; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityTypes.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityTypes.java index e04b2c2..cbee8dd 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityTypes.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityTypes.java @@ -1,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.Entity; -import net.minecraft.server.v1_7_R1.EntityTypes; +import net.minecraft.server.v1_7_R4.Entity; +import net.minecraft.server.v1_7_R4.EntityTypes; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public final class NmsEntityTypes { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsGenericAttributes.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsGenericAttributes.java index 4eb53b2..64ea8fd 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsGenericAttributes.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsGenericAttributes.java @@ -1,12 +1,12 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.GenericAttributes; -import net.minecraft.server.v1_7_R1.IAttribute; +import net.minecraft.server.v1_7_R4.GenericAttributes; +import net.minecraft.server.v1_7_R4.IAttribute; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeStaticFieldObject; public final class NmsGenericAttributes { // look at the string description in GenericAttributes class on update - public final NativeStaticFieldObject STATIC_FIELD_MAXHEALTH = new NativeStaticFieldObject(GenericAttributes.class,"a"); + public final NativeStaticFieldObject STATIC_FIELD_MAXHEALTH = new NativeStaticFieldObject(GenericAttributes.class,"maxHealth"); public final NativeStaticFieldObject STATIC_FIELD_FOLLOWRANGE = new NativeStaticFieldObject(GenericAttributes.class,"b"); public final NativeStaticFieldObject STATIC_FIELD_KNOCKBACKRESISTANCE = new NativeStaticFieldObject(GenericAttributes.class,"c"); public final NativeStaticFieldObject STATIC_FIELD_MOVEMENTSPEED = new NativeStaticFieldObject(GenericAttributes.class,"d"); diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsIAttribute.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsIAttribute.java index 13ee906..cc997a1 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsIAttribute.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsIAttribute.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.IAttribute; +import net.minecraft.server.v1_7_R4.IAttribute; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public final class NmsIAttribute { @@ -9,7 +9,7 @@ public final class NmsIAttribute { public final class GetName extends NativeMethodPublic { public String invoke(IAttribute attribute) { try { - return attribute.a(); + return attribute.getName(); } catch(Throwable t) { this.handleException(t); return null; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsInterfacePathfinderGoal.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsInterfacePathfinderGoal.java index 6fb9d50..4f1dd1d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsInterfacePathfinderGoal.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsInterfacePathfinderGoal.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoal; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public final class NmsInterfacePathfinderGoal { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsNavigation.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsNavigation.java index 8dfb05f..7a1c3ee 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsNavigation.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsNavigation.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.EntityLiving; -import net.minecraft.server.v1_7_R1.Navigation; -import net.minecraft.server.v1_7_R1.PathEntity; +import net.minecraft.server.v1_7_R4.EntityLiving; +import net.minecraft.server.v1_7_R4.Navigation; +import net.minecraft.server.v1_7_R4.PathEntity; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldBoolean; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelector.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelector.java index 91e6030..44442cc 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelector.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelector.java @@ -1,9 +1,9 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.PathfinderGoal; -import net.minecraft.server.v1_7_R1.PathfinderGoalSelector; +import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoalSelector; -import org.bukkit.craftbukkit.v1_7_R1.util.UnsafeList; +import org.bukkit.craftbukkit.v1_7_R4.util.UnsafeList; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldObject; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelectorItem.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelectorItem.java index 5bed2de..5690ac2 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelectorItem.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelectorItem.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R1.PathfinderGoal; +import net.minecraft.server.v1_7_R4.PathfinderGoal; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldInt; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldObject; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsWorld.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsWorld.java index c59556d..734604d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsWorld.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsWorld.java @@ -3,10 +3,10 @@ import java.util.Collections; import java.util.List; -import net.minecraft.server.v1_7_R1.AxisAlignedBB; -import net.minecraft.server.v1_7_R1.Entity; -import net.minecraft.server.v1_7_R1.IEntitySelector; -import net.minecraft.server.v1_7_R1.World; +import net.minecraft.server.v1_7_R4.AxisAlignedBB; +import net.minecraft.server.v1_7_R4.Entity; +import net.minecraft.server.v1_7_R4.IEntitySelector; +import net.minecraft.server.v1_7_R4.World; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public class NmsWorld { From 054d442435847d0b996187c7dac2e2ffd4c9d742 Mon Sep 17 00:00:00 2001 From: RaynLegends Date: Mon, 11 May 2015 17:35:05 +0200 Subject: [PATCH 2/5] Compiled --- .gitignore | 1 - target/Controllable-Mobs-API-1.7.10-R4.jar | Bin 0 -> 164120 bytes 2 files changed, 1 deletion(-) create mode 100644 target/Controllable-Mobs-API-1.7.10-R4.jar diff --git a/.gitignore b/.gitignore index d8fa897..96d0ab3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,3 @@ /.externalToolBuilders /.settings /archive -/target diff --git a/target/Controllable-Mobs-API-1.7.10-R4.jar b/target/Controllable-Mobs-API-1.7.10-R4.jar new file mode 100644 index 0000000000000000000000000000000000000000..92c0ef78fd9febd247d7777922ff64865c37e3a3 GIT binary patch literal 164120 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 KV`_ekLH{4M2kF27 literal 0 HcmV?d00001 From c5597584517473570a0254125b73c2ec4f0312c4 Mon Sep 17 00:00:00 2001 From: RaynLegends Date: Mon, 11 May 2015 17:45:57 +0200 Subject: [PATCH 3/5] Created the readme --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..577e442 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# Controllable-Mobs-API +API to control Minecraft entities + +Fork of DevCybran's http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/ + +Updated and working with Bukkit 1.7.10 (It's not compatible with older versions though), it should be totally safe to update from older versions (the api has not been changed) + +Download it here: https://github.com/RaynLegends/Controllable-Mobs-API/raw/master/target/Controllable-Mobs-API-1.7.10-R4.jar + +Older versions: + + * 1.7.9 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/20-controllable-mobs-api-v1-7-9/ + * 1.7.2 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/19-controllable-mobs-api-v1-7-2-6-alpha2/ + * 1.6.4 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/17-controllable-mobs-api-v5/ + * 1.6.2 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/16-controllable-mobs-api-v4/ From 25d03ec2dd6cf9899f354a1f51a32209af2793f2 Mon Sep 17 00:00:00 2001 From: RaynLegends Date: Mon, 11 May 2015 17:50:31 +0200 Subject: [PATCH 4/5] Updated the readme --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 577e442..8250417 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,12 @@ Fork of DevCybran's http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/ Updated and working with Bukkit 1.7.10 (It's not compatible with older versions though), it should be totally safe to update from older versions (the api has not been changed) -Download it here: https://github.com/RaynLegends/Controllable-Mobs-API/raw/master/target/Controllable-Mobs-API-1.7.10-R4.jar +### Download +* https://github.com/RaynLegends/Controllable-Mobs-API/raw/master/target/Controllable-Mobs-API-1.7.10-R4.jar -Older versions: +### Older versions - * 1.7.9 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/20-controllable-mobs-api-v1-7-9/ - * 1.7.2 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/19-controllable-mobs-api-v1-7-2-6-alpha2/ - * 1.6.4 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/17-controllable-mobs-api-v5/ - * 1.6.2 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/16-controllable-mobs-api-v4/ +* 1.7.9 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/20-controllable-mobs-api-v1-7-9/ +* 1.7.2 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/19-controllable-mobs-api-v1-7-2-6-alpha2/ +* 1.6.4 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/17-controllable-mobs-api-v5/ +* 1.6.2 -> http://dev.bukkit.org/bukkit-plugins/controllable-mobs-api/files/16-controllable-mobs-api-v4/ From acc7d25f1ed4360249aebd7514cd28bea2d73305 Mon Sep 17 00:00:00 2001 From: RaynLegends Date: Fri, 2 Oct 2015 21:10:46 +0200 Subject: [PATCH 5/5] Updated to 1.8.8 (1_8_R3) --- .classpath | 1 + .gitignore | 1 + .project | 2 +- .../api/ControllableMobs.java | 6 +- .../controllablemobs/api/ai/AIType.java | 90 +++++++++---------- .../api/ai/behaviors/AIAttackMelee.java | 6 +- .../api/ai/behaviors/AIAttackRanged.java | 6 +- .../api/ai/behaviors/AIBehavior.java | 2 +- .../api/ai/behaviors/AIDoorBreak.java | 4 +- .../api/ai/behaviors/AIDoorOpen.java | 4 +- .../api/ai/behaviors/AIFleeSun.java | 6 +- .../api/ai/behaviors/AILookAtEntity.java | 8 +- .../api/ai/behaviors/AIPlayerTrade.java | 6 +- .../api/ai/behaviors/AIPlayerTradingLook.java | 6 +- .../api/ai/behaviors/AIRandomLookaround.java | 4 +- .../api/ai/behaviors/AIRandomStroll.java | 6 +- .../api/ai/behaviors/AIRestrictSun.java | 6 +- .../api/ai/behaviors/AISwim.java | 4 +- .../api/ai/behaviors/AITargetBehaviorEx.java | 2 +- .../api/ai/behaviors/AITargetHurtBy.java | 6 +- .../api/ai/behaviors/AITargetNearest.java | 12 ++- .../implementation/ControllableMobHelper.java | 18 ++-- .../implementation/CraftControllableMob.java | 2 +- .../CraftControllableMobAttributes.java | 24 ++--- .../actions/ControllableMobActionDie.java | 4 +- .../actions/ControllableMobActionFollow.java | 4 +- .../actions/ControllableMobActionLook.java | 2 +- .../ControllableMobActionLookBlock.java | 4 +- .../ControllableMobActionLookEntity.java | 6 +- .../ControllableMobActionMoveAbstract.java | 4 +- .../actions/ControllableMobActionTarget.java | 4 +- .../ControllableMobActionTeleportEntity.java | 2 +- .../ai/AIComponentHandlers.java | 25 +++--- .../ai/AIComponentListener.java | 2 +- .../implementation/ai/AIController.java | 8 +- .../implementation/ai/CraftAIPart.java | 2 +- .../implementation/ai/EntitySelector.java | 23 ----- .../ai/behaviors/PathfinderGoalAIMonitor.java | 2 +- .../behaviors/PathfinderGoalActionFollow.java | 2 +- .../PathfinderGoalActionMoveAbstract.java | 2 +- .../behaviors/PathfinderGoalActionTarget.java | 3 +- .../ai/behaviors/PathfinderGoalTargetEx.java | 18 ++-- .../PathfinderGoalTargetNearest.java | 19 ++-- .../ai/behaviors/PathfinderGoalWrapper.java | 2 +- .../attributes/CraftAttribute.java | 12 +-- .../attributes/CraftAttributeModifier.java | 8 +- .../server/NmsAttributeModifiable.java | 6 +- .../server/NmsAttributeModifier.java | 2 +- .../server/NmsAttributeRanged.java | 2 +- .../server/NmsControllerJump.java | 2 +- .../server/NmsControllerLook.java | 2 +- .../nativeinterfaces/server/NmsEntity.java | 4 +- .../server/NmsEntityInsentient.java | 7 +- .../server/NmsEntityTypes.java | 5 +- .../server/NmsGenericAttributes.java | 10 +-- .../server/NmsIAttribute.java | 2 +- .../server/NmsInterfacePathfinderGoal.java | 2 +- .../server/NmsNavigation.java | 31 ++++--- .../server/NmsPathfinderGoalSelector.java | 6 +- .../server/NmsPathfinderGoalSelectorItem.java | 2 +- .../nativeinterfaces/server/NmsWorld.java | 12 +-- 61 files changed, 238 insertions(+), 247 deletions(-) delete mode 100644 src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/EntitySelector.java diff --git a/.classpath b/.classpath index 1483c3b..511fe64 100644 --- a/.classpath +++ b/.classpath @@ -27,5 +27,6 @@ + diff --git a/.gitignore b/.gitignore index 96d0ab3..4260de3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /.externalToolBuilders /.settings /archive +/target/ diff --git a/.project b/.project index 64ffda4..baa591d 100644 --- a/.project +++ b/.project @@ -1,6 +1,6 @@ - Controllable Mobs API + Controllable-Mobs-API libraries diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ControllableMobs.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ControllableMobs.java index c36f34f..56e2a14 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ControllableMobs.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ControllableMobs.java @@ -4,10 +4,10 @@ import java.util.Map; import java.util.logging.Logger; -import net.minecraft.server.v1_7_R4.EntityInsentient; -import net.minecraft.server.v1_7_R4.EntityLiving; +import net.minecraft.server.v1_8_R3.EntityInsentient; +import net.minecraft.server.v1_8_R3.EntityLiving; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftLivingEntity; import org.bukkit.entity.LivingEntity; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/AIType.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/AIType.java index 8f2627a..9993405 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/AIType.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/AIType.java @@ -3,50 +3,50 @@ import java.util.HashMap; import java.util.Map; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalArrowAttack; -import net.minecraft.server.v1_7_R4.PathfinderGoalAvoidPlayer; -import net.minecraft.server.v1_7_R4.PathfinderGoalBeg; -import net.minecraft.server.v1_7_R4.PathfinderGoalBreakDoor; -import net.minecraft.server.v1_7_R4.PathfinderGoalBreed; -import net.minecraft.server.v1_7_R4.PathfinderGoalDefendVillage; -import net.minecraft.server.v1_7_R4.PathfinderGoalEatTile; -import net.minecraft.server.v1_7_R4.PathfinderGoalFleeSun; -import net.minecraft.server.v1_7_R4.PathfinderGoalFloat; -import net.minecraft.server.v1_7_R4.PathfinderGoalFollowOwner; -import net.minecraft.server.v1_7_R4.PathfinderGoalFollowParent; -import net.minecraft.server.v1_7_R4.PathfinderGoalHurtByTarget; -import net.minecraft.server.v1_7_R4.PathfinderGoalInteract; -import net.minecraft.server.v1_7_R4.PathfinderGoalJumpOnBlock; -import net.minecraft.server.v1_7_R4.PathfinderGoalLeapAtTarget; -import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtPlayer; -import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtTradingPlayer; -import net.minecraft.server.v1_7_R4.PathfinderGoalMakeLove; -import net.minecraft.server.v1_7_R4.PathfinderGoalMeleeAttack; -import net.minecraft.server.v1_7_R4.PathfinderGoalMoveIndoors; -import net.minecraft.server.v1_7_R4.PathfinderGoalMoveThroughVillage; -import net.minecraft.server.v1_7_R4.PathfinderGoalMoveTowardsRestriction; -import net.minecraft.server.v1_7_R4.PathfinderGoalMoveTowardsTarget; -import net.minecraft.server.v1_7_R4.PathfinderGoalNearestAttackableTarget; -import net.minecraft.server.v1_7_R4.PathfinderGoalOcelotAttack; -import net.minecraft.server.v1_7_R4.PathfinderGoalOfferFlower; -import net.minecraft.server.v1_7_R4.PathfinderGoalOpenDoor; -import net.minecraft.server.v1_7_R4.PathfinderGoalOwnerHurtByTarget; -import net.minecraft.server.v1_7_R4.PathfinderGoalOwnerHurtTarget; -import net.minecraft.server.v1_7_R4.PathfinderGoalPanic; -import net.minecraft.server.v1_7_R4.PathfinderGoalPassengerCarrotStick; -import net.minecraft.server.v1_7_R4.PathfinderGoalPlay; -import net.minecraft.server.v1_7_R4.PathfinderGoalRandomLookaround; -import net.minecraft.server.v1_7_R4.PathfinderGoalRandomStroll; -import net.minecraft.server.v1_7_R4.PathfinderGoalRandomTargetNonTamed; -import net.minecraft.server.v1_7_R4.PathfinderGoalRestrictOpenDoor; -import net.minecraft.server.v1_7_R4.PathfinderGoalRestrictSun; -import net.minecraft.server.v1_7_R4.PathfinderGoalSit; -import net.minecraft.server.v1_7_R4.PathfinderGoalSwell; -import net.minecraft.server.v1_7_R4.PathfinderGoalTakeFlower; -import net.minecraft.server.v1_7_R4.PathfinderGoalTame; -import net.minecraft.server.v1_7_R4.PathfinderGoalTempt; -import net.minecraft.server.v1_7_R4.PathfinderGoalTradeWithPlayer; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalArrowAttack; +import net.minecraft.server.v1_8_R3.PathfinderGoalAvoidTarget; +import net.minecraft.server.v1_8_R3.PathfinderGoalBeg; +import net.minecraft.server.v1_8_R3.PathfinderGoalBreakDoor; +import net.minecraft.server.v1_8_R3.PathfinderGoalBreed; +import net.minecraft.server.v1_8_R3.PathfinderGoalDefendVillage; +import net.minecraft.server.v1_8_R3.PathfinderGoalEatTile; +import net.minecraft.server.v1_8_R3.PathfinderGoalFleeSun; +import net.minecraft.server.v1_8_R3.PathfinderGoalFloat; +import net.minecraft.server.v1_8_R3.PathfinderGoalFollowOwner; +import net.minecraft.server.v1_8_R3.PathfinderGoalFollowParent; +import net.minecraft.server.v1_8_R3.PathfinderGoalHurtByTarget; +import net.minecraft.server.v1_8_R3.PathfinderGoalInteract; +import net.minecraft.server.v1_8_R3.PathfinderGoalJumpOnBlock; +import net.minecraft.server.v1_8_R3.PathfinderGoalLeapAtTarget; +import net.minecraft.server.v1_8_R3.PathfinderGoalLookAtPlayer; +import net.minecraft.server.v1_8_R3.PathfinderGoalLookAtTradingPlayer; +import net.minecraft.server.v1_8_R3.PathfinderGoalMakeLove; +import net.minecraft.server.v1_8_R3.PathfinderGoalMeleeAttack; +import net.minecraft.server.v1_8_R3.PathfinderGoalMoveIndoors; +import net.minecraft.server.v1_8_R3.PathfinderGoalMoveThroughVillage; +import net.minecraft.server.v1_8_R3.PathfinderGoalMoveTowardsRestriction; +import net.minecraft.server.v1_8_R3.PathfinderGoalMoveTowardsTarget; +import net.minecraft.server.v1_8_R3.PathfinderGoalNearestAttackableTarget; +import net.minecraft.server.v1_8_R3.PathfinderGoalOcelotAttack; +import net.minecraft.server.v1_8_R3.PathfinderGoalOfferFlower; +import net.minecraft.server.v1_8_R3.PathfinderGoalOpenDoor; +import net.minecraft.server.v1_8_R3.PathfinderGoalOwnerHurtByTarget; +import net.minecraft.server.v1_8_R3.PathfinderGoalOwnerHurtTarget; +import net.minecraft.server.v1_8_R3.PathfinderGoalPanic; +import net.minecraft.server.v1_8_R3.PathfinderGoalPassengerCarrotStick; +import net.minecraft.server.v1_8_R3.PathfinderGoalPlay; +import net.minecraft.server.v1_8_R3.PathfinderGoalRandomLookaround; +import net.minecraft.server.v1_8_R3.PathfinderGoalRandomStroll; +import net.minecraft.server.v1_8_R3.PathfinderGoalRandomTargetNonTamed; +import net.minecraft.server.v1_8_R3.PathfinderGoalRestrictOpenDoor; +import net.minecraft.server.v1_8_R3.PathfinderGoalRestrictSun; +import net.minecraft.server.v1_8_R3.PathfinderGoalSit; +import net.minecraft.server.v1_8_R3.PathfinderGoalSwell; +import net.minecraft.server.v1_8_R3.PathfinderGoalTakeFlower; +import net.minecraft.server.v1_8_R3.PathfinderGoalTame; +import net.minecraft.server.v1_8_R3.PathfinderGoalTempt; +import net.minecraft.server.v1_8_R3.PathfinderGoalTradeWithPlayer; /** * An enum that lists all AI components built into the minecraft server core.
@@ -59,7 +59,7 @@ */ public enum AIType { ATTACK_RANGED(PathfinderGoalArrowAttack.class), - MOVE_AVOIDPLAYER(PathfinderGoalAvoidPlayer.class), + MOVE_AVOIDPLAYER(PathfinderGoalAvoidTarget.class), ACTION_BEG(PathfinderGoalBeg.class), ACTION_DOORBREAK(PathfinderGoalBreakDoor.class), ACTION_BREED(PathfinderGoalBreed.class), diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackMelee.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackMelee.java index ba8cd3f..9c1366e 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackMelee.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackMelee.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.EntityCreature; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalMeleeAttack; +import net.minecraft.server.v1_8_R3.EntityCreature; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalMeleeAttack; import org.bukkit.entity.Creature; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackRanged.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackRanged.java index 4e0bca5..84e25c0 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackRanged.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIAttackRanged.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.IRangedEntity; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalArrowAttack; +import net.minecraft.server.v1_8_R3.IRangedEntity; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalArrowAttack; import org.bukkit.entity.Creature; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIBehavior.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIBehavior.java index f5bef1b..cc80f59 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIBehavior.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIBehavior.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoal; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorBreak.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorBreak.java index b3f61e0..f43ff41 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorBreak.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorBreak.java @@ -1,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalBreakDoor; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalBreakDoor; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorOpen.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorOpen.java index 7f7bbe3..22b01b1 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorOpen.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIDoorOpen.java @@ -1,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalOpenDoor; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalOpenDoor; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIFleeSun.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIFleeSun.java index ccfa15d..d3d40bb 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIFleeSun.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIFleeSun.java @@ -2,9 +2,9 @@ import org.bukkit.entity.Creature; -import net.minecraft.server.v1_7_R4.EntityCreature; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalFleeSun; +import net.minecraft.server.v1_8_R3.EntityCreature; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalFleeSun; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AILookAtEntity.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AILookAtEntity.java index 55c0bf8..eb702f1 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AILookAtEntity.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AILookAtEntity.java @@ -1,9 +1,9 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.Entity; -import net.minecraft.server.v1_7_R4.EntityHuman; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtPlayer; +import net.minecraft.server.v1_8_R3.Entity; +import net.minecraft.server.v1_8_R3.EntityHuman; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalLookAtPlayer; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTrade.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTrade.java index e7b7bf1..6880fff 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTrade.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTrade.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.EntityVillager; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalTradeWithPlayer; +import net.minecraft.server.v1_8_R3.EntityVillager; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalTradeWithPlayer; import org.bukkit.entity.Villager; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTradingLook.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTradingLook.java index 1bf645f..ed0815d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTradingLook.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIPlayerTradingLook.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.EntityVillager; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalLookAtTradingPlayer; +import net.minecraft.server.v1_8_R3.EntityVillager; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalLookAtTradingPlayer; import org.bukkit.entity.Villager; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomLookaround.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomLookaround.java index e938cc6..f378b6d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomLookaround.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomLookaround.java @@ -2,8 +2,8 @@ import org.bukkit.entity.LivingEntity; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalRandomLookaround; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalRandomLookaround; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomStroll.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomStroll.java index 300ea37..00addb9 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomStroll.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRandomStroll.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.EntityCreature; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalRandomStroll; +import net.minecraft.server.v1_8_R3.EntityCreature; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalRandomStroll; import org.bukkit.entity.Creature; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRestrictSun.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRestrictSun.java index d0164df..7e2c5f1 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRestrictSun.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AIRestrictSun.java @@ -2,9 +2,9 @@ import org.bukkit.entity.Creature; -import net.minecraft.server.v1_7_R4.EntityCreature; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalRestrictSun; +import net.minecraft.server.v1_8_R3.EntityCreature; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalRestrictSun; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; 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 544960c..1edb040 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,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalFloat; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalFloat; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetBehaviorEx.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetBehaviorEx.java index 87dd3f0..587868b 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetBehaviorEx.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetBehaviorEx.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.EntityLiving; +import net.minecraft.server.v1_8_R3.EntityLiving; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetHurtBy.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetHurtBy.java index c8f86e2..767accf 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetHurtBy.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/api/ai/behaviors/AITargetHurtBy.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.EntityCreature; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalHurtByTarget; +import net.minecraft.server.v1_8_R3.EntityCreature; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalHurtByTarget; import org.bukkit.entity.Creature; 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 4004b3b..8b0caa1 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 @@ -1,14 +1,17 @@ package de.ntcomputer.minecraft.controllablemobs.api.ai.behaviors; -import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_8_R3.Entity; +import net.minecraft.server.v1_8_R3.IEntitySelector; +import net.minecraft.server.v1_8_R3.PathfinderGoal; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.LivingEntity; +import com.google.common.base.Predicate; + import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.api.ai.EntityFilter; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; -import de.ntcomputer.minecraft.controllablemobs.implementation.ai.EntitySelector; import de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors.PathfinderGoalTargetNearest; /** @@ -20,7 +23,7 @@ * */ public class AITargetNearest extends AITargetBehaviorEx { - private final EntitySelector entitySelector; + private final Predicate entitySelector; /** * Create with an automatically given priority. @@ -105,11 +108,12 @@ public AITargetNearest(int priority, double maximumDistance, boolean ignoreInvul */ public AITargetNearest(int priority, double maximumDistance, boolean ignoreInvulnerability, int maximumNoEyeContactTicks, EntityFilter filter, Class... targetClasses) throws IllegalArgumentException { super(priority, maximumNoEyeContactTicks, ignoreInvulnerability, maximumDistance, targetClasses); - this.entitySelector = filter==null ? null : new EntitySelector(filter); + this.entitySelector = IEntitySelector.d; } @Override public PathfinderGoal createPathfinderGoal(CraftControllableMob mob) { + // TODO: FARLO SUL SERIO 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/ControllableMobHelper.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ControllableMobHelper.java index 7e2b510..5ca3f5a 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ControllableMobHelper.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ControllableMobHelper.java @@ -13,13 +13,13 @@ public class ControllableMobHelper { @SuppressWarnings("deprecation") - public static Class getNmsEntityClass(final Class entityClass) throws IllegalArgumentException { + public static Class getNmsEntityClass(final Class entityClass) throws IllegalArgumentException { if(entityClass==null) throw new IllegalArgumentException("entityClass must not be null"); - if(entityClass==HumanEntity.class || entityClass==Player.class) return net.minecraft.server.v1_7_R4.EntityHuman.class; - if(entityClass==Monster.class) return net.minecraft.server.v1_7_R4.EntityMonster.class; - if(entityClass==Creature.class) return net.minecraft.server.v1_7_R4.EntityCreature.class; - if(entityClass==Animals.class) return net.minecraft.server.v1_7_R4.EntityAnimal.class; - if(entityClass==LivingEntity.class) return net.minecraft.server.v1_7_R4.EntityLiving.class; + if(entityClass==HumanEntity.class || entityClass==Player.class) return net.minecraft.server.v1_8_R3.EntityHuman.class; + if(entityClass==Monster.class) return net.minecraft.server.v1_8_R3.EntityMonster.class; + if(entityClass==Creature.class) return net.minecraft.server.v1_8_R3.EntityCreature.class; + if(entityClass==Animals.class) return net.minecraft.server.v1_8_R3.EntityAnimal.class; + if(entityClass==LivingEntity.class) return net.minecraft.server.v1_8_R3.EntityLiving.class; for(EntityType entityType: EntityType.values()) { if(entityType.getEntityClass()==null || entityType.getTypeId()==-1) continue; @@ -32,12 +32,12 @@ public static Class getNmsEntityC } @SuppressWarnings("deprecation") - public static Class getNmsEntityClass(final EntityType entityType) throws IllegalArgumentException { + public static Class getNmsEntityClass(final EntityType entityType) throws IllegalArgumentException { if(entityType==null) throw new IllegalArgumentException("EntityType must not be null"); - if(entityType==EntityType.PLAYER) return net.minecraft.server.v1_7_R4.EntityHuman.class; + if(entityType==EntityType.PLAYER) return net.minecraft.server.v1_8_R3.EntityHuman.class; try { - final Class entityClass = NativeInterfaces.ENTITYTYPES.METHOD_GETCLASSBYID.invoke(entityType.getTypeId()); + final Class entityClass = NativeInterfaces.ENTITYTYPES.METHOD_GETCLASSBYID.invoke(entityType.getTypeId()); if(entityClass==null) throw new IllegalArgumentException("EntityType "+entityType+" is not resolvable to a net.minecraft Class"); return entityClass; } catch(Exception e) { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMob.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMob.java index df5e154..4c0ec4b 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMob.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMob.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation; -import net.minecraft.server.v1_7_R4.EntityInsentient; +import net.minecraft.server.v1_8_R3.EntityInsentient; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAttributes.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAttributes.java index a83c2cd..49757f2 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAttributes.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/CraftControllableMobAttributes.java @@ -1,9 +1,9 @@ package de.ntcomputer.minecraft.controllablemobs.implementation; -import net.minecraft.server.v1_7_R4.AttributeInstance; -import net.minecraft.server.v1_7_R4.AttributeModifiable; -import net.minecraft.server.v1_7_R4.EntityInsentient; -import net.minecraft.server.v1_7_R4.IAttribute; +import net.minecraft.server.v1_8_R3.AttributeInstance; +import net.minecraft.server.v1_8_R3.AttributeModifiable; +import net.minecraft.server.v1_8_R3.EntityInsentient; +import net.minecraft.server.v1_8_R3.IAttribute; import de.ntcomputer.minecraft.controllablemobs.api.ControllableMobAttributes; import de.ntcomputer.minecraft.controllablemobs.api.attributes.Attribute; import de.ntcomputer.minecraft.controllablemobs.implementation.attributes.CraftAttribute; @@ -90,32 +90,36 @@ void dispose(boolean reset) { @Override public boolean canSwim() { - return NativeInterfaces.NAVIGATION.FIELD_CANSWIM.get(this.nmsEntity.getNavigation()); + //TODO return NativeInterfaces.NAVIGATION.FIELD_CANSWIM.get(this.nmsEntity.getNavigation()); + return true; } @Override public boolean getAvoidWater() { - return NativeInterfaces.NAVIGATION.FIELD_AVOIDWATER.get(this.nmsEntity.getNavigation()); + //TODO return NativeInterfaces.NAVIGATION.FIELD_AVOIDWATER.get(this.nmsEntity.getNavigation()); + return false; } @Override public void setAvoidWater(boolean avoid) { - NativeInterfaces.NAVIGATION.FIELD_AVOIDWATER.set(this.nmsEntity.getNavigation(), avoid); + //TODO NativeInterfaces.NAVIGATION.FIELD_AVOIDWATER.set(this.nmsEntity.getNavigation(), avoid); } @Override public boolean getMoveThroughDoors() { - return NativeInterfaces.NAVIGATION.FIELD_USEOPENDOOR.get(this.nmsEntity.getNavigation()); + //TODO return NativeInterfaces.NAVIGATION.FIELD_USEOPENDOOR.get(this.nmsEntity.getNavigation()); + return false; } @Override public void setMoveThroughDoors(boolean moveThroughDoors) { - NativeInterfaces.NAVIGATION.FIELD_USEOPENDOOR.set(this.nmsEntity.getNavigation(), moveThroughDoors); + //TODO NativeInterfaces.NAVIGATION.FIELD_USEOPENDOOR.set(this.nmsEntity.getNavigation(), moveThroughDoors); } @Override public boolean canMoveThroughClosedDoors() { - return NativeInterfaces.NAVIGATION.FIELD_USECLOSEDDOOR.get(this.nmsEntity.getNavigation()); + //TODO return NativeInterfaces.NAVIGATION.FIELD_USECLOSEDDOOR.get(this.nmsEntity.getNavigation()); + return false; } } diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionDie.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionDie.java index 77ba6e1..89a506f 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionDie.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionDie.java @@ -1,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R4.DamageSource; -import net.minecraft.server.v1_7_R4.EntityLiving; +import net.minecraft.server.v1_8_R3.DamageSource; +import net.minecraft.server.v1_8_R3.EntityLiving; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionFollow.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionFollow.java index b5e8028..953c79d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionFollow.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionFollow.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R4.EntityLiving; +import net.minecraft.server.v1_8_R3.EntityLiving; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftLivingEntity; import org.bukkit.entity.LivingEntity; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLook.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLook.java index 6646c52..23ed851 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLook.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLook.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R4.World; +import net.minecraft.server.v1_8_R3.World; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; public abstract class ControllableMobActionLook extends ControllableMobActionBase { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookBlock.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookBlock.java index ce61a85..a06da42 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookBlock.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookBlock.java @@ -1,9 +1,9 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R4.World; +import net.minecraft.server.v1_8_R3.World; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_7_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; public class ControllableMobActionLookBlock extends ControllableMobActionLook { private final double[] values; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookEntity.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookEntity.java index eee18b7..bf2953a 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookEntity.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionLookEntity.java @@ -1,14 +1,14 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R4.World; +import net.minecraft.server.v1_8_R3.World; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity; import org.bukkit.entity.Entity; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; public class ControllableMobActionLookEntity extends ControllableMobActionLook { - private final net.minecraft.server.v1_7_R4.Entity entity; + private final net.minecraft.server.v1_8_R3.Entity entity; public ControllableMobActionLookEntity(final CraftControllableMob mob, final Entity entity) { super(mob.getActionManager()); diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionMoveAbstract.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionMoveAbstract.java index d32447d..d8d3761 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionMoveAbstract.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionMoveAbstract.java @@ -1,9 +1,9 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R4.World; +import net.minecraft.server.v1_8_R3.World; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_7_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTarget.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTarget.java index b177791..78b5885 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTarget.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTarget.java @@ -1,8 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R4.EntityLiving; +import net.minecraft.server.v1_8_R3.EntityLiving; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftLivingEntity; import org.bukkit.entity.LivingEntity; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTeleportEntity.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTeleportEntity.java index 7538153..39109c8 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTeleportEntity.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/actions/ControllableMobActionTeleportEntity.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.actions; -import net.minecraft.server.v1_7_R4.Entity; +import net.minecraft.server.v1_8_R3.Entity; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentHandlers.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentHandlers.java index 302eb1d..a482172 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentHandlers.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentHandlers.java @@ -3,14 +3,15 @@ import java.util.HashMap; import java.util.Map; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalBreakDoor; -import net.minecraft.server.v1_7_R4.PathfinderGoalDoorInteract; -import net.minecraft.server.v1_7_R4.PathfinderGoalFloat; -import net.minecraft.server.v1_7_R4.PathfinderGoalOpenDoor; +import net.minecraft.server.v1_8_R3.Navigation; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalBreakDoor; +import net.minecraft.server.v1_8_R3.PathfinderGoalDoorInteract; +import net.minecraft.server.v1_8_R3.PathfinderGoalFloat; +import net.minecraft.server.v1_8_R3.PathfinderGoalOpenDoor; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; -import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.NativeInterfaces; +//import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.NativeInterfaces; @SuppressWarnings("unchecked") public final class AIComponentHandlers { @@ -34,12 +35,14 @@ private static void add(Class goalClass, AIComponentListener closedDoorListener = new AIComponentListener() { @Override public void onAdd(CraftControllableMob mob, PathfinderGoalDoorInteract goal) { - NativeInterfaces.NAVIGATION.FIELD_USECLOSEDDOOR.set(mob.nmsEntity.getNavigation(), true); + ((Navigation) mob.nmsEntity.getNavigation()).a(true); + //NativeInterfaces.NAVIGATION.FIELD_USECLOSEDDOOR.set(mob.nmsEntity.getNavigation(), true); } @Override public void onRemoved(CraftControllableMob mob, PathfinderGoalDoorInteract goal) { if(!mob.getAI().hasBehavior(AIType.ACTION_DOOROPEN, AIType.ACTION_DOORBREAK)) { - NativeInterfaces.NAVIGATION.FIELD_USECLOSEDDOOR.set(mob.nmsEntity.getNavigation(), false); + ((Navigation) mob.nmsEntity.getNavigation()).a(false); + //NativeInterfaces.NAVIGATION.FIELD_USECLOSEDDOOR.set(mob.nmsEntity.getNavigation(), false); } } }; @@ -48,12 +51,14 @@ public void onRemoved(CraftControllableMob mob, PathfinderGoalDoorInteract go add(PathfinderGoalFloat.class, new AIComponentListener() { @Override public void onAdd(CraftControllableMob mob, PathfinderGoalFloat goal) { - NativeInterfaces.NAVIGATION.FIELD_CANSWIM.set(mob.nmsEntity.getNavigation(), true); + ((Navigation) mob.nmsEntity.getNavigation()).b(true); + // TODO: NativeInterfaces.NAVIGATION.FIELD_CANSWIM.set(mob.nmsEntity.getNavigation(), true); } @Override public void onRemoved(CraftControllableMob mob, PathfinderGoalFloat goal) { if(!mob.getAI().hasBehavior(AIType.MOVE_SWIM)) { - NativeInterfaces.NAVIGATION.FIELD_CANSWIM.set(mob.nmsEntity.getNavigation(), false); + ((Navigation) mob.nmsEntity.getNavigation()).b(false); + // TODO: NativeInterfaces.NAVIGATION.FIELD_CANSWIM.set(mob.nmsEntity.getNavigation(), false); } } }); diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentListener.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentListener.java index 9e1f7db..9075f41 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentListener.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/AIComponentListener.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai; -import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoal; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; public interface AIComponentListener { 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 c41067d..5719a38 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 @@ -11,11 +11,11 @@ import java.util.Map; import java.util.Set; -import net.minecraft.server.v1_7_R4.EntityInsentient; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalSelector; +import net.minecraft.server.v1_8_R3.EntityInsentient; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalSelector; -import org.bukkit.craftbukkit.v1_7_R4.util.UnsafeList; +import org.bukkit.craftbukkit.v1_8_R3.util.UnsafeList; import org.bukkit.entity.LivingEntity; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIState; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/CraftAIPart.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/CraftAIPart.java index 317fed6..205f880 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/CraftAIPart.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/CraftAIPart.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai; -import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoal; import org.bukkit.entity.LivingEntity; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/EntitySelector.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/EntitySelector.java deleted file mode 100644 index 693c19f..0000000 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/EntitySelector.java +++ /dev/null @@ -1,23 +0,0 @@ -package de.ntcomputer.minecraft.controllablemobs.implementation.ai; - -import net.minecraft.server.v1_7_R4.Entity; -import net.minecraft.server.v1_7_R4.IEntitySelector; -import de.ntcomputer.minecraft.controllablemobs.api.ai.EntityFilter; - -public final class EntitySelector implements IEntitySelector { - private final EntityFilter filter; - - public EntitySelector(final EntityFilter filter) { - this.filter = filter; - } - - @Override - public boolean a(Entity entity) { - return this.isEntityValid(entity); - } - - public boolean isEntityValid(Entity entity) { - return this.filter.isEntityValid(entity.getBukkitEntity()); - } - -} diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalAIMonitor.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalAIMonitor.java index ae67ded..316ce85 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalAIMonitor.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalAIMonitor.java @@ -3,7 +3,7 @@ import java.util.HashSet; import java.util.List; -import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoal; import de.ntcomputer.minecraft.controllablemobs.api.ai.AIState; import de.ntcomputer.minecraft.controllablemobs.implementation.ai.AIController; import de.ntcomputer.minecraft.controllablemobs.implementation.ai.CraftAIPart; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionFollow.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionFollow.java index 402b3ff..79bc0e8 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionFollow.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionFollow.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors; -import net.minecraft.server.v1_7_R4.PathEntity; +import net.minecraft.server.v1_8_R3.PathEntity; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; import de.ntcomputer.minecraft.controllablemobs.implementation.actions.ControllableMobActionFollow; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionMoveAbstract.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionMoveAbstract.java index aa2f566..8237136 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionMoveAbstract.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionMoveAbstract.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors; -import net.minecraft.server.v1_7_R4.PathEntity; +import net.minecraft.server.v1_8_R3.PathEntity; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; import de.ntcomputer.minecraft.controllablemobs.implementation.actions.ControllableMobActionMoveAbstract; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionTarget.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionTarget.java index 2cee90c..278f58a 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionTarget.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalActionTarget.java @@ -1,6 +1,5 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors; -import net.minecraft.server.v1_7_R4.EntityCreature; import de.ntcomputer.minecraft.controllablemobs.api.actions.ActionType; import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; import de.ntcomputer.minecraft.controllablemobs.implementation.actions.ControllableMobActionTarget; @@ -24,7 +23,7 @@ protected void onStartAction() { // set target for AI goals this.mob.nmsEntity.setGoalTarget(this.action.target); // set target for old AI & bukkit interface (so "getTarget" on Creature will return the correct entity) - if(this.mob.nmsEntity instanceof EntityCreature) ((EntityCreature) this.mob.nmsEntity).target = this.action.target; + //if(this.mob.nmsEntity instanceof EntityCreature) ((EntityCreature) this.mob.nmsEntity).target = this.action.target; } @Override 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 76d8f55..d7641a7 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 @@ -1,12 +1,12 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.ai.behaviors; -import net.minecraft.server.v1_7_R4.EntityCreature; -import net.minecraft.server.v1_7_R4.EntityHuman; -import net.minecraft.server.v1_7_R4.EntityInsentient; -import net.minecraft.server.v1_7_R4.EntityLiving; +import net.minecraft.server.v1_8_R3.EntityCreature; +import net.minecraft.server.v1_8_R3.EntityHuman; +import net.minecraft.server.v1_8_R3.EntityInsentient; +import net.minecraft.server.v1_8_R3.EntityLiving; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity; -import org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftLivingEntity; +import org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory; import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; @@ -57,7 +57,7 @@ protected boolean target(EntityLiving target, EntityTargetEvent.TargetReason rea if(this.maximumDistanceSquared>0 && NativeInterfaces.ENTITY.METHOD_GETDISTANCETOENTITYSQUARED.invoke(this.entity,target)>this.maximumDistanceSquared) return false; // eye contact check - if(this.maximumNoEyeContactTicks>0 && !this.entity.getEntitySenses().canSee(target)) return false; + if(this.maximumNoEyeContactTicks>0 && !this.entity.getEntitySenses().a(target)) return false; // call target event final EntityTargetLivingEntityEvent event = CraftEventFactory.callEntityTargetLivingEvent(this.entity, target, reason); @@ -66,7 +66,7 @@ protected boolean target(EntityLiving target, EntityTargetEvent.TargetReason rea // set new target! target = ((CraftLivingEntity) event.getTarget()).getHandle(); this.entity.setGoalTarget(target); - if(this.entity instanceof EntityCreature) ((EntityCreature) this.entity).target = target; + if(this.entity instanceof EntityCreature) ((EntityCreature) this.entity).setGoalTarget(target); this.mob.adjustMaximumNavigationDistance(Math.sqrt(NativeInterfaces.ENTITY.METHOD_GETDISTANCETOENTITYSQUARED.invoke(this.entity, target) * 2)); return true; @@ -85,7 +85,7 @@ protected boolean canContinue() { // eye contact check if(this.maximumNoEyeContactTicks>0) { - if(this.entity.getEntitySenses().canSee(target)) this.noEyeContactTicks = 0; + if(this.entity.getEntitySenses().a(target)) this.noEyeContactTicks = 0; else { if(++this.noEyeContactTicks > this.maximumNoEyeContactTicks) return false; } diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetNearest.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetNearest.java index 1473bce..57dea9b 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetNearest.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/ai/behaviors/PathfinderGoalTargetNearest.java @@ -4,29 +4,30 @@ import java.util.Collections; import java.util.List; -import net.minecraft.server.v1_7_R4.DistanceComparator; -import net.minecraft.server.v1_7_R4.EntityHuman; -import net.minecraft.server.v1_7_R4.EntityLiving; +import net.minecraft.server.v1_8_R3.PathfinderGoalNearestAttackableTarget.DistanceComparator; +import net.minecraft.server.v1_8_R3.Entity; +import net.minecraft.server.v1_8_R3.EntityHuman; +import net.minecraft.server.v1_8_R3.EntityLiving; import org.bukkit.event.entity.EntityTargetEvent.TargetReason; +import com.google.common.base.Predicate; + import de.ntcomputer.minecraft.controllablemobs.implementation.CraftControllableMob; -import de.ntcomputer.minecraft.controllablemobs.implementation.ai.EntitySelector; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.NativeInterfaces; public class PathfinderGoalTargetNearest extends PathfinderGoalTargetEx { private final double searchDistance; private final DistanceComparator comparator; - private final EntitySelector entitySelector; + private final Predicate entitySelector; - public PathfinderGoalTargetNearest(CraftControllableMob mob, int maximumNoEyeContactTicks, boolean ignoreInvulnerability, double maximumDistance, Class[] targetClasses, EntitySelector entitySelector) { + public PathfinderGoalTargetNearest(CraftControllableMob mob, int maximumNoEyeContactTicks, boolean ignoreInvulnerability, double maximumDistance, Class[] targetClasses, Predicate entitySelector) { super(mob, maximumNoEyeContactTicks, ignoreInvulnerability, maximumDistance, targetClasses); this.searchDistance = maximumDistance<=0 ? 500 : maximumDistance; this.comparator = new DistanceComparator(entity); this.entitySelector = entitySelector; } - @SuppressWarnings("unchecked") @Override protected boolean canStart() { final List entities = new ArrayList(); @@ -35,7 +36,7 @@ protected boolean canStart() { if(targetClass==EntityHuman.class) { this.findNearbyPlayersOptimized(this.entity, entities); } else { - entities.addAll(NativeInterfaces.WORLD.METHOD_SEARCHENTITIES.invoke(this.entity.world, targetClass, this.entity.boundingBox.grow(this.searchDistance, this.searchDistance/4.0, this.searchDistance), this.entitySelector)); + entities.addAll(NativeInterfaces.WORLD.METHOD_SEARCHENTITIES.invoke(this.entity.world, targetClass, this.entity.getBoundingBox().grow(this.searchDistance, this.searchDistance/4.0, this.searchDistance), this.entitySelector)); } } @@ -52,7 +53,7 @@ private void findNearbyPlayersOptimized(final EntityLiving entity, final List nativeModifiers = NativeInterfaces.ATTRIBUTEMODIFIABLE.METHOD_GETMODIFIERS.invoke(nativeAttribute); - for(net.minecraft.server.v1_7_R4.AttributeModifier nativeModifier: nativeModifiers) { + Collection nativeModifiers = NativeInterfaces.ATTRIBUTEMODIFIABLE.METHOD_GETMODIFIERS.invoke(nativeAttribute); + for(net.minecraft.server.v1_8_R3.AttributeModifier nativeModifier: nativeModifiers) { UUID uuid = NativeInterfaces.ATTRIBUTEMODIFIER.METHOD_GETUUID.invoke(nativeModifier); CraftAttributeModifier modifier = modifierMap.get(uuid); if(modifier!=null) modifier.setAttributeAttached(this); @@ -50,10 +50,10 @@ public double getValue() { return nativeAttribute.getValue(); } - private CraftAttributeModifier[] resolveNativeModifiers(Collection nativeModifiers) { + private CraftAttributeModifier[] resolveNativeModifiers(Collection nativeModifiers) { CraftAttributeModifier[] result = new CraftAttributeModifier[nativeModifiers.size()]; int i = 0; - for(net.minecraft.server.v1_7_R4.AttributeModifier nativeModifier: nativeModifiers) { + for(net.minecraft.server.v1_8_R3.AttributeModifier nativeModifier: nativeModifiers) { UUID uuid = NativeInterfaces.ATTRIBUTEMODIFIER.METHOD_GETUUID.invoke(nativeModifier); CraftAttributeModifier modifier = modifierMap.get(uuid); if(modifier==null) { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttributeModifier.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttributeModifier.java index b4695ca..8f55758 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttributeModifier.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/attributes/CraftAttributeModifier.java @@ -15,7 +15,7 @@ public class CraftAttributeModifier implements AttributeModifier { private final String name; private final double value; private final ModifyOperation operation; - private net.minecraft.server.v1_7_R4.AttributeModifier nativeModifier = null; + private net.minecraft.server.v1_8_R3.AttributeModifier nativeModifier = null; private final Set attachedAttributes = new HashSet(); private final boolean custom; @@ -27,7 +27,7 @@ public CraftAttributeModifier(UUID uniqueID, String name, double modifierValue, this.custom = true; } - public CraftAttributeModifier(UUID uuid, net.minecraft.server.v1_7_R4.AttributeModifier nativeModifier) { + public CraftAttributeModifier(UUID uuid, net.minecraft.server.v1_8_R3.AttributeModifier nativeModifier) { this.uniqueID = uuid; this.nativeModifier = nativeModifier; this.name = NativeInterfaces.ATTRIBUTEMODIFIER.METHOD_GETNAME.invoke(nativeModifier); @@ -51,9 +51,9 @@ public double getModifierValue() { return this.value; } - net.minecraft.server.v1_7_R4.AttributeModifier getNativeModifier() { + net.minecraft.server.v1_8_R3.AttributeModifier getNativeModifier() { if(this.nativeModifier==null) { - this.nativeModifier = new net.minecraft.server.v1_7_R4.AttributeModifier(uniqueID, name, value, this.operation.getIntType()); + this.nativeModifier = new net.minecraft.server.v1_8_R3.AttributeModifier(uniqueID, name, value, this.operation.getIntType()); } return this.nativeModifier; } diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifiable.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifiable.java index 9c180c6..30d7fbb 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifiable.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifiable.java @@ -4,9 +4,9 @@ import java.util.Collections; import java.util.UUID; -import net.minecraft.server.v1_7_R4.AttributeModifiable; -import net.minecraft.server.v1_7_R4.AttributeModifier; -import net.minecraft.server.v1_7_R4.IAttribute; +import net.minecraft.server.v1_8_R3.AttributeModifiable; +import net.minecraft.server.v1_8_R3.AttributeModifier; +import net.minecraft.server.v1_8_R3.IAttribute; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public final class NmsAttributeModifiable { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifier.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifier.java index ad02942..7e3b33d 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifier.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeModifier.java @@ -2,7 +2,7 @@ import java.util.UUID; -import net.minecraft.server.v1_7_R4.AttributeModifier; +import net.minecraft.server.v1_8_R3.AttributeModifier; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public final class NmsAttributeModifier { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeRanged.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeRanged.java index a32f053..b2b7687 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeRanged.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsAttributeRanged.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.AttributeRanged; +import net.minecraft.server.v1_8_R3.AttributeRanged; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldDouble; public final class NmsAttributeRanged { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerJump.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerJump.java index 6b5fba9..4930851 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerJump.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerJump.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.ControllerJump; +import net.minecraft.server.v1_8_R3.ControllerJump; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public class NmsControllerJump { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerLook.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerLook.java index 1a04bb5..e8623ce 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerLook.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsControllerLook.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.ControllerLook; +import net.minecraft.server.v1_8_R3.ControllerLook; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public class NmsControllerLook { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntity.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntity.java index 042827d..1bb0da2 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntity.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntity.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.Entity; +import net.minecraft.server.v1_8_R3.Entity; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public class NmsEntity { @@ -12,7 +12,7 @@ public class GetEntityDistanceSquared extends NativeMethodPublic { public double invoke(final Entity entity, final Entity target) { try { // method returns difLocX² + difLocY² + difLocZ² for entity - return entity.e(target); + return entity.h(target); } catch(Throwable e) { this.handleException(e); return 0; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityInsentient.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityInsentient.java index d207672..561c19c 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityInsentient.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityInsentient.java @@ -1,7 +1,7 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.EntityInsentient; -import net.minecraft.server.v1_7_R4.PathfinderGoalSelector; +import net.minecraft.server.v1_8_R3.EntityInsentient; +import net.minecraft.server.v1_8_R3.PathfinderGoalSelector; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldObject; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; @@ -13,7 +13,8 @@ public final class NmsEntityInsentient { public final class GetVerticalHeadSpeed extends NativeMethodPublic { public int invoke(EntityInsentient entity) { try { - return entity.x(); + //TODO TROVARE return entity.x(); + return 40; } catch(Throwable e) { this.handleException(e); return 40; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityTypes.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityTypes.java index cbee8dd..889c397 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityTypes.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsEntityTypes.java @@ -1,14 +1,13 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.Entity; -import net.minecraft.server.v1_7_R4.EntityTypes; +import net.minecraft.server.v1_8_R3.Entity; +import net.minecraft.server.v1_8_R3.EntityTypes; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public final class NmsEntityTypes { public final GetEntityClassById METHOD_GETCLASSBYID = new GetEntityClassById(); public final class GetEntityClassById extends NativeMethodPublic { - @SuppressWarnings("unchecked") public Class invoke(int entityTypeId) { try { return EntityTypes.a(entityTypeId); diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsGenericAttributes.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsGenericAttributes.java index 64ea8fd..0cbbe9a 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsGenericAttributes.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsGenericAttributes.java @@ -1,15 +1,15 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.GenericAttributes; -import net.minecraft.server.v1_7_R4.IAttribute; +import net.minecraft.server.v1_8_R3.GenericAttributes; +import net.minecraft.server.v1_8_R3.IAttribute; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeStaticFieldObject; public final class NmsGenericAttributes { // look at the string description in GenericAttributes class on update public final NativeStaticFieldObject STATIC_FIELD_MAXHEALTH = new NativeStaticFieldObject(GenericAttributes.class,"maxHealth"); - public final NativeStaticFieldObject STATIC_FIELD_FOLLOWRANGE = new NativeStaticFieldObject(GenericAttributes.class,"b"); + public final NativeStaticFieldObject STATIC_FIELD_FOLLOWRANGE = new NativeStaticFieldObject(GenericAttributes.class,"FOLLOW_RANGE"); public final NativeStaticFieldObject STATIC_FIELD_KNOCKBACKRESISTANCE = new NativeStaticFieldObject(GenericAttributes.class,"c"); - public final NativeStaticFieldObject STATIC_FIELD_MOVEMENTSPEED = new NativeStaticFieldObject(GenericAttributes.class,"d"); - public final NativeStaticFieldObject STATIC_FIELD_ATTACKDAMAGE = new NativeStaticFieldObject(GenericAttributes.class,"e"); + public final NativeStaticFieldObject STATIC_FIELD_MOVEMENTSPEED = new NativeStaticFieldObject(GenericAttributes.class,"MOVEMENT_SPEED"); + public final NativeStaticFieldObject STATIC_FIELD_ATTACKDAMAGE = new NativeStaticFieldObject(GenericAttributes.class,"ATTACK_DAMAGE"); } diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsIAttribute.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsIAttribute.java index cc997a1..9f1aa47 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsIAttribute.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsIAttribute.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.IAttribute; +import net.minecraft.server.v1_8_R3.IAttribute; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public final class NmsIAttribute { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsInterfacePathfinderGoal.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsInterfacePathfinderGoal.java index 4f1dd1d..7ed0bb3 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsInterfacePathfinderGoal.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsInterfacePathfinderGoal.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoal; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public final class NmsInterfacePathfinderGoal { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsNavigation.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsNavigation.java index 7a1c3ee..f8c4aff 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsNavigation.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsNavigation.java @@ -1,9 +1,8 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.EntityLiving; -import net.minecraft.server.v1_7_R4.Navigation; -import net.minecraft.server.v1_7_R4.PathEntity; -import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldBoolean; +import net.minecraft.server.v1_8_R3.EntityLiving; +import net.minecraft.server.v1_8_R3.NavigationAbstract; +import net.minecraft.server.v1_8_R3.PathEntity; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public class NmsNavigation { @@ -16,19 +15,19 @@ public class NmsNavigation { public final CreatePathToEntity METHOD_CREATEPATHTOENTITY = new CreatePathToEntity(); public final CreatePathToLocation METHOD_CREATEPATHTOLOCATION = new CreatePathToLocation(); // first of 4 booleans - public final NativeFieldBoolean FIELD_USEOPENDOOR = new NativeFieldBoolean(Navigation.class, "j"); + //public final NativeFieldBoolean FIELD_USEOPENDOOR = new NativeFieldBoolean(NmsNavigation.class, "f"); // second of 4 booleans - public final NativeFieldBoolean FIELD_USECLOSEDDOOR = new NativeFieldBoolean(Navigation.class, "k"); + //public final NativeFieldBoolean FIELD_USECLOSEDDOOR = new NativeFieldBoolean(NmsNavigation.class, "f"); // third of 4 booleans - public final NativeFieldBoolean FIELD_AVOIDWATER = new NativeFieldBoolean(Navigation.class, "l"); + //public final NativeFieldBoolean FIELD_AVOIDWATER = new NativeFieldBoolean(NmsNavigation.class, "f"); // last of 4 booleans - public final NativeFieldBoolean FIELD_CANSWIM = new NativeFieldBoolean(Navigation.class, "m"); + //public final NativeFieldBoolean FIELD_CANSWIM = new NativeFieldBoolean(NmsNavigation.class, "f"); public class IsMoveFinished extends NativeMethodPublic { - public boolean invoke(final Navigation navigation) { + public boolean invoke(final NavigationAbstract navigation) { try { // return (this.c == null) || (this.c.b()); - return navigation.g(); + return navigation.m(); } catch(Throwable e) { this.handleException(e); return true; @@ -37,10 +36,10 @@ public boolean invoke(final Navigation navigation) { } public class StopMove extends NativeMethodPublic { - public void invoke(final Navigation navigation) { + public void invoke(final NavigationAbstract navigation) { try { // this.c = null; - navigation.h(); + navigation.k(); } catch(Throwable e) { this.handleException(e); } @@ -48,7 +47,7 @@ public void invoke(final Navigation navigation) { } public class MoveToEntity extends NativeMethodPublic { - public void invoke(final Navigation navigation, EntityLiving entity, double movementSpeedMultiplicator) { + public void invoke(final NavigationAbstract navigation, EntityLiving entity, double movementSpeedMultiplicator) { try { navigation.a(entity, movementSpeedMultiplicator); } catch(Throwable e) { @@ -58,7 +57,7 @@ public void invoke(final Navigation navigation, EntityLiving entity, double move } public class MoveAlongPath extends NativeMethodPublic { - public void invoke(final Navigation navigation, PathEntity path, double movementSpeedMultiplicator) { + public void invoke(final NavigationAbstract navigation, PathEntity path, double movementSpeedMultiplicator) { try { navigation.a(path, movementSpeedMultiplicator); } catch(Throwable e) { @@ -68,7 +67,7 @@ public void invoke(final Navigation navigation, PathEntity path, double movement } public class CreatePathToEntity extends NativeMethodPublic { - public PathEntity invoke(final Navigation navigation, final EntityLiving entity) { + public PathEntity invoke(final NavigationAbstract navigation, final EntityLiving entity) { try { return navigation.a(entity); } catch(Throwable e) { @@ -79,7 +78,7 @@ public PathEntity invoke(final Navigation navigation, final EntityLiving entity) } public class CreatePathToLocation extends NativeMethodPublic { - public PathEntity invoke(final Navigation navigation, final double x, final double y, final double z) { + public PathEntity invoke(final NavigationAbstract navigation, final double x, final double y, final double z) { try { return navigation.a(x,y,z); } catch(Throwable e) { diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelector.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelector.java index 44442cc..c537ff1 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelector.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelector.java @@ -1,9 +1,9 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.PathfinderGoal; -import net.minecraft.server.v1_7_R4.PathfinderGoalSelector; +import net.minecraft.server.v1_8_R3.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoalSelector; -import org.bukkit.craftbukkit.v1_7_R4.util.UnsafeList; +import org.bukkit.craftbukkit.v1_8_R3.util.UnsafeList; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldObject; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelectorItem.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelectorItem.java index 5690ac2..5c83f21 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelectorItem.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsPathfinderGoalSelectorItem.java @@ -1,6 +1,6 @@ package de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.server; -import net.minecraft.server.v1_7_R4.PathfinderGoal; +import net.minecraft.server.v1_8_R3.PathfinderGoal; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldInt; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.primitives.NativeFieldObject; diff --git a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsWorld.java b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsWorld.java index 734604d..89e0bf6 100644 --- a/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsWorld.java +++ b/src/main/java/de/ntcomputer/minecraft/controllablemobs/implementation/nativeinterfaces/server/NmsWorld.java @@ -3,18 +3,18 @@ import java.util.Collections; import java.util.List; -import net.minecraft.server.v1_7_R4.AxisAlignedBB; -import net.minecraft.server.v1_7_R4.Entity; -import net.minecraft.server.v1_7_R4.IEntitySelector; -import net.minecraft.server.v1_7_R4.World; +import com.google.common.base.Predicate; + +import net.minecraft.server.v1_8_R3.AxisAlignedBB; +import net.minecraft.server.v1_8_R3.Entity; +import net.minecraft.server.v1_8_R3.World; import de.ntcomputer.minecraft.controllablemobs.implementation.nativeinterfaces.system.NativeMethodPublic; public class NmsWorld { public final SearchEntities METHOD_SEARCHENTITIES = new SearchEntities(); public class SearchEntities extends NativeMethodPublic { - @SuppressWarnings("unchecked") - public List invoke(World world, Class classLookingFor, AxisAlignedBB area, IEntitySelector entitySelector) { + public List invoke(World world, Class classLookingFor, AxisAlignedBB area, Predicate entitySelector) { try { return world.a(classLookingFor, area, entitySelector); } catch(Throwable e) {