Trouble with a new PathfinderGoal

Discussion in 'Plugin Development' started by Lorinthio, Apr 17, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Lorinthio

    I've gotten a custom skeleton working below(SpawnerSkeleton). However adding this one goal, throws an error listed and doesn't work. I've looked up other threads along the same line and never found the answer. If anyone knows what to do I would be appreciative =). If you need more info, ask I'll help you as much as you can help me!


    Custom PathfinderGoal
    Code:java
    1. public class PathfinderGoalSendHome extends PathfinderGoal{
    2.  
    3. float speed;
    4. private EntityCreature entitycreature;
    5. public PathfinderGoalSendHome(EntityCreature entitycreature, Integer delay){
    6. this.speed = speed;
    7. this.entitycreature = entitycreature;
    8. }
    9.  
    10.  
    11. @Override
    12. public boolean a() {
    13. return true;
    14. }
    15.  
    16. @Override
    17. public void c(){
    18. try{
    19. if(this.entitycreature instanceof SpawnerSkeleton){
    20. double x = ((SpawnerSkeleton) this.entitycreature).getHomeSpawn().getX();
    21. double y = ((SpawnerSkeleton) this.entitycreature).getHomeSpawn().getY();
    22. double z = ((SpawnerSkeleton) this.entitycreature).getHomeSpawn().getZ();
    23. this.entitycreature.getNavigation().a(x, y, z);
    24. }
    25. }
    26. e.printStackTrace();
    27. }
    28. }
    29.  
    30.  
    31.  
    32. }


    This pathfinder gets the location from the SpawnerSkeleton custom class.
    Code:java
    1. public class SpawnerSkeleton extends EntitySkeleton {
    2.  
    3. Location homeSpawn;
    4.  
    5. public SpawnerSkeleton(World world, Location loc) {
    6. super(world);
    7.  
    8. loc = homeSpawn;
    9. this.getAttributeInstance(GenericAttributes.b).setValue(12.0D);
    10.  
    11. try {
    12. Field bField = PathfinderGoalSelector.class.getDeclaredField("b");
    13. bField.setAccessible(true);
    14. Field cField = PathfinderGoalSelector.class.getDeclaredField("c");
    15. cField.setAccessible(true);
    16. bField.set(goalSelector, new UnsafeList<PathfinderGoalSelector>());
    17. bField.set(targetSelector, new UnsafeList<PathfinderGoalSelector>());
    18. cField.set(goalSelector, new UnsafeList<PathfinderGoalSelector>());
    19. cField.set(targetSelector, new UnsafeList<PathfinderGoalSelector>());
    20. } catch (Exception exc) {
    21. exc.printStackTrace();
    22. }
    23. this.goalSelector.a(0, new PathfinderGoalFloat(this));
    24. this.goalSelector.a(1, new PathfinderGoalSendHome(this, 3));
    25. this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, EntityHuman.class, 1.0D, false));
    26. this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
    27. this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
    28. this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, true));
    29. this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget(this, EntityHuman.class, 0, true));
    30.  
    31. }
    32.  
    33. public Location getHomeSpawn(){
    34. Location spawner = this.homeSpawn;
    35. return spawner;
    36. }
    37.  
    38. @Override
    39. protected void aD() {
    40. super.aD();
    41. }
    42. }




    Error Stack
    Code:
    [16:52:59] [Server thread/INFO]: Trying to send custom skeleton home
    [16:52:59] [Server thread/WARN]: java.lang.NullPointerException
    [16:52:59] [Server thread/WARN]:    at org.bukkit.craftbukkit.v1_7_R1.entity.CraftEntity.teleport(CraftEntity.java:208)
    [16:52:59] [Server thread/WARN]:    at org.bukkit.craftbukkit.v1_7_R1.entity.CraftLivingEntity.teleport(CraftLivingEntity.java:384)
    [16:52:59] [Server thread/WARN]:    at org.bukkit.craftbukkit.v1_7_R1.entity.CraftEntity.teleport(CraftEntity.java:200)
    [16:52:59] [Server thread/WARN]:    at me.Lorinth.MobDifficulty.PathfinderGoalSendHome.c(PathfinderGoalSendHome.java:26)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.PathfinderGoalSelector.a(PathfinderGoalSelector.java:73)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.EntityInsentient.bn(EntityInsentient.java:427)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.EntityLiving.e(EntityLiving.java:1436)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.EntityInsentient.e(EntityInsentient.java:306)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.EntityMonster.e(EntityMonster.java:20)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.EntitySkeleton.e(EntitySkeleton.java:110)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.EntityLiving.h(EntityLiving.java:1299)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.EntityInsentient.h(EntityInsentient.java:150)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.EntityMonster.h(EntityMonster.java:24)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.World.entityJoinedWorld(World.java:1348)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.World.playerJoinedWorld(World.java:1329)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.World.tickEntities(World.java:1217)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.WorldServer.tickEntities(WorldServer.java:480)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:637)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457)
    [16:52:59] [Server thread/WARN]:    at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617)
     
  2. Offline

    Garris0n

    It says that c() method calls CraftEntity#teleport(). That method does not call teleport(), so uh...I don't really know what to say about that. Are you sure the code on the server is the code you posted?
     
Thread Status:
Not open for further replies.

Share This Page