.squad/skills/minecraft-forceload/SKILL.md
Ensures all build areas are chunk-loaded before placing blocks via /fill commands
npx skillsauth add csharpfritz/aspire-minecraft minecraft-forceloadInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Minecraft's /fill command silently fails in unloaded chunks — no error is returned, the blocks simply aren't placed. This makes forceload bugs extremely difficult to diagnose because the server reports success.
Any system that places blocks in the world MUST ensure the target chunks are forceloaded before issuing /fill commands.
The village layout may change during initialization (e.g., PlanNeighborhoods() spreads buildings into 4 quadrants with ZoneGap=20). Forceload must happen AFTER the final layout is computed, not before.
// ❌ WRONG — bounds computed before layout finalization
var bounds = layout.GetFencePerimeter(10);
await ForceloadArea(bounds);
layout.PlanNeighborhoods(); // spreads buildings beyond forceloaded area
// ✅ CORRECT — bounds computed after layout finalization
layout.PlanNeighborhoods();
var bounds = layout.GetFencePerimeter(resourceCount);
await ForceloadArea(bounds);
DetectSurfaceAsync needs a few chunks loaded to probe the terrain height. Use a minimal forceload around the probe point before the full village forceload.
// Small area for terrain detection
await rcon.SendCommandAsync($"forceload add {baseX - 5} {baseZ - 5} {baseX + 5} {baseZ + 5}");
var surfaceY = await DetectSurfaceAsync();
// Full area after layout planning
await rcon.SendCommandAsync($"forceload add {minX} {minZ} {maxX} {maxZ}");
Any area where blocks will be placed needs forceloading — not just the main village grid:
FenceClearance)LakeGap beyond the last building row)Always log the forceload area for debugging, since failures are silent.
logger.LogInformation("Forceloading area: ({MinX},{MinZ}) to ({MaxX},{MaxZ})", minX, minZ, maxX, maxZ);
tools
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
tools
Techniques for visually connecting water bodies (canals, lakes, rivers) in Minecraft
development
# Static Configuration Pattern **Confidence:** low **Source:** earned ## When to Use When a class has compile-time constants (`const`) that need to become runtime-configurable without breaking existing consumers. ## Pattern 1. Convert `const` fields to `static T { get; private set; } = <original value>`. 2. Add a public `Configure*()` method that sets the new values. Call once at startup. 3. Add an `internal static Reset*()` method that restores defaults — needed for test isolation since `p
development
Core conventions and patterns used in the Squad codebase