Fishing scripts
Choose a script for the fishing you want to do:
| Script | Catch handling |
|---|---|
| Fish Anywhere | Fish where you stand and clear nearby catches. |
| Barn Fishing | Collect catches in a configured pool, then clear them together. |
| Worm Fishing | Collect Flaming Worms in a configured pool. |
| Moonglade Strider Surfer Fishing | Collect Stridersurfers in a configured pool. |
All four start from your current position and casting direction. There is no location picker or route to attach. Stand where you want to fish and face the casting direction before starting.
Hold the rod you want to use. If you are holding something else and have exactly one usable rod in your hotbar, the script selects it. With multiple rods, hold the one you want before starting. Rods elsewhere in your inventory are not moved. Normal Fishing Rods and Challenging Rods are recognized by item ID as well as rod tooltips. Unmet item requirements still prevent selection.
Put usable combat equipment in the hotbar. Automatic weapon choice uses recognized equipment and the current creatures. It does not rearrange your inventory or understand unknown abilities.
The branch needs its paired loader and a Minecraft relaunch. Source tests do not establish that a particular fishing location or weapon works in-game.
HUD priorities
All four scripts use the farming HUD layout. Select bars or line in the
HUD graph setting. Lua authors can make the same choice with a chart row's
chart_style field; see Show a HUD.
| Script | Main reading | Supporting reading |
|---|---|---|
| Fish Anywhere | Fishing XP/hour | Estimated loot/hour |
| Barn Fishing | Fishing XP/hour | Estimated loot/hour |
| Moonglade Strider Surfer | Fishing XP/hour | Estimated loot/hour |
| Worm Fishing | Estimated loot/hour | Membranes/hour |
XP displays include session gains, current level, next-level ETA, and a selected level goal up to Fishing 50. Fish Anywhere can emphasize earnings or a supported item goal instead. Worm offers a materials emphasis for Ironman or upgrade grinds: enter the target and any items already owned. Stored sacks and bank contents are not assumed to be known.
Collection rates need two complete batches to warm up. They include collection and combat time and stay labeled as completed-cycle estimates while the next batch builds. Session totals continue updating. ETAs assume the observed pace; missing skill progress or an insufficient XP history leaves them unavailable.
Estimated loot means the sale value of tracked inventory acquisitions, before bait, fees, and other costs. It is not net profit. Unsupported drops and items sent straight to unobserved sacks are excluded. Missing prices are shown rather than filled with guessed values.
Weapon preference
Auto ranks recognized combat weapons and falls back to the selected fishing rod. Prefer tries rod melee first and can fall back after unsuccessful attempts. Never excludes rod attacks. These are left-click attacks; the rod is not cast at a creature.
Dedicated combat weapons take priority over utility weapons: Livid Dagger outranks Aspect of the Void for ordinary melee. Player stats and upgrades can change actual damage, so this is a default preference, not a DPS guarantee. A temporary range, visibility, or resource problem waits within a bounded clear instead of treating an otherwise usable weapon as missing for the whole run.
Run from Lua
Declare world.blocks.read, world.entities.read, inventory, interaction, camera.scan,
combat, events.chat.filtered, and profit in your bundle.
local fishing = require("hexis/skyblock/fishing")
function hexis.main()
local result = fishing.run({
mana_reserve = 200,
})
hexis.script.stop({reason = result.message or "Fishing finished"})
end
The library selects a rod at startup and restores that rod when casting. Uncertain catches, protected creatures, low health or air, unexpected position changes, and unusable equipment stop the script with a reason.
Ground area abilities require allow_displacement = true and a
ground_target = {x = ..., y = ..., z = ...}. The configured position boundary
still applies. The ground target must resolve to solid footing near the start
position. Ability use does not promise healing, a shield, damage, or a kill.
Collect creatures in a pool
Barn, Worm, and Moonglade Strider Surfer require a containment box. Supply real coordinates for your setup; these example coordinates are placeholders.
local result = fishing.run({
collect = true,
allowed_species = {["Flaming Worm"] = true},
pool = {
min = {x = 10, y = 65, z = 10},
max = {x = 14, y = 69, z = 14},
},
batch_size = 5,
max_batch_age = 180,
mana_reserve = 200,
})
The collection scripts clear at the configured creature count or age. A dangerous arrival can interrupt collection. Count and age are safety limits, not guarantees about the server cap or despawning. Worm and Moonglade Strider Surfer stop if a recognized catch is outside their supported species.
Vanilla and custom detectors
hexis/fishing accepts a detector factory. Its returned function receives
an owned-hook observation and cast age and returns wait, bite, or invalid.
Use require("hexis/fishing/vanilla").detector for vanilla bite detection in
custom scripts. Hexis does not ship a standalone vanilla fishing script.
The core also needs world_generation, origin, cast, and a rod function
that returns a current record from hexis.inventory.items({}). An optional
check function returns a stop reason when the run must interrupt an action.
The low-level actions are hexis.fishing.cast, hexis.fishing.reel, and
hexis.input.press. Their generated reference lists exact request fields.
Cast confirms a new owned hook. Reel requires that exact hook and confirms
removal. Neither result confirms loot or XP, and an unconfirmed press is not
repeated automatically.
Current limits
These scripts do not travel, restock, sell, validate a hotspot, or discover a capture pool. Moonglade Strider Surfer does not dive, swim back, or follow a breathing route. Low air stops fishing. Trophy fishing is not included.
Catch recognition is limited to the supported message and creature vocabulary. Nearby bobbers, ambiguous bodies, and crowded or incomplete observations can prevent automation. Use the matching branch build for acceptance testing before relying on a script.