WorldManager

interface WorldManager

釣りワールドを管理する。

釣りワールドは設定ファイル (world/<id>.json) が存在すれば「定義済み」であり、 対応する Bukkit ワールドがロードされているかどうかに関わらず取得できる。

コアは Bukkit ワールドを直接変更しない。ワールドの作成・アンロードは WorldLifecycle、 天候・時刻・ボーダー・スポーンの適用は WorldStateApplier を実装した Integration が行う。 外部ワールド (WorldBinding.External で既存の Bukkit ワールドを登録したもの) は読み取り専用で、 Integration が導入されていても作成・アンロード・状態の適用を一切行わない。

取得系のメソッドは任意のスレッドから呼べる。変更系のメソッドはメインスレッドから呼ぶこと (それ以外から呼ぶと IllegalStateException を投げる)。

釣りワールドの運用 (Integration への適用・ワールドの作成) はサーバーの起動完了 (ServerLoadEvent) 後に始まる。 それまでは定義の読み書きのみ行う。

Functions

Link copied to clipboard
abstract fun createWorld(id: FishingWorldId, generatorId: String): Boolean

管理ワールドを定義し、Bukkit ワールドを作成する。メインスレッドから呼ぶこと。

Link copied to clipboard

釣りワールドの定義を削除する。メインスレッドから呼ぶこと。

Link copied to clipboard

デフォルトのワールド ID を返す。

Link copied to clipboard
abstract fun getGeneratorIds(): Set<String>

利用可能なジェネレーター ID を返す。WorldLifecycle が未登録の場合は空。

Link copied to clipboard

定義済みのワールドを返す。未定義の場合は null。

Link copied to clipboard
abstract fun getWorldByKey(worldKey: Key): FishingWorld?

Bukkit ワールドのキーから定義済みの釣りワールドを返す。該当しない場合は null。 Bukkit ワールドから釣りワールドを引く唯一の窓口。

Link copied to clipboard
abstract fun getWorlds(): List<FishingWorld>

定義済みの全ワールドを ID 順で返す。

Link copied to clipboard
abstract fun reload()

world/ 配下の設定ファイルを読み直す。メインスレッドから呼ぶこと。

Link copied to clipboard

config.id のワールドの設定を保存し、即座に適用させる。メインスレッドから呼ぶこと。