# auto-farm > Creates automated farming system mechanics and player commands. Use when: implementing auto-farm features, modifying farming behavior, adding new auto-farm options, debugging farm loops - Author: valeriybaranyshyn-pixel - Repository: valeriybaranyshyn-pixel/Tales-of-Aden - Version: 20260202145225 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/valeriybaranyshyn-pixel/Tales-of-Aden - Web: https://mule.run/skillshub/@@valeriybaranyshyn-pixel/Tales-of-Aden~auto-farm:20260202145225 --- --- name: auto-farm description: | Creates automated farming system mechanics and player commands. Use when: implementing auto-farm features, modifying farming behavior, adding new auto-farm options, debugging farm loops allowed-tools: Read, Edit, Write, Glob, Grep, Bash --- # Auto-Farm Skill The AutoFarm system in Tales of Aden enables players to automate monster hunting with configurable targeting, skill rotation, and resource management. The system uses a singleton manager with a scheduled task that iterates over active farmers every 450ms. ## Quick Start ### Enable AutoFarm for a Player ```java // Toggle farming via manager AutofarmManager.INSTANCE.toggleFarm(player); // Or explicitly start/stop AutofarmManager.INSTANCE.startFarm(player); AutofarmManager.INSTANCE.stopFarm(player); ``` ### Check Farming State ```java if (AutofarmManager.INSTANCE.isAutofarming(player)) { // Player is farming } // Player-side flag (used for UI/packets) if (player.isAutoFarm()) { // Farming active } ``` ## Key Concepts | Concept | Usage | Example | |---------|-------|---------| | Skill Slots | F1-F4 = Attack, F5-F8 = Chance, F9-F12 = LowLife | `AutofarmConstants.attackSlots` | | Target Radius | Player-configurable 1000-2500 units | `player.getRadius()` | | Heal Threshold | HP% to trigger LowLife skills | `player.getHealPercent()` | | Shortcut Page | Which hotbar page (0-9) to use | `player.getPage()` | | Iteration Speed | 450ms between routine executions | `iterationSpeedMs = 450L` | ## Common Patterns ### Adding a Config Check **When:** Restricting autofarm access (VIP, zones, events) ```java // In AutofarmManager.startFarm() or AutofarmPlayerRoutine.executeRoutine() if (Config.NO_USE_FARM_IN_PEACE_ZONE) { if (player.isInsideZone(ZoneId.PEACE)) { player.sendMessage("No Use Auto farm in Peace Zone."); return; } } ``` ### Registering the Voiced Command **When:** Adding `.autofarm` chat command ```java // In VoicedCommandHandler.java registerVoicedCommandHandler(new VoicedAutofarm()); ``` ## See Also - [patterns](references/patterns.md) - Implementation patterns and anti-patterns - [workflows](references/workflows.md) - Adding features and debugging ## Related Skills - **java** skill for singleton patterns and thread-safe collections - **l2j-gameserver** skill for AI system integration - **configuration-management** skill for adding new config properties - **item-handlers** skill for potion consumption logic