Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Tags
Creators
Details
Terrain Place
A small NeoForge mod that adds /placeterrain which acts as an alternative to the
vanilla '/place' command for custom terrain (e.g. WorldPainter-generated worlds)
The Vanilla /place command uses Minecraft's ChunkGenerator for the height map of
the area where the structure is to be placed, and in turn the ChunkGenerator calculates
this heightmap based on the world seed. However, for custom terrain the heightmap is modified
so using /place will result in either floating or underground structures. This mod overrides
the ChunkGenerator's heightmap calculations and instead takes a snapshot of the actual terrain.
/placeterrain reads the loaded terrain heightmap instead of the seed, so the
structure wraps onto the real surface (crudely).
WARNING: This method is by no means perfect and can result in awkward structure placements.
For this reason, a /placeterrain undo command exists to undo structure placements (up to the last 8)
Usage
/placeterrain structure <structure_id> [pos] [size]
<structure_id>is any currently loaded structure registry id (e.g.minecraft:village_plainsorterralith:fortified_village),[pos]is optional target block position (defaults to the block where the user is standing).[size], optional1–20. For jigsaw structures this is the jigsaw "max depth": how far the structure expands from its start. Most villages default to ~6. Ignored for non-jigsaw structures. The actual spread is still capped by the structure's ownmax_distance_from_center, so very large values stop growing once that radius is reached. Most of the time, themax_distance_from_centeroverrides this so don't expect it to work for most structures.
/placeterrain undo reverts the most recent placement in the current dimension, restoring
the exact blocks that were there before. It keeps the last 8 placements per dimension,
so you can undo repeatedly. History is in-memory only — it's cleared on server restart,
and very large placements aren't kept.
Examples
/placeterrain structure minecraft:desert_pyramid ~ ~ ~
/placeterrain structure minecraft:village_plains ~ ~ ~ 10 # a big plains village
Build
Targets Minecraft 1.21.1 / NeoForge 21.1.x, Java 21, built with ModDevGradle.
gradle wrapper --gradle-version 8.8
./gradlew build
Porting to another Minecraft version
The only version-sensitive code is the block of generator forwarding methods at the bottom of
TerrainAwareChunkGenerator
(applyCarvers, buildSurface, fillFromNoise, etc.). They are never called by the
command, but ChunkGenerator requires them to be implemented. If you bump the version and
the build complains there, align those signatures with the new ChunkGenerator. Most of the
height logic and command should carry over unchanged.
Known limitations
- This mod reads the runtime heightmap, so it reflects only whatever is currently in the world,
including player-placed blocks and trees. For most structures
WORLD_SURFACEis what you want; if a structure looks like it's sitting one block too high in a forest, that's the heightmap counting leaves.

