Official documentation

Understand Hercule without guessing.

Hercule is organized around modules. A module is one feature you can toggle, configure, bind, or render. This page explains the client in plain language first, then gives power-user details when you need them.

Open ClickGUIPress Right Shift to configure modules.
Use ConsolePress F4 or type commands in chat.
Edit HUDUse the HUD tab for layout, labels, and widgets.
AutomateUse Baritone, SmartRoute, AutoMine, and scripts.

Quick Start

If you are new, start small. Turn on one module, understand what it does, then tune the settings. Most problems happen when too many movement or combat modules fight each other.

1

Open the GUI

Press Right Shift. Categories are grouped by purpose: Combat, Movement, Player, Visual, World, and Misc.

2

Enable one module

Click a module name to toggle it. Right-click or expand settings to tune behavior before stacking modules together.

3

Save your setup

Most settings auto-save. Keep separate configs for legit play, mining, visuals, and testing.

Beginner tip: Do not enable multiple movement systems at once unless you know why. For example, Fly, Speed, Baritone, SmartRoute, and AutoWalk can all influence movement.

UI, HUD, and Scaling

Hercule includes a full ClickGUI, HUD editor, visual labels, and custom style controls. If the GUI looks too small on 1080p, 1440p, or 4K displays, use the Settings tab to increase GUI scale and category sizing.

ClickGUI Settings

Adjust GUI scale, category size, animation speed, rounded corners, theme color, blur, darken, borders, and sorting.

HUD Editor

Drag labels and widgets. Select multiple elements with a box. Right-click elements for their specific properties.

Visual Modules

Use ESP, StorageESP, Nametags, Radar, Minimap, Trail, TargetHUD, ArmorHUD, Keystrokes, and texture controls.

Console

Use the console for commands, testing, logs, and faster control when you do not want to click through menus.

Capability Map

Here is the client at a glance. Names can change over time, but this explains the major feature families.

Combat

Killaura, Aimbot, Reach, TriggerBot, AutoClicker, AutoWeapon, Surround, InfiniteAura, DamageAlerts, and related combat helpers.

Movement

Fly, Speed, Step, Spider, NoSlow, NoWeb, AirJump, LongJump, Glide, Jetpack, AutoSprint, AutoWalk, and movement recovery tools.

Player

InventoryManager, AutoTool, ChestStealer, MLG, AntiVoid, AutoExtinguish, AutoSneak, AutoSign, FastEat, NoFall, and utility modules.

World

Baritone, AutoMine, OreMiner, OreTp, Scaffold, Nuker, Schematic, AutoPortal, AutoFarm, AutoRepair, AutoSmelt, DigUp, NoWater, and Xray.

Visual

ArrayList, HUD, FullBright, NoRender, Map, Minimap, Freecam, BlockESP, StorageESP, PortalESP, SelectionBox, Ambiance, Alerts, and more.

Misc

AIAssistant, Timer, Blink, Disabler, DiscordRPC, DiscordWebhook, PlayerList, Translator, LogSpot, ItemSucker, and command helpers.

Baritone Guide

Baritone is Hercule's advanced pathfinding module. It can route, jump, bridge, tunnel, dig up/down, avoid threats, render paths, and now includes integrated safety and route recording systems.

Core ideas

  • Path Algorithm chooses the route engine: A*, JPS, Theta*, Bidirectional, Fringe, HPA, or D* Lite.
  • Allow Break lets Baritone mine blocks when useful.
  • Smart Shortcuts makes Baritone compare breaking blocks against walking around.
  • Fast Obsidian Tool prevents bad obsidian routes unless your tool is good enough.
  • AutoEscape routes to safety when dangerous conditions are detected.
  • SmartRoute records a path you walk and replays it through Baritone.
  • Path Debug HUD shows route state, target, stuck counter, block action, and latest log.
FeatureUse it whenBeginner setting
AutoEscapeYou want Baritone to run to safety on low health, fire, lava, void fall, or hostile pressure.Enable it, keep cooldown around 80 ticks.
SmartRouteYou want to record a farm route, base route, mining loop, or travel path.Record with 1.5 spacing, simplify before replay.
Path Debug HUDYou are tuning pathfinding or diagnosing why Baritone stopped.Enable compact mode if your screen is crowded.
Avoid Slow BlocksYou do not want routes that waste time mining obsidian-like blocks.Keep enabled.

