カスタムディメンジョン ~ バイオームをつくる
はじめに
この記事ではカスタムディメンジョンの要素の一つである、バイオームについて書いていきます。
あくまで、経験によるものであり、ソースコードを覗いたりはしていないので、理解できていないことがまだあります。間違っている箇所もあるかもしれません。そのときは、遠慮なくコメントかTwitter(@noir_kokumin)にご指摘ください。
何をするところなの?
ざっくり言うとバイオームを構築するファイルです。気温やバイオームカラーの他、featureと呼ばれる装飾を施したり、スポーンするエンティティを指定することが出来ます。更に効果音やBGMを設定することも出来ます。これは、ネザーや今回の新バイオームで使われていますね。
設定できる項目
precipitation(1.19.3まで)
雨の降り方を指定します。
rain
雨が降ります
snow
雪が降ります
none
何も降りません
has_precipitation(1.19.4から)
上記のprecipitationがリニューアルされたものです。
降水の有無をtrueかfalseで指定します。
category(1.18.2まで)
バイオームのカテゴリです。
次のどれかから選びます。
beach
desert
extreme_hills
forest
icy
jungle
mesa
mountain
mushroom
nether
none
ocean
plains
river
savanna
swamp
taiga
the_end
underground
temperature
気温。バイオームカラーやスノーゴーレムがダメージを受けるかとかに影響します。
downfall
バイオームの降水量を指定します。これもバイオームカラーなどに影響します。
effects
霧や空、草や葉、水、水中の霧の色を10進数で(カラーコードではありません)設定したり、パーティクルやそのバイオームで鳴らしたいサウンド等を設定します。草や葉の色を指定しなかった場合は気温とcolormapに基づいた色が適用され、指定した場合はその値を使用します。荒野の草葉が枯葉色なのはここで草や葉の色が設定されている為です。
sky_color
空の色を10進数で指定します。
fog_color
遠くにかかる霧の色を10進数で指定します。
water_color
水の色を10進数で指定します。
water_fog_color
水中の霧の色を10進数で指定します。
grass_color,foliage_color
草や草ブロック、葉ブロックの色を10進数で指定します。
省略可能で、その場合はカラーマップから気温に応じて算出されます。
指定した場合、カラーマップを無視します。
music
BGMをサウンドイベント(サウンドのIDみたいなもの)で指定します。既存のものは勿論、追加することも可能です。追加した場合は、sounds.jsonで設定してあげましょう。
・sounds
BGMを指定します。
・min_delay,max_delay
一度BGMがかかってから、再度流れ始めるまでのtick時間
・replace_current_music
trueまたはfalseで指定します。既にBGMが流れていたら、上書きするとか?(要検証)
mood_sound
洞窟音など、暗所で鳴らす音を指定します。
・sound
サウンドイベントを指定します。
・block_search_extent
効果音を鳴らす判定に用いられる範囲の大きさを指定します。プレイヤーを中心とし、一辺が(このタグで指定した値)×2+1ブロックの立方体の範囲になります。
・tick_delay
一度効果音を鳴らしてから次に効果音を鳴らすまでの最低時間をtick(1/20秒)単位で指定します。
・offset
よくわかりません。
ambient_sount
ネザーのバイオームなどでずっと鳴っている方の環境音を指定します。
こちらはサウンドイベントのみの指定となっています。
additions_sound
ランダムに鳴らされる音を指定します。
・sound
サウンドイベントを指定します。
・tick_chance
鳴らされる確率を指定します。
particle
バイオームにいるときに演出としてパーティクルを発生させることができます。真紅の森や歪んだ森の胞子、玄武岩の三角州、ソウルサンドの谷の灰がこれにあたります。
・option
使うパーティクルの種類など。blockやfalling_blockを使った場合、どのブロックを使うか、dustの場合は色、ダストのサイズ、itemの場合、どのアイテムを使うかが追加で設定できます。
・probability
パーティクルの頻度。確率という形なので小数で指定します。
carvers
1.17.1までにあった洞窟や峡谷の設定です。airとliquidがあり、洞窟の場合はそれぞれ空気や液体で満たされ、峡谷の場合は空気や液体に面した場所に生成されます。
特に、峡谷はliquidの場合、海中峡谷になり、底に黒曜石とマグマブロックが生成されます。
1.18からliquidが機能していません。一応、海中でも峡谷は生成されますが、airで指定したものが水中にも生成されている、という状況です。
features
featureの設定です。ここでいうfeatureとは、バイオームの装飾のようなもので、森に生えている木や草花、鉱石などが該当します。全部で11個の配列から成っており、そこにplaced_featureを指定します。1.17.1まではconfigured_featureだったので間違わないように注意してください。また、11個と書きましたが、ネザーの荒地等、デフォで11個じゃないこともあるので、デフォルトのものを見ながら設定しておくといいと思います。
指定するfeatureの種類は上から処理されます。RAW_GENERATIONとかLAKESとか書いてありますが、特に深い意味はありません。
RAW_GENERATION
エンドの小さい浮島などが指定されています。
LAKES
池。地上または地下の溶岩池などが指定されています。帯水層の実装により、水の池は生成されなくなりましたが、featureで追加することが出来ます。
LOCAL_MODIFICATIONS
タイガの苔石の塊や氷山等などが指定されています。
UNDERGROUND_STRUCTURES
ダンジョン(スポナー部屋)や化石などが指定されています。
SURFACE_STRUCTURE
砂漠の井戸や氷樹バイオームの氷の池などが指定されています。
STRONGHOLD
デフォルトでは使われていません。
UNDERGROUND_ORES
オーバーワールドの鉱石などが指定されています。
UNDERGROUND_DECORATION
虫食い石やネザーの鉱石などが指定されています。
FLUID_SPRINGS
滝などが指定されています。
VEGETATION
木や草などが指定されています。
TOP_LAYER_MODIFICATION
氷雪系バイオームで地表に雪が積もらせるのに使われています。
注意:同じfeatureを複数のバイオームで使いまわす場合は、順番を揃えてください。じゃないと、エラーになります。困ったことに、データパック選択時にエラーになるわけではなく、ワールド生成開始までは行きますが、そこで処理が停止します。そう、いつまで経っても生成が終わらなくなるのです。
spawners
ダンジョンに生成されるスポナーの中身
……ではなく、そのバイオームにスポーンするmobです。monster,creature, ambient, water_creature, underground_water_creature, water_ambient, misc, axolotlsのカテゴリに分けられており、それぞれ配列で指定します。
指定するキーは以下の通り
type
エンティティの種類を指定します。知っている限り、以下に示すような、基本的に「自然スポーンしそうなやつ」に限ります。
敵対的mob全般(エルダーガーディアン等、一部例外有)
イカ
イルカ
ウーパールーパー
ウサギ
ウシ
ウマ・ロバ・ラバ
オタマジャクシ・カエル
オウム
カメ
キツネ
行商人・行商人のラマ
コウモリ
サケ・タラ・フグ・熱帯魚
シロクマ
スニッファー
ストライダー
ニワトリ
ネコ
パンダ
ヒカリイカ
ヒツジ
ブタ
ムーシュルーム
ヤギ
ヤマネコ
ラマ
weight
スポーンしやすさ
minCount
最少のスポーン数
maxCount
最大のスポーン数
spawn_costs
エンティティのスポーン数を抑制するための設定です。
ある場所に新たにエンティティがスポーンするとき、
(その場所からすでにスポーンしている同種のエンティティまでの距離の逆数の和) × (charge に設定した値)よりもenergy_budget に設定した値の方が小さければ、エンティティはスポーンしなくなります。
デフォルトではソウルサンドの谷と歪んだ森に使用されています。
作成後にすること
こうして、バイオームを作ることはできました。しかし、これだけでは、ワールドに生成されませんし、生成しても構成ブロック等に変化がありません。なので、実際にワールドに配置したり、構成ブロックをカスタマイズしましょう。
ワールドに配置→dimension.jsonに書きます。そのうち書きます。
構成ブロックをカスタマイズ→Surface ruleを弄ります。
Surface Rule
1.18からの変更点
前述の通り、featuresに登録するfeatureがconfigured_featureからplaced_featureに変わりました。placed_featureとは、configured_featureのうちのdecoratorを分離したものです。
あまり変わってませんが、以下のキーが削除されました。
depth
バイオームの標高で、正の値で陸地、負の値で海になります。1.18から地形とバイオームの配置が別処理になったからか、削除されました。
scale
バイオームの起伏で、大きな値を指定するほど起伏の激しいバイオームとなります。1.18から地形とバイオームの配置が別処理になったからか、削除されました。
player_spawn_friendly
プレイヤーがそのバイオームにスポーンするかどうか。
starts
バイオームに配置する構造物です。
自作ストラクチャーとかやってた人には痛い。
1.18.2から再び自作ストラクチャーが出来るようになりました!
ただし、バイオームではなく、ストラクチャー側から設定することになります。そのうち、書きます。
参考資料
公式だったWiki:
Japan Wiki: