Jump to content

Closest Object


Recommended Posts

Posted
public RS2Object getClosestObject(Script script, Position position) {
	List<RS2Object> allObjects = script.objects.getAll();
	if (allObjects.size() == 0) {
		script.log("No objects found");
		return null;
	} else if (allObjects.size() == 1) {
		return allObjects.get(0);
	}
	allObjects.sort(new Comparator<RS2Object>() {
		@Override
		public int compare(RS2Object obj1, RS2Object obj2) {
			return obj1.getPosition().distance(position) - obj2.getPosition().distance(position);
		}
	});
	return allObjects.get(0);
}

If it returns the furthest object, reverse the operation in the Comparator.

  • Like 2
Posted
public RS2Object getClosestObject(Script script, Position position) {
	List<RS2Object> allObjects = script.objects.getAll();
	if (allObjects.size() == 0) {
		script.log("No objects found");
		return null;
	} else if (allObjects.size() == 1) {
		return allObjects.get(0);
	}
	allObjects.sort(new Comparator<RS2Object>() {
		@Override
		public int compare(RS2Object obj1, RS2Object obj2) {
			return obj1.getPosition().distance(position) - obj2.getPosition().distance(position);
		}
	});
	return allObjects.get(0);
}

If it returns the furthest object, reverse the operation in the Comparator.

 

thanks

Posted
public RS2Object getClosestObject(Script script, Position position) {
	List<RS2Object> allObjects = script.objects.getAll();
	if (allObjects.size() == 0) {
		script.log("No objects found");
		return null;
	} else if (allObjects.size() == 1) {
		return allObjects.get(0);
	}
	allObjects.sort(new Comparator<RS2Object>() {
		@Override
		public int compare(RS2Object obj1, RS2Object obj2) {
			return obj1.getPosition().distance(position) - obj2.getPosition().distance(position);
		}
	});
	return allObjects.get(0);
}

If it returns the furthest object, reverse the operation in the Comparator.

 

 

 

I want to return a object closest to position, how am i supposed to do that ?

 

 

You can just do:

Optional<RS2Object> closestObj = getObjects()
                                 .getAll()
                                 .stream()
                                 .min((o1, o2) -> Integer.compare(
                                     o1.getPosition().distance(myPosition()), 
                                     o2.getPosition().distance(myPosition())
                                 ));
  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...