Added Bank.open(LocatableEntity) Added additional functions to the bridge that are now being used to make a variety of parts of the api faster Made getting the root bounds of interfaces require less calls over the bridge. Fixed some equals & hashcode methods Adjusted some toString methods for a better presentation in the developer toolkit Improved the handling of some exceptions occurring over the bridge Replaced any RuntimeExceptions we were throwing with subclasses of it that are more appropriate for the situation. Made the max mouse movement duration a part of PlayerSense Fixed LocatableEntityQueryBuilder#unreachable/surroundingsUnreachable() Improved handling of the execution of onStop Throw an exception when building an InteractableRectangle that would overflow the integer bitspace. The primary purpose of this is so that I can see what exactly is going on when it's occurring for interface components in extremely rare situations. Fixed a bug in Distance.between that was resulting in at least one call to Region.getBase() if either of the arguments was a LocateableEntity object, regardless of if was already stored in the cache or not. This fix resulted in a significant improvement in the speed of sorting entities, and as a result, .nearest() and similar calls when working with large sets of entities. Optimized InterfaceContainers.getAt(int) by reducing the amount of data that gets transferred over the bridge from a boolean to a single boolean. Fixed several ArrayIndexOutOfBoundsExceptions caused by an internal api attempted to decode -1. Optimized GameEvent#getName() because it's string manipulation was actually slowing down the event handler slightly. Added InterfaceComponentQueryBuilder#grandchildren(boolean) - by default it's set to true, but if you set it to false it'll only search the components during underneath the InterfaceContainers and will not invoke or search through InterfaceComponent#getComponents() for each of the InterfaceContainers components. Setting it to false is a major optimization in a lot of cases, often reducing the amount of components being iterated over by at least several hundred components. Optimized ObjectDefinition#getName to not try to parse out the jag tags when it has the default value for a name which is "null". Made the internal osrs interface option handler be more error resilient in regards to tab layouts. Optimized osrs projection by applying the grandchildren(false) optimization in various places along with making some improvements to it in regards to tab layouts. Added the same game object cache to osrs game objects that I'd previously applied to rs3 game objects, offering a reasonable speedup when doing operations on similar objects across multiple queries Optimized ChatDialog.getContinue() on osrs Rewrote the logic behind ActorQueryBuilder#targetedBy(Arrays.asList(null)). It now requires calculation of the target of each actor once instead of once for each Actor being analyzed (so O -> (1)). Made LootInventory.isOpen() immediately return false on osrs instead of trying to run the query. This was done because of MassFighter not doing proper checks and crashing as a result of it.