CatchAnnounce
魚を釣り上げたことをサーバー内にアナウンスする公式 Addon。かつて Core に組み込まれていた
釣果アナウンス機能(PlayerFishingAnnounceListener)を、カスタマイズの幅を広げつつ Core を
肥大化させないために外部 Addon として切り出したもの。
AnglerFishCaughtResultEvent(moripafishing-api)を購読し、釣り上げが確定するたびに config.yml で指定したフォーマットの
メッセージをブロードキャストする。メッセージ中の魚名・レアリティ名・ワールド名のプレースホルダーは
翻訳可能コンポーネントとして展開されるため、サーバーに翻訳が登録されていれば閲覧者ごとに
クライアントのロケールに応じた表示になる。
導入
- サーバーの
plugins/にリリースのMoripaFishing-catch-announce-<version>.jarを配置する(MoripaFishing-Addon-CatchAnnounceは プラグイン名であってファイル名ではない)。 - サーバーを起動する。
paper-plugin.ymlでMoripaFishingを必須依存(Load.BEFORE,required = true)として宣言しているため、 Core より後にロードされる。Core が導入されていない場合、この Addon は読み込まれない。 - 初回起動時に
plugins/MoripaFishing-Addon-CatchAnnounce/config.ymlが生成される。
config.yml
初回起動時には、既定値をそのまま書き出した次の内容が生成される。
messageFormat: "<gray>[<gold>釣果</gold>]</gray> <angler> が <fish_name> <gray>(<rarity_name>, <size>cm)</gray> を釣り上げました"
maxRarityWeight: null
broadcastTarget: ALL
broadcastPermission: "moripafishing.addon.catchannounce.receive"config.yml は起動時に一度だけ読み込まれる。この Addon はコマンドを一切登録しないため、
設定を変更した場合はサーバーの再起動(またはプラグインのリロード)が必要になる。
YAML として不正な内容や、未知のキーがある場合は読み込みに失敗し、Addon の有効化そのものが失敗する。
以前のバージョンで生成された config.yml に enabled や minRarityWeight が残っている場合は、削除するか maxRarityWeight に書き換える。
| フィールド | 型 | 説明 |
|---|---|---|
messageFormat | string | MiniMessage形式のメッセージテンプレート。<angler>、<fish_name>、<rarity_name>、<size>、<world_name>、<timestamp>のプレースホルダーが使用可能 |
maxRarityWeight | number (小数可) | null | この値以下のweightを持つレアリティの魚のみアナウンスする。weightがこの値と等しい場合もアナウンスされる。レアリティのweightは値が小さいほどレアな魚を表す。nullの場合は全ての釣果をアナウンスする(デフォルト: null) |
broadcastTarget | string | アナウンスの送信先。ALL(サーバー全体)、SAME_WORLD(同じ釣り場ワールドに滞在しているつりびとのみ)、PERMISSION(broadcastPermissionの権限を持つプレイヤーのみ)のいずれかを指定する(デフォルト: ALL) |
broadcastPermission | string | broadcastTargetがPERMISSIONのときに参照される権限ノード(デフォルト: moripafishing.addon.catchannounce.receive) |
アナウンスを止めたい場合は Addon 自体を取り除く。
SAME_WORLD の送信先は、Core の AnglerManager が管理しているオンラインのつりびとのうち、
釣果が発生したワールドに滞在している者に限られる。
broadcastPermission の権限ノードはプラグインの定義ファイルに宣言されていないため、既定では OP にも継承されない。
LuckPerms などの権限プラグインで明示的に付与する必要がある。
プレースホルダー
<angler>: 釣ったプレイヤーの名前<fish_name>: 魚の表示名。翻訳キーmoripa_fishing.fish.<魚ID>.nameとして展開される<rarity_name>: レアリティの表示名。翻訳キーmoripa_fishing.rarity.<レアリティID>.nameとして展開される<size>: 魚のサイズ。小数第2位までの数値文字列(小数点はサーバーのロケールによらず.)で、単位は含まれないためテンプレート側でcmなどを記述する<world_name>: 釣り場ワールド名。翻訳キーmoripa_fishing.world.<ワールドID>.nameとして展開される<timestamp>: 釣った日時。ISO 8601 形式の文字列がそのまま入り、整形やロケール対応は行われない
翻訳が登録されていないキーは、翻訳されずにキー文字列がそのまま表示される。 メッセージ全体は MiniMessage として解釈されるため、色や装飾に加えて hover / click などのタグも利用できる。
注意
maxRarityWeightはレアリティのweightと比較される。weightは値が小さいほどレアな魚を意味するため、
「レア度の高い釣果だけをアナウンスしたい」場合は小さい値を設定する。