Skip to main content

Building tools and Garden presets

Use these with the Farm Builder. Tool definitions describe a server ability; they do not grant the ability or verify its permissions.

Optional tools

require("hexis/building").new() enables no special items. Supply a tools table to select the abilities supported by your server. A definition contains an exact vanilla item_id, server_item_id and a HexisBuildRowRule.

available(name, item) compares the configured identity with an observed item. An item's display name alone cannot enable a tool. This checks identity, not server permissions or whether the declared ability behaves as expected.

hexis/building/row_tools supplies two constructors:

ConstructorItem IDRequired server settings
tilling_hoe(options)HOE_OF_GREATEST_TILLINGlength, overflow, targets, result
wart_basket(options)NETHER_WART_POUCHlength, overflow

Neither constructor assumes a row limit. length must be 1–256. overflow must be stop or reject, according to the selected server's behavior. The hoe models exposed soil in a cardinal row starting at the clicked block. The basket models planting above a cardinal row of soul sand, including the clicked block. Use these definitions only when those rules match your server. Defining a tool here does not install its server ability.

local building = require("hexis/building")
local rows = require("hexis/building/row_tools")

local function models_for(verified_rules)
return building.new({tools = {
till = rows.tilling_hoe(verified_rules.till),
wart = rows.wart_basket(verified_rules.wart),
}})
end

The builder library needs world.blocks.read. The constructors need no capabilities. Read item identities through hexis.inventory.items, which requires inventory.

Preview a row

Call models.preview(name, request) with world_generation, a clicked seed, cardinal direction and inclusive bounds = {min, max}. The definition supplies the rule for hexis.building.row.preview.

ready returns ordered effects, each containing position, before and after. It assumes sufficient materials. An unconfigured tool returns unavailable. Other statuses are empty, unknown, outside_bounds and overflow. A rejected preview contains no effects; build bounds never shorten an ability's row.

A preview sends no input and consumes no items. It does not prove stock, permissions, reach, a safe player position or server completion. It cannot be retained as permission for a later activation.

Hexis Garden presets

Select require("hexis/building/hexis_garden") explicitly when using the Hexis server. Its menus differ from Hypixel's. Declare gui.read, gui.interact, routes.read, chat.read, chat.command and world.entities.read.

Start with closed menus or Configure Plots. Both operations take plot, name, icon and world_generation, plus optional plot_name and timeout. plot_name is required when the plot has been renamed. The default timeout is 120 seconds; the supported range is 1–600 seconds.

save(options) checks the selected plot and library, enters a unique name through the anvil, selects the icon and waits for the server's completion message. It reopens the library to confirm one matching name and icon, then returns status = "saved". Verify the source structure before calling it. Names must contain 1–24 ASCII letters, numbers, spaces, underscores or hyphens, with no leading or trailing space. An existing name is refused.

bounds(plot) returns the complete replacement volume for an outer plot, including its bedrock layer at Y=66. The barn is excluded. paste(options) requires an additional replace table equal to those complete bounds. This explicitly allows replacing existing blocks and contents, including air.

The paste workflow finds the preset again, checks the destination confirmation and submits once. Its result is status = "needs_verification", with server_reported_complete = true and the affected bounds. The calling script must independently verify the entire target volume before reporting build success. A matching preset label is insufficient.

An uncertain outcome stops without automatic retry. A server job may continue after the script stops; inspect it before repeating a save or paste. Closing the menu does not cancel an already submitted job.

Generic anvil input uses gui.transact with {kind="text", expected_text=current_text, text=new_text}. It requires an unchanged screen revision and empty cursor. Success updates the input widget; submitting output slot 2 and observing server acceptance are separate steps.

See the API reference and library declarations for the generated contracts.

Hypixel building tools

This branch detects Builder’s Wand, Builder’s Ruler, Prismapump, Basket of Seeds, Nether Wart Pouch (called Nether Wart Basket on Hexis), and Hoe of Greater Tilling. The Greater hoe tills a checked 5 × 5 area; it is different from the Greatest row hoe. When a complete checked batch fits, the material list includes the required tool. Other placements use ordinary blocks and items. These tool paths still need Hypixel testing. They do not apply to every farm layout.

If supplies may be inside your carried ruler, wand or seed basket, Build farm checks that storage before construction. It retrieves only missing materials, leaving the rest inside. An InfiniDirt Wand can stay in the ruler or wand during the initial supply check and is retrieved for individual placements when needed; you do not have to remove it first. Leave enough usable inventory space for the retrieved supplies. Missing supported supplies can yield to the SkyBlock restock recipe. Missing required tools and uncertain transfers still stop construction.

InfiniDirt funds dirt through coins, including temporary supports. Keep enough coins in your purse. The displayed build cost is an estimate. The automatic restock recipe separately checks an observed, unabridged purse balance before spending and reserves the next coin-funded dirt operation.

For an eligible batch, matching blocks stay in tool storage, including extra stacks. The ruler moves the selected material ahead of competing stored blocks and leaves unrelated stock behind it. Other storage tools may return incompatible items to safe inventory slots. Existing dirt can stay beside InfiniDirt. Leave room for transfers. InfiniDirt can also be retrieved for individual placements. Qualified Prismapump batches replace the corresponding water-bucket requirement; qualified Greater hoe batches replace ordinary hoe uses. A ruler row may build its final endpoint first to stop at the right place. Temporary supports are removed before later build phases; existing unrelated blocks are left alone.

On Hexis, ordinary blocks take priority over InfiniDirt when the ruler selects its material. Keep one ordinary dirt block available to select coin-funded dirt when other blocks are stocked. If that is impossible, the builder uses InfiniDirt for individual dirt placements instead of selecting the wrong material.

Opening storage waits briefly after selecting the tool, then left-clicks without moving the camera. It retries up to three times if no menu appears. A wrong menu stops the transfer. If an item remains on the cursor after an interrupted transfer, the menu stays open for inspection. After moving items, the builder reopens storage to verify the complete contents. A partly confirmed world action stops instead of repeating the tool click.