Skip to content

Releases: CyoriaSMP-Team/kalo

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 11:28

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 benchmark simulated work with
    Thread.sleep and then printed an invented performance comparison;
    /kalo market browse|install talked to a marketplace service that does not exist;
    /kalo scan and /kalo migrate-live counted 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 import for config
    conversion, /kalo doctor for diagnosis, and the performanceBenchmark Gradle task
    for real numbers.
  • Build artifacts that had been committed by mistake: .idea/, .serena/,
    .wrangler/, a stray org/bukkit/attribute/Attribute.class at the repository root,
    and a gradle.properties.bak-*. All are ignored now.

Full Changelog: v0.1.0...v0.2.0

v0.1.0-rc.6

Choose a tag to compare

@github-actions github-actions released this 21 Aug 17:10

v0.1.0-rc.5

Choose a tag to compare

@github-actions github-actions released this 21 Aug 17:06

v0.1.0-rc.4

Choose a tag to compare

@github-actions github-actions released this 21 Aug 17:01

v0.1.0-rc.3

Choose a tag to compare

@github-actions github-actions released this 21 Aug 16:47

v0.1.0-rc.2

Choose a tag to compare

@github-actions github-actions released this 21 Aug 16:15

v0.1.0-rc.1

Choose a tag to compare

@github-actions github-actions released this 21 Aug 16:05

Full Changelog: v0.0.1...v0.1.0-rc.1

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 21 Aug 17:37

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's geyser_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-world reported "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.
  • PackFormats returned 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 with NoClassDefFoundError every 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 both custom_mappings files 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 always NOTE_BLOCK.
  • Kalo broke vanilla physics for every note block, tripwire and scaffolding on the
    server.
    onPhysics cancelled 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. onInteract cancelled the whole
    PlayerInteractEvent to 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_format on 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
    ItemDisplay entity, 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_format is 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 wrong pack_format can make the client
    reject the pack outright, so treat that warning as work to do, not noise.

Changed

  • The geyser-extension jar is gone. Geyser reads a custom_mappings folder natively,
    so Kalo writes Geyser's own format to plugins/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 native mode in the documentation as well as in code; virtual is 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

Choose a tag to compare

@Namnarak Namnarak released this 22 Aug 04:21

⚠️ Pre-alpha — first public build.

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-world dry-run

Known gaps (v0.1 target):

  • Furniture entity-backed mode
  • /kalo give auto-completion
  • Bedrock manual last mile

Build jar + geyser-extension attached.

v0.0.1

Choose a tag to compare

@github-actions github-actions released this 21 Aug 13:08