Minecraft Bedrock add-on focused on procedural exploration layered on top of the vanilla Overworld.
Lost Frontiers is a technical demo and study project for Bedrock add-on development.
- Purpose: portfolio, learning, and experimentation.
- It is not a commercial product.
- It has no monetization goal.
- Scope: demonstrate data-driven world generation plus Script API integration.
- Caio Pessini
- Technical focus in this project: configurable systems design, procedural content, JSON pipeline automation, debugging, and pack validation.
This add-on combines three main layers:
- Data-driven world generation (JSON)
features: define how something can be placed (for examplestructure_template_feature,weighted_random_feature,snap_to_surface_feature).feature_rules: define where and when placement is attempted (biome filters, generation pass, chunk distribution).structures (.mcstructure): templates for ruins, roads, and underground POIs.
- Script API (
@minecraft/server)
- Discovery system based on proximity to marker blocks (
lodestone). - Scoreboard progression updates.
- Player feedback through title/actionbar/chat/sound.
- Configurable milestone system.
- Configuration pipeline
- A single worldgen configuration file.
- A script that applies config values into
featuresandfeature_rules. - A validation script that checks references and config synchronization.
LostFrontiers_BP/main Behavior PackLostFrontiers_RP/supporting Resource PackREADME.mddocumentation
-
manifest.json- Pack metadata,
dataandscriptmodules, dependencies.
- Pack metadata,
-
features/- Base and composed generation features.
- Includes rarity using
noop, weighted selectors, and structure placement.
-
feature_rules/- Placement rules by biome/pass/distribution.
-
structures/lostfrontiers/*.mcstructure- Structures used in-world (ruins, roads, underground POIs).
-
functions/*.mcfunction- Debug and testing utility commands.
-
scripts/config.js- Runtime configuration for discovery/UI/score systems.
-
scripts/main.js- Script event orchestration.
-
scripts/lib/*.js- Support modules (
scoreboard,notifications,discovery,text).
- Support modules (
-
config/worldgen_config.json- Central procedural generation configuration.
-
dev/apply_worldgen_config.py- Applies
worldgen_config.jsoninto data-driven JSON files.
- Applies
-
dev/verify_pack.py- Validates references and config synchronization.
manifest.jsontexts/en_US.lang
- Minecraft Bedrock Edition compatible with the pack
min_engine_version(1.21.0in current manifest). - Script API support (
@minecraft/server). - World with both Behavior Pack and Resource Pack enabled.
- Cheats/permissions enabled for debug commands.
- Python 3.x for local configuration pipeline scripts.
- Clone this repository.
- Copy
LostFrontiers_BPto the development behavior packs folder. - Copy
LostFrontiers_RPto the development resource packs folder. - Create a test world and enable both packs.
- Join the world and run:
/function lf_debug_smoke
On Windows, development pack paths are usually:
%LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\development_behavior_packs%LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\development_resource_packs
If you only want to test quickly, use debug commands and /structure load without changing the Python pipeline config.
There are two configuration fronts: runtime script config and data-driven worldgen config.
Controls discovery behavior, messages, score handling, and audio.
Examples:
- Scan frequency:
scanIntervalTicks: 40 // lower = more responsive, higher = lower runtime cost- Marker block:
markerBlockId: "minecraft:lodestone"- Discovery notification mode:
notifications: {
discovery: {
mode: "titleraw", // chat | actionbar | title | titleraw
actionbarAlso: true,
chatAlso: false
}
}- Milestones:
milestones: [
{ score: 1, message: "First trace found." },
{ score: 5, message: "Cartographer rank." }
]Controls density, rarity, biome targeting, and weighted selection.
Available profiles:
sparsebalanceddensecinematic
Examples:
- Activate profile:
"active_profile": "cinematic"- Make trail placement rarer:
"lf:trail_rare_feature": { "place_weight": 1, "noop_weight": 12 }- Favor straight road segments:
"lf:road_segment_selector_feature": [
["lf:road_straight_structure_feature", 12],
["lf:road_curve_structure_feature", 4],
["lf:road_crossing_structure_feature", 1]
]After editing:
- Apply config:
python LostFrontiers_BP/dev/apply_worldgen_config.py - Validate:
python LostFrontiers_BP/dev/verify_pack.py
Quick profile switch:
python LostFrontiers_BP/dev/apply_worldgen_config.py --profile cinematicpython LostFrontiers_BP/dev/apply_worldgen_config.py --profile balanced
While exploring new chunks, players should see:
- Rare micro-ruins in target biomes (plains/taiga/savanna).
- Degraded road segments across the Overworld (excluding ocean/river).
- Occasional underground POIs.
- Discovery markers (
lodestone) that becomechiseled_stone_brickswhen discovered. - Discovery score increasing on the scoreboard.
- Configurable visual/audio feedback from
scripts/config.js.
Structure examples (structures/lostfrontiers):
lostfrontiers:broken_altarlostfrontiers:border_markerlostfrontiers:abandoned_welllostfrontiers:stone_archlostfrontiers:extinguished_camplostfrontiers:forgotten_chamber(underground)lostfrontiers:collapsed_tunnel(underground)
Feature examples (features/*.json):
lf:micro_shrine_rare_feature(rare feature withnoop)lf:micro_camp_cluster_feature(weighted selector for camp structures)lf:trail_rare_feature(rare trigger for roads/trails)lf:road_segment_snap_feature(surface snapping)lf:underground_poi_selector_feature(underground POI selector)
The images below demonstrate generation and composition in-world.
/function lf_debug_clean_ui/function lf_debug_smoke/function lf_debug_help
/function lf_debug_place_surface/function lf_debug_place_underground/structure load lostfrontiers:broken_altar ~ ~ ~
/function lf_debug_place_features(rare features can legitimately place nothing)/function lf_debug_place_features_forced(deterministic)
/function lf_debug_reset_progress- Approach a discovery marker
/scoreboard players list @s
/tp @s 120000 120 120000- Explore 300-600 blocks
.mcstructurefiles in this project were assembled with vanilla blocks and the standard Bedrock Structure Block/command workflow.- There is no dependency on external custom 3D assets or proprietary texture packs.
- Feature/rule modeling and pipeline design were based on official documentation and sample repositories listed below.
Lost Frontiers demonstrates a portfolio-ready Bedrock add-on architecture: clear separation between data-driven generation and script logic, centralized configuration, automated validation, and practical in-game debugging workflow.
The project keeps a vanilla-friendly visual language and provides a strong baseline for future expansion (more structures, richer progression, and broader biome coverage).
- Minecraft Creator portal:
- World Generation:
- Custom Biome Tutorial:
- Features Reference:
- Feature Rules Reference:
- Jigsaw Structures Intro:
- Jigsaw Tutorial:
- Commands (general reference):
- /place:
- /structure:
- Bedrock Wiki - World Generation Intro:
- Bedrock Wiki - Scripting Intro:
- Mojang bedrock-samples:
- Microsoft minecraft-samples:
- Microsoft minecraft-scripting-samples:


