気候
注意
この設定は config.json 及び world/<fishing_world_name>.json の一部であり、独立したファイルではありません。
config.json では world.defaultClimate、ワールドごとの JSON では climate がこの設定に対応します。
ワールド側の climate が null の場合は、config.json の world.defaultClimate が使われます。
気候の設定は、天候の決め方 (weather) と時刻の決め方 (time) からなります。
Core は設定に従って値を 決める だけで、Bukkit ワールドへの 適用 は Integration が行います
(天候は Weather、時刻は WorldLifecycle)。
Integration が未導入でも、決めた天候は魚の抽選条件に使われます。
Format
{
"weather": {
"type": "random",
"weights": {
"SUNNY": 4,
"CLOUDY": 1,
"RAINY": 2,
"THUNDERSTORM": 1
},
"intervalHours": 8,
"offsetHours": 0,
"maxInclination": 30,
"seed": "pepper"
},
"time": {
"type": "real_time",
"offsetHours": 0
}
}weather と time は、type で種類を選びます。各項目を省略した場合は上の既定値になります。
weather
天候の決め方です。
random
内蔵の天候カレンダーで天候を決め、ワールドへ適用させます (既定)。 同じ設定・ワールド ID・時刻からは常に同じ天候が決まります。計算の詳細は 天候ノイズ を参照してください。
{ "type": "random", "weights": { "SUNNY": 4, "CLOUDY": 1, "RAINY": 2, "THUNDERSTORM": 1 },
"intervalHours": 8, "offsetHours": 0, "maxInclination": 30, "seed": "pepper" }weights: 各天候の出現しやすさを 0 以上の整数の重みで指定します。合計で正規化され、JSON に書いた順に累積して判定します。空にすることや、合計を 0 にすることはできませんintervalHours: 天候が切り替わる間隔 (時間)。1 以上 (既定:8)offsetHours: 切り替わりのタイミングをずらす時間。負の値も指定できます (既定:0)maxInclination: 天候の変化の急さ。1..100(既定:30)。大きいほど天候が急に変わりますseed: ノイズのハッシュに混ぜる文字列 (既定:pepper)。変えると天候の並び全体が変わります
WeatherType には SUNNY / CLOUDY / RAINY / THUNDERSTORM / SNOWY / FOGGY の 6 種類があります。既定の weights には SNOWY と FOGGY が含まれていませんが、weights に追加すれば抽選の対象になります。
fixed
常に同じ天候にし、ワールドへ適用させます。
{ "type": "fixed", "weather": "RAINY" }vanilla
バニラの天候 (hasStorm / isThundering) を読み取り、魚の抽選条件にのみ使います。ワールドの天候は変更させず、ADVANCE_WEATHER は true になります。
{ "type": "vanilla" }バニラの天候は SUNNY / RAINY / THUNDERSTORM の 3 種類しか表せないため、CLOUDY / FOGGY / SNOWY を条件に持つ魚は出現しません。
ワールドが未ロードの間は SUNNY として扱います。
external
外部プラグインが ServicesManager に登録した WeatherSource のうち、key が source と一致するものに天候を任せます。
{ "type": "external", "source": "myplugin:realistic" }ソースの appliesToWorld が true なら、その天候をワールドへ適用させます。false なら魚の抽選条件にのみ使い、ワールドの天候は変更させません。
一致するソースが登録されていない間は、random の既定値で天候を決め、警告を一度だけ出します。ソースの登録方法は API ガイド を参照してください。
魚の天候とワールドへの適用
weather.type | 魚の抽選条件に使う天候 | WorldState.weather (ワールドへ適用) | ADVANCE_WEATHER |
|---|---|---|---|
random | 天候カレンダー | 天候カレンダーと同じ | false |
fixed | weather の値 | weather の値 | false |
vanilla | バニラの天候 | null (変更しない) | true |
external (appliesToWorld = true) | ソースの天候 | ソースの天候 | false |
external (appliesToWorld = false) | ソースの天候 | null (変更しない) | true |
external (ソース未登録) | 天候カレンダー (random の既定値) | 天候カレンダーと同じ | false |
天候は見た目の天候と同じ値を魚の条件にも使うのが基本です。魚の条件だけを内蔵カレンダーで決め、見た目はバニラや別のプラグインに任せたい場合は、 Weather Integration を導入しないでください。
魚の抽選条件に使う天候が変わると FishingWorldWeatherChangeEvent が発火します。変化はリフレッシュ間隔 (refreshIntervalSeconds) ごとに検知されます。
time
時刻の決め方です。時刻と ADVANCE_TIME を Bukkit ワールドへ適用するのは WorldLifecycle Integration です。
time.type | 例 | ワールド時刻 | ADVANCE_TIME |
|---|---|---|---|
real_time | {"type":"real_time","offsetHours":0} | config.json の world.timeZone の現在時刻に offsetHours を足した時刻 (既定) | false |
fixed | {"type":"fixed","hour":6} | hour 時 (0..23) に固定 | false |
vanilla | {"type":"vanilla"} | 変更しない | true |
ワールド時刻は「0 時 = 18000 tick、6 時 = 0 tick」として換算し、分は 1 分あたり 1000 / 60 tick で反映します。
offsetHours は負の値も指定でき、日をまたぐ場合は 0〜23999 tick に折り返します。
設定はリフレッシュのたびに評価されます。/mf reload を実行すると、その場で全ワールドがリフレッシュされて反映されます。