Jump to content

[1.7.10] detect if specific player enters/leaves area.


denbukki

Recommended Posts

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??

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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);

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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!!

Link to comment
Share on other sites

"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.

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.