4.4 KiB
Goo Program Plan
Goal
Add a turtle program named goo for automating Just Dire Things goo block processing.
The turtle is placed directly below the goo block. It should run forever, adapt to its inventory, feed the goo when it is not alive, place supported process blocks around the goo, and mine the resulting crystal blocks.
Command
goo startstarts the automation loop.goo help/goo --helpprints usage.goo version/goo --versionprints the version.
Starting Position
The turtle must start directly below the goo block:
[goo]
[turtle]
[ground]
The turtle cannot move down because of the ground. The block below the goo is the turtle's starting cell, so the bottom side must be handled last and from an adjacent position.
Goo Detection
Use turtle.inspectUp() from the starting position.
Supported goo blocks:
justdirethings:gooblock_tier1justdirethings:gooblock_tier2justdirethings:gooblock_tier3justdirethings:gooblock_tier4
Parse the tier from the block name. Re-inspect regularly so the program adapts if the goo tier changes.
Alive Handling
The goo is ready when:
inspected.state and inspected.state.alive == true
If alive is false or nil, the turtle should use the appropriate feeding item directly on the goo with turtle.placeUp().
Feeding items are ordered arrays so preference is data-driven:
local FEEDING_ITEMS_BY_TIER = {
[1] = { 'minecraft:sugar', 'minecraft:rotten_flesh' },
[2] = { 'minecraft:nether_wart' },
[3] = { 'minecraft:chorus_fruit' },
[4] = { 'minecraft:sculk' },
};
Tier 1 naturally prefers sugar because it appears first.
If no valid feeding item is present, log a useful message and wait forever for the player to add one.
Process Blocks
Supported process blocks and required goo tiers:
local PROCESS_ITEMS = {
['minecraft:iron_block'] = { tier = 1, label = 'iron' },
['minecraft:coal_block'] = { tier = 1, label = 'coal' },
['mekanism:block_charcoal'] = { tier = 1, label = 'charcoal' },
['minecraft:gold_block'] = { tier = 2, label = 'gold' },
['minecraft:diamond_block'] = { tier = 3, label = 'diamond' },
['minecraft:netherite_block'] = { tier = 4, label = 'netherite' },
};
Rules:
- A goo tier can process items whose required tier is less than or equal to the goo tier.
- Lower-tier goo skips higher-tier items and logs the required tier.
- Tier 4 goo can process every supported item.
- Materials may be mixed; a full six-block batch of one material is not required.
- The program should continue forever, even if no eligible process blocks are currently present.
Six-Side Handling
The program should work all six sides of the goo:
- top
- north
- south
- east
- west
- bottom
Horizontal sides:
- Move from center to adjacent floor position.
- Use
inspectUp,digUp, andplaceUpto work the side target. - Return to center.
Top side:
- Move to an adjacent floor position.
- Climb up twice when the side path allows it.
- Face the top target.
- Use
inspect,dig, andplace. - Return to center.
Bottom side:
- Ensure the goo is alive before leaving the center.
- Move to an adjacent floor position and face the original center cell.
- Work the original center cell with
inspect,dig, andplace. - If a process block was placed in the bottom position, wait outside until it is consumed or transformed.
- Mine the resulting crystal block, then return under the goo when the center is clear.
Crystal Mining Rule
After placement, the goo transforms process blocks into crystal blocks that should be mined with a pickaxe-equipped turtle.
No tag or exact crystal ID check is required. For any goo target position:
- Empty means available for placement.
- Known process material means already placed and still processing; do not dig.
- Goo block means protected; do not dig.
- Any other block means processed result/crystal; use the appropriate
turtle.dig*call.
First-Iteration Assumptions
- The area around the turtle has clear walking space.
- The program does not dig movement-path obstacles.
- The turtle has a suitable pickaxe equipped for crystal mining.
- Runtime validation must happen in CC:Tweaked/CraftOS-PC or in-game; local Lua execution is not available for this repo.
Integration Notes
- Ship
programs/goo.luaviainstall.luaLIST_FILES. - Document
gooinREADME.md. - Add
turtleto.luacheckrcglobals. - Run
just checkafter Lua edits.