# v1.0.0 Full rewrite and rebrand from DisplayTags. New multi-module architecture, new packet system, new API. --- ## Added - **Multi-module architecture** — split into Sign-API (git submodule) and Sign-Paper - **Developer API** — `SignAPI`, `INametag`, `INametagManager` for programmatic nametag control - **Per-viewer overrides** — `setLines(Player, List<String>)` to show different nametags per viewer - **Global overrides** — `setLines(List<String>)` to override nametag for all viewers - **SignReloadEvent** — Bukkit event fired after `/sign reload` - **Conditional lines** — `<condition:'%placeholder%'>text</condition>` tag syntax - **Blank line hiding** — lines that resolve to empty (after stripping colors) are hidden automatically - **Support crouching** — nametag opacity lowers and see-through disables when sneaking - **Condense holograms** — option to use one text display per line for tighter backgrounds - **Packet bundling** — all packets for a nametag update are sent together via `sendPacketSilently` - **Dirty checking** — text and sneak state are cached; packets only sent when something changes - **Config version migration** — automatic v0 to v1 migration (seconds to ticks, new options) - **Profile refresh detection** — nametags re-mount automatically when a player's profile is refreshed (e.g. nicking) - **Version updater** — console log and op notification when a newer version is available on Lodestone --- ## Changed - **Package** — `me.itsskeptical.displaytags` to `gg.lode.sign` - **Plugin name** — DisplayTags to Sign - **Permission** — `displaytags.admin` to `lodestone.sign.admin` - **Commands** — custom command framework replaced with CommandAPI (shaded and relocated) - **Packets** — PacketEvents now shaded and relocated (no longer a required external dependency) - **Update interval** — now in ticks instead of seconds (default: 20) --- ## Removed - Custom command framework (`CommandGroup`, `Subcommand`) - Modrinth-based `UpdateChecker` (replaced by `VersionUpdater`) - External PacketEvents dependency (now shaded) - `{prefix}` placeholder from message helper