ワールド
配置場所
釣りワールドの設定ファイルは plugins/MoripaFishing/world/<ワールドID>.json に配置します。
このファイルが存在するワールドが「定義済み」の釣りワールドになります。 対応する Bukkit ワールドがロードされているかどうかには関係しません。
ファイル名はワールドIDと一致させてください。次のファイルは警告を出して読み飛ばします。
- JSON として不正なファイル、未知のキーを含むファイル、または値が範囲外のファイル (例:
world.border.sizeが 0 以下)。トップレベルの$schemaキーは無視されます - ファイル名と
idが一致しないファイル idが Bukkit ワールドのキー (moripafishing:<id>) として使えないファイル。使える文字は[a-z0-9_.-/]です- 外部ワールドの
world.keyにmoripafishing名前空間を指定したファイル (管理ワールド専用の名前空間のため) - 外部ワールドの
world.keyが、ファイル名順で先に読み込んだ別の定義と重複するファイル
このファイルはプラグイン側からも書き換えられます。/mf world config set ... などで設定を変えると、その時点の内容でファイル全体が上書きされます。
手動で編集した内容は /mf reload で読み直されます。
Format
{
"id": "default",
"name": {
"ja_JP": "つりとぴあ",
"en_US": "Tsuritopia"
},
"world": {
"type": "managed",
"generator": "void",
"spawn": {
"x": 0.0,
"y": 64.0,
"z": 0.0,
"yaw": 90.0,
"pitch": 0.0
},
"border": {
"centerX": 0.0,
"centerZ": 0.0,
"size": 100.0
}
},
"climate": null
}各設定の説明
id: ワールドのIDです。省略できませんname: ワールドの表示名をロケールごとに指定します。キーにはja_JPやen_USのような言語タグを指定でき、アンダースコア区切り・ハイフン区切りのどちらも受理されます (既定: 空)world: 対応する Bukkit ワールドです。typeで種類を指定します (既定:{type: "managed"})managed: MoripaFishing が管理するワールドです。Bukkit ワールドのキーはmoripafishing:<id>になります。設定項目は下記を参照external: 既存の Bukkit ワールドを釣り場として登録します。詳細は 既存のワールドで釣りをする を参照
climate: ワールド固有の気候設定です。nullの場合、管理ワールドではconfig.jsonのworld.defaultClimate、外部ワールドではバニラの天候と時刻を読み取る設定が使われます。詳細は 気候 を参照
管理ワールド (type: "managed") の設定
generator: ワールドを作成するときに使うジェネレーター ID です (既定:void)。作成時にのみ参照する ため、作成後に変えても既存のワールドには影響しません。ID は WorldLifecycle Integration が管理するジェネレーター定義に対応します。詳細は ワールドジェネレーター を参照spawn: スポーン地点です。yawとpitchは省略すると0になります (既定:{x: 0, y: 64, z: 0, yaw: 90, pitch: 0})border: ワールドボーダーの中心 (centerX/centerZ) とサイズ (size、0 より大きい値) です (既定:{centerX: 0, centerZ: 0, size: 100})。nullにすると MoripaFishing はボーダーを管理しません。他のプラグインやバニラでボーダーを管理したい場合に使います
外部ワールド (type: "external") の設定
key: 登録する Bukkit ワールドのキー (例:minecraft:overworld) です。省略できません。moripafishing名前空間は管理ワールド専用のため指定できません
表示名の解決について
name の表示名は、<lang:moripa_fishing.world.<ワールドID>.name> という翻訳キー経由で解決されます。
翻訳はプラグインの有効化時と /mf reload で読み込まれるため、/mf world create で作ったワールドの表示名は次の /mf reload から使われます。
Bukkit ワールドへの適用について
管理ワールドの spawn・border と、climate から決まる時刻・天候を Bukkit ワールドへ適用するのは Integration です
(WorldLifecycle / Weather)。
Integration が導入されていない環境では、設定はファイルに保存され魚の抽選に使われますが、ゲーム内のワールドには反映されません。
既存のワールドで釣りをする
サバイバルワールドなど、MoripaFishing が作成していない既存の Bukkit ワールドでもカスタムの魚を釣れるようにできます。
world を external にして対象ワールドのキーを指定した設定ファイルを置き、/mf reload を実行してください。
{
"id": "survival",
"world": {
"type": "external",
"key": "minecraft:overworld"
},
"name": {
"ja_JP": "サバイバル",
"en_US": "Survival"
}
}外部ワールドは 読み取り専用 です。Integration が導入されていても、MoripaFishing は次のことを一切行いません。
- ワールドの作成・アンロード。未ロードの場合はロードされるまで待ち、ロードされた時点で
FishingWorldLoadEventを発火します - 天候・ゲームルール・時刻・スポーン・ワールドボーダーの変更
/mf world transfer や WorldLifecycle Integration の参加時テレポートでは、Bukkit ワールドのスポーン地点へテレポートします。
climate を省略した外部ワールドでは、world.defaultClimate ではなくバニラの天候と時刻をそのまま読み取る設定 (weather: vanilla / time: vanilla) が使われます。
そのため魚の抽選条件に使う天候は、実際の空の天候と一致します。climate を明示した場合はその設定で天候を決めますが、その場合もワールドへは適用しません。
同じ Bukkit ワールドを複数の定義に登録することはできません。また world の種類やキーは設定コマンドでは変更できないため、設定ファイルを編集して /mf reload してください。
ワールドの作成と削除
作成
/mf world create <id> <generator> で、設定ファイルを書き出してから WorldLifecycle Integration で Bukkit ワールドを作成します。
次の場合は何も残さずに失敗し、理由をサーバーログに出します。
- サーバーの起動が完了していない (
ServerLoadEvent前) - 同じ ID が既に定義されている、または ID がキーとして不正
- 同じキーの Bukkit ワールドが既にロードされている
- WorldLifecycle Integration が導入されていない、またはジェネレーター ID が不明
- ワールドの作成に失敗した (書き出した設定ファイルは削除します)
成功すると FishingWorldLoadEvent、続いて FishingWorldCreateEvent が発火します。
サーバーの起動後 (全プラグインの有効化後) と /mf reload の後にも、定義済みで未ロードのワールド (外部ワールドを除く) を generator の設定で作成します。
ジェネレーター ID の誤りなどで作成に失敗したワールドは、設定を直して /mf reload すれば再起動なしで作成できます。
削除
/mf world delete <world> で、FishingWorldDeleteEvent (キャンセル可能) を発火し、Bukkit ワールドをアンロードしてから設定ファイルを削除します。
ワールドのフォルダは削除しません。完了すると FishingWorldDeletedEvent が発火します。
- Bukkit ワールドがロード済みの場合は、WorldLifecycle Integration によるアンロードが必要です。Integration が無い場合やアンロードに失敗した場合は、設定ファイルを残して失敗します
- Bukkit ワールドが未ロードの場合は Bukkit の状態を変えないため、Integration が無くても削除できます
- 外部ワールドは登録を外すだけで、ロード済みでも Bukkit ワールドをアンロードしません
関連する config.json の設定
このページの内容に関係する config.json の world セクションの値は次のとおりです。
defaultId: デフォルトのワールドID (デフォルト:default)timeZone: 天候と実時刻同期に使うタイムゾーン (デフォルト:Asia/Tokyo)refreshIntervalSeconds: 釣りワールドの状態を決め直して適用させる間隔 (秒、デフォルト:60)defaultClimate:climateがnullのワールドで使う気候設定