API
World generation
Mga ore, puno, bulaklak, istruktura at biome na kusang lumilitaw sa mundo. Idineklara mo kung ano at saan, at makukuha ito ng mga bagong chunk.
Mga ore
block "ruby_ore" { hardness: 3, tool: "pickaxe", tier: "iron" }
ore "ruby_ore" {
replaces: "stone_and_deepslate"
size: 9
per_chunk: 8
height: [-60, 60]
}| Property | Mga value | Default |
|---|---|---|
block |
ang block na ilalagay: "mymod:other" |
ang block na kapangalan ng ore |
replaces |
stone, deepslate, stone_and_deepslate (overworld), netherrack (Nether) o end_stone (End) |
stone_and_deepslate |
size |
mga block bawat vein, 1–64 | 8 |
per_chunk |
mga vein na sinusubukan bawat chunk | 8 |
height |
[min, max], saklaw ng taas |
[-64, 64] |
biomes |
sa mga biome lang na ito, sa id o tag | bawat biome kung nasaan ang bato nito |
Kapag walang biomes, lumilitaw ang ore sa bawat biome ng dimension na kinabibilangan ng replaces; ang ore na end_stone, sa bawat biome ng End. Ang block mismo ay idinedeklara gaya ng iba, kasama ang hardness, tool at loot nito; tingnan ang Mga bloke, gamit at resipe.
ore "void_ore" {
replaces: "end_stone"
size: 5
per_chunk: 6
height: [10, 80]
biomes: ["mymod:crystal_glade"]
}Mga puno
Ang puno ay tuwid na katawan na may bilog ng mga dahon. Ideklara muna ang dalawang block, saka ang puno.
block "ruby_log" { hardness: 2, tool: "axe", sound: "wood" }
block "ruby_leaves" { hardness: 0.2, transparent: true, sound: "grass" }
tree "ruby_tree" {
trunk: "ruby_log"
leaves: "ruby_leaves"
height: 6
height_variation: 2
leaves_radius: 2
per_chunk: 2
biomes: ["#minecraft:is_forest", "minecraft:plains"]
}| Property | Mga value | Default |
|---|---|---|
trunk |
ang block ng katawan, mula sa mod o sa laro: "ruby_log", "minecraft:oak_log" |
— |
leaves |
ang block ng mga dahon | — |
height |
taas ng katawan, sa mga block | 5 |
height_variation |
gaano nag-iiba ang taas sa bawat puno | 2 |
leaves_radius |
radius ng bilog ng mga dahon, sa mga block | 2 |
per_chunk |
mga punong sinusubukan bawat chunk | 1 |
biomes |
mga biome kung saan ito lumilitaw, sa id o tag | — |
Nakalista ang mga biome sa pamamagitan ng id (minecraft:plains) o ng tag (#minecraft:is_forest), puwedeng paghaluin. Ang katawan at mga dahon ay puwedeng block ng mod o ng laro.
Mga halaman at patch
Ang halaman ay block na iginuguhit bilang dalawang magkakrus na larawan, tulad ng bulaklak: walang bumabangga rito at dumadaan ang liwanag. Ang texture nito ay textures/block/ruby_flower.png, na may transparent na background.
block "ruby_flower" { plant: true, hardness: 0 }
patch "ruby_flowers" {
block: "ruby_flower"
biomes: ["#minecraft:is_overworld"]
rarity: 4
size: 32
spread: 7
}Ang patch ay nagkakalat ng mga halaman sa mundo:
| Property | Mga value | Default |
|---|---|---|
block |
ang block ng halaman | — |
biomes |
mga biome kung saan ito lumilitaw, sa id o tag | — |
rarity |
isang patch kada ganitong dami ng chunk | 4 |
size |
mga halamang sinusubukang ilagay ng bawat patch | 32 |
spread |
pinakamalayong distansya mula sa gitna ng patch, sa mga block | 7 |
Sa hangin lang inilalagay ang mga halaman, sa lupa ng overworld (damo, lupa, lumot at putik). Para sa mga halaman sa ibang lupa, sa mga dingding o nakabitin sa kisame, magsulat ng feature: tingnan ang Paglikha gamit ang code.
Mga istruktura
Ang istruktura ay gusaling ikaw mismo ang gumagawa:
- Itayo ito sa laro.
- I-save ito gamit ang structure block.
- Kopyahin ang
.nbtfile sastructures/folder ng mod: katabi ng mga script sa CraftScript mod, o saassets/<mod id>/structures/sa Kotlin o Java jar.
Pagkatapos ay ideklara ito:
structure "ruby_shrine" {
file: "ruby_shrine"
biomes: ["#minecraft:is_overworld"]
spacing: 24
separation: 8
buried: false
}| Property | Mga value | Default |
|---|---|---|
file |
pangalan ng .nbt file, walang extension | ang unang variant, o ang pangalan ng istruktura |
biomes |
mga biome kung saan ito lumilitaw, sa id o tag | — |
spacing |
mga isang istruktura kada ganitong dami ng chunk | 24 |
separation |
hindi kailanman mas malapit sa ganitong dami ng chunk; mas maliit kaysa spacing | 8 |
buried |
ibinabaon ito ng true sa lupa, para sa mga guho | false |
offset_y |
mga block pataas mula sa ibabaw na kinatatayuan nito; ibinabaon ito ng negatibo | 0 |
adapt_ground |
pinupunan ng true ang lupa sa ilalim nito at nililinis ang paligid; inilalagay ito ng false nang ayon sa dati | true |
heights |
[min, max]: sa random na taas sa range na ito saanman ang ibabaw, sa halip na sa ibabaw (bahay sa langit) |
sa ibabaw |
Hanapin ito gamit ang /locate structure <mod id>:ruby_shrine at ilagay gamit ang /place structure <mod id>:ruby_shrine.
Mga variant, kapalit at pagkasira
Ang isang istruktura ay puwedeng mula sa ilang file, at puwedeng magbago ang mga block nito habang inilalagay. Gumagawa ito ng mga guhong hindi kailanman magkapareho:
structure "old_ruins" {
variants: [{ file: "ruins_small", weight: 3 }, "ruins_tower"]
biomes: ["#minecraft:is_forest"]
spacing: 20
separation: 6
offset_y: -2
skip: ["minecraft:air"]
replace: [{ block: "minecraft:stone_bricks", with: "minecraft:cracked_stone_bricks", chance: 0.3 }]
decay: { left: 0.8, blocks: ["minecraft:stone_bricks", "minecraft:cracked_stone_bricks"] }
}| Property | Mga value | Default |
|---|---|---|
variants |
mga file na isa ito sa kanila: mga pangalan, o { file, weight }; isa ang pinipili nang random, ayon sa weight |
file lang, weight 1 |
skip |
mga block ng mga file nito na hindi inilalagay. Pinananatili ng "minecraft:air" ang mga block ng mundo kung saan may hangin ang file |
— |
replace |
[{ block, with, chance }]: nagiging iba ang isang block ng mga file nito ayon sa chance na iyon (higit sa 0, hanggang 1) |
chance 1 |
decay |
{ left, blocks }: left (0–1) lang ng blocks (mga id o tag) ang pinananatili; kapag walang blocks, ng anumang block |
pinananatili ang lahat |
Mga istrukturang gawa sa magkakadugtong na piraso
Ang nayon o dungeon ay gawa sa mga pirasong nagdurugtong: ang kalye ay patungo sa bahay, ang pasilyo sa kuwarto. Ang bawat piraso ay isang file na may mga jigsaw block ng laro, at ang bawat jigsaw block ay nagpapangalan ng pool kung saan galing ang susunod na piraso, bilang <mod id>:<pool>. Ideklara ang mga pool; sa una nagsisimula ang istruktura.
structure "hamlet" {
biomes: ["minecraft:plains"]
spacing: 34
separation: 8
depth: 6
pools: [
{ name: "hamlet/square", pieces: [{ file: "hamlet/square" }] },
{ name: "hamlet/streets", fallback: "hamlet/street_ends",
pieces: [{ file: "hamlet/street_straight", weight: 3, follows_ground: true },
{ file: "hamlet/street_corner", follows_ground: true }],
replace: [{ block: "minecraft:stone_bricks", with: "minecraft:oak_planks", where: "minecraft:water" }] },
{ name: "hamlet/street_ends", pieces: [{ file: "hamlet/street_end", follows_ground: true }] },
{ name: "hamlet/houses", none: 2,
pieces: [{ file: "hamlet/house_small", weight: 4 }, { file: "hamlet/house_big" }] },
]
}| Property | Mga value | Default |
|---|---|---|
pools |
ang mga pool ng mga piraso; ang una ang pinagsisimulan | isang piraso, mula sa variants o file |
depth |
ilang piraso ang layo mula sa una ang inaabot nito | 1 |
Ang bawat pool ay may:
| Key | Mga value | Default |
|---|---|---|
name |
ang pangalang ginagamit ng mga jigsaw block nito, gaya ng hamlet/streets |
— |
pieces |
[{ file, weight, follows_ground }]. Ibinabaluktot ng follows_ground: true ang piraso ayon sa lupa sa ilalim nito, para sa mga kalye at landas; pinananatiling tuwid ito ng false, para sa mga bahay |
weight 1, false |
features |
[{ id, weight }]: isang feature bilang piraso, sa iyo o sa laro (minecraft:chorus_plant) |
— |
none |
weight ng walang piraso, para sa bakanteng lote | 0 |
fallback |
ang pool na ginagamit kung saan walang pirasong kasya, gaya ng dulo ng kalye | wala |
skip, replace |
gaya ng sa isang istruktura. Sa pool, puwedeng magdagdag ng where ang isang kapalit: kung saan lang may ganoong block na ang mundo (ang mga brick ng kalye sa ibabaw ng tubig ay nagiging plank) |
— |
Nananatili ang lahat ng piraso sa loob ng 80 block mula sa una.
Dalawang opsyon ang nasa Kotlin lang sa ngayon: ang salt, isang numerong pumipili kung saan sa saklaw nitong spacing na chunk mapupunta ang istruktura (mapupunta sa parehong lugar ang dalawang istrukturang may parehong spacing at salt; kapag wala, gagawa ng isa mula sa id ng istruktura), at ang aboveBottom, ilang block sa itaas ng ilalim ng mundo dapat manatili ang mga piraso nito (kung saan may aabot nang mas mababa, hindi gagawin ang istruktura).
Ang mga istrukturang binubuo ng code mo block por block ay nasa pahinang Paglikha gamit ang code.
Mga biome
Ang sariling biome ay kumukuha ng bahagi ng mga lugar ng isang biome ng laro. Nananatili rito ang tumutubo, naninirahan at hinukay doon, at may sarili itong klima at mga kulay.
biome "ruby_meadow" {
replaces: "minecraft:plains"
share: 0.5
temperature: 0.8
downfall: 0.4
precipitation: true
grass_color: "#d05070"
foliage_color: "#c04060"
sky_color: "#ff9fb0"
fog_color: "#ffd0d8"
water_color: "#ff6080"
water_fog_color: "#a03050"
}| Property | Mga value | Default |
|---|---|---|
replaces |
ang biome ng laro na kinukuha nito ang mga lugar: "minecraft:plains" |
"minecraft:plains" |
share |
bahagi ng mga lugar na iyon na kinukuha nito, higit sa 0 at hanggang 1 | 0.5 |
temperature |
temperatura ng klima | 0.8 |
downfall |
gaano karami ang ulan | 0.4 |
precipitation |
true para sa ulan, false para sa wala |
true |
grass_color |
kulay ng damo, #rrggbb |
ang sa pinalitang biome |
foliage_color |
kulay ng mga dahon | ang sa pinalitang biome |
sky_color |
kulay ng langit | ang sa pinalitang biome |
fog_color |
kulay ng hamog | ang sa pinalitang biome |
water_color |
kulay ng tubig | #3f76e4 |
water_fog_color |
kulay ng hamog sa ilalim ng tubig | ang sa pinalitang biome |
Pantay na ipinapamahagi ang share sa mga lugar kung saan sana naroon ang pinalitang biome: kinukuha ng 0.5 ang kalahati, isa sa bawat dalawa. Namamana ng bagong biome ang tumutubo, naninirahan at hinukay doon (halaman, ore, kuweba, nilalang, musika) at ang idinaragdag ng ibang mod sa biome na iyon. Ang mga kulay na hindi mo tinukoy ay mananatiling sa pinalitang biome.
Maaaring palitan ng ilang biome ang iisang biome: pinaghahatian nila ang mga lugar nito. Hanapin ang sa iyo gamit ang /locate biome <mod id>:ruby_meadow.
Tunog, lupa at mga nilalang
Ang biome ay puwede ring magkaroon ng sariling musika at hangin, takpan ang lupa nito ng block mo, at piliin kung sino ang nakatira roon:
biome "glow_marsh" {
replaces: "minecraft:swamp"
share: 0.4
music: "mymod:music.marsh"
ambient_sound: "mymod:ambient.marsh_hum"
particle: { id: "minecraft:glow", chance: 0.005 }
surface: "mymod:glow_moss"
spawns: [
{ creature: "minecraft:frog", weight: 10, group: [2, 5] },
{ creature: "mymod:marsh_wisp", weight: 4, group: [1, 2] },
]
}| Property | Mga value | Default |
|---|---|---|
music |
isang id ng tunog, na pinapatugtog bilang musika ng biome | ang sa pinalitang biome |
ambient_sound |
tunog na patuloy na tumutugtog doon (hangin, ugong) | ang sa pinalitang biome |
particle |
{ id, chance }: particle na lumulutang sa hangin nito; ang chance ay kada lugar malapit sa manlalaro bawat tick (ang 0.001 ay ilan) |
ang sa pinalitang biome; chance 0.01 |
surface |
ang block na tumatakip sa lupa nito (ang pinakaitaas na block ng bawat sahig) | ang karaniwang lupa ng dimension |
spawns |
[{ creature, weight, group }]: ang mga nilalang na nakatira roon; kapag may pinangalanan ito, ang mga iyon lang at wala nang iba |
ang sa pinalitang biome; weight 10, group [1, 4] |
inherits |
false: ang ibinigay lang sa biome na ito ang nalilikha roon (ang mga features nito, ang mga carvers nito, ang inilalagay ng mga mod dito), hindi ang nalilikha sa pinalitang biome |
true |
features |
[{ id, step }]: mga feature na umiiral na, sa laro o sa data, na inilalagay dito. Ang step ay lakes, surface, ores, underground o vegetation |
— |
carvers |
mga id ng carver na naghuhukay ng mga kuweba nito, sa iyo o sa laro; tumatakbo sila ayon sa pagkakasunod na ibinigay, bago ang sa pinalitang biome | — |
Kapag inherits: false, kinukuha pa rin ng biome ang mga lugar ng pinalitang biome, at ang mga nilalang at tunog nito maliban kung magbigay ka ng sarili; ang tumutubo at hinukay lang doon ang hindi na kasama. Ang lupang ginawa block por block at ang mga sarili mong carver ay nasa pahinang Paglikha gamit ang code.
Mga biome ng End
Sa End, kumukuha ang biome ng buong rehiyon, mga 200 block ang lapad, sa halip na mga lugar ng klima. Kapag pinalitan nito ang minecraft:end_highlands, kinukuha nito ang lahat ng lupa ng isla sa mga rehiyon nito (highlands, midlands at barrens); kapag pinalitan ang minecraft:small_end_islands, ang kawalan sa pagitan ng mga isla. Nananatiling sa laro ang gitnang isla, at magkakaiba ang mga rehiyon sa bawat mundo.
biome "crystal_glade" {
replaces: "minecraft:end_highlands"
share: 0.3
sky_color: "#2a1840"
fog_color: "#3c2a5a"
surface: "mymod:crystal_moss"
inherits: false
features: [{ id: "minecraft:end_gateway_return", step: "surface" }]
}Mabuting malaman
- Mga bagong chunk lang. Hindi nagbabago ang mga chunk na nabuo na; ang mga chunk lang na nabuo pagkatapos ma-install ang mod ang nakakakuha ng mga ore, puno, halaman, istruktura at biome. Mag-explore ng bagong lupain para makita ang mga ito.
- Nilalaktawan ang mga nawawalang pangalan. Ang biome o tag sa
biomesna hindi umiiral (halimbawa, sa ibang mod na hindi naka-install) ay nilalaktawan, hindi error. - Walang lupa, walang istruktura. Ang istrukturang nakatayo sa ibabaw ay hindi ginagawa kung saan walang lupa ang column nito, gaya ng kawalan sa pagitan ng mga isla ng End.
- Ang mga feature, istruktura, lupain, mapa ng biome, carver at lupang isinulat sa code ay nasa pahinang Paglikha gamit ang code.
- Ang buong sariling mga mundo ay nasa pahinang Mga dimension.
Sa Kotlin
ore("ruby_ore") {
replaces = OreHost.STONE_AND_DEEPSLATE
size = 9
perChunk = 8
minY = -60
maxY = 60
}
ore("void_ore") {
replaces = OreHost.END_STONE
biome("mymod:crystal_glade")
}
tree("ruby_tree") {
trunk = "ruby_log"
leaves = "ruby_leaves"
height = 6
perChunk = 2
biome("#minecraft:is_forest")
}
block("ruby_flower") { plant = true }
patch("ruby_flowers") {
block = "ruby_flower"
rarity = 4
biome("#minecraft:is_overworld")
}
structure("old_ruins") {
variant("ruins_small", weight = 3)
variant("ruins_tower")
biome("#minecraft:is_forest")
spacing = 20
offsetY = -2
skip("minecraft:air")
replace("minecraft:stone_bricks", "minecraft:cracked_stone_bricks", chance = 0.3)
decay(0.8, "minecraft:stone_bricks", "minecraft:cracked_stone_bricks")
salt = 120457
}
structure("hamlet") {
biome("minecraft:plains")
spacing = 34
depth = 6
pool("hamlet/square") { piece("hamlet/square") }
pool("hamlet/streets") {
piece("hamlet/street_straight", weight = 3, followsGround = true)
piece("hamlet/street_corner", followsGround = true)
fallback = "hamlet/street_ends"
replace("minecraft:stone_bricks", "minecraft:oak_planks", where = "minecraft:water")
}
pool("hamlet/street_ends") { piece("hamlet/street_end", followsGround = true) }
pool("hamlet/houses") {
piece("hamlet/house_small", weight = 4)
piece("hamlet/house_big")
none = 2
}
}
biome("glow_marsh") {
replaces = "minecraft:swamp"
share = 0.4
music = "mymod:music.marsh"
ambientSound = "mymod:ambient.marsh_hum"
particle("minecraft:glow", chance = 0.005)
surface = "mymod:glow_moss"
spawn("minecraft:frog", weight = 10, group = 2..5)
}
biome("crystal_glade") {
replaces = "minecraft:end_highlands"
share = 0.3
surface = "mymod:crystal_moss"
inherits = false
feature("minecraft:end_gateway_return", FeatureStep.SURFACE)
}