Farm Builder and optional tools
The Farm Builder script opens an in-world schematic preview and builds the confirmed placement using ordinary flight and item controls. This branch contract still needs live Minecraft acceptance. Use the matching development build named by your testing instructions.
Choose and position a farm
Enable Farm Builder under Scripts → Building, or open /hexis builder.
Choose the bundled 5 × 5 practice farm or a .litematic file in your Minecraft
instance's schematics folder. The preview starts at your position.
Choose Position in world to move around it. Arrow keys move the preview on the horizontal plane relative to your camera. Alt + Up/Down changes height; Shift moves five blocks. R rotates 90 degrees; Shift + R rotates the other way. Enter or M returns to the panel. You can also use Move here and the coordinate fields. Confirm and build fixes the placement and starts construction.
Glass endcaps and internal channel repairs appear in the preview and move with it. These may replace blocks inside the original farm. Inspect them before confirming. The original schematic file stays unchanged. Schematics containing sign text or head data require acceptance of block-only construction.
Run and refill
You need server-granted flight and materials in the hotbar. The practice farm uses 16 stone, 8 dirt, 8 wheat seeds, one water bucket, and an ordinary hoe. Imported farms also need their block items, repair glass, and temporary dirt supports. Escape stops an active build.
When materials run out, the script releases inputs and lists what it needs. Refill the hotbar, restart Farm Builder, and confirm the retained placement. Existing matching blocks are skipped. Inventory restocking, bucket replenishment, ice melting, and automatic Garden copy/paste are not included in this script. If a submitted input remains unconfirmed, rejoin before restarting.
hexis.building.edit({}) waits for your confirmation. hexis.building.observe({})
reports the selected placement and current progress. hexis.building.run takes
the confirmed selection and world_generation. These calls do not bypass
confirmation or material checks. A progress total covers planned work so far,
not a full-farm completion estimate.
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:
| Constructor | Item ID | Required server settings |
|---|---|---|
tilling_hoe(options) | HOE_OF_GREATEST_TILLING | length, overflow, targets, result |
wart_basket(options) | NETHER_WART_POUCH | length, 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.