AethelLib
⚒ AethelLib - The first native Bedrock scripting API framework, library. a framework that is held together with duct tape and 3am coffee with the all Essentials you need
"I wanted to write this in C++. Mojang gave me JavaScript. So I built a Kernel anyway."
You know how this goes. You start a Bedrock project, dump everything in main.js, and three weeks later your server has the memory profile of a radioactive leak and you're staring at "Script engine error" at 2am wondering where it all went wrong.
AethelLib is what happens when someone gets tired enough to fix that properly. It's an architectural framework that treats Bedrock scripting like a real engineering problem — because it is one, even if Mojang doesn't.
☩ WHAT IT IS
A stable foundation. You talk to the Kernel. The Kernel talks to Minecraft. When Mojang breaks the API — and they will, they always do, I've seen things — you fix one file instead of forty.
Built for two kinds of people. If you're running a server and don't want to rewrite essentials from scratch — this is for you. If you're building an addon and don't want to start from zero — this is especially for you. Both of you are valid. Only one of you will read the docs.
✦ THE LARPING KERNEL (JavaScript wearing a trenchcoat pretending to be C++)
Okay so. The "Kernel" is technically just a Map. Don't tell anyone.
But it's a very deliberate Map. O(1) service discovery — you probably don't know what that means but trust me it's fast — global access from anywhere in your pack, no circular imports, no passing your instances through seventeen function arguments like it's 2008.
Register once. Get anywhere. That's the whole thing.
Kernel.register("mySystem", new MySystem())
// anywhere else in your entire codebase, no imports needed
Kernel.get("mySystem").doSomething()
The real value isn't the Map. It's that when Mojang drifts their API at 3am on a Tuesday with zero changelog — and they will — you fix the Kernel. Your game logic doesn't move. Your plugins don't care. Everything just keeps working.
It's a Map in a trenchcoat and it has saved me more times than I can count.
⊕ WHAT'S INCLUDED
(yes there's a lot. I didn't sleep much.)
⚙︎ Core — the boring but important stuff — Stable Kernel with O(1) service registry (the Map) — 3-phase boot sequence with staggered init to protect TPS — because booting 12 systems simultaneously is how you kill a server, learned that the hard way — Plugin system so your code never touches the core files. ever. — Sharded database with auto-cleanup — your save file will not become a 4GB monster on my watch — LRU cache with TTL eviction and hit-rate stats — yes I built a cache system for a block game. no I don't regret it. — Interface contracts that throw real errors when you break the rules. loudly. with your name on it.
✦ Economy — money goes brrr — Persistent player balances that survive restarts — Atomic transfers — either it goes through completely or it doesn't happen at all. no dupes. I was very serious about this. — Physical banknotes from $100 to $1,000,000 because immersion matters — Auction house, shop, sell, and withdraw system — Scoreboard mirror so your economy shows up on the sidebar
☩ Teleportation — spatial manipulation — Homes, warps, TPA, back, spawn, RTP — RTP actually checks for a safe landing spot. you're welcome. — Combat teleport blocking — no escaping mid-fight like a coward — Cooldowns configurable per rank because not everyone deserves instant travel
⊕ Ranks & Permissions — who gets to do what — Tag-based rank system. if a player has the tag, they have the rank. that's it. — Permission node inheritance — Per-rank config for home limits, cooldowns, command access, chat colors
⚒ Admin Tools — the power panel — Full admin panel GUI (yes there's a UI here. don't get used to it.) — Complete moderation suite — ban, tempban, unban, kick, mute, unmute — Inventory inspection, economy override, floating text management — Report management — players can report things and you can actually see them — Live server settings — toggle any system without a restart. yes really.
✦ Social — people talking to people — Private messaging with reply shortcut — Player blocking system — Chat color per rank — gatekeep the gold color, it's good for the economy — Report system for both players and server bugs
☨ Land Claims — this is mine — Chunk-based protection — Per-player trust system — let your friends build, nobody else
⚑ Combat — Combat integrity tracking — no teleporting out mid-fight — Killstreak system
⚑ COMMANDS give yourself AE tag via /tag @s add AE
Everything runs under the ae: namespace. Full usage docs on GitHub.
☩ Admin — authority vectors
/ae:adminpanel — the central control hub
/ae:ban — permanent or duration-based ban
/ae:tempban — explicit timed ban
/ae:unban — remove a ban record
/ae:kick — immediate disconnect, no record
/ae:mute — silence a player (10m, 1h, permanent)
/ae:unmute — restore chat access
/ae:invsee — surgical inventory inspection
/ae:gamemode — change a player's gamemode
/ae:economy — admin economy override (give, take, set)
/ae:rankadmin — manage rank definitions and assignments
/ae:ft — floating text management (add, remove, edit)
/ae:reports — view and resolve player reports
/ae:broadcast — server-wide broadcast system
/ae:bc66 — broadcast reset
/ae:resetdata — wipe player data
/ae:whois — detailed player lookup
/ae:shopadd — add items to the shop
/ae:shopcatmk — create shop categories
/ae:shopadmin — manage the global shop system
/ae:settax — set the global economy tax rate
/ae:pluginreload — hot-reload plugins without restarting
/ae:system — toggle core systems on or off
✦ Economy — financial vectors
/ae:money — check your balance (or someone else's)
/ae:pay — transfer money to another player
/ae:topmoney — the leaderboard of greed
/ae:withdraw — convert balance to physical banknotes
/ae:shop — open the item shop
/ae:sell — sell items from your inventory
/ae:auction — open the player-to-player marketplace
/ae:tax — view the current global tax rate
☩ Teleportation — spatial vectors
/ae:sethome — save your current location
/ae:home — teleport to a saved home
/ae:delhome — delete a saved home
/ae:listhome — list all your homes
/ae:setwarp — set a global warp point (admin)
/ae:warp — teleport to a global warp
/ae:delwarp — delete a warp (admin)
/ae:listwarp — list all warps
/ae:spawn — go to spawn
/ae:rtp — get launched somewhere random and probably dangerous
/ae:back — return to your last location
⊕ TPA — teleport requests
/ae:tpa — request to teleport to a player
/ae:tpahere — request a player to come to you
/ae:tpaccept — accept an incoming request
/ae:tpadeny — deny an incoming request
/ae:tpacancel — cancel your outgoing request
/ae:tpasetting — toggle TPA on or off for yourself
✦ Social — communication vectors
/ae:message — send a private message
/ae:reply — reply to the last message
/ae:report — report a player or bug
/ae:block — block a player from messaging you
/ae:unblock — unblock a player
/ae:color — change your chat color (rank dependent)
☨ Ranks
/ae:rank — view your current rank and permissions
/ae:createranks — create a new rank definition
/ae:editranks — edit an existing rank
/ae:addranks — assign a rank to a player
/ae:removeranks — remove a rank from a player
/ae:deleteranks — permanently delete a rank definition
/ae:hidetag — toggle visibility of your rank nametag
⚒ Land Claims
/ae:claim — claim your current chunk
/ae:claim trust — trust a player on your land
/ae:claim untrust — revoke a player's access
/ae:claim remove — unclaim the current chunk
⚙︎ Utility
/ae:calculate — evaluate a math expression. yes really. DEV NOTE bedrock engine is stupid use -calc
/ae:combat — check your combat status
/ae:help — command list with usage
/ae:info — server info
/ae:menu — open the player menu
/ae:tps — check ticks per second
/ae:credit — who built this
/ae:ping — check if the server is alive (spoiler: PONG)
⚙︎ AETHELESSENTIALS PLUGIN (The Modpack Vector)
This is the official plugin suite. It ships with the core framework because you probably want a real server and not just an API. It adds everything from NSA-level spying to nuking the mob cap.
☩ Moderation — because players are the real problem
/ae:freeze — freeze a player (the "stop moving so I can ban you" button)
/ae:jail — send a player to the shadow realm
/ae:unjail — release them from the shadow realm
/ae:setjail — define where the shadow realm is
/ae:warn — issue a formal warning because reading rules is too hard
/ae:warnings — audit a player's criminal record
/ae:clearwarnings — absolute forgiveness
/ae:vanish — ghost mode. you aren't here. you were never here.
/ae:socialspy — the NSA command. read everyone's private messages. Big brother Watching.
✦ Utility & World — bending the engine
/ae:butcher — delete all hostile entities because the mob cap is crying
/ae:killall — surgical deletion of specific entity types
/ae:kickall — nuke the server connections (admins survive)
/ae:memory — check if the JavaScript engine is choking to death
/ae:plugins — list active AethelLib plugins (so you know who to blame)
/ae:saveall — force a disk flush. do this before you crash it.
/ae:speed — overclock your walk/fly speed
/ae:enchant — bypass vanilla enchant limits because sharp 5 is for cowards
/ae:give — spawn items out of thin air
/ae:more — max out the stack size of whatever you're holding
/ae:repair — instantly fix durability (anvils are obsolete)
/ae:time — play god with the sun
/ae:weather — play god with the clouds
/ae:xp — manage player experience
⊕ Player & Social
/ae:nick — witness protection program for your username
/ae:realname — pierce the veil of a nickname
/ae:playtime — view exactly how much of your life you've wasted here
/ae:seen — check when someone last logged off (they aren't coming back)
☩ THE PLUGIN PROTOCOL (your code never touches my files)
This is the part I'm most proud of honestly. You build your stuff in scripts/plugins/. You register it in PluginLoader.js. That's it. When AethelLib updates you get zero merge conflicts. Your plugins just survive.
export function onBoot() {
Kernel.register("mySystem", new MySystem())
Kernel.get("commandRegistry").register({
name: "dosomething",
execute(_data, player, _args) {
Kernel.get("mySystem").doSomething(player)
}
})
}
Keep the core clean. Keep the plugins dirty. Full tutorial on GitHub — I wrote it so you don't have to figure it out at 2am like I did.
⚠︎ EARLY ACCESS — READ THIS
This is still early. It works. It's been tested. I use it. But bugs exist that I haven't found yet and I would genuinely rather you tell me than silently uninstall it. If it works, it's "Industrial Peak." If it crashes, it's an "Advanced Feature Request." There is no in-between.
If something breaks, open an issue on GitHub. If something behaves weird, open an issue. If you found a dupe in the economy — PLEASE open an issue immediately, I need to know about that one specifically.
☨ LICENSE — AGPLv3
AethelLib: Built so you can actually enjoy modding. While breaking things. While questioning your life choices.
⚒ Full docs, tutorial, and source: https://github.com/Wladyslaw18/AethelLib/tree/main
❖ COFFEE VECTORS (keep the developer alive)
AethelLib is free and open-source under AGPL v3.0, but my local energy drink supplier does not accept GitHub stars. If this framework saved you from 40 hours of debugging at 3 AM, consider routing some liquidity down the pipeline.
- Support the Project:
└── ☩ Donate with Crypto via NOWPayments (USDT, USDC, LTC, and more)
└── ☕ Warning: Caffeine input directly correlates with hotfix release velocity.