Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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.

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

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.

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

  • 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

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.

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

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

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

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.