Releases: CyoriaSMP-Team/kalo
Releases · CyoriaSMP-Team/kalo
Release list
v0.2.0
Added
- Export system (
io.kalo.export) — an API that writes a pack back out in five
formats: a KaloPack archive for backup and sharing, portable canonical JSON, and
Oraxen / ItemsAdder / Nexo YAML for moving content the other way. Every conversion
reports exported / partial / unsupported by name rather than being silently lossy.
Reachable from add-ons today; no command wraps it yet. - Built-in feature set (
io.kalo.content.feature) — abilities, skills, stats,
particles, animations, cooldowns, sounds, models and mobs, registered through the
same feature registry an add-on uses. - Docs site restructured: landing page at the root, documentation under
/docs,
deployed to Cloudflare Pages with a realtime version badge.
Removed
- Vaporware commands and placeholder classes.
/kalo benchmarksimulated work with
Thread.sleepand then printed an invented performance comparison;
/kalo market browse|installtalked to a marketplace service that does not exist;
/kalo scanand/kalo migrate-livecounted YAML files as "content", flagged every
renamed vanilla item as custom, and did all of it off the main thread. The classes
behind them (TextureGenerator,ContentMarketplace,MultiServerSync,
PerformanceOptimizer,LiveServerScanner) were placeholders labelled as such in
their own javadoc. They are gone. The honest paths remain:/kalo importfor config
conversion,/kalo doctorfor diagnosis, and theperformanceBenchmarkGradle task
for real numbers. - Build artifacts that had been committed by mistake:
.idea/,.serena/,
.wrangler/, a strayorg/bukkit/attribute/Attribute.classat the repository root,
and agradle.properties.bak-*. All are ignored now.
Full Changelog: v0.1.0...v0.2.0
v0.1.0-rc.6
Full Changelog: v0.1.0-rc.5...v0.1.0-rc.6
v0.1.0-rc.5
Full Changelog: v0.1.0-rc.4...v0.1.0-rc.5
v0.1.0-rc.4
Full Changelog: v0.1.0-rc.3...v0.1.0-rc.4
v0.1.0-rc.3
Full Changelog: v0.1.0-rc.2...v0.1.0-rc.3
v0.1.0-rc.2
Full Changelog: v0.1.0-rc.1...v0.1.0-rc.2
v0.1.0-rc.1
Full Changelog: v0.0.1...v0.1.0-rc.1
v0.1.0
Fixed
- Custom blocks never reached Bedrock at all. The Geyser bridge waited on a
registration snapshot that production code never published, so it timed out after 30
seconds on every startup and registered nothing. Items and the resource pack were
unaffected, which is what made the path look like it worked. - Bedrock blocks were named inconsistently. Blocks registered under the content pack's
namespace through the API, but a mapping file can only produce Geyser'sgeyser_custom
namespace. The generated pack is keyed by one of them, so the other rendered untextured.
Both paths now agree. - Blocks past the note block carrier were mapped to the wrong Java state. The carrier
was dropped on the way to the Bedrock compiler, so anything on tripwire or scaffolding
was named as a note block. /kalo migrate-worldreported "nothing to migrate" when it could not look. On Folia
every cross-region block read threw, the error was swallowed per world, and the count
stayed zero. It now scans through the region scheduler, off the server thread, and
reports unreachable chunks as unreachable.- Virtual blocks placed just before shutdown could be lost. A debounced save and the
shutdown flush shared no lock, so an older snapshot could land on top of a newer one. PackFormatsreturned a pack_format for 1.21.5 through 1.21.11 as if it had been
verified. It had not; it now says when it is guessing.- The PlaceholderAPI expansion never registered on any server that had PlaceholderAPI.
A Paper plugin's classloader is isolated, so the hook's supertype could not resolve and
the guarded call failed withNoClassDefFoundErrorevery time. It now declares the
classpath edge, the way the Geyser dependency already did.
Verified
- A Bedrock player confirmed it. On a live Paper server running Geyser 2.11.2 and
Floodgate: custom item icons render, native blocks place and mine and drop, worn armor
shows on the player. Geyser also confirms the handshake from its own side rather than
taking Kalo's word for it, and bothcustom_mappingsfiles are written. - Getting there took five release candidates. Everything each one fixed was green in CI
beforehand — including an assertion that pinned the wrong armor geometry, and a rule that
was correct, tested, and called by nothing.
Fixed after a Bedrock player tested it
- Custom armor equipped invisibly. The attachable named
geometry.player_armor.helmet, which Bedrock does not define, while already hiding the
base material's armor underneath — so the piece drew nothing at all. All four slots were
wrong the same way, and the test asserted the broken string. - Every custom block showed as a note block in the hotbar. Blocks had no Bedrock item
definition, so they fell back to their Java base material, which is alwaysNOTE_BLOCK. - Kalo broke vanilla physics for every note block, tripwire and scaffolding on the
server.onPhysicscancelled on the carrier material rather than on Kalo content, so
merely installing the plugin stopped vanilla scaffolding collapsing when unsupported and
stopped tripwire updating — for blocks Kalo had nothing to do with. - Native custom blocks could not be broken by anyone.
onInteractcancelled the whole
PlayerInteractEventto stop note-block tuning, which also swallowed
LEFT_CLICK_BLOCK— where mining starts. That is the standard trick for making a block
indestructible, applied by accident to every native block.JavaBlockRules.preventsTuning
had encoded the right rule, tests and all, and nothing in production called it. - The Java resource pack declared the wrong
pack_formaton 1.21.11. It sent 46, the
1.21.4 number, because nothing between the ends of the supported range had been checked.
The real value is 75.
Known limitations
- Virtual blocks do not render on Bedrock and cannot. A virtual block is an
ItemDisplayentity, which Geyser does not translate to a Bedrock client, and it
overrides no Java block state so it cannot be mapped either. Native blocks are
unaffected. On a server with Bedrock players, the 893 native states are the real ceiling. pack_formatis verified for 1.21.4 (46), 1.21.11 (75) and 26.2 (88), each read out of
that version's own client jar. Any other version gets the nearest number in its family
plus a console warning saying it is a guess. A wrongpack_formatcan make the client
reject the pack outright, so treat that warning as work to do, not noise.
Changed
- The
geyser-extensionjar is gone. Geyser reads acustom_mappingsfolder natively,
so Kalo writes Geyser's own format toplugins/Kalo/geyser/instead of shipping a second
artifact to run inside Geyser. A standalone Geyser now needs two files copied and nothing
installed. Releases carry one jar. - Blocks default to
nativemode in the documentation as well as in code;virtualis the
answer to exhausting the 893 carrier states, not the starting point. - The generated pack is no longer reopened and reparsed on every Bedrock connection.
v0.0.1-prealpha
Works (Java, Paper 26.2 + Folia):
- Items, blocks, furniture, armor
- All recipe stations: crafting, furnace, blast, smoker, campfire, stonecutting, smithing
- Sounds, glyphs
- 893 native block states across 8 carriers (SCAFFOLDING added)
- Resource pack auto-export (self-host)
- MythicMobs + ModelEngine hooks
Bedrock:
- Geyser extension registered via API (no file copying)
- Not yet tested with a real Bedrock client
Virtual blocks:
- Persistent index, chunk load/unload, explosion handling
/kalo migrate-worlddry-run
Known gaps (v0.1 target):
- Furniture entity-backed mode
/kalo giveauto-completion- Bedrock manual last mile
Build jar + geyser-extension attached.
v0.0.1
Full Changelog: https://github.com/CyoriaSMP-Team/kalo/commits/v0.0.1