Posted January 27, 201510 yr Hi! i was wondering how to detect if a specific player(by username) enters a range like 25 blocks or so of a tileEntity? thanks in advance.
January 27, 201510 yr Author On every tile entity update, use a nested for loop combo like so: for (int i = -25; i < 25; ++i) //same with j //same with k Use world.getEntities to get a list of all entities in that space relative to your tile entity. does this do it once or will it do it while its in the area??
January 27, 201510 yr Oh ew, don't use a for loop to detect entities. That's what world.getEntitiesWithinAABB is for. Just pass it a 25x25x25 AABB rather than checking a 1x1x1 space 15625 times. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
January 27, 201510 yr You don't need any for loops, World#getEntitiesWithinAABB already searches within an area. int r = 25; // that's a pretty big range, btw, you may want to consider lowering it // I usually only search 1/2 the distance on the y axis as well, and sometimes only starting from the same yCoord // as the TE is at, unless you want players below it to also trigger it // following uses x/y/z instead of xCoord/yCoord/zCoord for brevity world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x - r, y - r, z - r, x + r, y + r, z + r); http://i.imgur.com/NdrFdld.png[/img]
January 27, 201510 yr Author You don't need any for loops, World#getEntitiesWithinAABB already searches within an area. int r = 25; // that's a pretty big range, btw, you may want to consider lowering it // I usually only search 1/2 the distance on the y axis as well, and sometimes only starting from the same yCoord // as the TE is at, unless you want players below it to also trigger it // following uses x/y/z instead of xCoord/yCoord/zCoord for brevity world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x - r, y - r, z - r, x + r, y + r, z + r); yea i knew about the getEntitiesWithinAABB but is just want it the do someting when the specific player leaves oir enters the area no constantly if the player is in the area
January 27, 201510 yr Then you'll have to store which players have been found, e.g. Set<EntityPlayer> playersInArea; if the player is found by getEntitiesWithinAABB but is not yet in the set, add them to it and do whatever you want for when they enter the area; if the player is in the set but not found nearby, remove them from the set and do whatever you want to the player for when they leave. http://i.imgur.com/NdrFdld.png[/img]
January 27, 201510 yr Author Then you'll have to store which players have been found, e.g. Set<EntityPlayer> playersInArea; if the player is found by getEntitiesWithinAABB but is not yet in the set, add them to it and do whatever you want for when they enter the area; if the player is in the set but not found nearby, remove them from the set and do whatever you want to the player for when they leave. sounds really anoying to do . is there no other way? but thank you for this tip!!
January 27, 201510 yr "Storing data for future use: sounds really annoying." Seems legit. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.