A cross-platform GUI tool for converting between Minecraft Bedrock resource/behavior packs (.zip / .mcpack) and the __brarchive format used by the Bedrock engine. Built with Flutter and Material 3, it is the desktop companion to the brarchive-go CLI.
Bedrock Edition packs ship as .zip or .mcpack archives. Internally, the engine can consume a compact binary container called __brarchive that bundles many small JSON/UI files into a single file with a fixed-size index. This tool performs both directions of that conversion without requiring a command line:
- Pack - extracts an archive, scans for target files (
.json,.json5,.ui), serializes them into__brarchive/*.brarchive, removes the originals, and re-zips the result. - Unpack - extracts an archive, locates every
__brarchive/*.brarchive, restores the original files, removes the__brarchivefolder, and re-zips the result.
The binary format is little-endian and consists of a 16-byte header (magic, entry count, version), a fixed-size descriptor table (247-byte name slot + offset + length per entry), and a contiguous content section. It is fully compatible with the output of brarchive-go.
- Material 3 design with dynamic color and expressive components
- Light, dark, and system theme modes
- English and Simplified Chinese, with a "follow system" option
- Native file and folder pickers on each platform (no third-party picker dependency)
- Live console output with timestamps during conversion
- Output directory defaults to the system Downloads folder
- Persistent user preferences via
shared_preferences
| Platform | Status | Artifact |
|---|---|---|
| Android | Stable | APK |
| iOS | Unsigned (sideload required) | IPA |
| Windows | Stable | ZIP |
| macOS | Stable | ZIP |
| Linux | Stable | tar.gz |
- Flutter 3.27 or newer (stable channel)
- Android SDK 35+ for Android builds
- Visual Studio 2022 with the "Desktop development with C++" workload for Windows builds
git clone https://github.com/wisebreeze/brarchive-flutter.git
cd brarchive-flutter
flutter pub get
# Android
flutter build apk --release
# Windows
flutter build windows --releasePre-built binaries for every release are available on the releases page.
Download the latest release for your platform from GitHub Releases. Artifacts are also attached to each successful workflow run on the main branch.
| Platform | File | Instructions |
|---|---|---|
| Android | brarchive-android-release.apk |
Tap to install. Allow "install from unknown sources" if prompted. Grant storage permission on first launch. |
| Windows | brarchive-windows-release.zip |
Extract and run brarchive.exe. Right-click to create a desktop shortcut. |
| macOS | brarchive-macos-release.zip |
Extract and drag brarchive.app to Applications. Right-click → Open on first launch to bypass Gatekeeper. |
| Linux | brarchive-linux-release.tar.gz |
Extract and run ./brarchive from the bundle directory. |
| iOS | brarchive-ios-release.ipa |
Sideload via AltStore or Sideloadly. Self-signed certificates expire after 7 days. |
- Launch the app.
- In the Input file row, tap the browse button and select a
.zipor.mcpackfile. - In the Output directory row, confirm or change the destination (defaults to your Downloads folder).
- Click Pack to convert a normal pack into the
__brarchiveformat, or Unpack to reverse it. - Watch the console panel for progress. The output archive is written to the chosen directory.
Use the overflow menu in the top-right corner to switch language or theme at any time. Selections are remembered across launches.
- The input archive is extracted in memory.
- The converter walks the tree, skipping
textures,materials,texts, andsoundsdirectories, while descending intosubpacks. - In each qualifying folder, files with
.json,.json5, or.uiextensions are collected (excludingui/_global_variables.json). - Those files are serialized into a single
.brarchiveblob placed under a new__brarchive/subfolder, and the originals are deleted. - Empty directories are pruned and the tree is re-zipped.
- The input archive is extracted in memory.
- Every
__brarchive/*.brarchivefile is located and deserialized. - The original files are written back to their parent directories.
- The
__brarchivefolder is removed and the tree is re-zipped.
Offset Size Field
0 8 Magic (0x267052A0B125277D, little-endian)
8 4 Entry count
12 4 Version (currently 1)
Per entry (repeated):
0 1 Name length (n)
1 247 Name (UTF-8, zero-padded)
248 4 Content offset (relative to content section)
252 4 Content length
Content section:
Concatenated file contents in descriptor order.
lib/
core/
brarchive/ Binary codec and zip/mcpack converter
file_picker/ Native method-channel file picker
i18n/ JSON-backed localization
settings/ Persisted preferences
theme/ Material 3 theme definitions
ui/
screens/ Home screen
app_state.dart Root state (i18n + theme)
main.dart Entry point
assets/
i18n/ en.json, zh.json
# Run unit tests
flutter test
# Static analysis
flutter analyze
# Run in debug mode
flutter run- brarchive-go - The reference CLI implementation in Go.
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.