API

Mga hugis ng block

Hindi kailangang cube ang isang block. Inilalarawan mo ang hugis nito bilang isa o higit pang kahon, at iginuguhit ito ng Crafting, ginagawang solid at pinapadaan ang liwanag at ang mga mukha ng kalapit na block kung saan hindi ito puno. Para sa sarili mong itsura, bigyan ito ng model.

Hugis: listahan ng mga kahon

content/shapes.craftCraftScript
block "half" { shape: [[0, 0, 0, 16, 8, 16]] }

block "pedestal" {
    shape: [[2, 0, 2, 14, 2, 14], [5, 2, 5, 11, 12, 11], [3, 12, 3, 13, 14, 13]]
}

Ang bawat kahon ay [x1, y1, z1, x2, y2, z2] sa pixel, mula 0 hanggang 16 (16 ang isang buong block). Iginuguhit ang block gamit ang mga kahong iyon, kasama ang texture nito sa bawat mukha, at bumabangga ito sa mga iyon: nakatayo ang mga player sa mga kahon at sinusundan ng selection outline ang mga ito.

Model: sarili mong itsura

content/lamp.craftCraftScript
block "lamp" {
    model: "block/lamp"
    shape: [[7, 0, 7, 9, 12, 9], [5, 12, 5, 11, 16, 11]]
    light: 15
}
Property Mga value Default
shape listahan ng mga kahon [x1, y1, z1, x2, y2, z2], sa pixel (0–16) isang buong cube
model path ng block model ng mod: ang block/lamp ay ang models/block/lamp.json ng mod iginuguhit mula sa shape, o isang cube

Ang model ay isang karaniwang block model sa JSON, gaya ng mga ini-export ng model editor. Ang mga texture na tinutukoy nito ay isinusulat bilang <mod id>:block/<name>. Kung may shape din, ang shape ang binabangga ng block; kung wala, bumabangga ang block bilang buong cube.

Saan ilalagay ang mga file

Mod Saan
CraftScript (folder) mods/lamps/models/block/lamp.json, mods/lamps/textures/block/lamp.png
Kotlin o Java src/main/resources/assets/lamps/models/block/lamp.json

Mga hugis ayon sa state

Binibigyan ng shape_when ang block ng mga kahon na mayroon lang ito sa ilang state (tingnan ang Mga state ng block sa Mga bloke, gamit at resipe). Ang bawat key ay nakasulat bilang "state=value"; sa bawat state, ang block ay may mga kahon ng shape kasama ang sa bawat key na tumutugma.

content/column.craftCraftScript
block "stone_column" {
    states: [{ part: ["single", "bottom", "top"] }]
    shape: [[4, 0, 4, 12, 16, 12]]
    shape_when: {
        "part=single": [[2, 0, 2, 14, 2, 14], [2, 14, 2, 14, 16, 14]],
        "part=bottom": [[2, 0, 2, 14, 2, 14]],
        "part=top": [[2, 14, 2, 14, 16, 14]]
    }
}

Isinusulat ang mga value gaya ng ipinapakita ng state: true o false para sa toggle, numero, pangalan, o direksyon gaya ng north. Ang mga kahon ang binabangga ng block at sinusundan ng outline nito; ang itsura nito sa bawat state ay galing sa mga texture o model nito para sa state na iyon.

Mabuting malaman

  • Ang block na hindi cube ay nagpapadaan na mismo ng liwanag at ng mga mukha ng kalapit na block; hindi mo na kailangang markahan ito bilang transparent.
  • Gumagana nang pareho ang lahat ng iba pang property ng block (hardness, light, tool, loot…); tingnan ang Mga bloke, gamit at resipe.

Sa Kotlin

content/Shapes.ktKotlin
block("half") { box(0, 0, 0, 16, 8, 16) }

block("lamp") {
    model = "block/lamp"
    box(7, 0, 7, 9, 12, 9)
    box(5, 12, 5, 11, 16, 11)
    light = 15
}

Ang bawat box(x1, y1, z1, x2, y2, z2) ay nagdaragdag ng kahon; ang model ay ang parehong path gaya sa CraftScript. Nagdaragdag ang boxWhen(state, value, x1, y1, z1, x2, y2, z2) ng kahon para sa isang state:

content/Column.ktKotlin
block("stone_column") {
    choice("part", "single", "bottom", "top")
    box(4, 0, 4, 12, 16, 12)
    boxWhen("part", "bottom", 2, 0, 2, 14, 2, 14)
    boxWhen("part", "top", 2, 14, 2, 14, 16, 14)
}