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. |
| Configuration | Customization Options New | Extended customization controls for launcher behavior and game environment. |
| 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. |
| Input | Keymap Button Lock New | Lock keymapper button positions to prevent accidental repositioning during gameplay. |
| Performance | No Memory Leaks | Confirmed stable memory management — no runaway RAM usage over long sessions. |
| Performance | No Input Delay | Confirmed zero input delay on mobile, even on lower-end hardware. |
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.
*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
- Persistence: Settings reset when toggling between AmbientUI and OreUI.
Changelog
V1.0.4 Hotfix
Ambient: Pocket Edition
Bug Fixes
- Fixed Marketplace issues
- Fixed Dressing Room / Skins not working
- Fixed servers not loading
- Fixed key mapper crash
- Fixed shader loader for version 1.26.10.4
Features & Improvements
- Added more customization options
- Added keymap button lock
- Improved overall performance
API Changes
- Added
RenderAPI::Register(cb fun ptr) - Added
RenderAPI::Unregister(cb fun ptr) - Added
TouchAPI::RegisterCallback(cb) - Added
TouchAPI::UnregisterCallback(cb) - Added
KeyApi::RegisterHandler(handler) - Added
KeyApi::UnregisterHandler(handler) - Added
TouchEvent->action - Added
TouchEvent->pointerId - Added
TouchEvent->x - Added
TouchEvent->y
Removals / Breaking Changes
- Removed Shader auto-fixer — removed to align with YSS changes.
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);
JS: Render API V1.0.4
RenderAPI::Register(cb fun ptr)
Registers a callback to be invoked each render frame.
RenderAPI::Register(myRenderCallback);
RenderAPI::Unregister(cb fun ptr)
Unregisters a previously registered render callback.
RenderAPI::Unregister(myRenderCallback);
JS: Touch API V1.0.4
TouchAPI::RegisterCallback(cb)
Registers a callback to receive touch events. Each event provides action, pointerId, x, and y.
TouchAPI::RegisterCallback(function(event) {
log("Touch at " + event.x + ", " + event.y + " | pointer: " + event.pointerId + " | action: " + event.action);
});
TouchAPI::UnregisterCallback(cb)
Unregisters a touch callback.
TouchAPI::UnregisterCallback(myTouchCallback);
TouchEvent fields
| Field | Type | Description |
|---|---|---|
action | int | Touch action type (down, move, up, etc.) |
pointerId | int | Unique ID for each active touch pointer |
x | float | X coordinate of the touch point |
y | float | Y coordinate of the touch point |
JS: Key API V1.0.4
KeyApi::RegisterHandler(handler)
Registers a handler to receive key input events.
KeyApi::RegisterHandler(myKeyHandler);
KeyApi::UnregisterHandler(handler)
Unregisters a key input handler.
KeyApi::UnregisterHandler(myKeyHandler);