Releases: NullSablex/bedrock-soulglass
Releases · NullSablex/bedrock-soulglass
Release list
v1.0.0
First release. Requires Minecraft Bedrock 1.26 (@minecraft/server 2.9.0, @minecraft/server-ui 2.1.0).
Ships as two packs. Both are required: the behavior pack runs the logic, the resource pack carries the translation strings. Enabling only the behavior pack leaves every message showing as a raw key such as soulglass.hud.none.
Added
- A soul lantern on death. Everything the player carried, including experience, goes into a soul lantern lit at the place they died. Break it to get it all back; there is nothing to open.
- Armor returns worn. Helmet, chestplate, leggings, boots and offhand go back to the slots they came from, already equipped — and it is the exact piece that was on the body, not another identical one from the backpack. Each piece is matched by a fingerprint of type, count, name, durability, enchantments and lore, so two diamond helmets are told apart by the damage the worn one took.
- Experience is preserved and returned as collectable orbs.
xp.modechooses between returning everything ("full", the default) and only what vanilla would have dropped ("vanilla").deliveryModechooses between orbs and crediting the exact amount at once. - A paper guide, handed over on respawn. Holding it shows distance, heading and height difference on the action bar, and draws a trail of particles through the air toward the lantern — following the real line, rising and falling with the terrain. A beam marks the lantern itself within 64 blocks. Using it opens a menu listing the lanterns in the dimension you are standing in; anything elsewhere is reported as a count, never as coordinates that mean a different place here.
- Reachable placement. A lantern never appears inside lava or water. The search demands solid ground to stand on, headroom to swing at the marker, and no liquid touching it, searching outward from the death point for the nearest safe block, the way a bed finds a respawn spot. Dying in the void or mid-ocean builds a support block rather than leaving the lantern where nobody can reach it.
- Only the owner can open a lantern, and nothing else in the game can destroy one. Explosions have the lantern's blocks removed from their affected list, so TNT still goes off and leaves it untouched. Pistons cannot push the marker away from the vault pinned beneath it. The block holding the lantern up counts as part of it — a soul lantern needs support, so knocking the ground out would pop it off as an ordinary item, and the break event fires for the ground rather than the marker, so nothing would notice. Both blocks now resolve to the same lantern: the owner breaking either one gets everything back, anyone else is stopped at both, and neither drops. A lantern lit on gravel or sand gets a solid block put under it, because those fall: the whole column dropping would take the lantern with it, reported as a break somewhere else entirely. Whatever prevention cannot reach is caught by a sweep that puts a missing marker back, because the registry decides where a lantern stands, not the world.
- Per-player translation. Messages are translation keys the client resolves, so two players side by side read the same line each in their own language. 11 languages ship, from English and Portuguese to Russian, Chinese and Japanese; any other language falls back to English, so nobody ever sees a raw key.
- A menu, opened by using the guide. Chat scrolls away behind whatever anyone says next, which made it a poor place to read anything and no place at all for something that is not urgent. The menu lists your lanterns as buttons with coordinates and distance, keeps the chat listing one button away for when you want to copy coordinates out, and holds still until you dismiss it.
- Credits, readable in game. Bedrock gives an add-on nowhere to name an author: no about screen, a pack description nobody opens, and item names that are plain strings shared by every language. A form is the one surface where this can be read, so that is where it lives — author, version, licence, source and the translators. The address is shown in a form that does not wrap, because the form inserts a hyphen when it breaks a line and
bedrock-soulglassbecamebedrock-soulg-lass, an address that reads as real and is not. A button prints the fullhttps://link in chat, which is as close to a clickable link as Bedrock gets. - Coloured throughout, in the colour of the thing itself. Soul fire is cyan, so the add-on is: the chat prefix, both pack names in the add-on list, the action bar, the item and every menu title. Menu bodies stay in default text, with structure rather than paint.
/scriptevent soulglass:findlists the caller's lanterns. Using the guide does the same thing and needs no cheats.- Documentation site built with MkDocs Material, split by audience: players, server owners, developers. What it does is the player-facing tour: every feature, why it exists, and an honest list of what the add-on does not do. Screenshots open full size, link previews render as cards, and the site itself is translatable — a page with no translation falls back to English rather than disappearing.
docs/architecture.mdrecords the API constraints behind each design decision. tools/check.py— static analysis covering what can be checked without running the game: imports resolving, config keys existing, translation keys present in every language file, characters that would break the in-game font, JSON validity, and side effects that would throw insidebeforeEvents.tools/build.py— produces the release packages on Windows, Linux and macOS alike. Three of them: the.mcaddonthat installs both halves at once, and each half as its own.mcpackfor server owners placing them by hand.- Build provenance on every release artifact. Each package is signed against the commit, workflow and runner that produced it, so a download can be traced back to this repository rather than to someone who repacked it:
gh attestation verify Soulglass_v1.0.0.mcaddon --repo NullSablex/bedrock-soulglass.
Notes
- Nothing happens when
keepInventoryis on. That rule preserves experience as well as items, so creating a lantern would hand back XP the player never lost. /kill @ereaches the vault. The lantern is a block and survives untouched; the entity holding the items does not, because/killremoves rather than damages and no component prevents removal. The contents are read before the entity goes and a replacement is filled on the next tick, so the items come back. Operators should still exclude it by family —/kill @e[family=!soulglass_vault]— since that never depends on the rescue working.- The marker must be breakable by hand.
playerBreakBlockonly fires when the block would actually break, and someone who just died has no pickaxe — it is inside the lantern. ChangingmarkerBlocksto something like crying obsidian makes lanterns unrecoverable forever. - Inventory layout is not restored, only equipment slots. Items come back in the order they sat in the vault.
- The guide's item name and lore are not translated. Item text takes plain strings only; the API rejects translation keys there. They come from
config.jsand read the same for everyone. xpPerOrbis an assumption. The API never exposes an orb's value, so the count is derived rather than measured. Verify it against a known amount and adjust, or switchdeliveryModeto"direct"for exactness.
Full Changelog: https://github.com/NullSablex/bedrock-soulglass/commits/v1.0.0
Downloads
Soulglass_v1.0.0.mcaddon— start here. Both packs in one file; opening it installs the lot.Soulglass_BP_v1.0.0.mcpack— behavior pack only.Soulglass_RP_v1.0.0.mcpack— resource pack only.
The two .mcpack files are for server owners placing each half by hand. Both are required — the resource pack carries the translation strings, and without it every message shows as a raw key.
Installation: see the documentation.