API
ワールド生成
鉱石、木、花、構造物、バイオームがワールドに自動で現れます。何をどこに出すかを宣言すれば、新しいチャンクに反映されます。
鉱石
block "ruby_ore" { hardness: 3, tool: "pickaxe", tier: "iron" }
ore "ruby_ore" {
replaces: "stone_and_deepslate"
size: 9
per_chunk: 8
height: [-60, 60]
}| プロパティ | 値 | デフォルト |
|---|---|---|
block |
配置するブロック:"mymod:other" |
鉱石と同じ名前のブロック |
replaces |
stone、deepslate、stone_and_deepslate(オーバーワールド)、netherrack(ネザー)または end_stone(エンド) |
stone_and_deepslate |
size |
鉱脈 1 つあたりのブロック数、1〜64 | 8 |
per_chunk |
チャンクごとに試す鉱脈の数 | 8 |
height |
[min, max]、高さの範囲 |
[-64, 64] |
biomes |
これらのバイオームだけ(ID またはタグ) | その岩があるすべてのバイオーム |
biomes がなければ、鉱石は replaces が属するディメンションのすべてのバイオームに現れます。end_stone の鉱石なら、エンドのすべてのバイオームです。ブロック自体は、硬さ、ツール、ドロップとともに他のブロックと同じように宣言します。ブロック、アイテム、レシピを参照してください。
ore "void_ore" {
replaces: "end_stone"
size: 5
per_chunk: 6
height: [10, 80]
biomes: ["mymod:crystal_glade"]
}木
木は、まっすぐな幹と葉の球でできています。2 つのブロックを宣言してから、木を宣言します。
block "ruby_log" { hardness: 2, tool: "axe", sound: "wood" }
block "ruby_leaves" { hardness: 0.2, transparent: true, sound: "grass" }
tree "ruby_tree" {
trunk: "ruby_log"
leaves: "ruby_leaves"
height: 6
height_variation: 2
leaves_radius: 2
per_chunk: 2
biomes: ["#minecraft:is_forest", "minecraft:plains"]
}| プロパティ | 値 | デフォルト |
|---|---|---|
trunk |
幹のブロック(Mod またはゲームのもの):"ruby_log", "minecraft:oak_log" |
— |
leaves |
葉のブロック | — |
height |
幹の高さ(ブロック数) | 5 |
height_variation |
木ごとの高さのばらつき | 2 |
leaves_radius |
葉の球の半径(ブロック数) | 2 |
per_chunk |
チャンクごとに試す木の数 | 1 |
biomes |
出現するバイオーム(ID またはタグ) | — |
バイオームは ID(minecraft:plains)またはタグ(#minecraft:is_forest)で指定し、自由に混ぜられます。幹と葉には、Mod のブロックもゲームのブロックも使えます。
植物とパッチ
植物は、花のように 2 枚の交差した画像で描かれるブロックです。何も衝突せず、光も通ります。テクスチャは textures/block/ruby_flower.png で、背景は透明にします。
block "ruby_flower" { plant: true, hardness: 0 }
patch "ruby_flowers" {
block: "ruby_flower"
biomes: ["#minecraft:is_overworld"]
rarity: 4
size: 32
spread: 7
}パッチは、植物をワールドに散らします。
| プロパティ | 値 | デフォルト |
|---|---|---|
block |
植物のブロック | — |
biomes |
出現するバイオーム(ID またはタグ) | — |
rarity |
このチャンク数ごとに 1 つのパッチ | 4 |
size |
各パッチが置こうとする植物の数 | 32 |
spread |
パッチの中心からの最大距離(ブロック数) | 7 |
植物は、オーバーワールドの地面(草、土、苔、泥)の上の空気中にだけ置かれます。他の地面の上、壁、天井から垂れ下がる植物には、フィーチャーを書きます。コードによる生成を参照してください。
構造物
構造物は、自分で作る建物です。
- ゲーム内で建てます。
- ストラクチャーブロックで保存します。
.nbtファイルを Mod のstructures/フォルダーにコピーします。CraftScript の Mod ではスクリプトの隣、Kotlin や Java の jar ではassets/<Mod ID>/structures/です。
そのうえで宣言します。
structure "ruby_shrine" {
file: "ruby_shrine"
biomes: ["#minecraft:is_overworld"]
spacing: 24
separation: 8
buried: false
}| プロパティ | 値 | デフォルト |
|---|---|---|
file |
拡張子を除いた .nbt ファイルの名前 | 最初のバリアント、または構造物の名前 |
biomes |
出現するバイオーム(ID またはタグ) | — |
spacing |
このチャンク数ごとに約 1 つの構造物 | 24 |
separation |
これより近くには出ないチャンク数(spacing より小さい値) | 8 |
buried |
true で地面に沈めます(廃墟向け) | false |
offset_y |
立っている地表から上へのブロック数。負の値で沈めます | 0 |
adapt_ground |
true なら、下の地面を埋め、周囲を片付けます。false ならそのまま置きます | true |
heights |
[min, max]:地表のある場所で、地表の上ではなくこの範囲のランダムな高さに置きます(空に浮かぶ家) |
地表の上 |
/locate structure <Mod ID>:ruby_shrine で探し、/place structure <Mod ID>:ruby_shrine で配置できます。
バリアント、置き換え、風化
1 つの構造物を複数のファイルから作り、置かれるときにブロックを変えられます。これにより、毎回少しずつ違う廃墟ができます:
structure "old_ruins" {
variants: [{ file: "ruins_small", weight: 3 }, "ruins_tower"]
biomes: ["#minecraft:is_forest"]
spacing: 20
separation: 6
offset_y: -2
skip: ["minecraft:air"]
replace: [{ block: "minecraft:stone_bricks", with: "minecraft:cracked_stone_bricks", chance: 0.3 }]
decay: { left: 0.8, blocks: ["minecraft:stone_bricks", "minecraft:cracked_stone_bricks"] }
}| プロパティ | 値 | デフォルト |
|---|---|---|
variants |
そのうちの 1 つになるファイル:名前、または { file, weight }。重みに従って 1 つがランダムに選ばれます |
file だけ、重み 1 |
skip |
ファイルのブロックのうち置かないもの。"minecraft:air" は、ファイルが空気のところでワールドのブロックをそのまま残します |
— |
replace |
[{ block, with, chance }]:ファイルのブロックが、その確率(0 より大きく 1 まで)で別のブロックになります |
chance 1 |
decay |
{ left, blocks }:blocks(ID またはタグ)のうち left(0〜1)の割合だけが残ります。blocks がなければ、どのブロックでも |
すべて残る |
つながるパーツでできた構造物
村やダンジョンは、つながるパーツでできています。通りは家へ、廊下は部屋へとつながります。各パーツは、ゲームのジグソーブロックを含むファイルで、各ジグソーブロックは、次のパーツを選ぶプールを <Mod ID>:<プール> の形で指定します。プールを宣言すると、構造物は最初のプールから始まります。
structure "hamlet" {
biomes: ["minecraft:plains"]
spacing: 34
separation: 8
depth: 6
pools: [
{ name: "hamlet/square", pieces: [{ file: "hamlet/square" }] },
{ name: "hamlet/streets", fallback: "hamlet/street_ends",
pieces: [{ file: "hamlet/street_straight", weight: 3, follows_ground: true },
{ file: "hamlet/street_corner", follows_ground: true }],
replace: [{ block: "minecraft:stone_bricks", with: "minecraft:oak_planks", where: "minecraft:water" }] },
{ name: "hamlet/street_ends", pieces: [{ file: "hamlet/street_end", follows_ground: true }] },
{ name: "hamlet/houses", none: 2,
pieces: [{ file: "hamlet/house_small", weight: 4 }, { file: "hamlet/house_big" }] },
]
}| プロパティ | 値 | デフォルト |
|---|---|---|
pools |
パーツのプール。最初のものが開始地点です | variants または file からの 1 つのパーツ |
depth |
最初のパーツから何パーツ先まで届くか | 1 |
各プールには次があります:
| キー | 値 | デフォルト |
|---|---|---|
name |
ジグソーブロックが使う名前(hamlet/streets など) |
— |
pieces |
[{ file, weight, follows_ground }]。follows_ground: true にすると、パーツがその下の地面に沿って曲がります。通りや道に向いています。false ならまっすぐのままで、家に向いています |
重み 1、false |
features |
[{ id, weight }]:パーツとしてのフィーチャー(自分のもの、またはゲームのもの:minecraft:chorus_plant) |
— |
none |
パーツを何も置かない重み。空き地のためのもの | 0 |
fallback |
合うパーツがない場所(通りの端など)で使われるプール | なし |
skip、replace |
単独の構造物と同じです。プールでは、置き換えに where を加えられます:ワールドにすでにそのブロックがある場所だけ(水の上の通りのレンガが板材になる) |
— |
すべてのパーツは、最初のパーツから 80 ブロック以内に収まります。
今のところ Kotlin だけにあるオプションが 2 つあります:salt、構造物が spacing チャンクの区画のどこに来るかを決める数値(spacing と salt が同じ 2 つの構造物は同じ場所に来ます。指定しなければ、構造物の ID から作られます)と、aboveBottom、パーツがワールドの底から何ブロック上にとどまらなければならないか(それより低く届くところでは、構造物は作られません)です。
コードでブロックごとに組み立てる構造物は、コードによる生成のページにあります。
バイオーム
独自のバイオームは、ゲームのバイオームの場所の一部を引き継ぎます。そこに生える植物、住むモブ、掘られた地形はそのまま残り、気候と色は独自のものになります。
biome "ruby_meadow" {
replaces: "minecraft:plains"
share: 0.5
temperature: 0.8
downfall: 0.4
precipitation: true
grass_color: "#d05070"
foliage_color: "#c04060"
sky_color: "#ff9fb0"
fog_color: "#ffd0d8"
water_color: "#ff6080"
water_fog_color: "#a03050"
}| プロパティ | 値 | デフォルト |
|---|---|---|
replaces |
場所を引き継ぐゲームのバイオーム:"minecraft:plains" |
"minecraft:plains" |
share |
引き継ぐ場所の割合。0 より大きく 1 まで | 0.5 |
temperature |
気候の気温 | 0.8 |
downfall |
降水量 | 0.4 |
precipitation |
雨が降るなら true、降らないなら false |
true |
grass_color |
草の色、#rrggbb |
置き換えるバイオームのもの |
foliage_color |
葉の色 | 置き換えるバイオームのもの |
sky_color |
空の色 | 置き換えるバイオームのもの |
fog_color |
霧の色 | 置き換えるバイオームのもの |
water_color |
水の色 | #3f76e4 |
water_fog_color |
水中の霧の色 | 置き換えるバイオームのもの |
share は、置き換えるバイオームがあるはずの場所に均等に配分されます。0.5 なら半分、つまり 2 か所に 1 か所です。新しいバイオームは、そこに生えるもの、住むもの、掘られるもの(植生、鉱石、洞窟、モブ、音楽)と、他の Mod がそのバイオームに追加するものを引き継ぎます。指定しなかった色は、置き換えるバイオームのままです。
複数のバイオームが同じバイオームを置き換えることもでき、その場合は場所を分け合います。自分のバイオームは /locate biome <Mod ID>:ruby_meadow で探せます。
サウンド、地面、モブ
バイオームには、独自の音楽と空気感を持たせ、地面を自分のブロックで覆い、そこに住むものを選ばせることもできます:
biome "glow_marsh" {
replaces: "minecraft:swamp"
share: 0.4
music: "mymod:music.marsh"
ambient_sound: "mymod:ambient.marsh_hum"
particle: { id: "minecraft:glow", chance: 0.005 }
surface: "mymod:glow_moss"
spawns: [
{ creature: "minecraft:frog", weight: 10, group: [2, 5] },
{ creature: "mymod:marsh_wisp", weight: 4, group: [1, 2] },
]
}| プロパティ | 値 | デフォルト |
|---|---|---|
music |
バイオームの音楽として流れるサウンド ID | 置き換えるバイオームのもの |
ambient_sound |
そこで鳴り続けるサウンド(風、うなり) | 置き換えるバイオームのもの |
particle |
{ id, chance }:空気中に漂うパーティクル。chance は、毎ティック、プレイヤーの近くの各地点あたりの確率です(0.001 で少し) |
置き換えるバイオームのもの。chance 0.01 |
surface |
地面を覆うブロック(各床の最上部のブロック) | ディメンション通常の地面 |
spawns |
[{ creature, weight, group }]:そこに住むモブ。何か指定すると、それらだけになります |
置き換えるバイオームのもの。weight 10、group [1, 4] |
inherits |
false:このバイオームに与えられたものだけがそこで生成されます(その features、carvers、Mod がそこに置くもの)。置き換えるバイオームで生成されるものは生成されません |
true |
features |
[{ id, step }]:すでにあるフィーチャー(ゲームのもの、またはデータのもの)を、そこに置きます。step は lakes、surface、ores、underground、vegetation のいずれか |
— |
carvers |
その洞窟をくり抜くカーバーの ID(自分のもの、またはゲームのもの)。指定した順に、置き換えるバイオームのものより先に実行されます | — |
inherits: false でも、バイオームは置き換えるバイオームの場所を引き継ぎ、独自に指定しない限りモブとサウンドも引き継ぎます。そこに生えるものと掘られるものだけが、付いてこなくなります。ブロックごとに作る地面と独自のカーバーは、コードによる生成のページにあります。
エンドのバイオーム
エンドでは、バイオームは気候の場所ではなく、幅約 200 ブロックの領域まるごとを引き継ぎます。minecraft:end_highlands を置き換えると、その領域のすべての島の陸(ハイランド、ミッドランド、バレン)を引き継ぎます。minecraft:small_end_islands を置き換えると、島々の間の虚空を引き継ぎます。中央の島はゲームのままで、領域はワールドごとに異なります。
biome "crystal_glade" {
replaces: "minecraft:end_highlands"
share: 0.3
sky_color: "#2a1840"
fog_color: "#3c2a5a"
surface: "mymod:crystal_moss"
inherits: false
features: [{ id: "minecraft:end_gateway_return", step: "surface" }]
}知っておくと良いこと
- 新しいチャンクだけ。 すでに生成されたチャンクは変わりません。Mod を導入した後に生成されたチャンクだけに、鉱石、木、植物、構造物、バイオームが現れます。新しい地形を探索して見つけてください。
- 見つからない名前は省かれます。
biomesに指定したバイオームやタグが存在しない場合(たとえば、インストールされていない他の Mod のもの)は、エラーにならずスキップされます。 - 地面がなければ構造物もなし。 地表に立つ構造物は、その列にまったく地面がない場所、たとえばエンドの島の間の虚空では作られません。
- コードで書くフィーチャー、構造物、地形、バイオームマップ、カーバー、地面は、コードによる生成のページにあります。
- 独自のワールドまるごとについては、ディメンションのページを参照してください。
Kotlin では
ore("ruby_ore") {
replaces = OreHost.STONE_AND_DEEPSLATE
size = 9
perChunk = 8
minY = -60
maxY = 60
}
ore("void_ore") {
replaces = OreHost.END_STONE
biome("mymod:crystal_glade")
}
tree("ruby_tree") {
trunk = "ruby_log"
leaves = "ruby_leaves"
height = 6
perChunk = 2
biome("#minecraft:is_forest")
}
block("ruby_flower") { plant = true }
patch("ruby_flowers") {
block = "ruby_flower"
rarity = 4
biome("#minecraft:is_overworld")
}
structure("old_ruins") {
variant("ruins_small", weight = 3)
variant("ruins_tower")
biome("#minecraft:is_forest")
spacing = 20
offsetY = -2
skip("minecraft:air")
replace("minecraft:stone_bricks", "minecraft:cracked_stone_bricks", chance = 0.3)
decay(0.8, "minecraft:stone_bricks", "minecraft:cracked_stone_bricks")
salt = 120457
}
structure("hamlet") {
biome("minecraft:plains")
spacing = 34
depth = 6
pool("hamlet/square") { piece("hamlet/square") }
pool("hamlet/streets") {
piece("hamlet/street_straight", weight = 3, followsGround = true)
piece("hamlet/street_corner", followsGround = true)
fallback = "hamlet/street_ends"
replace("minecraft:stone_bricks", "minecraft:oak_planks", where = "minecraft:water")
}
pool("hamlet/street_ends") { piece("hamlet/street_end", followsGround = true) }
pool("hamlet/houses") {
piece("hamlet/house_small", weight = 4)
piece("hamlet/house_big")
none = 2
}
}
biome("glow_marsh") {
replaces = "minecraft:swamp"
share = 0.4
music = "mymod:music.marsh"
ambientSound = "mymod:ambient.marsh_hum"
particle("minecraft:glow", chance = 0.005)
surface = "mymod:glow_moss"
spawn("minecraft:frog", weight = 10, group = 2..5)
}
biome("crystal_glade") {
replaces = "minecraft:end_highlands"
share = 0.3
surface = "mymod:crystal_moss"
inherits = false
feature("minecraft:end_gateway_return", FeatureStep.SURFACE)
}