[LIB] [1.7] Remote entities - Next generation NPC library [No support]

Discussion in 'Resources' started by kumpelblase2, Nov 10, 2012.

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

    TomShar

    Awesome, thanks!

    so is it possible to do things like making zombies break and place blocks?
     
  2. technically yes.
     
  3. Offline

    TomShar

    'technically'?
     
  4. It depends on how you want it exactly. Sure, you can let zombies walk around and destroy every grass block they see. But you can't - yet - let them move a path ignoring all obstacles and destroy them on their way. I mean, there'll probably be a way to even achieve that but some things are much likely still not really possible.
     
  5. Offline

    TeeePeee

    Last question - I promise xD

    Is there a way to restore mob speeds to normal after using RemoteEntity.setSpeed(...)? or must I determine the normal speed of the mob and set it to that?
     
  6. Offline

    MylesIsCool

    Is it possible to add back compatibility (for future versions), because as there is not a recommended build etc it might not work for some people as they might be using older 1.5.1 versions.

    Otherwise: Great library!
     
  7. As easy as that:
    Code:
    entity.setSpeed(DefaultEntitySpeed.<the_entity_type>);
    I'd like to have that yes, but it's too much nms code to do so.
     
  8. Offline

    hebrecht

    I'm using this library to create a 'clone' of a player on a server by creating a RemotePlayerEntity. I'm catching the Bukkit PlayerMovementEvent and using that location information to have the 'clone' mirror the movement of the player. At the moment the 'clone' moves exactly like the player, it changes it's yaw and pitch to mirror the player's yaw and pitch. The only problem I have is making the clone look in the same direction as the player is looking.

    The code I am using is as follows:

    Code:
    private Player player;
    private RemoteEntity ghost;
    private RemotePlayerEntity rc_ghost;
    private double offset = 2.0;
     
    public void createGhostOfPlayer(Player player) {
        if (ghost == null) {
            this.player = player;
            Location loc = player.getLocation();
            this.ghost = npcManager.createNamedEntity(RemoteEntityType.Human, loc, "Ghost_of_"+player.getDisplayName());
            this.ghost.getMind().clearMovementDesires();
            this.ghost.getMind().clearTargetingDesires();
            this.ghost.getMind().clearBehaviours();
            rc_ghost = (RemotePlayerEntity)this.ghost.getHandle();
            if (rc_ghost != null) {
                rc_ghost.copyTo((EntityHuman)this.ghost.getHandle(),true);
                rc_ghost.setPositionRotation(loc.getX()+offset, loc.getY(), loc.getZ(), loc.getPitch(), loc.getYaw() );       
            }
        }
    }
     
    public boolean moveGhost(Location from, Location to){
        if (ghost != null) {
            rc_ghost.setPositionRotation(to.getX()+offset, to.getY(), to.getZ(), to.getYaw(), to.getPitch() );
               
            ghost.setYaw(to.getYaw(),true);   
            ghost.setPitch(to.getPitch());
            ghost.lookAt(to);
            ghost.getMind().fixYawAt(to.getYaw());
            ghost.getMind().fixPitchAt(to.getPitch());
               
            return true;
        }
        return false;
    }
    I manage to briefly make the clone look in the same direction as the player, but it appears as if some other process is causing the head to rotate back to some yaw position (note that the pitch of the clone's head is not affected). I've initially thought that the Mind of the RemoteEntity might be causing this (hence disabling all behaviour when the clone is created), but I still get the head rotating back.

    Do I need to get the location a player is looking at and set the clones look location using EntityLiving's ControllerLook member? The problem with this is that there does not seem to be a method for getting the exact direction a player is looking.

    Any suggestions are more than welcome.
     
  9. Another update (1.5.1)!

    Changes:
    Code:
    - Fixed some desire types
    - Fixed default desires for cave spider
    - Updated wrong desire logics (These were a lot)
     
  10. Offline

    MylesIsCool

    Hi there,

    I've got my entity to spawn at players location on command but it seems that it spawns at spawn then takes up to a minute to goto the location. Is this a problem my end or the plugin?

    (Edit: Looks like this is only a human bug, with enderdragon etc works nicely :( )

    Thanks
     
  11. Offline

    hebrecht

    I managed to solve the problem of head rotation of Remote Entities. Basically the solution was that RemoteEntities does not have functionality to fix the head yaw rotation in a similar manner as the entity pitch and entity yaw is fixed using RemoteEntity.setFixedPitch and RemoteEntity.setFixedYaw. I've added some methods to RemoteEntities.java, RemoteBaseEntity.java and Mind.java to address this issue.

    How can I go about submitting the proposed changes for inclusion in the next update?
     
  12. Offline

    MylesIsCool

    I believe you need to fork it on github then submit a pull request
     
  13. Offline

    JeroenV

    I've been trying this library out for a few hours now and first of all I'd like to say "Great job on making this". However I am a tad confused as to why some Desires/Behaviours are acting a bit weird, but it's most likely just because of my doing.

    Here are my notifications of which I'd like to know why this is happening:

    1. I noticed that MoveToLocation desire only worked with zombies.
    2. When spawning in a NamedEntity they would first be invisible for about 2 minutes and then they magically appear.
    3. After using an array of behaviours and Desires and testing them out for a while, it gave me a few question:
    a) When using DesireKillTarget(re,(LivingEntity) e.getPlayer()),1); the entity would move a maximum of about 3 blocks and after hitting me once it would stop.
    b) When using DesireMoveToTarget I figured I would have to set the target first so I tried using DesireFindNearestTarget(re,Player.class,5f,false,5) but nothing happened.
    c) When using DamageBehavior I noticed that it didn't trigger when I hit the entity.

    All I really want to do is let a group of zombies walk from one location to another and when encountering 'certain' players in their path they would attack them. After that they continue to their destination.


    Thanks in advance!

    Greets,
    Jero
     
    MylesIsCool likes this.
  14. hebrecht : Thanks for the pr. I assume that your issue is solved with that or am I wrong?

    JeroenV : 1. Just tested, player and spider move to correct location. It might be because other desires were overriding that desire which won't let it execute. Or is it the only desire?
    2. Also checked a second ago, works fine. I also wouldn't know why, because the spawning did not change in recent minecraft versions.
    3. a) Fixed in >Fixed DesireKillTarget and DesireAttackOnCollide not working properly.
    b) will be looking into it later.
    c) Fixed in >Fixed damage behavior not getting executed properly.
     
  15. Offline

    TeeePeee

    Hm... When I try to use RemoteZombie.copyInventory(Player, false) I get an IllegalArgumentException, expecting 27 or less... When I use RemoteZombie.getInventory().setContents(Player.getInventory().getContents()) I get the same error. All I'm trying to do is make a zombie with the same inventory/equipment as a player... Thoughts?
     
  16. Offline

    hebrecht

    kumpelblase2 Thanks for accepting the pr. Yes, that did solve my problem. My clones are now exactly mirror the movement of my players :)
     
  17. hebrecht : Good to heart that!

    TeeePeee : For the time being, just add the inventory feature with a size of 36. I'll push out a fix for the default size later.
     
  18. Offline

    MylesIsCool

    This is my code:
    Code:
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
            EntityManager manager = RemoteEntities.createManager(this);
            Player p = (Player) sender;
            RemoteEntity entity = manager.createNamedEntity(RemoteEntityType.Human, p.getLocation(), "PVP_" + p.getName(), false);
            entity.getBukkitEntity().teleport(p.getLocation());
            try {
                Mind mind = entity.getMind();
                mind.addMovementDesire(new DesireSwim(entity), 0);
                mind.addMovementDesire(new DesireDestroyDoor(entity, false), 1);
                mind.addMovementDesire(new DesireAttackOnCollide(entity, LivingEntity.class, false), 2);
                mind.addMovementDesire(new DesireMoveTowardsRestriction(entity), 4);
                mind.addMovementDesire(new DesireMoveThroughVillage(entity, false), 5);
               
                mind.addMovementDesire(new DesireWanderAround(entity), 6);
                mind.addMovementDesire(new DesireLookAtNearest(entity, Player.class, 8), 7);
                mind.addMovementDesire(new DesireLookRandomly(entity), 7);
                mind.addTargetingDesire(new DesireFindAttackingTarget(entity, 16, false, false), 1);
                mind.addTargetingDesire(new DesireFindNearestTarget(entity, LivingEntity.class, 16, false, true, 0), 2);
                //Bukkit.getServer().dispatchCommand(((Player) entity.getBukkitEntity()), "aux " + args[0]);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return true;
        }
    PS: It's testing code, yes I know the sender might not be a player

    But it takes upto 2 minutes for the player to goto the players location and also I am running the latest jenkins build.
    Please could you have a look into this.
     
  19. Offline

    CreeperShift

    kumpelblase2

    I have a question:

    I was going through the javadocs and I'm wondering if you can somehow force the player npc to appear as he is sleeping without the bed:

    As this implies you need the bed for it :/
     
  20. MylesIsCool took your exact code and I put it in a testing plugin using onJoinEvent and works fine like it should. No issues. Which craftbukkit build are you using?

    CreeperShift Probably only through sending packets individually.
     
  21. Offline

    CreeperShift

    Dang, kay :) I'll try that then. Thanks for the quick reply tho! :)
     
  22. Offline

    Hoolean

    Wow that looks awesome :D
     
  23. Offline

    MylesIsCool

    Build: craftbukkit-1.5.1-R0.1-20130323.060235-13.jar
     
  24. Offline

    Hoolean

    kumpelblase2

    Is it possible to get the Default desires of a RemoteEntity (say a skeleton) and add it to another RemoteEntity? It'd be interesting to have zombies that behaved like Creepers or Skeletons that behaved like zombies :D
     
  25. MylesIsCool I can't seem to be able to reproduce it even with that exact version. Might something else "block" the entity from being spawned? Or maybe delays the packet from being sent?

    MrBluebear3 Currently not, but I'll do that.
     
  26. Offline

    Hoolean

    Thanks for the time and effort you've put into this plugin, it's a great help for a lot of us plugin developers :D

    kumpelblase2

    Error! *scream*

    Code:
    17:08:07 [SEVERE] Could not pass event CreatureSpawnEvent to PetChickens v1.5.1_0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
        at org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:230)
        at net.minecraft.server.v1_5_R2.World.addEntity(World.java:925)
        at de.kumpelblase2.remoteentities.entities.RemoteBaseEntity.spawn(RemoteBaseEntity.java:269)
        at de.kumpelblase2.remoteentities.ChunkEntityLoader.queueSpawn(ChunkEntityLoader.java:135)
        at de.kumpelblase2.remoteentities.EntityManager.createEntity(EntityManager.java:136)
        at com.puffybugs.PetChickens.PetChickens.onChickenSpawn(PetChickens.java:55)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
        at org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:230)
        at net.minecraft.server.v1_5_R2.World.addEntity(World.java:925)
        at de.kumpelblase2.remoteentities.entities.RemoteBaseEntity.spawn(RemoteBaseEntity.java:269)
        at de.kumpelblase2.remoteentities.ChunkEntityLoader.queueSpawn(ChunkEntityLoader.java:135)
        at de.kumpelblase2.remoteentities.EntityManager.createEntity(EntityManager.java:136)
        at com.puffybugs.PetChickens.PetChickens.onChickenSpawn(PetChickens.java:55)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
        at org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:230)
        at net.minecraft.server.v1_5_R2.World.addEntity(World.java:925)
        at de.kumpelblase2.remoteentities.entities.RemoteBaseEntity.spawn(RemoteBaseEntity.java:269)
        at de.kumpelblase2.remoteentities.ChunkEntityLoader.queueSpawn(ChunkEntityLoader.java:135)
        at de.kumpelblase2.remoteentities.EntityManager.createEntity(EntityManager.java:136)
        at com.puffybugs.PetChickens.PetChickens.onChickenSpawn(PetChickens.java:55)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
        at org.bukkit.craftbukkit.v1_5_R2.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:230)
        at net.minecraft.server.v1_5_R2.World.addEntity(World.java:925)
        at de.kumpelblase2.remoteentities.entities.RemoteBaseEntity.spawn(RemoteBaseEntity.java:269)
        at de.kumpelblase2.remoteentities.ChunkEntityLoader.queueSpawn(ChunkEntityLoader.java:135)
    EDIT: Just found the end of the error - it was EXTREMELY long :(

    Code:
    Caused by: java.lang.NullPointerException
        at de.kumpelblase2.remoteentities.api.thinking.goals.DesireFollowTamer.getTamer(DesireFollowTamer.java:126)
        at de.kumpelblase2.remoteentities.api.thinking.goals.DesireFollowTamer.shouldExecute(DesireFollowTamer.java:49)
        at de.kumpelblase2.remoteentities.api.thinking.DesireSelector.onUpdate(DesireSelector.java:48)
        at de.kumpelblase2.remoteentities.api.thinking.Mind.tick(Mind.java:328)
        at de.kumpelblase2.remoteentities.entities.RemoteChickenEntity.l_(RemoteChickenEntity.java:92)
        at net.minecraft.server.v1_5_R2.World.entityJoinedWorld(World.java:1356)
        at net.minecraft.server.v1_5_R2.WorldServer.entityJoinedWorld(WorldServer.java:614)
        at net.minecraft.server.v1_5_R2.World.playerJoinedWorld(World.java:1337)
        at net.minecraft.server.v1_5_R2.World.tickEntities(World.java:1225)
        at net.minecraft.server.v1_5_R2.WorldServer.tickEntities(WorldServer.java:480)
        at net.minecraft.server.v1_5_R2.MinecraftServer.r(MinecraftServer.java:560)
        ... 4 more
    On my client there is quite a lot of chickens and the stack trace above repeated lines over and over until the server crashed :(

    Here is my code:

    Code:java
    1.  
    2. package com.puffybugs.PetChickens;
    3.  
    4. import org.bukkit.Material;
    5. import org.bukkit.Server;
    6. import org.bukkit.entity.Chicken;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.entity.CreatureSpawnEvent;
    11. import org.bukkit.plugin.PluginDescriptionFile;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13.  
    14. import de.kumpelblase2.remoteentities.EntityManager;
    15. import de.kumpelblase2.remoteentities.RemoteEntities;
    16. import de.kumpelblase2.remoteentities.api.RemoteEntity;
    17. import de.kumpelblase2.remoteentities.api.RemoteEntityType;
    18. import de.kumpelblase2.remoteentities.api.features.RemoteTamingFeature;
    19. import de.kumpelblase2.remoteentities.api.thinking.InteractBehavior;
    20. import de.kumpelblase2.remoteentities.api.thinking.goals.DesireFollowTamer;
    21. import de.kumpelblase2.remoteentities.api.thinking.goals.DesireProtectOwner;
    22.  
    23. public class PetChickens extends JavaPlugin implements Listener{
    24.  
    25. Server serv;
    26. PluginDescriptionFile pdf;
    27.  
    28. EntityManager manager;
    29.  
    30. @Override
    31. public void onEnable() {
    32.  
    33. serv = getServer();
    34. pdf = getDescription();
    35.  
    36. manager = RemoteEntities.createManager(this);
    37.  
    38. serv.getPluginManager().registerEvents(this, this);
    39.  
    40. getLogger().info(getName()+" version "+pdf.getVersion()+" has been enabled!");
    41.  
    42. }
    43.  
    44. @Override
    45. public void onDisable() {
    46.  
    47. getLogger().info(getName()+" version "+pdf.getVersion()+" has been disabled!");
    48.  
    49. }
    50.  
    51. @EventHandler
    52. public void onChickenSpawn(CreatureSpawnEvent event) {
    53.  
    54. if(event.getEntity() instanceof Chicken) {
    55.  
    56. RemoteEntity chicken = manager.createEntity(RemoteEntityType.Chicken, event.getLocation(), false);
    57.  
    58. final RemoteTamingFeature taming = new RemoteTamingFeature(chicken);
    59.  
    60. chicken.getFeatures().addFeature(taming);
    61.  
    62. try {
    63. chicken.getMind().addMovementDesire(new DesireFollowTamer(chicken, 1, 10), 1);
    64. } catch (Exception e) {
    65. // TODO Auto-generated catch block
    66. e.printStackTrace();
    67. }
    68.  
    69. try {
    70. chicken.getMind().addTargetingDesire(new DesireProtectOwner(chicken, 10f, false), 1);
    71. } catch (Exception e) {
    72. // TODO Auto-generated catch block
    73. e.printStackTrace();
    74. }
    75.  
    76. chicken.getMind().addBehaviour(new InteractBehavior(chicken) {
    77.  
    78. @Override
    79. public void onInteract(Player player) {
    80.  
    81. if(player.getItemInHand() != null && player.getItemInHand().getType()==Material.RED_ROSE) {
    82.  
    83. taming.tame(player);
    84.  
    85. }
    86.  
    87. }
    88.  
    89. });
    90.  
    91. event.setCancelled(true);
    92.  
    93. }
    94.  
    95. }
    96.  
    97. }
    98.  


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 29, 2016
  27. MrBluebear3 Spawning a RemoteEntity will trigger a CreatureSpawnEvent as well. Thus, when you replace an entity in that event, it will end in an infinite loop and eventually crash the server if you don't check if the entity is a remote entity already.
    The best, and easiest, way to check if the entity is a remote entity is to do RemoteEntities.isRemoteEntity(<entity>).
     
  28. Offline

    Hoolean

    Silly MrBluebear3 ! I probably should have thought of that ;)

    Well thanks for your help :D

    Hmm.... Another error :(

    Code:
    20:57:43 [SEVERE] net.minecraft.server.v1_5_R2.ReportedException: Ticking entity
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.MinecraftServer.r(MinecraftServer.java:564)
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.DedicatedServer.r(DedicatedServer.java:225)
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.MinecraftServer.q(MinecraftServer.java:474)
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.MinecraftServer.run(MinecraftServer.java:407)
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.ThreadServerApplication.run(SourceFile:573)
    20:57:43 [SEVERE] Caused by: java.lang.NullPointerException
    20:57:43 [SEVERE]    at de.kumpelblase2.remoteentities.api.thinking.goals.DesireFollowTamer.getTamer(DesireFollowTamer.java:126)
    20:57:43 [SEVERE]    at de.kumpelblase2.remoteentities.api.thinking.goals.DesireFollowTamer.shouldExecute(DesireFollowTamer.java:49)
    20:57:43 [SEVERE]    at de.kumpelblase2.remoteentities.api.thinking.DesireSelector.onUpdate(DesireSelector.java:48)
    20:57:43 [SEVERE]    at de.kumpelblase2.remoteentities.api.thinking.Mind.tick(Mind.java:328)
    20:57:43 [SEVERE]    at de.kumpelblase2.remoteentities.entities.RemoteChickenEntity.l_(RemoteChickenEntity.java:92)
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.World.entityJoinedWorld(World.java:1356)
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.WorldServer.entityJoinedWorld(WorldServer.java:614)
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.World.playerJoinedWorld(World.java:1337)
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.World.tickEntities(World.java:1225)
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.WorldServer.tickEntities(WorldServer.java:480)
    20:57:43 [SEVERE]    at net.minecraft.server.v1_5_R2.MinecraftServer.r(MinecraftServer.java:560)
    20:57:43 [SEVERE]    ... 4 more
    20:57:43 [SEVERE] Encountered an unexpected exception ReportedException
    net.minecraft.server.v1_5_R2.ReportedException: Ticking entity
        at net.minecraft.server.v1_5_R2.MinecraftServer.r(MinecraftServer.java:564)
        at net.minecraft.server.v1_5_R2.DedicatedServer.r(DedicatedServer.java:225)
        at net.minecraft.server.v1_5_R2.MinecraftServer.q(MinecraftServer.java:474)
        at net.minecraft.server.v1_5_R2.MinecraftServer.run(MinecraftServer.java:407)
        at net.minecraft.server.v1_5_R2.ThreadServerApplication.run(SourceFile:573)
    Caused by: java.lang.NullPointerException
        at de.kumpelblase2.remoteentities.api.thinking.goals.DesireFollowTamer.getTamer(DesireFollowTamer.java:126)
        at de.kumpelblase2.remoteentities.api.thinking.goals.DesireFollowTamer.shouldExecute(DesireFollowTamer.java:49)
        at de.kumpelblase2.remoteentities.api.thinking.DesireSelector.onUpdate(DesireSelector.java:48)
        at de.kumpelblase2.remoteentities.api.thinking.Mind.tick(Mind.java:328)
        at de.kumpelblase2.remoteentities.entities.RemoteChickenEntity.l_(RemoteChickenEntity.java:92)
        at net.minecraft.server.v1_5_R2.World.entityJoinedWorld(World.java:1356)
        at net.minecraft.server.v1_5_R2.WorldServer.entityJoinedWorld(WorldServer.java:614)
        at net.minecraft.server.v1_5_R2.World.playerJoinedWorld(World.java:1337)
        at net.minecraft.server.v1_5_R2.World.tickEntities(World.java:1225)
        at net.minecraft.server.v1_5_R2.WorldServer.tickEntities(WorldServer.java:480)
        at net.minecraft.server.v1_5_R2.MinecraftServer.r(MinecraftServer.java:560)
        ... 4 more
    Same code as above except the infinite loop has been dealt with (same line numbers) :(

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 29, 2016
  29. Offline

    Hoolean

    OK thanks! I managed to fix it myself in the meantime by only adding the desire once the RemoteEntity was tamed :)
     
Thread Status:
Not open for further replies.

Share This Page