원클릭으로
water-connections
Techniques for visually connecting water bodies (canals, lakes, rivers) in Minecraft
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Techniques for visually connecting water bodies (canals, lakes, rivers) in Minecraft
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
How to create reference documentation for complex coordinate systems and building constraints
Prevents subsystems from modifying blocks within placed building volumes using 3D bounding box clipping
Correctly place directional blocks (doors, levers, torches, signs, banners, stairs) in Minecraft via RCON
Ensures all build areas are chunk-loaded before placing blocks via /fill commands
NuGet packaging patterns for the Aspire.Hosting.Minecraft package
Pattern for attaching infrastructure (canals, beacons, paths) to each building in the village
| name | water-connections |
| description | Techniques for visually connecting water bodies (canals, lakes, rivers) in Minecraft |
| domain | minecraft-world-building |
| confidence | medium |
| source | earned |
Connecting separate water bodies in Minecraft requires careful multi-depth construction. A simple one-block opening creates a visible wall or step. Natural-looking water flow requires opening multiple blocks and filling water at all relevant depth levels.
When connecting a canal to a lake (or two water bodies at different depths), open at least 2 Z-blocks deep and fill water at both depth levels.
// Open the wall between canal and lake (2 blocks deep into lake)
await rcon.SendCommandAsync(
$"fill {minX} {surfaceY-2} {lakeZ} {maxX} {surfaceY} {lakeZ+1} minecraft:air");
// Fill water at canal depth (shallow)
await rcon.SendCommandAsync(
$"fill {minX} {surfaceY-1} {lakeZ} {maxX} {surfaceY-1} {lakeZ+1} minecraft:water");
// Fill water at lake depth (deep)
await rcon.SendCommandAsync(
$"fill {minX} {surfaceY-2} {lakeZ} {maxX} {surfaceY-2} {lakeZ+1} minecraft:water");
Don't stop the trunk canal at the lake edge — extend it 2+ blocks into the lake interior for a clean visual connection.
// Trunk canal runs past lake boundary
int trunkEndZ = lakeZ + 2; // 2 blocks into lake
await rcon.SendCommandAsync(
$"fill {trunkX-1} {surfaceY-2} {trunkStartZ} {trunkX+1} {surfaceY} {trunkEndZ} minecraft:air");
Where a branch canal (E-W) meets the trunk canal (N-S), remove the wall between them and ensure water flows at the correct depth.
// Clear the wall between branch and trunk
await rcon.SendCommandAsync(
$"fill {junctionX} {surfaceY-2} {branchZ-1} {junctionX} {surfaceY} {branchZ+1} minecraft:air");
// Fill water
await rcon.SendCommandAsync(
$"fill {junctionX} {surfaceY-1} {branchZ-1} {junctionX} {surfaceY-1} {branchZ+1} minecraft:water");
| Feature | Floor (bottom) | Water surface | Air above |
|---|---|---|---|
| Branch canal | SurfaceY - 2 | SurfaceY - 1 | SurfaceY |
| Trunk canal | SurfaceY - 2 | SurfaceY - 1 | SurfaceY |
| Lake | SurfaceY - 3 | SurfaceY - 1 | SurfaceY |
| Junction | Both depths | SurfaceY - 1 | SurfaceY |