API

ブロックの種類

ブロックには、ゲームの種類のどれかを持たせられます。角でつながる階段、高さ 2 ブロックのドア、つながるフェンス、チェスト、看板、作物、鉱石などです。kind を指定すると、その種類のゲームのブロックと同じように、形、ステート、動作を備え、あなたのテクスチャで作られます。

種類と素材

content/jade.craftCraftScript
block "jade_bricks" { hardness: 2, tool: "pickaxe" }

block "jade_stairs" { kind: "stairs", base: "jade_bricks", texture: "mymod:block/jade_bricks" }
block "jade_slab" { kind: "slab", texture: "mymod:block/jade_bricks" }
block "jade_wall" { kind: "wall", texture: "mymod:block/jade_bricks" }

block "willow_log" { kind: "pillar", material: "wood", sound: "wood" }
block "willow_door" { kind: "door", material: "wood", sound: "wood" }
block "jade_door" { kind: "door", material: "metal" }
block "willow_fence" { kind: "fence", material: "wood", texture: "mymod:block/willow_planks" }
種類 内容
cube 通常のブロック(デフォルト)
pillar 原木や柱:設置した向きの軸に沿って横たわります
slab、stairs、wall、fence、fence_gate ゲームのものと同じように隣とつながる建築用ブロック。階段は、材料となるブロックを base で指定します
door、trapdoor、button、pressure_plate ドアは高さ 2 ブロックです。感圧板はオンかオフです
leaves、lantern、vine、ladder、carpet、bars、chain 格子や板ガラスは薄く、隣とつながります。チェーンは設置した向きの軸に沿って横たわります
plant、water_plant、crop 植物(下記)
barrel、bookshelf、chiseled_bookshelf、shelf、composter、crafting_table、chest、furnace 機能を持つブロック(下記)
sign、hanging_sign 看板(下記)
path、ore 道と鉱石(下記)

material は stone(デフォルト)、wood、metal のいずれかで、素材が関係する種類で使います。木のドアやトラップドアは手で開き、金属のものはレッドストーンでしか開きません。ハーフブロック、階段、フェンス、ボタン、感圧板、柱も、その素材のゲームのものと同じように作られます。

ゲームのブロックから引き継ぐもの。 独自のファイルがなければ、ある種類のブロックは、ゲームのブロックステートとモデルに、あなたの texture(デフォルトは textures/block/<id>.png)を当てたものを使い、アイテム、ドロップ、タグも引き継ぎます。フェンスはフェンスとつながり、原木は原木として扱われ、ドアは 1 つのアイテムをドロップします。ゲームのブロックが複数のテクスチャを使う場合、Mod に同じ末尾のテクスチャがあればそれが使われます。ドアなら <id>_top.png と <id>_bottom.png、柱なら <id>_top.png、かまどなら <id>_front.png と <id>_front_on.png です。独自のモデル、ルート、タグがあれば、そちらが使われます。hardness、sound、light などのプロパティは、ブロック、アイテム、レシピにあるとおり、どのブロックとも同じように使えます。

植物と作物

content/plants.craftCraftScript
block "glow_grass" { kind: "plant", hardness: 0, grows_on: ["#minecraft:dirt", "mymod:glow_moss"] }

block "reed" { kind: "water_plant", hardness: 0 }

block "rice" { kind: "crop", hardness: 0 }
  • plant:草、花、キノコ、苗木のように、2 枚の交差した画像で描かれます。何も衝突せず、地面が必要です。
  • water_plant:海草のように、水中に生える植物です。
  • crop:自然に、また骨粉で、年齢 0 から 3 まで育ちます。age ステートは block.state("age") で読め、<id>_stage0.png から <id>_stage3.png が各年齢のテクスチャです。

grows_on には、立つことのできるブロックを、ID または #minecraft:dirt のようなタグで並べます。指定しなければ、その種類のゲームの植物と同じ場所に育ちます(作物なら耕地)。地面がなくなった植物は壊れます。

機能を持つブロック

content/workshop.craftCraftScript
block "willow_barrel" { kind: "barrel", sound: "wood" }
block "willow_chest" { kind: "chest", sound: "wood" }
block "willow_bookshelf" { kind: "bookshelf", sound: "wood" }
block "jade_furnace" { kind: "furnace", hardness: 3.5, tool: "pickaxe" }

アイテムを保持し、画面を開き、ゲームのものと同じように動きます。樽は 27 スタック、彫り込み本棚は本 6 冊、棚はアイテム 3 つを収め、コンポスターはいっぱいになり、作業台はクラフトでき、かまどは精錬し、燃えている間は点灯します。

chest は textures/entity/chest/<id>.png で描かれ、2 つ並べるとラージチェストになり、同じフォルダーの <id>_left.png と <id>_right.png で描かれます。これらはゲームのチェストのテクスチャと同じ配置です。

看板

content/signs.craftCraftScript
block "willow_sign" { kind: "sign", sound: "wood" }

block "willow_hanging_sign" { kind: "hanging_sign", sound: "wood" }

プレイヤーはゲームのものと同じように文字を書けます。看板を宣言すると、その壁掛け版、つまりアイテムが壁に対して置くブロックも宣言されます。jade_sign には jade_wall_sign が、jade_hanging_sign には jade_wall_hanging_sign が付きます。wall でその ID を自分で指定できます。壁掛け版は看板をドロップします。吊り下げ看板はブロックの下に吊られ、その壁掛け版はブロックの側面に付きます。

