Files
aiscape/modernized-client/examples/ExampleAgent.java
2025-09-06 08:33:20 -07:00

159 lines
6.1 KiB
Java

package examples;
import com.openosrs.client.ModernizedClient;
import com.openosrs.client.api.AgentAPI;
import com.openosrs.client.api.Position;
import com.openosrs.client.api.GameObject;
import com.openosrs.client.scripting.ScriptingFramework;
import com.openosrs.client.plugins.PluginManager;
/**
* Example Agent - Demonstrates how an AI agent can use the modernized client
* to interact with RuneScape.
*/
public class ExampleAgent {
public static void main(String[] args) throws Exception {
System.out.println("=== Example AI Agent for RuneScape ===");
// 1. Initialize the modernized client
ModernizedClient client = new ModernizedClient();
client.start().get(); // Wait for startup
// 2. Get the Agent API for game interaction
AgentAPI api = client.getAgentAPI();
// 3. Basic agent behavior - demonstrate API usage
demonstrateBasicUsage(api);
// 4. Use the scripting framework
demonstrateScripting(client.getScriptingFramework());
// 5. Use the plugin system
demonstratePlugins(client.getPluginManager());
// 6. Keep running for a while then shutdown
System.out.println("Agent will run for 30 seconds then shutdown...");
Thread.sleep(30000);
client.stop();
System.out.println("Agent shutdown complete");
}
/**
* Demonstrate basic Agent API usage.
*/
private static void demonstrateBasicUsage(AgentAPI api) {
System.out.println("\\n--- Basic Agent API Usage ---");
try {
// Get player information
Position playerPos = api.getPlayerPosition();
System.out.println("Player Position: " + playerPos);
int hitpoints = api.getHitpoints();
int maxHp = api.getMaxHitpoints();
System.out.println("Hitpoints: " + hitpoints + "/" + maxHp);
int combatLevel = api.getCombatLevel();
System.out.println("Combat Level: " + combatLevel);
// Check if in combat
boolean inCombat = api.isInCombat();
System.out.println("In Combat: " + inCombat);
// Get inventory info
boolean inventoryFull = api.isInventoryFull();
int emptySlots = api.getEmptySlots();
System.out.println("Inventory Full: " + inventoryFull + ", Empty Slots: " + emptySlots);
// Find nearby objects (example)
var objects = api.getGameObjects();
System.out.println("Nearby Objects: " + objects.size());
// Find nearby NPCs
var npcs = api.getNPCs();
System.out.println("Nearby NPCs: " + npcs.size());
// Example interaction (if there are objects nearby)
if (!objects.isEmpty()) {
GameObject firstObject = objects.get(0);
System.out.println("Found object: " + firstObject.getName() + " at " + firstObject.getPosition());
// Could interact with it:
// api.interactWithObject(firstObject, "Examine").get();
}
} catch (Exception e) {
System.err.println("Error in basic usage demo: " + e.getMessage());
}
}
/**
* Demonstrate the scripting framework.
*/
private static void demonstrateScripting(ScriptingFramework scripting) {
System.out.println("\\n--- Scripting Framework Demo ---");
try {
// Show available scripts
System.out.println("Available scripts: woodcutting, combat-training, banking");
// Could start a script:
// String executionId = scripting.startScript("woodcutting");
// System.out.println("Started woodcutting script: " + executionId);
// Monitor script status:
// ScriptStatus status = scripting.getScriptStatus(executionId);
// System.out.println("Script status: " + status);
// For demo, just show that scripting is available
boolean enabled = scripting.isEnabled();
System.out.println("Scripting framework enabled: " + enabled);
var activeScripts = scripting.getActiveScripts();
System.out.println("Active scripts: " + activeScripts.size());
} catch (Exception e) {
System.err.println("Error in scripting demo: " + e.getMessage());
}
}
/**
* Demonstrate the plugin system.
*/
private static void demonstratePlugins(PluginManager plugins) {
System.out.println("\\n--- Plugin System Demo ---");
try {
// Show available plugins
var allPlugins = plugins.getAllPlugins();
System.out.println("Available plugins: " + allPlugins.size());
for (var entry : allPlugins.entrySet()) {
String name = entry.getKey();
var info = entry.getValue();
System.out.println(" - " + name + ": " + info.getState() +
" (enabled: " + info.isEnabled() + ")");
}
// Enable a useful plugin for agents
if (plugins.getAllPlugins().containsKey("Performance Monitor")) {
boolean success = plugins.enablePlugin("Performance Monitor");
System.out.println("Enabled Performance Monitor: " + success);
}
if (plugins.getAllPlugins().containsKey("Experience Tracker")) {
boolean success = plugins.enablePlugin("Experience Tracker");
System.out.println("Enabled Experience Tracker: " + success);
}
// Show enabled plugins
var enabled = plugins.getEnabledPlugins();
System.out.println("Enabled plugins: " + enabled);
} catch (Exception e) {
System.err.println("Error in plugin demo: " + e.getMessage());
}
}
}