summaryrefslogtreecommitdiff
path: root/platform-paper/src/main/resources/languages
AgeCommit message (Collapse)Author
2026-09-28feat(paper): add world, display_name, channel_id and role chat placeholdersSho Sakuma
Operators asked for more of the sender's context in chat formats than the name alone. {world} covers direct messages and channel chat; the channel details and the sender's display name and role only exist for channel chat, so only that format accepts them. A direct message from another server renders {world} empty: the relay does not carry the sender's world, and adding it would need a protocol bump and a coordinated Velocity release for one placeholder. The renderer now accepts underscores so the snake_case names match as written. Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-30refactor(paper): let /lc dump name the folder instead of the fileSho Sakuma
The reply carried the report's path so the operator could find the file. But `lunaticchat.command.lc.dump` can be granted to someone with no filesystem access at all, and to them a path is not something they can act on - it only says how the server is laid out. Relativising it against the server directory narrowed that without removing it. Naming the folder in the message says everything a reader can use, and leaves the exact path to the server log, which only someone with that access can read anyway. That also makes the reply a single message rather than a message plus a component the language files could not translate. Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-30feat(paper): make the debug switch categorised, live and dumpableSho Sakuma
config.yml now accepts `debug: velocity,protocol` and a block with `enabled` and `categories` beside the boolean it always took. Categories exist so that instrumenting the chat path does not bury the handshake an operator is chasing under one line per message. The setting is read by inspecting the YAML node by hand rather than through a data class, because one key has to accept both a scalar and a map and kaml picks the input to build from the descriptor kind alone - a class descriptor rejects `debug: true` before the serializer is ever called. An unknown category name is collected rather than thrown: throwing would make ConfigManager prune the whole `debug` key and switch off the categories the operator did spell correctly. `debug` moves from RESTART_REQUIRED to applied, since a reload only has to replace a DebugState. `/lc debug` switches a category for the running server and deliberately does not write config.yml back - re-emitting a commented YAML document from a parsed tree loses every comment and every bit of formatting the operator put there, and a restart or `/lc reload` putting the file back in charge is the safer default anyway. `/lc dump` writes the report a bug report needs: versions, enabled features, connection state and how full each store is. It carries no message text, player name or UUID, because it exists to be pasted into a public issue by someone who is not reading it first. Its reply names the file relative to the server directory - the command can be granted to someone with no filesystem access, to whom an absolute path discloses where the server is installed and nothing they can act on. The KtorSimpleLogger calls in ChannelMessageHandler and ChannelMessageLogger are folded into the same logger, so there is one place that decides whether a diagnostic line is printed. Refs #228 Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-30chore: update japanese i18n settingsSho Sakuma
2026-08-10refactor(paper): reword the /lc reload messages and mark the untranslated linesSho Sakuma
The Japanese wording was revised in place: the messages now say "the configuration file" rather than naming config.yml at the operator, and they follow the punctuation this file already used for in-game text. English is brought in line with that wording, keeping its own trailing periods, which the rest of en.yml uses on every full sentence. The three failure headings now carry a comment saying what is printed beneath them and why those lines are never translated. A translator has no way to see that from the file alone, and the two reasons it cannot change are both easy to undo by accident: the text comes from the YAML parser, so a parser update would silently age any translation kept here, and it cannot be passed as a placeholder because a reason holding braces of its own is broken by the next substitution and then coloured as if the braces were ours.
2026-08-10feat(paper): report /lc reload as a single-line resultSho Sakuma
The reply listed every setting that had moved and every setting that still needed a restart, as dotted keys. That buried the one bit that changes what the operator does next - whether they have to restart - under names they had just typed themselves and did not need read back to them. The detail is not lost: which settings moved was already written to the server log on every reload, which is the better home for it anyway, since a format change can be dated there long after the chat line has scrolled away. A pending restart now outranks "nothing changed" even when nothing could be applied. Reporting no change to someone who did edit the file would send them hunting for a typo they had not made. The failure path still names each unreadable setting and the reason it was rejected, because that is a list the operator cannot reconstruct and needs in order to fix the file.
2026-08-10feat(paper): add /lc reload to apply message formats without a restartSho Sakuma
Changing a message format meant taking the server down, because config.yml was read once in onEnable and every consumer held the value it was built with. Operators tune these formats far more often than anything else in the file, and a restart is a disproportionate price for a colour code. Only messageFormat is applied. The rest of config.yml settles things once, at startup - which services exist, which commands and listeners are registered, which files are opened - and none of that can be redone while the server runs: Paper registers commands only through its COMMANDS lifecycle event, Bukkit cannot unregister a listener, and the conversion cache saver keeps no task handle to cancel. Rebuilding the services would leave the old ones still wired up, so a changed setting the server cannot pick up is reported back as needing a restart rather than silently ignored. MessageFormatHolder is deliberately narrower than LunaticChatConfiguration: taking it says the value is live, taking the configuration says it was frozen at startup. A holder over the whole tree would hold a configuration matching no version of the file, since only messageFormat is ever swapped. Reload reads config.yml more strictly than startup does, because it has an option startup does not - leaving the running configuration alone. Startup falls a single unreadable setting back to its default so the server can come up; reload refuses the file, names every unreadable setting at once, and keeps what the server already had. A document holding no settings is refused for the same reason: it cannot be told apart from a config.yml caught halfway through being written, and resetting every format over that is worse than doing nothing. Closes #266 Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-02refactor: remove code that no production path reachesSho Sakuma
These were all scaffolding that drifted out of use, and each one costs a reader time before they discover it does nothing: - UUIDASStringSerializer duplicated UUIDSerializer byte for byte; the differing descriptor name never reaches the JSON/YAML wire format, so the choice between them was a coin flip for contributors. - Velocity's BuildInfo was never referenced (the plugin reads its version from PluginContainer) and read a "commit" property the build never wrote, so it would have reported "unknown" had anyone called it. - KanaConverter.TrieNode.Leaf is never constructed: buildTrie starts from a Branch and insert only ever returns Branch. Six branches guarded against a state the type system allowed but the code could not produce. With those gone, isValidRomaji and toHiragana were visibly the same trie walk, so they now share one longestMatch. - @Deprecated command handling had no annotated command to act on. - The settings backup restore looked for *.backup.* files that nothing in the repository writes, so it always fell through to empty settings. Also drops CommandContext.replyWithEvent/replyPlain, PluginCoroutineScope's unused plugin parameter, GitHubRelease fields no caller reads, and four language keys with no lookup site. Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-17feat: add cross-server direct messaging via VelocitySho Sakuma
Allow /tell and /reply to reach players on other Paper servers behind a Velocity proxy using the "<player>@<server>" target syntax. Engine (protocol bumped 1.0.0 -> 1.0.1, optional sub-channels): - Add DirectMessageRelay, DirectMessageError, PresenceSnapshot/PresenceEntry and PresenceRequest messages plus codec branches. Velocity: - CrossServerDirectMessageRelay routes a DM to the target server (or returns a delivery error to the source). - PresenceTracker broadcasts proxy-wide presence snapshots on join/quit/switch and on request. Paper: - RemotePlayerRegistry caches proxy presence for completion and remote target resolution. - CrossServerDirectMessageManager handles send/receive/error and dedup. - DirectMessageHandler reply state generalized to ReplyTarget (Local/Remote) so /reply works across servers. - TellCommand parses "name@server", completes local names and remote name@server targets, and uses exact local name matching. - New crossServerDirectMessage config flag and i18n keys (en/ja). Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-04feat: Support Minecraft 26.1Sho Sakuma
2026-03-26chore: Remove unused language dataSho Sakuma
2026-03-26feat: Add Night warning to Status CommandSho Sakuma
2026-03-17feat: Improved notification messages when logging in to the serverSho Sakuma
2026-03-17feat!: Remove ChatMode feature, followback channel chat modeSho Sakuma
2026-02-23feat: Add more status view to Status commandSho Sakuma
2026-02-23chore: Fix oxc errorSho Sakuma
2026-02-11feat: Improve Velocity Integration ErrorsSho Sakuma
2026-02-11feat: Improve Velocity status command UISho Sakuma
2026-02-07fix: Fix copilot reviewSho Sakuma
2026-02-06refactor: Change to status and channel list command uiSho Sakuma
2026-02-01feat: Support Velocity intergration in Paper moduleSho Sakuma
2026-01-27test: Add more test-caseSho Sakuma
2026-01-27docs: Add channel moderation guideSho Sakuma
2026-01-27feat: Add channe-chat featureSho Sakuma
2026-01-26feat: Add channel-chat configurationSho Sakuma
2026-01-26feat: Add ChangeChat message notificationSho Sakuma
2026-01-26refactor: Refactoring logicSho Sakuma
2026-01-26feat: Add chatmode dataSho Sakuma
2026-01-26feat: Add channel commandSho Sakuma
2026-01-25refactor: Organize keys by functionSho Sakuma
2026-01-24feat: Add status commandSho Sakuma
2026-01-24feat: Add new permissionSho Sakuma
2026-01-24feat: Consolidate configuration commands into `/lc settings`Sho Sakuma
2026-01-24refactor: Changed to simple key managementSho Sakuma
2026-01-23feat: Add i18n configurationSho Sakuma