API
方块种类
方块可以是游戏里的某一种:在转角处相连的楼梯、两格高的门、会连接的栅栏、箱子、告示牌、作物、矿石。给它一个 kind,它就会像游戏中该种类的方块那样制作,拥有相应的形状、状态和行为,并使用你的纹理。
种类与材质
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 以及方块、物品与配方中的其他属性,与任何方块一样可用。
植物与作物
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 这样的标签。不写时,植物会长在游戏中同种植物生长的地方(作物长在耕地上)。地面消失的植物会破碎。
能工作的方块
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 绘制。它们的布局与游戏箱子的纹理相同。
告示牌
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。墙上形态会掉落告示牌。悬挂式告示牌挂在方块下面,它的墙上形态则挂在方块的侧面。
小径与矿石
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 后,方块会固定在它所放置的那个方块上,那个方块消失时它也会破碎。这些属性适用于任何方块,无论有没有种类。
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中声明。
座位与两格高的方块
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。
成列生长的植物
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 中
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, …) 声明。