API

Tipos de bloco

Um bloco pode ser de um dos tipos do jogo: escadas que se unem nos cantos, portas de dois blocos de altura, cercas que se conectam, baús, placas, plantações, minérios. Dê a ele um kind e ele é feito como o bloco desse tipo do jogo, com sua forma, seus estados e seu comportamento, e a sua textura.

Tipos e materiais

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" }
Tipo O que é
cube um bloco comum (o padrão)
pillar um tronco ou pilar: fica deitado no eixo em que é colocado
slab, stairs, wall, fence, fence_gate blocos de construção que se unem aos vizinhos como os do jogo. As escadas recebem em base o bloco de que são feitas
door, trapdoor, button, pressure_plate as portas têm dois blocos de altura; uma placa de pressão está ligada ou desligada
leaves, lantern, vine, ladder, carpet, bars, chain grades e vidraças são finas e se unem aos vizinhos; uma corrente fica deitada no eixo em que é colocada
plant, water_plant, crop plantas (abaixo)
barrel, bookshelf, chiseled_bookshelf, shelf, composter, crafting_table, chest, furnace blocos que funcionam (abaixo)
sign, hanging_sign placas (abaixo)
path, ore caminhos e minérios (abaixo)

material é stone (o padrão), wood ou metal, para os tipos em que isso importa: uma porta ou alçapão de madeira abre com a mão, um de metal só com redstone. Lajes, escadas, cercas, botões, placas e pilares também são feitos como os do jogo desse material.

O que ele toma do bloco do jogo. Sem arquivos próprios, um bloco de um tipo toma o blockstate e os modelos do jogo com a sua texture (por padrão textures/block/<id>.png), o seu item, os seus drops e as suas tags: cercas se unem a cercas, troncos contam como troncos, uma porta dropa um item só. Onde o bloco do jogo usa mais de uma textura, é usada uma sua com a mesma terminação, se o mod a tiver: <id>_top.png e <id>_bottom.png para uma porta, <id>_top.png para um pilar, <id>_front.png e <id>_front_on.png para uma fornalha. Se ele tiver modelos, loot ou tags próprios, esses são usados. hardness, sound, light e as outras propriedades de Blocos, itens e receitas funcionam como em qualquer bloco.

Plantas e plantações

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: é desenhada como duas imagens cruzadas, como a grama, uma flor, um cogumelo ou uma muda. Nada colide com ela e ela precisa de chão.
  • water_plant: uma planta que vive debaixo d'água, como a grama-marinha.
  • crop: cresce pelas idades 0 a 3 sozinha e com farinha de osso. O estado age pode ser lido com block.state("age"), e <id>_stage0.png a <id>_stage3.png são suas texturas em cada idade.

grows_on lista os blocos em que ela se apoia, ids ou tags como #minecraft:dirt. Sem ele, uma planta cresce onde cresce a planta do jogo do seu tipo (uma plantação em terra arada). Uma planta cujo chão some se quebra.

Blocos que funcionam

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" }

Eles guardam seus itens, abrem a sua tela e funcionam como os do jogo: um barril guarda 27 pilhas, uma estante de livros entalhada 6 livros, uma prateleira 3 itens, uma composteira se enche, uma bancada de trabalho fabrica e uma fornalha funde e fica acesa enquanto queima.

Um chest é desenhado com textures/entity/chest/<id>.png, e dois lado a lado formam um baú duplo, desenhado com <id>_left.png e <id>_right.png nessa mesma pasta. Eles têm o layout das texturas dos baús do jogo.

Placas

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

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

Os jogadores escrevem nelas como nas do jogo. Declarar uma placa também declara a sua forma de parede, o bloco que o seu item coloca contra uma parede: jade_sign vem com jade_wall_sign, e jade_hanging_sign com jade_wall_hanging_sign. wall dá esse id você mesmo. A forma de parede dropa a placa. Uma placa suspensa pende sob um bloco, e a sua forma de parede, da lateral de um.

Caminhos e minérios

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] }

Um path é um pouco mais baixo que um bloco, como o caminho de terra do jogo. Uma pá o faz a partir da sua base quando há ar em cima. Ele volta à sua base quando um bloco o cobre, e dropa a sua base.

Um ore solta experiência quando é quebrado sem toque suave: xp é um número ou [min, max]. Para fazer com que ele dropa a si mesmo com toque suave e mais com fortuna, veja Drops em Blocos, itens e receitas.

Blocos fixados

Com attached: true, um bloco fica preso ao bloco contra o qual é colocado, e se quebra quando esse bloco some. Estas propriedades funcionam em qualquer bloco, com ou sem tipo.

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
}
  • Com um estado "facing" ou "facing_all", ele fica voltado para longe do que o segura: facing_all também aponta para cima e para baixo, então um cristal pode ficar num chão, numa parede ou num teto (veja Estados de bloco em Blocos, itens e receitas).
  • floor_state nomeia um estado interruptor que fica ligado quando o bloco está sobre um chão e desligado quando pende de um teto, como uma lanterna. Declare o interruptor também em states.

Assentos e blocos de duas alturas

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 permite que os jogadores se sentem no bloco com um clique de mão vazia, a tantos pixels acima da sua base (0 a 16; uma cadeira fica em cerca de 10). Se o bloco tiver um on_use que fica com o clique, o jogador não se senta.

upper faz o bloco ter duas alturas, como uma porta ou uma cadeira alta: ele nomeia um estado interruptor que fica ligado na sua metade de cima. Ao colocá-lo, as duas metades são colocadas se houver espaço em cima, ao quebrar uma as duas quebram, e só a metade de baixo o dropa. Num assento de duas alturas, a pessoa se senta na metade de baixo. Declare o interruptor também em states. A metade de cima tem um visual próprio como qualquer estado: aqui, models/block/throne_top.json.

Plantas em coluna

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

column faz uma planta crescer em coluna, como uma trepadeira pendente. O seu estado shape acompanha a mesma planta acima e abaixo dela: bottom sem nenhuma abaixo, top sem nenhuma acima, middle no meio. Declare-o em states como { shape: ["top", "middle", "bottom"] }; as texturas <id>_middle.png e <id>_bottom.png são o seu visual nesses lugares.

  • hanging: pende do bloco de cima, que é a mesma planta, folhas ou um bloco sólido por baixo.
  • standing: apoia-se no seu chão (grows_on) ou na mesma planta.

Sem o que a sustenta, ela se quebra, e as plantas que pendem ou se apoiam nela vão junto.

Propriedades

Propriedade Valores Padrão
kind um dos tipos acima cube
material stone, wood, metal stone
base para escadas e caminhos: o bloco de que são feitos, seu ou do jogo —
grows_on para plantas: ids de blocos e tags o chão do seu tipo
wall para placas: o id da forma de parede jade_sign → jade_wall_sign
xp para minérios: um número ou [min, max] —
attached preso ao bloco contra o qual é colocado false
floor_state com attached: o interruptor que fica ligado quando está sobre um chão —
seat pixels acima da sua base onde os jogadores se sentam (0–16) não é um assento
upper duas alturas: o interruptor que fica ligado na sua metade de cima —
column hanging ou standing —

Em 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")
}

Os tipos estão em BlockKind e os materiais em BlockMaterial. As outras propriedades têm os mesmos nomes em camelCase: growsOn, floorState, xp = 1..4, column = Column.HANGING. facingAll() e choice(name, …) declaram os estados.