ドキュメント › Storia Proxy
プレースホルダー API
Velocity プラグインから独自のプレースホルダーを登録し、テキストを表示する。
Storia Proxy は、プレースホルダーの登録先を dev.storia.proxy.api.StoriaPlaceholders としてプラグインに公開しています。
登録したプレースホルダーは、内蔵のものと同じく storia-proxy.toml・/storiaproxy parse・ほかのプラグインのどこでも使えます。
依存関係#
Storia Proxy の API は、Velocity の API に dev.storia.proxy.api パッケージを加えたものです。Storia Proxy をビルドし(ソースからビルド を参照)、
api/build/libs/velocity-api-<version>.jar をプラグインのプロジェクトにコピーします。
dependencies {
compileOnly(files("libs/velocity-api-4.2.1-SNAPSHOT.jar"))
annotationProcessor(files("libs/velocity-api-4.2.1-SNAPSHOT.jar"))
}
普通の Velocity でも動くプラグインにしたい場合は、使う前にクラスがあるか確認してください(下記)。
登録する#
import dev.storia.proxy.api.StoriaPlaceholders;
@Subscribe
public void onProxyInitialize(ProxyInitializeEvent event) {
StoriaPlaceholders placeholders = StoriaPlaceholders.get();
// {coins}
placeholders.register("coins", player -> player == null ? "0" : String.valueOf(coins(player)));
// {team_red}、{team_blue} など:接頭辞より後ろが引数になります
placeholders.registerPrefix("team_", (player, team) -> String.valueOf(teamSize(team)));
}
- 値を返す関数には 表示するプレイヤー が渡されます。いない場合(サーバーリストの MOTD やコンソール)は
nullです。 - プレーンテキスト を返してください。値の中の MiniMessage タグはエスケープされるので、プレイヤーの入力で装飾を注入されることはありません。
- この関数は何度も呼ばれます(タブリストは毎秒更新されます)。速く終わるようにし、処理を止めないでください。
表示する#
Component line = StoriaPlaceholders.get().render("<gold>{coins} コイン</gold>({player_server})", player);
player.sendMessage(line);
| メソッド | 返すもの |
|---|---|
get() |
登録先。プロキシの起動前は IllegalStateException を投げます。 |
register(key, resolver) |
{key} を追加します。 |
registerPrefix(prefix, resolver) |
{prefix<引数>} をまとめて追加します。 |
unregister(keyOrPrefix) |
自分が登録したプレースホルダーや接頭辞を削除します。 |
apply(text, player) |
プレースホルダーを置き換えたテキスト(String。MiniMessage は解釈しません)。 |
render(text, player) |
プレースホルダーを置き換え、MiniMessage として解釈したもの(Component)。 |
describe() |
すべてのプレースホルダー名と説明。 |
任意の依存にする#
boolean storia;
try {
Class.forName("dev.storia.proxy.api.StoriaPlaceholders");
storia = true;
} catch (ClassNotFoundException e) {
storia = false;
}
StoriaPlaceholders に触れるのは、storia が true のときに動くコードの中だけにしてください。
登録を外す#
プラグインが無効になっても、プレースホルダーは自動では消えません。プラグインを再読み込みすることがあるなら、終了処理で unregister を呼んでください。