道と鉱石

content/ground.craftCraftScript
block "moss_path" { kind: "path", base: "minecraft:moss_block" }

block "jade_ore" { kind: "ore", hardness: 3, tool: "pickaxe", tier: "iron", xp: [1, 4] }

path は、ゲームの土の道のように、ブロックより少し低くなります。上が空気のとき、シャベルで base から作れます。ブロックが上を覆うと元の base に戻り、base をドロップします。

ore は、シルクタッチなしで壊すと経験値を出します。xp は数値または [min, max] です。シルクタッチで自身をドロップし、幸運でより多くドロップさせるには、ブロック、アイテム、レシピのドロップの項を参照してください。

取り付けブロック

attached: true を指定すると、ブロックは設置先のブロックに固定され、そのブロックがなくなると壊れます。これらのプロパティは、種類の有無にかかわらず、どのブロックでも使えます。

content/attached.craftCraftScript
block "crystal_shard" {
    attached: true
    states: ["facing_all"]
    model: "block/crystal_shard"
}

block "glow_bulb" {
    attached: true
    floor_state: "standing"
    states: ["standing"]
    light: 12
}
  • "facing" または "facing_all" ステートがあると、支えているものとは反対を向きます。facing_all は上下も向くので、結晶のかけらを床、壁、天井に置けます(ブロック、アイテム、レシピのブロックステートを参照)。
  • floor_state には、ブロックが床に立つときにオン、ランタンのように天井から吊られるときにオフになるトグルのステートを指定します。そのトグルは states でも宣言します。

座席と高さ 2 ブロックのブロック

content/chairs.craftCraftScript
block "stool" { seat: 9, shape: [[3, 0, 3, 13, 9, 13]] }

block "throne" {
    model: "block/throne"
    seat: 10
    upper: "top"
    states: ["facing", "top"]
}

seat を指定すると、空の手でクリックしたときにプレイヤーがブロックに座れます。値は下端からのピクセル数です(0〜16。椅子ならおよそ 10)。ブロックの on_use がクリックを処理した場合、プレイヤーは座りません。

upper は、ドアや背の高い椅子のように、ブロックを高さ 2 ブロックにします。上半分でオンになるトグルのステートを指定します。上に空きがあれば置くと両方の半分が置かれ、片方を壊すと両方が壊れ、ドロップするのは下半分だけです。高さ 2 ブロックの座席には、下半分に座ります。そのトグルは states でも宣言します。上半分の見た目は、他のステートと同じように独自に用意でき、ここでは models/block/throne_top.json です。

列になって育つ植物

content/vines.craftCraftScript
block "glow_vine" {
    plant: true
    column: "hanging"
    states: [{ shape: ["top", "middle", "bottom"] }]
}

column を指定すると、垂れ下がるツタのように、植物が列になって育ちます。shape ステートは、上下にある同じ植物に応じて変わります:下にないとき bottom、上にないとき top、その間は middle です。states に { shape: ["top", "middle", "bottom"] } として宣言します。<id>_middle.png と <id>_bottom.png が、その位置での見た目のテクスチャです。

  • hanging:上のブロックから垂れ下がります。上のブロックは、同じ植物、葉、または下面が固いブロックです。
  • standing:地面(grows_on)または同じ植物の上に立ちます。

支えるものがなくなると壊れ、その上に垂れ下がる、または立つ植物も一緒に壊れます。

プロパティ

プロパティ 値 デフォルト
kind 上記の種類のどれか cube
material stone、wood、metal stone
base 階段と道用:材料となるブロック(Mod またはゲームのもの) —
grows_on 植物用:ブロック ID とタグ その種類の地面
wall 看板用:壁掛け版の ID jade_sign → jade_wall_sign
xp 鉱石用:数値または [min, max] —
attached 設置先のブロックに固定される false
floor_state attached と併用:床に立つときにオンになるトグル —
seat プレイヤーが座る、下端からのピクセル数(0〜16) 座席ではない
upper 高さ 2 ブロック:上半分でオンになるトグル —
column hanging または standing —

Kotlin では

content/Jade.ktKotlin
block("jade_stairs") { kind = BlockKind.STAIRS; base = "jade_bricks"; texture = "mymod:block/jade_bricks" }
block("willow_door") { kind = BlockKind.DOOR; material = BlockMaterial.WOOD; sound = SoundGroup.WOOD }
block("glow_grass") { kind = BlockKind.PLANT; growsOn = listOf("#minecraft:dirt") }
block("jade_ore") { kind = BlockKind.ORE; xp = 1..4 }

block("crystal_shard") { attached = true; facingAll() }

block("throne") {
    seat = 10
    upper = "top"
    facing()
    toggle("top")
}

block("glow_vine") {
    plant = true
    column = Column.HANGING
    choice("shape", "top", "middle", "bottom")
}

種類は BlockKind に、素材は BlockMaterial にあります。他のプロパティは camelCase で同じ名前です:growsOn、floorState、xp = 1..4、column = Column.HANGING。ステートは facingAll() と choice(name, …) で宣言します。