Skip to main content

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:

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.