Ambient Launcher
Official release now available. A dedicated utility environment for Minecraft Bedrock on Android.
Ambient Feature Set
| Category | Feature | Capabilities |
|---|---|---|
| File Management | Direct .mcpack Support | Ambient maps itself to .mcpack files; open them directly from your browser/downloads to import without a file manager. |
| Core | Native Mod Loader | Seamlessly load native .so modules. |
| Tools | World Structure Extractor | Export structures directly from your save files. |
| Configuration | External Game Config Editor | Modify engine-level settings without opening the game. |
| Graphics | Shader Loader | Ambient patches the renderer engine to allow the loading of shaders and material.bin files. |
| Data | World Manager | Comprehensive backup and level editing tools. |
Storage & Expectations
Storage is pre-defined for stability. Users are unable to toggle from Internal (App) to External storage. This is expected. However, all game files remain accessible for manual backup or modding.
/Android/media/io.kitsuri.mayape/games
*Note: You may need a file manager that can access the Android/media directory (like Shizuku + ZArchiver or similar tools on modern Android versions).
Known Bugs
- Connection Services: Marketplace, Servers, and Realms are disabled. Singleplayer only.
- Keymapper: Stays active even when the option is toggled off.
- Persistence: Settings reset when toggling between AmbientUI and OreUI.
API Documentation
JS API and Native API overview for Ambient mod development. Primary template: Lodingglue/nise-api
JS: Logging
log(message)
Routes messages through the client logger (tag: "JS").
log("Script initialized successfully.");
JS: Utility Functions
readFile(path)
const data = readFile("/sdcard/MyMod/patch.bin");
writeFile(path, data)
writeFile("/sdcard/MyMod/log.txt", "hello world");
JS: Virtual Assets
VirtualAssets.addFile(path, data)
VirtualAssets.addFile("textures/terrain/grass.webp", buf);
JS: Hooking
Hook.hookAddr(name, targetAddr, hookFunc, originalFunc, hookType, priority)
Installs an inline hook at targetAddr.
const tramp = Hook.hookAddr("myHook", target, myReplacementFn, origPtr, Hook.Type.INLINE, Hook.Priority.HIGH);
Hook.patchNop(name, addr, size = 4)
Hook.patchNop("disableCheck", Hook.getBaseAddr() + 0xDEAD, 8);