Future: Evaluate Bedrock exporter feasibility for VoxelPlan targets
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 5
- Forks
- 1
- Avg merge
- 1h 3m
- Merged PRs (30d)
- 3
Description
Context
CraftDAG's current export path is Java-first and schematic-oriented:
ComponentPlan
→ CraftDAG IR
→ VoxelPlan
→ .schem exporter
→ WorldEdit / Litematica / Java server workflows
This is the right near-term path for builder/server-owner validation, but CraftDAG should not be conceptually locked to Java Edition forever. The core compiler pipeline is already structured around an intermediate VoxelPlan, which could potentially target multiple export formats.
This issue records a future technical feasibility study for Bedrock-compatible export targets.
Core question
Can CraftDAG export VoxelPlan outputs to Bedrock-compatible structure/world formats without compromising the Java-first schematic workflow?
Candidate targets
1. .mcstructure
Likely first target to investigate.
Questions:
- What is the exact format requirement?
- How should block palettes and states be encoded?
- How should unsupported Java block IDs/states be mapped or rejected?
- How should block entities be handled?
- Can this be implemented as a separate exporter package?
Possible package shape:
packages/exporter-mcstructure
2. .mcworld / .mctemplate
A heavier target that packages structures into a world/template import flow.
Questions:
- Is this a MinePilot product concern more than a CraftDAG exporter concern?
- What world metadata is required?
- How should spawn point, preview world, and placement location be defined?
- Can a build pack be generated from multiple VoxelPlans/sections?
3. Official Marketplace-ready content packages
This is likely out of scope for CraftDAG core.
Marketplace-oriented content requires packaging, QA, metadata, store assets, legal/provenance review, and platform rules. CraftDAG may provide build artifacts, but should not own the whole Marketplace pipeline.
Recommended stance
Java-first implementation, platform-neutral IR, Bedrock-aware exporter roadmap.
CraftDAG should:
- keep
VoxelPlanexporter-neutral where practical; - avoid baking Java-only assumptions into ComponentPlan semantics where not required;
- support Java
.schemas the primary production exporter for now; - evaluate Bedrock export as a separate future package;
- avoid promising Bedrock parity before format/block-state compatibility is understood.
Technical risks
- Java and Bedrock block IDs/state models may differ.
- Some blocks may not map cleanly.
- Block entities/NBT/inventory data may differ significantly.
- Redstone behavior and orientation may not be equivalent.
- Version compatibility may require explicit target metadata.
- Existing material palettes may need edition-specific mappings.
- Test fixtures may require Bedrock-specific round-trip validation.
Proposed feasibility milestones
Stage 0: Research note
Create a short technical note covering:
.mcstructureformat basics;- palette/state mapping approach;
- known unsupported block/state categories;
- block entity limitations;
- test strategy;
- relationship to current
.schemexporter.
Stage 1: Minimal prototype
Export a small VoxelPlan containing only simple solid blocks to .mcstructure.
Candidate fixture:
small platform + room shell, no block entities, no redstone
Stage 2: Compatibility metadata
Add exporter warnings or metadata for:
- unsupported blocks;
- lossy block-state mapping;
- Java-only assumptions;
- Bedrock target version if needed.
Stage 3: Product handoff
Coordinate with MinePilot if a Bedrock export button, import guide, or world-template packaging becomes product-relevant.
Non-goals
- Do not replace the Java
.schemexporter. - Do not promise Bedrock parity.
- Do not implement Marketplace-ready packaging in CraftDAG core.
- Do not support arbitrary Bedrock add-on behavior here.
- Do not block current ComponentPlan/Java exporter work on this issue.
- Do not make ComponentPlan Bedrock-specific.
Acceptance criteria for future evaluation
When this becomes active:
- A technical note describes
.mcstructurefeasibility and risks. - A decision is made whether to prototype
packages/exporter-mcstructure. - Block mapping strategy is defined explicitly.
- Unsupported/lossy behavior is surfaced as diagnostics or exporter warnings.
- A minimal fixture proves whether simple VoxelPlan export is practical.
- MinePilot has a corresponding product issue for Bedrock import/Marketplace route.
Related
- MinePilot Bedrock / official Marketplace product route issue.
- Current Java
.schemexporter work. - Future redstone/block-entity support issues.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the VoxelPlan pipeline and current Java .schem exporter, then document the .mcstructure format, palette and block-state mapping, block-entity limits, and test strategy. Define whether a separate packages/exporter-mcstructure prototype is feasible and what unsupported or lossy cases require warnings. Done means the feasibility note and prototype decision address the listed acceptance criteria without replacing the Java exporter.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 32/100