Bladelow is a Fabric mod for Minecraft 1.21.11 on Java 21 focused on HUD-first building automation.
The current direction is:
- select an area from the in-game planning map
- let Bladelow scan terrain, nearby structures, and district context
- infer a fitting build intent and palette
- generate or queue a build
- run the build with pathing, safety checks, and recovery controls
Bladelow is no longer command-first. The normal workflow is driven through the HUD opened with P.
Bladelow currently includes:
- visual area selection through an in-game planning map and marker overlay
- three main HUD modes:
SEL,BP,CITY - district zoning with
residential,market,workshop,civic, andmixed - suggested build plots inside a selected city area
- intent scanning that reads nearby style, scale, and context
- single-plot
Auto Build Heregeneration with preview-first commit flow - city director automation for staged district building across a larger area
- automatic safety rules to avoid damaging sensitive blocks
- local learning datasets for style, environment, and build-intent memory
- offline training support for turning JSONL logs into reusable planning priors
Bladelow is not yet:
- raw image-to-build generation
- video-to-build generation
- a full autonomous city designer that invents everything from scratch without constraints
- a replacement for human review on important builds
The current strength is structured automation guided by world scans, saved style examples, and local training data.
- Minecraft
1.21.11 - Fabric Loader
- Java
21
- Download the latest jar from:
https://github.com/AP2003GIT/bladelow/releases
- Put the jar into your Fabric mods folder.
- Launch Minecraft.
- Press
Pin-game to open the Bladelow HUD.
Lunar example path:
C:\Users\<YourUser>\.lunarclient\profiles\vanilla\1.21\mods\fabric-1.21.11\
cd "/home/p90lo/project bladelow/minecraft-bladelow"
./gradlew clean buildJar output:
build/libs/minecraft-bladelow-0.1.6.jar
WSL to Lunar copy example:
cp "build/libs/minecraft-bladelow-0.1.6.jar" "/mnt/c/Users/<YourUser>/.lunarclient/profiles/vanilla/1.21/mods/fabric-1.21.11/"Helper scripts:
scripts/install-lunar-wsl.shscripts/deploy-lunar-wsl.shscripts/install-lunar-windows.ps1
The intended flow now is:
- Open the HUD with
P - Select
CITY - Drag on the planning map to mark an area
- Click a suggested plot or let Bladelow choose the best one
- Let Bladelow infer build intent and palette
- Press
Preview Hereto generate one candidate structure for the selected plot - Use
RerollorRejectuntil the preview feels right - Press
Build Previewto commit the accepted preview - Use the director flow when you want a larger staged district pass
For direct/manual workflows:
SELis for marker-based selection and controlled buildsBPis for blueprint-oriented workflows and town template loadingCITYis for district planning, plot selection, generation, and automation
SEL: selection tools and controlled build setupBP: blueprint/town-template oriented flowCITY: district planning, intent scanning, and automation
Bladelow uses flow tabs instead of chat commands.
General flow:
AREABLOCKSSOURCERUN
Compact city flow:
AREASOURCERUN
In CITY mode, BLOCKS is hidden by default because palette selection is automated. It only reappears when palette override is enabled.
The planning map is the main interaction surface for non-block steps.
What it does:
- drag to select or resize the active area
- right-click to clear the current area
- show a layout-style map rather than raw coordinates
- render water, roads, structures, vegetation, open ground, and terrain separately
- fit the full selected area without stretching or clipping large selections
- use a cached high-resolution terrain raster so narrow roads and small structures remain legible
- show plot suggestions inside the selected city area
- let you click a suggested plot to snap the selection to that footprint
- show small plot labels such as
house,shop, orcivic
Map colors are layout-oriented, not chunk-map exact. The point is planning clarity.
CITY is the most automated workflow.
The right-side panel currently supports:
- district brush selection
- district preset cycling
- auto zoning
- city director start, stop, continue, and status
- single-plot preview/build workflow (
Preview Here,Reroll,Reject,Build Preview) - saving the current area as a style example
- model status page
In CITY mode, palette selection is automatic by default.
Bladelow treats the three palette roles as:
PrimaryTrimRoof
Default behavior:
- infer palette from local style and current intent
- auto-fill the palette roles when useful
- build without requiring manual block selection
Optional behavior:
- enable
Palette: OVERRIDE - manually pick
Primary,Trim, andRoof - those overrides will be passed into
Auto Build Here
Auto Build Here is the current bridge between ML-style intent prediction and actual structure generation. It is now a preview-first flow rather than an immediate commit.
Current flow:
- pick the selected or best suggested plot
- scan terrain and nearby structures
- infer a
BuildIntent - choose footprint, facing, floors, roof, and palette
- generate one exterior-first building preview
- show that preview on the minimap with footprint and entrance marker
- let you
RerollorRejectif the plan is not good enough - commit with
Build Previewwhen you are happy with it
Current limitations:
- focused on one generated building at a time
- exterior quality is prioritized over rich interiors
- overlapping plots are rejected rather than forced
- rerolls explore ranked procedural candidates; after enough balanced preview feedback, a trained logistic preference model orders those candidates by predicted acceptance
The city director is the staged automation path for larger district work.
The current pipeline is:
- apply or read district zoning for the selected area
- build district run order
- resolve district plan
- map/fallback materials
- queue terrain preparation
- queue build jobs
- persist session state for resume
Director session state file:
config/bladelow/city-director.properties
Bladelow is HUD-first, but a tiny safety-valve command surface remains.
Supported commands:
/bladepause/bladecontinue/bladecancel/bladestatus/bladestatus detail
The # shortcut only maps to those same recovery actions.
Everything else should be done through the HUD.
Bladelow automatically avoids editing sensitive blocks.
Protected categories include:
- storage and block-entity blocks
- doors, trapdoors, gates, beds, signs, banners
- redstone parts and rails
- crops, saplings, farmland, vines, and similar growables
- portals and sensitive utility blocks such as bells, campfires, beehives, and lodestones
This safety logic is designed to keep automation from wrecking existing bases and infrastructure.
Blueprint support still exists, even though the project is moving toward more automated generation.
Relevant paths:
config/bladelow/blueprints/*.jsonsrc/main/java/com/bladelow/builder/BlueprintLibrary.javasrc/main/java/com/bladelow/builder/TownPlanner.java
Blueprints and town templates are still useful for:
- controlled testing
- district filling
- comparing template-driven versus generated results
- bootstrapping the planner while the ML and generation systems mature
Bladelow now collects local data so it can make better decisions over time.
Data lives under:
config/bladelow/ml/
Current datasets:
placement_style_events.jsonl- successful automated placements
- tracked manual player placements
environment_observations.jsonl- scanned terrain/build/style summaries
build_intent_examples.jsonl- accepted planner/build-intent decisions
style_examples.jsonl- curated style areas saved from the HUD
preview_feedback.jsonl- explicit preview outcomes: accepted, rerolled, rejected
style_refs/- optional style reference images and sidecar metadata
offline_model.json- offline-trained intent priors and procedural-geometry preference weights loaded back into runtime
Bladelow currently learns from:
- successful and failed placement context
- nearby building scale and style
- saved style areas
- repeated build-intent choices for similar plots
- explicit preview feedback from accepted, rerolled, and rejected proposals
- preferred footprint fill, aspect ratio, floor count, and roof proportions for generated structures
- optional image style references
This is still structured learning, not raw generative AI.
Use CITY -> SOURCE -> Save Style Area when you have selected a good example area.
Good style examples are:
- consistent in theme
- mostly real structures, not noise or terrain
- close to the style you want future builds to follow
- representative of district scale and palette
Run from the repo root:
python3 scripts/train_bladelow_model.pyIt reads:
config/bladelow/ml/placement_style_events.jsonlconfig/bladelow/ml/environment_observations.jsonlconfig/bladelow/ml/build_intent_examples.jsonlconfig/bladelow/ml/style_examples.jsonlconfig/bladelow/ml/preview_feedback.jsonlconfig/bladelow/ml/style_refs/
It writes:
config/bladelow/ml/offline_model.json
The procedural preference model activates after at least eight usable feedback
samples with both positive (accepted) and negative (rerolled/rejected)
examples. Until then, generation keeps the deterministic fallback variants.
Open the HUD and use Model to inspect:
- placement sample count
- environment sample count
- build intent sample count
- style example count
- preview feedback count
- style reference image count
- whether an offline model exists
- learned themes
- available zone priors
A practical loop for improving Bladelow is:
- Build or keep a few good example structures in one area
- Mark clean city areas with the HUD
- Save especially good areas with
Save Style Area - Generate a preview on nearby plots
- Use
RerollandRejecthonestly so Bladelow gets useful preference data - Commit good previews with
Build Preview - Use the recovery commands only if something gets stuck
- Periodically run the offline trainer
- Repeat in one style at a time so the data stays coherent
User-facing core pieces:
src/main/java/com/bladelow/client/ui/BladelowHudScreen.javasrc/main/java/com/bladelow/client/BladelowSelectionOverlay.javasrc/main/java/com/bladelow/network/HudAction.javasrc/main/java/com/bladelow/network/HudCommandPayload.javasrc/main/java/com/bladelow/network/HudCommandBridge.javasrc/main/java/com/bladelow/network/HudActionService.java
Planning and generation:
src/main/java/com/bladelow/builder/IntentStructurePlanner.javasrc/main/java/com/bladelow/builder/BuildSiteAnalyzer.javasrc/main/java/com/bladelow/builder/TownPlanner.javasrc/main/java/com/bladelow/builder/TownAutoLayoutPlanner.javasrc/main/java/com/bladelow/auto/CityAutoplayDirector.java
Learning and training:
src/main/java/com/bladelow/ml/BladelowLearning.javasrc/main/java/com/bladelow/ml/BuildIntentPredictor.javasrc/main/java/com/bladelow/ml/StyleExampleLogger.javasrc/main/java/com/bladelow/ml/PreviewFeedbackLogger.javasrc/main/java/com/bladelow/ml/OfflineTrainingModel.javascripts/train_bladelow_model.py
Recovery/runtime:
src/main/java/com/bladelow/command/ManualRecoveryCommands.javasrc/main/java/com/bladelow/builder/PlacementJobRunner.javasrc/main/java/com/bladelow/builder/BuildSafetyPolicy.java
Common files you may care about:
config/bladelow/hud-state.propertiesconfig/bladelow/model.propertiesconfig/bladelow/city-director.propertiesconfig/bladelow/ml/offline_model.jsonconfig/bladelow/blueprints/*.json
- Make sure you are on the latest jar.
- Reopen the HUD with
P. - If needed, reset the HUD state file:
config/bladelow/hud-state.properties
- Make sure an area or suggested plot is selected.
- If the button says
Build Preview, there is already a cached preview for that plot. - Check that the chosen plot is not overlapping an existing structure.
- Try another suggested plot.
- Use
Modelto confirm the intent system is active.
- Use
Rerolla few times before committing. - Use
Rejectinstead of building a preview you do not want. - Save strong nearby examples with
Save Style Area. - Re-run the offline trainer after collecting more accepted/rejected preview data.
- Select a larger area.
- Avoid water-heavy or clutter-heavy spaces.
- Flatten obvious obstacles if needed.
- Run
/bladestatus detail - Use
/bladepause,/bladecontinue, or/bladecancel - Try another plot or simplify the selected area
- Leave
Palette: AUTOon if you want Bladelow to infer style - Switch to
Palette: OVERRIDEif you want to forcePrimary,Trim, andRoof
The target direction for Bladelow is:
- open HUD
- select area on the minimap
- let Bladelow understand the terrain and surrounding style
- generate or choose a fitting build
- build it safely
- stop when finished
That is the path the current systems are being built toward.