一键导入
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 |