Kyokalith v1.0.0
First public release. The decoy-materialization model shipping here has been running in production on a live survival server for the past two weeks without incident.
What Kyokalith is, in one paragraph: anti-X-Ray that never touches world generation. Vanilla ores generate exactly as always; any ore fully enclosed by solid blocks is a decoy — X-Ray, freecam, and seed-map tools all see it, but whether the block is real is only decided the moment mining first exposes it, by a deterministic function keyed with a private per-server salt. Cheaters tunnel to what they saw through the wall and hit stone; ore an honest player can see is always real. Per-event cost is a constant (removed blocks × 6 neighbor checks) — no packet obfuscation, no chunk scanning. See the README for the full model.
Added
- Customizable messages / locales. All admin-command output moved out of the code into
plugins/Kyokalith/lang/<locale>.yml. Bundled locales:en(default) andzh_TW; new config keylocaleselects one. Edit the generated files to customize — deleted keys fall back to the built-in text, and any key missing from a locale falls back to English. Add your ownlang/<name>.ymland setlocale: <name>for a new language, no code required. - Tab completion for every
/kyosubcommand: subcommand names, coordinates (pre-filled from the block you're looking at, or your position), world names, online player names, ore type ids, radius/amount suggestions. Players withoutkyokalith.adminget no completions. - LICENSE: TinyYana Universal Software License (TYUSL) 1.0 — free to use, modify, integrate, and redistribute (commercial servers included); selling the plugin itself or repackaging it as a paid product requires written permission.
- English documentation as the primary set: README.md, docs/CONFIG.md, docs/API.md. 繁體中文版本: README.zh-TW.md, docs/CONFIG.zh-TW.md, docs/API.zh-TW.md.
- Automated releases: pushing a
v*tag builds, tests, verifies the tag matchesgradle.properties, and publishes a GitHub Release with the jar and this file's matching section as notes.
Changed
- Compiled against the Spigot API (26.2) instead of the Paper API. The single Paper-only call in the codebase (
pluginMeta) was replaced with the Bukkit equivalent, making Spigot compatibility a compile-time fact. Production testing still runs on Paper; Folia is not supported. - Kotlin runtime pinned to stable 2.4.0 (was
2.4.20-Beta1); thelibraries:entry in plugin.yml that the Bukkit library loader downloads at startup matches. - Console/log messages are now English.
/kyo statsoutput no longer leaks internal reward-system terminology ("d20"). - Plugin metadata (description, docs) no longer references the private server project this plugin originated from; source comments that pointed at a private design document now explain the concepts inline or link to
docs/in this repo.
Fixed
processResourcesnow registers the version as a task input — previously an incremental build after bumping onlygradle.propertiescould produce a jar whose embeddedplugin.ymlstill carried the old version string.
Upgrading from a pre-release 0.x build
Drop-in: replace the jar and restart.
- Your existing
config.ymlis kept as-is; the newlocale: enkey is merged in automatically with your values and comments untouched. Setlocale: zh_TWfor Traditional Chinese admin output. plugins/Kyokalith/lang/is created with editable copies of both bundled locales.- Database schema, the
salt, and all tracked state are unchanged — no migration, nothing re-rolls.