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)를 입혀 쓰고, 아이템, 드롭, 태그도 가져옵니다. 울타리는 울타리와 이어지고, 원목은 원목으로 취급되며, 문은 아이템 하나를 떨어뜨립니다. 게임의 블록이 텍스처를 여러 개 쓰는 경우, 모드에 같은 끝부분의 텍스처가 있으면 그것을 씁니다. 문은 <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에도 선언하세요.

좌석과 높이 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 계단과 길용: 재료가 되는 블록, 모드의 것 또는 게임의 것 —
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, …)로 선언합니다.