# Hexis Lua API Source snapshot: module 0.1.39 at 2d737feb449c05c8df9f79a7ebefd4c582cdfb94 Verified: 2026-07-24 Use only members in this file. Supported means exercised by an official script; experimental and advanced members require controlled validation. ## chat - hexis.chat.command(cmd) [supported; function] - Command - hexis.chat.send(message) [supported; function] - Send - hexis.chat.send_as_hexis(message) [supported; function] - Send with Hexis prefix ## client - hexis.client.play_sound(id, opts) [supported; function] - Play client-side sound ## combat - hexis.combat.attack(target, options) [supported; function] - Single attack - hexis.combat.blacklist(entity_table, duration_ms) [experimental; function] - Ignore entity for duration - hexis.combat.can_attack() [supported; function] - Check if attack cooldown is ready - hexis.combat.clear_camera_lock() [supported; function] - Release camera lock - hexis.combat.distance_to(entity_table) [experimental; function] - Euclidean distance to entity - hexis.combat.engage(options) [supported; function] - Single-target combat (Lua provides entity) - hexis.combat.find_boss({type = "wolf", boss_name = "Sven Packmaster", require_ownership = true}) [experimental; function] - Find Boss - hexis.combat.find_target({type = "wolf", priority = "nearest", radius = 30}) [experimental; function] - Find Target - hexis.combat.get_targets(distance) [experimental; function] - Get entities within distance - hexis.combat.has_los(entity_table) [experimental; function] - Check LOS to entity (lenient, any ray) - hexis.combat.has_los_strict(entity_table) [experimental; function] - Strict LOS (3+ rays must pass) - hexis.combat.has_target() [experimental; function] - Check if we have a valid target - hexis.combat.hunt(options) [experimental; function] - Hunt mode - hexis.combat.in_range(entity_table, range) [supported; function] - Check if entity is in attack range - hexis.combat.is_active() [experimental; function] - Check if combat is running - hexis.combat.is_alive(entity_table) [experimental; function] - Check if entity exists and has health > 0 - hexis.combat.is_async_active() [experimental; function] - Check if async combat is running - hexis.combat.is_blacklisted(entity_table) [experimental; function] - Check if entity is blacklisted - hexis.combat.is_pursuing() [experimental; function] - Check if pursuing - hexis.combat.is_valid(entity_table) [experimental; function] - Check if entity is still valid - hexis.combat.pursue(entity_table) [supported; function] - Start non-blocking pursuit - hexis.combat.pursue_stop() [supported; function] - Stop pursuit - hexis.combat.pursuit_distance() [experimental; function] - Get distance to target - hexis.combat.pursuit_tick() [supported; function] - Update pursuit (call every frame) - hexis.combat.set_behavior("strafe") [supported; function] - Set movement behavior - hexis.combat.set_camera_lock(entity_table) [supported; function] - Lock camera on target - hexis.combat.set_kite_range(min, optimal, max) [experimental; function] - Configure kiting distances - hexis.combat.set_target(entity_table) [experimental; function] - Set current target for async combat Entity table should have: {x, y, z, type, name, id} from get_nearby_entities - hexis.combat.start(...) [supported; function] - Start - hexis.combat.start_async({cps = 7, tracking_speed = 2.5}) [experimental; function] - call tick() every frame - hexis.combat.stop() [supported; function] - Stop combat - hexis.combat.stop_async() [experimental; function] - Stop async combat and release camera - hexis.combat.swing() [supported; function] - Swing weapon (single attack) ## conditions - hexis.conditions.always() [advanced; function] - Always true (useful for testing) - hexis.conditions.distance_from_marked(operator, value) [advanced; function] - Distance from marked pos - hexis.conditions.entity_within(distance, duration) [advanced; function] - Entity within range for duration seconds - hexis.conditions.gui_closed(title_pattern) [advanced; function] - GUI is closed - hexis.conditions.gui_open(title_pattern) [advanced; function] - GUI with title is open - hexis.conditions.inventory_full() [advanced; function] - Inventory is full - hexis.conditions.mob_within(distance, duration) [supported; function] - Mob within range for duration seconds - hexis.conditions.no_players_nearby(distance) [advanced; function] - No players within distance - hexis.conditions.player_health(operator, value) [advanced; function] - Health check operator: "lt", "gt", "eq", "le", "ge" - hexis.conditions.player_nearby(distance) [supported; function] - Any player within distance - hexis.conditions.player_sneaking(distance) [supported; function] - Player is sneaking nearby - hexis.conditions.player_visible(distance, duration) [supported; function] - Player visible for duration seconds - hexis.conditions.player_within(distance, duration) [supported; function] - Player lingering for duration seconds - hexis.conditions.player_y(operator, value) [advanced; function] - Y coordinate check - hexis.conditions.random(chance) [supported; function] - Random chance (0.0 to 1.0) - hexis.conditions.tablist_contains(pattern) [advanced; function] - Tablist has matching entry ## config - hexis.config(definition) [supported; callable-table] - Define user-editable script settings - hexis.config.dropdown(label, options, default) [supported; function] - Dropdown - hexis.config.item_selector(label, items, default) [experimental; function] - Item Selector - hexis.config.route(label, default) [supported; function] - Route - hexis.config.slider(label, min, max, default, step) [supported; function] - Slider - hexis.config.stepper(label, min, max, default, step) [supported; function] - Stepper - hexis.config.text_input(label, default, placeholder) [experimental; function] - Text Input - hexis.config.toggle(label, default) [supported; function] - Toggle ## core - hexis.notify(message) [supported; function] - Show a Hexis notification - hexis.wait(seconds) [supported; function] - Pause script execution for a duration ## events - hexis.events.after(seconds, callback) [experimental; function] - One-time delayed event - hexis.events.clear() [experimental; function] - Remove all event listeners - hexis.events.every(seconds, callback) [experimental; function] - Timer event - hexis.events.on(type, pattern, callback) [supported; function] - Register event listener - hexis.events.remove(id) [supported; function] - Remove event listener ## format - hexis.format.coins(n) [supported; function] - Alias for number (explicit abbreviation) - hexis.format.duration(seconds) [experimental; function] - Format seconds to "1h 23m 45s" - hexis.format.number(n) [supported; function] - Format number with abbreviations (k/m/b) like YAML's | coins - hexis.format.percent(n) [experimental; function] - Format as percentage - hexis.format.raw(n) [experimental; function] - Format number with commas (no abbreviation) ## gui - hexis.gui.click(slot) [supported; function] - Click a slot - hexis.gui.click_item(options) [supported; function] - Find and click item - hexis.gui.click_item_by_lore(pattern) [experimental; function] - Find and click item by lore - hexis.gui.close() [supported; function] - Close current GUI (delegates to gui_close command) - hexis.gui.debug() [experimental; function] - Debug GUI info - hexis.gui.find(pattern) [experimental; function] - Find item in GUI - hexis.gui.find_by_relation(options) [experimental; function] - Find item by position relation - hexis.gui.get_container_size() [experimental; function] - Returns number of container slots (excludes player inv) - hexis.gui.get_hovered_item() [experimental; function] - Get item under cursor (moved from actions) - hexis.gui.get_slot_info(slot) [supported; function] - Returns a Lua table with full slot details - hexis.gui.get_slots(from, to) [supported; function] - Bulk scan returning array of slot info tables - hexis.gui.get_title() [supported; function] - Get current GUI title - hexis.gui.has_title(pattern) [supported; function] - Check if current GUI title contains pattern - hexis.gui.is_open() [supported; function] - Check if any GUI is open - hexis.gui.open() [experimental; function] - Open inventory - hexis.gui.poll_slot_changes() [supported; function] - Returns array of {slot, type, name, has_foil} changes - hexis.gui.safe_mode() [supported; function] - STOP ALL activity before GUI interaction CRITICAL: Call this before ANY GUI operation to ensure player is completely still - hexis.gui.stop_watching() [supported; function] - Stop the slot watcher - hexis.gui.switch_hotbar(slot) [experimental; function] - Switch hotbar slot - hexis.gui.wait_for(title, timeout) [supported; function] - Wait for GUI - hexis.gui.watch_slots(slot_ids_table) [supported; function] - Start watching slots on main thread for changes ## http - hexis.http.get(...) [supported; function] - Get ## hud - hexis.hud.add_state(name, config) [supported; function] - Add a HUD state - hexis.hud.create(config) [supported; function] - Initialize HUD with config - hexis.hud.hide() [experimental; function] - Hide the HUD - hexis.hud.is_visible() [experimental; function] - Check if HUD is visible - hexis.hud.set(config) [supported; function] - Simple HUD definition (updates on each call) - hexis.hud.set_state(name) [supported; function] - Switch to a HUD state (triggers animation) - hexis.hud.set_var(name, value) [experimental; function] - Set a variable for interpolation - hexis.hud.show() [experimental; function] - Show the HUD - hexis.hud.start_timer() [supported; function] - Start the session timer - hexis.hud.stop_timer() [experimental; function] - Stop the session timer ## input - hexis.input.is_key_just_pressed(key) [advanced; function] - Check if key was just pressed this frame - hexis.input.is_key_pressed(key) [advanced; function] - Check if key is currently pressed ## inventory - hexis.inventory.close() [experimental; function] - close current GUI (delegates to gui_close command) - hexis.inventory.contains(pattern) [supported; function] - check if hotbar contains item - hexis.inventory.count_items(pattern) [supported; function] - count total items matching pattern across entire inventory - hexis.inventory.find_slot(pattern) [supported; function] - find hotbar slot matching pattern - hexis.inventory.get_hotbar_items() [supported; function] - get all hotbar item names - hexis.inventory.held_item [experimental; property] - Held Item - hexis.inventory.held_slot [experimental; property] - Held Slot - hexis.inventory.is_full() [supported; function] - check if inventory is full (moved from conditions) - hexis.inventory.open() [experimental; function] - open player inventory - hexis.inventory.select_slot(n) [supported; function] - select hotbar slot (moved from world.select_hotbar_slot) ## log - hexis.log.debug(message) [supported; function] - Debug - hexis.log.error(message) [supported; function] - Error - hexis.log.info(message) [supported; function] - Info - hexis.log.warn(message) [supported; function] - Warn ## mining - hexis.mining.aim_tick() [experimental; function] - Perform one frame of aiming toward async mining target. - hexis.mining.break_block({x, y, z, aim_speed, highlight}) [experimental; function] - Break Block - hexis.mining.cancel_precomputation() [experimental; function] - Cancel any ongoing precomputation - hexis.mining.check_current_reach({x, y, z}) [experimental; function] - Quick check if we can reach block now Returns vantage point info for current position, or nil if not reachable - hexis.mining.check_reach(arg1) [supported; function] - Pre-filter unreachable blocks before mining - Custom reach scoring algorithms - Cache reach data for batch optimization - Filter by score threshold (e.g., only mine blocks with score > 0.7). IMPORTANT: Results are from CURRENT player position - cache invalidates when player moves! - hexis.mining.end_session() [supported; function] - End multi-block mining session, release everything - hexis.mining.find_ground_vantage_points({x, y, z, search_radius}) [experimental; function] - Find GROUND-LEVEL positions for mining overhead blocks. Only returns positions at/below player Y that can jump-reach the target. - hexis.mining.find_immediate_target({candidates = {{x,y,z}, ...}, last_mined = {x,y,z}}) [experimental; function] - Find Immediate Target - hexis.mining.find_nearest_reachable(...) [experimental; function] - Find Nearest Reachable - hexis.mining.find_vantage_points({x, y, z, search_radius}) [experimental; function] - Find positions to mine from Returns array of vantage points sorted by quality - hexis.mining.get_aim_point(x, y, z) [experimental; function] - Get optimal aim angles - hexis.mining.get_all_aim_points({x, y, z}) [experimental; function] - Get all visible aim points on block Returns array of {x, y, z} for retry logic - hexis.mining.get_blocks_mined() [supported; function] - Get count of blocks mined in current loop - hexis.mining.get_crosshair_target() [experimental; function] - Get the block the crosshair is currently targeting Returns {x, y, z, side} table or nil if not targeting a block CRITICAL: - hexis.mining.get_distance(x, y, z) [experimental; function] - Get distance to block - hexis.mining.get_mining_progress() [experimental; function] - Get Mining Progress - hexis.mining.get_precomputed_target() [experimental; function] - Get and clear the precomputed next target Returns table with target info or nil if not ready - hexis.mining.get_smart_aim_point({x, y, z}) [experimental; function] - Get best visible point on block Returns {x, y, z} aim coordinates (may be off-center!) or nil if no visible point - hexis.mining.has_line_of_sight(x, y, z) [supported; function] - Has Line Of Sight - hexis.mining.is_block_obstructed(x, y, z) [supported; function] - Is Block Obstructed - hexis.mining.is_block_reachable({x, y, z}) [experimental; function] - Quick check if block can be reached from anywhere Returns true if at least one good vantage point exists - hexis.mining.is_breakable(x, y, z) [experimental; function] - Check if block can be broken - hexis.mining.is_entity_obstructing() [experimental; function] - Is Entity Obstructing - hexis.mining.is_loop_active() [experimental; function] - Check if mining loop is running - hexis.mining.is_mining() [experimental; function] - Check if currently mining - hexis.mining.is_mining_async() [experimental; function] - Check if async mining is active - hexis.mining.is_precomputing() [experimental; function] - Check if precomputation is running - hexis.mining.is_session_jump_active() [experimental; function] - Check if session jump is currently active - hexis.mining.is_targeting_block(x, y, z) [experimental; function] - Check if crosshair is targeting specific block Returns true if the crosshair is currently aimed at the specified block - hexis.mining.mine_block(arg1) [supported; function] - Mine Block - hexis.mining.mine_nearest(arg1) [supported; function] - Mine Nearest - hexis.mining.peek_precomputed_target() [experimental; function] - Peek at precomputed target without clearing Useful for visual highlighting of next target - hexis.mining.precompute_next_target({current = {x,y,z}, candidates = {{x,y,z}, ...}}) [experimental; function] - by the time you finish, the next target is ready. - hexis.mining.recalculate_aim({x, y, z}) [experimental; function] - Re-run aim point calculation from current eye position - hexis.mining.select_target_smart(arg1) [experimental; function] - Select Target Smart - hexis.mining.set_session_jump(true/false) [supported; function] - Enable/disable continuous jump during mining session When enabled, jump is held across multiple mine_block calls until disabled or session ends - hexis.mining.start_loop(options) [experimental; function] - Start async mining loop - hexis.mining.start_mining_async({x, y, z, aim_speed}) [experimental; function] - Start mining a block (non-blocking). Lua must poll aim_tick() and call stop_mining_async when done. - hexis.mining.start_mining_smart({x, y, z, aim_speed}) [experimental; function] - Start async mining with smart aim Uses SmartAimPointFinder to target visible part of block Same as start_mining_async but auto-finds best aim point - hexis.mining.start_session() [supported; function] - Begin multi-block mining session - hexis.mining.stop() [experimental; function] - Stop current mining - hexis.mining.stop_loop() [experimental; function] - Stop async mining loop - hexis.mining.stop_mining_async() [supported; function] - Stop non-blocking mining ## movement - hexis.movement.get_owner() [advanced; function] - Get current control owner - hexis.movement.get_state() [advanced; function] - Get current movement state - hexis.movement.is_controlled() [advanced; function] - Check if we have movement control - hexis.movement.release_control() [supported; function] - Release movement control - hexis.movement.set_allow_jumping(allow) [advanced; function] - Set Allow Jumping - hexis.movement.set_allow_sprinting(allow) [advanced; function] - Set Allow Sprinting - hexis.movement.set_backward(pressed) [advanced; function] - Set Backward - hexis.movement.set_forward(pressed) [supported; function] - Set Forward - hexis.movement.set_state({forward, backward, strafe, sprint, jump, sneak}) [advanced; function] - Set State - hexis.movement.set_strafe_intensity(intensity) [advanced; function] - Set Strafe Intensity - hexis.movement.set_strafe_left(pressed) [advanced; function] - Set Strafe Left - hexis.movement.set_strafe_right(pressed) [advanced; function] - Set Strafe Right - hexis.movement.set_tap_mode(enabled) [advanced; function] - Enable precision approach mode - hexis.movement.stop() [advanced; function] - Stop all movement immediately - hexis.movement.take_control(owner_name) [advanced; function] - Take exclusive control of movement ## navigate - hexis.navigate.arrived() [experimental; function] - Check if navigation completed - hexis.navigate.blacklist({x, y, z}) [experimental; function] - Manually blacklist a position - hexis.navigate.check_location(location) [experimental; function] - Check if at location - hexis.navigate.clear_blacklist({x, y, z}) [supported; function] - Remove a position from blacklist - hexis.navigate.clear_camera_lock() [supported; function] - Clear Camera Lock - hexis.navigate.drop() [experimental; function] - Drop down from current location - hexis.navigate.etherwarp(location) [supported; function] - Teleport using etherwarp - hexis.navigate.find_ground_position(arg1) [experimental; function] - Find Ground Position - hexis.navigate.get_blacklist_count() [experimental; function] - Get count of blacklisted positions - hexis.navigate.get_wasd_stuck_reason() [experimental; function] - Get reason WASD mode got stuck (resets after read) - hexis.navigate.get_water_surface_y(x, z) [experimental; function] - Get Y level of water surface at position - hexis.navigate.has_camera_lock() [experimental; function] - Has Camera Lock - hexis.navigate.is_blacklisted({x, y, z}) [experimental; function] - Check if a position is blacklisted - hexis.navigate.is_in_water() [experimental; function] - Check if player is currently in water - hexis.navigate.is_navigating() [supported; function] - Check if currently navigating - hexis.navigate.is_swim_navigating() [experimental; function] - Check if currently swim navigating - hexis.navigate.is_swimming() [experimental; function] - Check if player is in swim mode - hexis.navigate.is_underwater({x, y, z}) [experimental; function] - Check if a position is underwater - hexis.navigate.near({x, y, z, range, min_range}) [supported; function] - Near - hexis.navigate.set_camera_lock(...) [supported; function] - navigation uses strafe only. - hexis.navigate.smart_etherwarp(options) [experimental; function] - Smart etherwarp with LOS check - hexis.navigate.start_async({x, y, z, distance, max_nodes, max_time_ms}) [supported; function] - Start navigation (path compute is synchronous). Returns immediately after pathfinding starts. - hexis.navigate.stop() [supported; function] - Stop navigation - hexis.navigate.swim_to({x, y, z, max_nodes, heuristic_weight}) [experimental; function] - Swim To - hexis.navigate.to(location) [supported; function] - Navigate to a location ## player - hexis.player.attack(opts?) [experimental; function] - Attack - hexis.player.can_reach_block({x, y, z}) [experimental; function] - Check if block is within mining range Returns true if block is within 4.5 blocks and has line of sight - hexis.player.distance_to({x, y, z}) [supported; function] - Get 3D distance to position - hexis.player.drop_item() [experimental; function] - drop current held item - hexis.player.equip(...) [supported; function] - Equip - hexis.player.find_hotbar_slot(pattern) [experimental; function] - find slot with item matching pattern (-1 if not found) - hexis.player.get_air_control_factor() [experimental; function] - Get air control effectiveness (0.0-1.0). Returns multiplier for strafe effectiveness when airborne With high Jump Boost, this can be as low as 0.05 (5%) - hexis.player.get_effect(name) [supported; function] - Get info about an active potion effect Returns table {active, level, amplifier, duration, ambient} or nil if not active - hexis.player.get_hotbar_items() [experimental; function] - get table of all hotbar item names - hexis.player.get_jump_boost_level() [experimental; function] - Get jump boost level (0 = none, 1-5 = Jump Boost I-V) - hexis.player.get_max_jump_height() [experimental; function] - Get max jump height in blocks Takes into account Jump Boost effect - hexis.player.get_nearest() [supported; function] - returns name of nearest player - hexis.player.health [experimental; property] - Health - hexis.player.health_percent [supported; property] - Health Percent - hexis.player.held_item [experimental; property] - Held Item - hexis.player.held_slot [experimental; property] - Held Slot - hexis.player.horizontal_distance(location) [supported; function] - returns horizontal distance to location - hexis.player.hotbar_contains(pattern) [experimental; function] - check if item matching pattern is in hotbar - hexis.player.hunger [experimental; property] - Hunger - hexis.player.interact_block(pos, opts) [supported; function] - right-click a specific block Looks at block center first, then sends use-item-on interaction - hexis.player.interact_entity(...) [experimental; function] - Interact Entity - hexis.player.is_flying [experimental; property] - Is Flying - hexis.player.is_on_ground [experimental; property] - Is On Ground - hexis.player.is_rotation_locked() [experimental; function] - Is Rotation Locked - hexis.player.is_sneaking [experimental; property] - Is Sneaking - hexis.player.is_sprinting [experimental; property] - Is Sprinting - hexis.player.jump(opts?) [supported; function] - Jump - hexis.player.look_at(target, opts?) [supported; function] - Look At - hexis.player.max_health [experimental; property] - Max Health - hexis.player.name [supported; property] - Name - hexis.player.pitch [supported; property] - Pitch - hexis.player.position [supported; property] - Position - hexis.player.raycast(distance) [experimental; function] - Raycast - hexis.player.sneak(opts?) [supported; function] - Sneak - hexis.player.sprint(enabled) [experimental; function] - Sprint - hexis.player.swing_hand() [experimental; function] - Swing Hand - hexis.player.use_item(opts?) [supported; function] - Use Item - hexis.player.x [supported; property] - X - hexis.player.y [supported; property] - Y - hexis.player.yaw [supported; property] - Yaw - hexis.player.z [supported; property] - Z ## route-handle - route:get_available_block_count() [experimental; handle-method] - Get Available Block Count - route:get_blocks() [supported; handle-method] - Get Blocks - route:get_group_for_zone(...) [supported; handle-method] - Get Group For Zone - route:get_nearest_block(arg1) [experimental; handle-method] - Get Nearest Block - route:get_ungrouped_zones() [experimental; handle-method] - Get Ungrouped Zones - route:get_zone(arg1) [experimental; handle-method] - Get Zone - route:get_zone_at_player() [supported; handle-method] - Get Zone At Player - route:get_zone_groups() [experimental; handle-method] - Get Zone Groups - route:get_zones() [experimental; handle-method] - Get Zones - route:get_zones_in_group(...) [experimental; handle-method] - Get Zones In Group - route:is_in_zone(...) [experimental; handle-method] - Is In Zone - route:mark_complete(...) [supported; handle-method] - Mark Complete ## routes - hexis.routes.exists(name) [experimental; function] - Exists - hexis.routes.get_capabilities(route) [experimental; function] - Get Capabilities - hexis.routes.list() [experimental; function] - List - hexis.routes.list_with(required_types) [experimental; function] - List With - hexis.routes.load(name) [supported; function] - Load ## script - hexis.script(metadata) [supported; declaration] - Declare script metadata - hexis.script.is_paused() [experimental; function] - Check if script is paused - hexis.script.is_running() [supported; function] - Check if script is running - hexis.script.name() [experimental; function] - Get script name - hexis.script.pause() [experimental; function] - Pause the script - hexis.script.resume() [experimental; function] - Resume the script - hexis.script.stop() [supported; function] - Stop the script completely - hexis.script.version() [experimental; function] - Get script version ## sidebar - hexis.sidebar.get_lines() [advanced; function] - Read scoreboard sidebar text lines - hexis.sidebar.hide() [advanced; function] - Hide the scoreboard sidebar - hexis.sidebar.is_hidden() [advanced; function] - Check if sidebar is hidden - hexis.sidebar.show() [advanced; function] - Show the scoreboard sidebar ## tablist - hexis.tablist.contains(pattern) [supported; function] - Check if tablist contains pattern - hexis.tablist.find(pattern) [experimental; function] - Find first display name matching pattern - hexis.tablist.find_all(pattern) [experimental; function] - Find all display names matching pattern - hexis.tablist.get_all() [supported; function] - Get all tablist entries - hexis.tablist.get_footer() [experimental; function] - Get tab list footer text - hexis.tablist.get_header() [experimental; function] - Get tab list header text ## timer - hexis.timer.elapsed() [supported; function] - Get elapsed time in seconds - hexis.timer.elapsed_ms() [experimental; function] - Get elapsed time in milliseconds - hexis.timer.formatted() [experimental; function] - Get formatted elapsed time - hexis.timer.is_running() [experimental; function] - Check if timer is running - hexis.timer.reset() [experimental; function] - Reset the timer - hexis.timer.start() [supported; function] - Start the timer - hexis.timer.stop() [experimental; function] - Stop the timer ## var - hexis.var.exists(name) [experimental; function] - Check if a runtime variable exists - hexis.var.get(name) [supported; function] - Get a runtime variable - hexis.var.set(name, value) [supported; function] - Set a runtime variable ## world.highlight - hexis.world.highlight.block(...) [advanced; function] - Block - hexis.world.highlight.clear() [advanced; function] - clear ALL highlight types - hexis.world.highlight.clear_blocks(...) [advanced; function] - Clear Blocks - hexis.world.highlight.clear_entities() [advanced; function] - delegates to existing clear_entity_highlight - hexis.world.highlight.clear_glow() [advanced; function] - Clear all glow highlights - hexis.world.highlight.clear_text(...) [advanced; function] - Clear Text - hexis.world.highlight.clear_tree() [advanced; function] - delegates to existing clear_tree_highlight - hexis.world.highlight.clear_zones() [advanced; function] - Clear all zones - hexis.world.highlight.entity(entity, color) [advanced; function] - delegates to existing highlight_entity - hexis.world.highlight.glow(entity_id, options) [advanced; function] - Model-contour glow - hexis.world.highlight.glow_rainbow(entity_id) [advanced; function] - Rainbow cycling glow - hexis.world.highlight.remove_zone(id) [advanced; function] - Remove specific zone - hexis.world.highlight.set_esp(enabled) [advanced; function] - Toggle ESP for animated highlights - hexis.world.highlight.text(...) [advanced; function] - Text - hexis.world.highlight.tree(blocks, color) [advanced; function] - delegates to existing set_tree_highlight - hexis.world.highlight.unglow(entity_id) [advanced; function] - Remove glow - hexis.world.highlight.zone(min, max, options) [advanced; function] - Zone box rendering ## world - hexis.world.clear_animated_highlight() [experimental; function] - Clear the animated highlight - hexis.world.clear_entity_highlight() [experimental; function] - Clear all entity highlights - hexis.world.clear_entity_text() [experimental; function] - Clear Entity Text - hexis.world.clear_glow() [experimental; function] - Clear all glow highlights - hexis.world.clear_secondary_highlight() [experimental; function] - Clear secondary/preview highlight - hexis.world.clear_text() [supported; function] - clear all world text for this script - hexis.world.clear_tree_highlight() [experimental; function] - Clear tree highlights - hexis.world.clear_watches() [experimental; function] - Clear all block watches - hexis.world.clear_zone_highlights() [supported; function] - Clear all zone highlights for this script - hexis.world.find_los_stand_pos(target, options) [experimental; function] - Find a position with LOS to target block target: {x, y, z} options: {max_range=20, search_radius=15} - hexis.world.find_water(radius) [supported; function] - Find nearest water block within radius - hexis.world.get_block(x, y, z) [supported; function] - Get block info at position - hexis.world.get_block_state(x, y, z) [supported; function] - Get block with all state properties - hexis.world.get_connected_blocks(pos, options) [supported; function] - Flood-fill to find connected blocks Returns array of {x, y, z} positions for all connected blocks of matching type Options: {match_patterns = {"log", "wood"}, max_blocks = 200, include_diagonals = true} - hexis.world.get_crosshair_target(range) [experimental; function] - moved from actions - hexis.world.get_nearby_entities(radius, options) [supported; function] - Get non-player entities within radius options: {type = "tadpole", exclude_types = {"armor_stand", "item"}} - hexis.world.get_nearby_players(radius, options) [supported; function] - Get players within radius - hexis.world.glow_entity(entity_id, options) [supported; function] - Add model-contour glow + tint to entity options: {outline={r,g,b}, tint={r,g,b,a}} or just {r,g,b} for both - hexis.world.glow_rainbow(entity_id) [experimental; function] - Set rainbow cycling glow on entity - hexis.world.has_exposed_face(x, y, z) [experimental; function] - Check if a block has at least one non-solid neighbor - hexis.world.highlight_block_animated(pos, color, speed) [experimental; function] - Animated highlight with smooth lerp pos: {x, y, z} color: {r, g, b, a} (optional, defaults to cyan) speed: number (optional, default 15.0) - hexis.world.highlight_entity(entity_id, color) [experimental; function] - Highlight an entity by ID color: {r, g, b, a} (optional, defaults to cyan) - hexis.world.highlight_secondary_target(pos, color, speed) [experimental; function] - Secondary/preview highlight Used for "next target" indication - more transparent, slower animation - hexis.world.highlight_zone(min, max, options) [supported; function] - Render a box between two corners min/max: {x, y, z} corners options: {fill={r,g,b,a}, border={r,g,b,a}, thickness=0.04} - hexis.world.is_block_air(x, y, z) [supported; function] - Quick check if block is air - hexis.world.is_highlight_active() [experimental; function] - Check if animated highlight is active - hexis.world.is_in_water() [supported; function] - Check if player is currently in water - hexis.world.is_water_at(x, y, z) [experimental; function] - Check if block at position is water - hexis.world.on_block_pattern(pattern, callback) [supported; function] - Listen for any block change matching pattern globally - hexis.world.players_in_zone(zone, options) [supported; function] - Count players in a zone AABB zone: table with {min={x,y,z}, max={x,y,z}} or {id, min, max} options: {filter_tablist=false, exclude_self=true} - hexis.world.remove_block_pattern(id) [supported; function] - Remove a pattern listener by ID - hexis.world.remove_entity_text(entity_id) [supported; function] - Remove Entity Text - hexis.world.remove_text(id) [experimental; function] - remove specific world text by ID - hexis.world.remove_zone_highlight(id) [supported; function] - Remove a specific zone by ID - hexis.world.scan_blocks(options) [supported; function] - Scan blocks in a radius and return matches options: {radius, match_patterns, center={x,y,z}, max_results, sort} - hexis.world.select_hotbar_slot(slot) [experimental; function] - Select a specific hotbar slot (0-8) - hexis.world.set_highlight_esp(enabled) [experimental; function] - Toggle ESP for animated highlights enabled: boolean (true = visible through walls, false = normal depth testing) - hexis.world.set_rainbow_target(entity_id) [experimental; function] - Set rainbow target for current combat target - hexis.world.set_tree_highlight(blocks, color) [experimental; function] - Highlight all blocks in a tree blocks: array of {x, y, z} color: {r, g, b, a} (optional, defaults to green) - hexis.world.text_at(pos, text_or_opts) [supported; function] - NanoVG text at world position - hexis.world.text_at_entity(entity_id, options) [supported; function] - NanoVG text that follows an entity - hexis.world.unglow_entity(entity_id) [supported; function] - Remove glow from entity - hexis.world.unwatch_block(x, y, z) [experimental; function] - Stop watching a block position - hexis.world.watch_block(x, y, z) [experimental; function] - Watch a block position for state changes