promotional bannermobile promotional banner

Groundworks

Place whole lines of blocks in one drag, preview every placement before you click, rotate, raise and lower it, and take lines back up with one Dismantle, all in vanilla.
Back to Files

Groundworks 0.5.12

File namegroundworks-0.5.12.jar
Uploader
kc00lkc00l
Uploaded
Oct 14, 2026
Downloads
16
Size
434.0 KB
Mod Loaders
NeoForge
File ID
9182596
Type
R
Release
Supported game versions
  • 26.1.2

Curse Maven Snippet

NeoForge

implementation "curse.maven:groundworks-1717892:9182596"

Learn more about Curse Maven

What's new

Players

  • Assemblies: holding an Assembly's Key, the preview draws the whole structure of real blocks, resting on the aimed face and facing you, and one click places all of it, the Key last, paid from the main inventory and free in creative. It is refused whole, placing nothing and taking nothing, when a position holds a block the shape doesn't take, telling you so, or when the inventory falls short, naming what is missing. It is refused whole too, and the preview draws it refused, when the Key wouldn't stand on the shape laid round it, as a cactus won't beside a block. Air, water, grass and other blocks a placement overwrites count free, and a block of the shape already standing at its position stays, uncharged. Sneak-placing a Key places it alone, as vanilla does. Once placed, its blocks are ordinary blocks, broken one at a time. (#55)
  • A pack's Assembly naming a block tag the game doesn't know, such as a misspelt one, is skipped with a line in the log naming it and the tag, rather than loading and asking for its default block everywhere; fix the tag and /reload loads it. (#61)
  • Scaffolding opted in by a pack is drawn and placed where vanilla places it, past the reach of the scaffolding holding it up, where it falls, instead of being drawn refused there. (#66)
  • An Assembly's Key is drawn and placed as it will stand among the blocks laid round it: a pack's torch Key hangs on a wall its shape builds, and a door Key with a block of its shape over it is refused whole, drawn refused, placing and taking nothing. Should vanilla still refuse the Key once the rest is laid, as when the shape spawns a golem in its way, the click takes back what it laid and you pay only for what is gone, the golem's blocks, never the Key; you are told the Key couldn't be placed. No path leaves an Assembly built without its Key. (#65)
  • You can stand inside the Assembly you place, as you must to aim at the middle of a beacon's 7×7 or 9×9 pyramid: your own body no longer refuses it, nor draws it refused in the preview. Once it is laid you are lifted straight up to the first place you fit, normally on top of it, and take no suffocation damage. A mob or another player in the way still refuses it whole. (#67)
  • Next Assembly (V) steps the held Key through its Assemblies and the Key alone, and round, and Reverse Next Assembly (Shift+V) steps back; the preview redraws. The stack remembers its choice. A fresh stack starts on the Key's first Assembly, or on the Key alone where its declaration says so, and on the Key alone it places as vanilla does. (#58)
  • An Assembly's position may take any block of a tag: it is filled as uniformly as the inventory allows, from the block you hold most of first, and the preview draws the block each position will get. In creative, where blocks never run out, every position of a tag takes the block of it you hold most of, uncharged, and only when you hold none of the tag its default. A block the tag takes already standing there stays, uncharged. A position an Assembly keeps empty is cleared of grass and other blocks a placement overwrites, keeping any water, and a block there that a placement can't overwrite refuses the Assembly whole. (#56, #68)
  • Rotate and Reverse Rotate turn a drawn Assembly about its Key a quarter at a time, even when the Key's own block has no facing, as a beacon's has none; the preview redraws turned and the click places what is drawn. (#57)
  • The preview outlines in amber each block an Assembly's click will clear from a position it keeps empty, the grass beside a golem's legs or a flower inside a portal frame, and both halves of tall grass, so its going is no surprise. Air, and water the clearing keeps, aren't outlined, nor is anything while the Assembly is drawn refused. (#62)
  • Vanilla's Assemblies ship with Groundworks. A beacon places its pyramid, level 1 to 4 (3×3 to 9×9), of any beacon base blocks; in creative, of the base block you hold most of, or iron when you hold none. A conduit places its 16-block ring, standing upright across your view so it can be set on the sea floor, or its full 42-block frame, of prismarine, prismarine bricks, dark prismarine or sea lanterns, its inside kept for water. A carved pumpkin places an iron golem, the spaces beside its head and legs kept clear, or a snow golem, and the golem spawns. Obsidian places obsidian until Next Assembly switches it to a nether portal frame, ten obsidian without corners, placed unlit. (#59)
  • A carved pumpkin also places a copper golem: one copper block of any oxidation stage, waxed or not, under the pumpkin, filled from the copper block you hold most of, in creative too, and plain copper when you hold none. The golem spawns and vanilla turns the block into the matching copper chest. It comes third in Next Assembly's order: the iron golem, the snow golem, the copper golem, then the carved pumpkin alone, so a fresh carved pumpkin still starts on the iron golem. (#63)

Consumers

  • An Assembly is declared as data, a JSON file under data/<namespace>/groundworks/assembly/: its shape as layers of strings, bottom first, a legend of block ids, the letter that marks its Key, and starts_alone; AssemblyShape's javadoc sets the format and its frame, a Footprint's, and a block takes its default state turned with the shape, so stairs, facing north by default, face forward, away from the player. A Key places its Assemblies once a Consumer states it a Key (#64), as the vanilla Consumer does for the block tag groundworks:assembly_keys. A malformed declaration, or one naming a block with no item to pay for it with, such as fire or water, is logged with its id and skipped, /reload reads them again, and the server sends them to each client. Placements.planFor serves an Assembly's plan, refused with the new Refusal.Assembly reasons, TAKEN as a Refusal.At its position and KEY_WOULD_NOT_STAND as one at the Key's, asked of the Key's survival on the shape laid round it, where its item says it must survive. (#55)
  • The held stack's choice is the data component groundworks:assembly_choice, an index into its Key's Assemblies by id with the Key alone last, absent on the starting choice; starts_alone on any of a Key's declarations starts a fresh stack on the Key alone. The next_assembly payload carries a press to the server, and the key mappings key.groundworks.next_assembly and key.groundworks.reverse_next_assembly join Groundworks' category. (#58)
  • An Assembly's legend letter may name a block tag with the block a position gets where the inventory gives none, {"tag": "<tag>", "default": "<block>"}, or a position kept empty, "empty"; the Key's letter still names a block. AssemblyShape.fill is the uniform fill, and its free fill, creative's, gives every position of a tag the member held most of, or the default where none is held, and an empty position taken refuses as TAKEN at it. (#56, #68)
  • A declaration whose legend names a block tag the game doesn't know, such as a misspelt one, is logged with its id and the tag and skipped, checked against the tags of the same reload, so /reload after fixing it loads it; a tag that exists with no blocks is no error. (#61)
  • Rotate.isRotatable(Player, ItemStack) also counts a held Key with an Assembly drawn, unless the player sneaks, which places the Key alone; Rotate.isRotatable(ItemStack) still answers for the block alone. (#57)
  • PlacementPlan gains clears, the positions a plan empties without placing there, as an Assembly's empty positions holding grass, which the preview outlines; the three-argument constructor still builds a plan clearing nothing, and a record pattern on it now takes four components. (#62)
  • groundworks:assembly_keys ships with minecraft:beacon, minecraft:conduit, minecraft:carved_pumpkin and minecraft:obsidian, and vanilla's declarations under data/groundworks/groundworks/assembly/: beacon/level_1 to level_4, conduit/frame_16 and frame_42, golem/iron and golem/snow, and nether_portal, which starts on the Key alone. A pack overrides one by its id, or drops a Key from the tag. The new block tag groundworks:conduit_frame_blocks holds the blocks a conduit's frame takes. (#59)
  • Vanilla's copper golem ships as golem/z_copper, its body any block of minecraft:copper with minecraft:copper_block as the default; its id sorts after golem/iron and golem/snow so it comes third. (#63)
  • An Assembly's Key is planned through its item's own placement, BlockItem#getPlacementState, asked of a read-only level as the shape will stand, so a Key's state, room and survival read the blocks the shape lays; TAKEN at the Key's position now also means it has no room or no state for placement there once the rest is laid. Light, heightmaps and entities are still read from the world as it stands. A Key vanilla refuses once the rest is laid has the laying taken back, and only what didn't come back, as blocks a golem took into itself, is charged. (#65)
  • Assemblies.keys(Predicate<? super Block>) states which blocks are Keys, as Placements.optIn states an Opt-in, and Assemblies.isKey(Block) asks it; a block is a Key when any statement says so. The vanilla Consumer states its Keys from groundworks:assembly_keys, so a pack or a Consumer still makes a Key with a tag entry and no code. (#64)

This mod has no related projects