Inventory Manager

InventoryManager keeps armor equipped, promotes the best tools into predictable hotbar slots, and removes unwanted items from your inventory. Treat it like a rule engine: short, clear keywords produce the most reliable behavior.

Recommended workflow

  1. Enable Auto Armor first and confirm armor equips at a comfortable delay.
  2. Enable Auto Hotbar, open Configure Items, and add one rule per slot.
  3. Use broad keywords such as sword, pickaxe, food, bow, or pearl.
  4. Enable Auto Throw only after your blacklist is reviewed. Avoid keywords that could match useful items.
OptionPurposeProfessional tuning note
Armor DelayControls how often armor is evaluated and equipped.Use a small nonzero value for smoother inventory screens.
Sort DelayControls hotbar organization speed.Lower values feel instant, higher values are easier to observe while testing.
Throw DelayControls how quickly blacklisted items are dropped.Keep this conservative if your blacklist is broad.
Ignore HotbarPrevents Place All from emptying hotbar slots.Recommended for normal play so your tools stay in hand.

Safety Tools

Safety modules are designed to prevent panic moments. They work best when configured conservatively.

AutoExtinguish

Places water or breaks fire when burning. Good for Nether mistakes and fire traps.

MLG

Uses water to reduce fall damage. Tune activation height so it reacts before impact.

AntiVoid

Helps when falling into empty space. Pair with Baritone AutoEscape for safer recovery.

Baritone AutoEscape

Finds a safer nearby block and routes to it instead of only reacting in place.

Lua Scripting Basics

Lua scripts let you create custom modules without editing C++. Scripts use a table, register it as a module, then define lifecycle functions.

Golden rule: Keep your script inside a Lua table. Do not create lots of global functions. It keeps reloads stable and makes errors easier to understand.
local MyModule = {}

function MyModule.on_enable(self)
    client.notification("Hercule", "Module enabled", 2)
end

function MyModule.on_tick(self)
    local x, y, z = player.getPos()
    if module.get("My Module", "Debug") then
        client.chat("Y = " .. tostring(math.floor(y)))
    end
end

module.register("My Module", "Beginner friendly example", "Misc", MyModule)
module.addBool("My Module", "Debug", "Print position info", false)

Lua API Reference

module.register(name, description, category, table)

Creates a ClickGUI module from your Lua table.

module.addBool / module.addSlider / module.get / module.setBind

Add settings, read settings, and assign keybinds.

client.chat(message), client.notification(title, message, seconds)

Show local messages and notification popups.

client.isKeyDown("w"), client.executeCommand(".command")

Read input and trigger Hercule commands.

player.getPos(), player.setPos(x,y,z), player.setMotion(x,y,z)

Read and control position and velocity.

player.getRot(), player.setRot(pitch,yaw), player.swing(), player.attack(entity)

Read camera rotation, rotate, swing, and attack.

world.getBlock(x,y,z), world.getEntities(), world.getRayTrace()

Read blocks, entities, and what your crosshair is pointing at.

render.text, render.rect, render.line, render.worldToScreen

Draw custom overlays during on_render.

packet.create, packet.copy, packet.getId, client.sendPacket

Advanced packet tools for experienced script authors.

auth.getPos, auth.setPos, auth.setRot, auth.setDelta, auth.clearVertical

Helpers for PlayerAuthInput packets.

Examples

Simple Fly

local Fly = {}

module.register("LuaFly", "Simple movement script", "Movement", Fly)
module.addSlider("LuaFly", "Speed", "Move speed", 0.1, 5.0, 1.5)

function Fly.on_disable(self)
    player.setMotion(0, 0, 0)
end

function Fly.on_tick(self)
    local speed = module.get("LuaFly", "Speed")
    local yaw = player.getRot()
    local rad = math.rad(yaw + 90)
    local mx, mz = 0, 0
    if client.isKeyDown("w") then
        mx = math.cos(rad) * speed
        mz = math.sin(rad) * speed
    end
    local my = 0
    if client.isKeyDown("space") then my = speed end
    if client.isKeyDown("shift") then my = -speed end
    player.setMotion(mx, my, mz)
