**Added**
- Added “Put an item” to the codex: click the item slot next to the search box and pick an item from the inventory, and both pages group enchantments into “Can be applied / Too expensive at the anvil / Already on it / Blocked by existing”, while a verdict card at the top of the detail page explains whether it can be applied at the enchanting table or anvil, the upgrade path and the reason for any conflict.
- Based “Put an item” results on survival-mode anvil and enchanting table rules; the codex reads the client's local config, so results may differ when it does not match the server's.
- Added the client-only config file `config/carianstyle/client_visual.json` for adjusting the stack HUD's position, scale, row gap, column width, maximum columns, opacity and decorative animations, plus a master switch for effects and toggles, size and offsets for flames and first-person flames.
- Added the server config option `hideStealthHitbox` to toggle hiding stealthed players' hitboxes; it is enabled by default, supports hot reload and is available in the in-game config screen.
**Changed**
- Changed Omen, Miquella's Blade, Vyke's Dragonbolt, Dung Eater, Corpse Piler, Stamp (Upward Cut), Repeating Thrust, Sacred Blade, Stamp (Sweep), Blade of Death, “Flame, Devour Them All”, Godskin Swaddling Cloth, Sleep Mist and Scarlet Rot to require a fully charged swing, preventing click-spamming from breaking balance; “fully charged” now consistently means attack strength above 90%.
- Changed Blade of Death, Omen and Miquella's Blade to only pay their cost without any benefit when not fully charged, so spamming is never stronger than a fully charged hit.
- Hid stealthed players' hitboxes and shadows, so F3+B can no longer be used to see through stealth.
- Changed Double Slash and Unsheathe to resolve only once per swing, and Unsheathe's attack speed penalty now takes effect one tick later.
- Changed the area effects of “Flame, Devour Them All” and Adula's Moonblade to no longer hit the holder, creatures of the same kind, teammates or the holder's own pets and mounts; the target hit by Adula's Moonblade now always receives Frostbite.
- Changed the death message, cause of death and damage events when Unendurable Frenzy, Frenzied Burst or Howl of Shabriri kill their holder through self-damage to match a vanilla damage death, so grave and death-log mods can recognize it.
- Relaxed the format of the `uninstallEnchantment` option: it now accepts a `carianstyle:` prefix, any letter case, quotes or square brackets, comma separation and language keys, which were previously ignored silently; entries matching no enchantment are reported in the log at startup.
- Stripped disabled enchantments from items dropped into the world automatically, turning emptied enchanted books into plain books; contents generated directly in loot chests are excluded.
- Changed the stack HUD to collapse and show how many entries are hidden when it cannot fit everything, and to stay inside the usable area on small windows.
- Made the effect toggle panel obey the master switch; reading an old `visual_toggle.json` now fills in bilingual descriptions for every effect while keeping the existing toggle values.
- Optimized the equipment enchantment scan done when a potion effect is added by reusing it within the same tick, lowering the cost of accessories that keep refreshing effects.
**Fixed**
- Fixed stealthed players' models still being visible to other players on dedicated servers; previously stealth only worked in singleplayer and for the LAN host.
- Fixed Waterfowl Dance preventing Destined Death from triggering, on both ordinary weapons and slash blades.
- Fixed Stamp (Sweep)'s area damage re-triggering itself and chaining into a large number of attacks in dense crowds.
- Fixed Rotten Winged Sword losing its damage bonus once the combo reached its maximum.
- Fixed the Warrior description not matching its actual effect; it now reads “+25% damage dealt, restore 25% of lost HP on kill”.
- Fixed potion effects being modified twice by enchantments on Mohist and other hybrid servers, for example Bestial Constitution's duration being shortened too much.
**Upgrade notes**
- Client and server must be updated together: the network protocol version goes from 2 to 3, and older clients connecting to an updated server are rejected during the handshake with a version mismatch message.
- With the relaxed format, entries in the disabled-enchantment list that previously had no effect will now actually disable their enchantments and those effects will stop working, so announcing this in advance is recommended; this config is not synced from client to server, and the server's own file applies.
- The enchantments that now require a fully charged swing no longer trigger when click-spammed; this is an intentional balance change.
- On first launch, the client file `config/carianstyle/client_visual.json` is generated, and missing entries use defaults.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }