Dear community,
In this release the accessors of the bot have been made public. The accessors have always been protected from access by developers because they would allow for unprotected access to RS username and password information if made public. I've revisited the thought on how to open up the accessors publicly without losing security and created a system that will open up the accessors but block any access to the password and username information. This is part of the promised security manager. Not only that has been done, OSBot 2 no longer allows using reflection. This together combines more freedom to the developers, as they can now freely access accessor methods without reflection, and more security as reflection can no longer be used. Opening up the accessors also allowed me to clean up the amount of deprecated methods in certain accessor wrappers, cleaning up the API significantly for developers. However this has made some changes to the API that developers should take a note of:
client.getRegion() has been removed. It can now be found in Map.getRegion() and most of its features are now available in Map and no more in the Region class
client.getEntitiesOnCursor() has been removed because it's available in mouse.getEntitiesOnCursor()
client.getMapBaseX/Y() have been removed because it's available in map.getBaseX() and map.getBaseY() ; also note that map.getMapBaseX/Y() are refactored to getBaseX/Y()
Region.getTiles() added
Region.getObjects() added ; note that these are accessors of the client its objects, not the wrapped RS2Object instances
Client.getPlane() has been removed because its functionality can be found in the Map api class
Client.getMyPlayer() has been removed because its functionality is already provided in MethodProvider
Client.getLocalPlayer() has been removed because its functionality is already provided in the Players api class
Client.getLocalNPC() has been removed because its functionality is already provided in the Players api class
Client.getLocalPlayers() has been removed because its functionality is already provided in the Players api class
Client.getLocalNPCS() has been removed because its functionality is already provided in the NPCS api class
Client.getClippingPlanes() has been removed because its functionality is now available in the Region class
Client.getMenuX() has been removed because its functionality is now available in the menu api class
Client.getMenuY() has been removed because its functionality is now available in the menu api class
Client.getMenuWidth() has been removed because its functionality is now available in the menu api class
Client.getMenuHeight() has been removed because its functionality is now available in the menu api class
Client.getMenu() has been removed because its functionality is now available in the menu api class
Client.getOnCursorCount() has been removed because its functionality is now available in the mouse api class
Client.getMenuCount() has been removed because its functionality is now available in the menu api class
Client.isMenuOpen() has been removed because its functionality is now available in the menu api class
Client.getCameraYaw() has been removed because its functionality is now available by using the Client accessor instance
Client.getCameraPitch() has been removed because its functionality is now available by using the Client accessor instance
Client.getDestination() has been removed because its functionality is available in the map api class
Client.getMinimapX() has been removed because its functionality is now available by using the Client accessor instance
Client.getMinimapRotation() has been removed because its functionality is now available by using the Client accessor instance
Client.getMinimapZoom() has been removed because its functionality is now available by using the Client accessor instance
Client.isMinimapLocked() has been removed because its functionality is now available in the Map api class
Client.getInterface() has been removed because its functionality is available in the Interface api class
Client.getRawInterfaces() has been removed because its functionality is available by using the Client accessor instance
Client.getValidInterfaces() has been removed because its functionality is available by using the Client accessor instance
Client.getRunEnergy() has been removed because its functionality is available in the Settings api class
Client.getLevelExperience() been removed because its functionality is available through the Client accessor instance
Client.getLevelStat() been removed because its functionality is available through the Client accessor instnace
Client.getCurrentLevelStat() has been removed because its functionality is available through the Client accessor instance
Client.getVertexHeights() has been removed because its functionality is available through the Client accessor instance
On top of the changes mentioned above the following update were made:
Inventory.isItemSelected() - returns whether an item is selected
Inventory.getSelectedItemName() - gets the name of the selected item
Magic.isSpellSelected() - returns whether a spell is selected
Magic.getSelectedSpellName() - gets the name of the selected spell
Client.getCrossHairColor() - gets the state of the mouse cross hair / cursor (0 = not present, 1 = yellow, 2 = red)
The anti ban roll with not happen if human input is enabled whilst running a script
Bank.withdraw(X value) and bank.deposit(X value) will now use the last used X value if possible and have now detection for changed enter X value interfaces
Character.isUnderAttack() is now fully functional (see the documentation)
Character.isAttackable() method added, taking in to account multi and single combat zones
Extended the ConditionalSleep class to support for custom sleeping times (see the documentation)
Fixed the bug with the InteractionEvent for interacting with entities where it wouldn't do anything while having either a magic spell or inventory item selected. It now automatically accounts for selection, no different user input required
Ported over a fix for interfaces from OSBot 1
Ported over dynamic prayer button identification from OSBot 1
The RandomSolver system uses id's again for now, this might be changed to enums later. This allowed for adding the random behaviour hook system back with some fixes
Added back the WorldHopper class
Your mouse will now exit the screen when pausing or stopping a script
Settings.setRunning() now uses the orb to activate or deactivate running
Prayers have been updated to use the new config
Two freezing bugs that existed in OSBot 1 previously as well have been fixed
Made certain interactions faster and fixed a bug in the walking event that caused delays sometimes
The GUI for opening and closing tabs is now faster and more responsive as the majority of cpu intensive actions are not separated from the GUI threads
Added coloring of the bot tab that is active and also all tabs now display your character's display name if logged in
The Interfaces.containgSprite() methods have been fixed to account for sub sub interfaces (basically children on child interfaces)
World selection and interface value debugging have been added back and can be found in the quick right click menu on the settings button
I also did some work on the updater which had broken identifiers for a set of hooks which we would adjust manually for the past few revisions and I introduced a couple of new hooks: isItemSelected, selectedItemName, isSpellSelected, selectedSpellName and crossHairColor.
But..... last and certainly not least:
Security Manager.
The Security Manager is in place in this release. It could cause issues as it has not been tested on a wider variety of systems, but we will be able to figure this out with your help. If it's the case that too many people run into problems, we will release a version without it in place and ask more experienced users to share the thrown security exceptions with us. In summary the Security Manager restricts the access of the OSBot 2 client in several places:
Reflection to access hidden fields is no longer possible
Execution of commands on the command line is no longer possible
Access to most internet connections are now locked down. We will white list trusted IP's, but for now only imgur, our server and the RS servers are allowed to make a connection. For people who want to keep track of signature data, we will introduce an easy to use system that will forward any requested data to your server.
The above doesn't summarize everything as there is more, but it should give you a general idea.
The download to the jar can be found here: http://osbot.org/osbot2_beta/OSBot-packed-2.0.12.jar
The javadocs can be found here: http://osbot.org/osbot2_api/
The javadocs zip file can be found here: http://osbot.org/osbot2_api/javadoc.zip
Expect significant work on the random handlers this next week!
Sincerely, The OSBot team