API

方块种类

方块可以是游戏里的某一种:在转角处相连的楼梯、两格高的门、会连接的栅栏、箱子、告示牌、作物、矿石。给它一个 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 门有两格高;压力板只有开和关两种状态
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),以及它的物品、掉落物和标签:栅栏与栅栏相连,原木算作原木,门掉落一个物品。游戏的方块使用多张纹理时,如果模组里有结尾相同的纹理,就会使用它:门用 <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:画成两张交叉的图像,像草、花、蘑菇或树苗。没有东西会与它碰撞,它需要地面。
  • 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 绘制,两个并排放置会变成大箱子,用同一文件夹中的 <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 中声明。

座位与两格高的方块

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 让方块变成两格高,像门或高背椅:它指定一个在上半部分开启的开关状态。上方有空间时,放置它会同时放下两半;破坏其中一半,两半都会消失,只有下半部分会掉落它。两格高的座位坐在它的下半部分。这个开关也要在 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 用于楼梯和小径:它由哪种方块制成,你的或游戏的 —
grows_on 用于植物:方块 id 和标签 该种类的地面
wall 用于告示牌:墙上形态的 id jade_sign → jade_wall_sign
xp 用于矿石:一个数字或 [min, max] —
attached 固定在它所放置的那个方块上 false
floor_state 与 attached 搭配:立在地面时开启的开关 —
seat 玩家坐下的位置,高出底部的像素数(0–16) 不是座位
upper 两格高:在上半部分开启的开关 —
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, …) 声明。