end

Block Warning

local BlockWarn = {}

function BlockWarn.on_tick(self)
    local x, y, z = player.getPos()
    local below = world.getBlock(math.floor(x), math.floor(y - 1), math.floor(z))
    if below and string.find(below, "magma") then
        client.notification("Warning", "You are standing on magma", 1.5)
    end
end

module.register("BlockWarn", "Warns about dangerous blocks", "World", BlockWarn)

Advanced Lua: Table Criticals

This example shows a complete table-structured combat script with packet caching, lifecycle cleanup, settings, and attack-triggered packet sends. It is intended for experienced users who already understand packet modules and testing in controlled environments.

Important: Move once after enabling so the script can cache a valid PlayerAuthInput packet before the first attack.
local Criticals = {} 

local PACKET_AUTH_INPUT = 144 

local cached_packet_template = nil
local has_valid_cache = false

local function log(msg)
    print("[TableCrit] " .. tostring(msg))
end

function Criticals.on_enable(self)
    has_valid_cache = false
    cached_packet_template = packet.create(PACKET_AUTH_INPUT)
    log("Enabled.")
end

function Criticals.on_disable(self)
    has_valid_cache = false
end

function Criticals.on_packet_send(self, pkt)
    if packet.getId(pkt) == PACKET_AUTH_INPUT then
        if cached_packet_template ~= nil then
            packet.copy(cached_packet_template, pkt)
            has_valid_cache = true
        end
    end
end

function Criticals.on_attack(self, target)
    if not has_valid_cache or cached_packet_template == nil then
        log("No cache. Move first!")
        return
    end

    local count = module.get("LuaCrit", "Packet Count")
    local x, y, z = auth.getPos(cached_packet_template)

    local jump_pkt = packet.create(PACKET_AUTH_INPUT)
    packet.copy(jump_pkt, cached_packet_template)
    
    auth.setPos(jump_pkt, x, y + 1.0, z)
    auth.clearVertical(jump_pkt)
    
    client.sendPacket(jump_pkt)

    local fall_y = y + 0.5
    
    for i = 1, count do
        local fall_pkt = packet.create(PACKET_AUTH_INPUT)
        packet.copy(fall_pkt, cached_packet_template)
        
        auth.setPos(fall_pkt, x, fall_y, z)
        auth.clearVertical(fall_pkt)
        
        client.sendPacket(fall_pkt)
    end
    
    log("Crit! (" .. count .. " packets)")
end

module.register("LuaCrit", "Criticals using Lua Table Structure", "Combat", Criticals)
module.addSlider("LuaCrit", "Packet Count", "Packets sent per hit", 1, 10, 6)

What this script demonstrates

  • on_enable creates a reusable packet template and clears stale cache state.
  • on_packet_send refreshes the template from real outgoing input packets.
  • on_attack refuses to run until a valid movement packet has been cached.
  • module.addSlider exposes packet count in ClickGUI for quick tuning.

Command Reference

Commands are useful when you want fast, precise control without opening a full settings panel.

CommandWhat it doesExample
.toggleToggles a module by name..toggle FullBright
.bindAssigns a keybind to a module..bind Killaura R
.configSaves, loads, and manages configs..config save mining
.mobtp / .mtTeleports to the nearest entity type using known entity IDs or name fallback..mt zombie
#gotoStarts Baritone pathing to coordinates or stops the current route.#goto 120 64 -30

Troubleshooting

Baritone will not move

Check that Pathfinding is enabled, a target is queued, and no movement module is overriding inputs. Turn on Path Debug HUD for live state.

Inventory rules do not save

Save or load a config after changing rules. The configurator stores hotbar rules and blacklist entries with the module config.

ESP is noisy

Reduce render distance, enable batching where available, and remove block or entity types you do not need.

Lua script does nothing

Confirm the module is registered, enabled, and using the correct event names such as on_tick, on_attack, or on_packet_send.