Керівництво:Додавання нового виміру

У цьому керівництві пояснюється, як додати новий власний вимір до світу за допомогою пакета даних. Передбачається, що ви вже знаєте, як створити пакет даних.
{
"pack": {
"pack_format": 41,
"description": "Додавання власного виміру"
}
}
Вимір[ред. | ред. код]


Додати новий вимір так само просто, як створити один файл у пакеті даних. Цей перший вимір додає новий надплаский світ за допомогою генератора блоків flat
.
{
"type": "minecraft:overworld",
"generator": {
"type": "minecraft:flat",
"settings": {
"biome": "minecraft:plains",
"layers": [
{
"block": "minecraft:stone",
"height": 64
}
],
"structure_overrides": []
}
}
}
Додаючи до існуючого світу, обов’язково вийдіть і знову відкрийте світ! На екрані попередження вас попросять підтвердити використання налаштувань експериментального світу. Це означає, що нові версії можуть зламати існуючі пакети даних генерації світу без попередження. Можна натиснути «Я знаю, що роблю!».
Тепер ви можете використовувати /execute in tutorial:example_world run tp @s ~ ~ ~
, щоб телепортуватися в цей новий вимір.
Налаштування можна додатково налаштувати:
- settings:
- Налаштування пласкої генерації
Тип виміру[ред. | ред. код]
У прикладі вище використано "type": "minecraft:overworld"
. Це посилання на тип виміру. Виміри складаються з двох частин:
- Тип виміру контролює властивості середовища. Зміни в типі розмірності також стосуватимуться наявних блоків.
- Генератор чанків контролює фізичні блоки та сутності, розміщені у світі. Зміни в генераторі чанків вплинуть лише на щойно згенеровані блоки.
Якщо ви хочете змінити властивості виміру, можна створити новий файл у папці dimension_type
, і файл виміру потрібно оновити, щоб посилатися на цей новий тип виміру. У цьому прикладі властивості min_y і height було змінено порівняно з типом виміру світу. Вони контролюють обмеження будівництва виміру.
{
"ultrawarm": false,
"natural": true,
"piglin_safe": false,
"respawn_anchor_works": false,
"bed_works": true,
"has_raids": true,
"has_skylight": true,
"has_ceiling": false,
"coordinate_scale": 1,
"ambient_light": 0,
"logical_height": 256,
"infiniburn": "#minecraft:infiniburn_overworld",
"min_y": 0,
"height": 256,
"monster_spawn_light_level": {
"type": "minecraft:uniform",
"value": {
"min_inclusive": 0,
"max_inclusive": 7
}
},
"monster_spawn_block_light_limit": 0
}
{
"type": "tutorial:example_world",
"generator": {
// ...
}
}
- Кореневий об’єкт.
- ultrawarm: чи поводяться виміри як Незер (вода випаровується, а губки висихають) чи ні. Також дозволяє сталактитам стікати лавою, і лава поширюється швидше та рідше.
- natural: коли встановлено значення false, компаси обертаються випадковим чином, а використання ліжка для встановлення точки відродження або сну вимкнено. Якщо правда, портали в Незер можуть породжувати зомбованих піґлінів.
- coordinate_scale: множник, застосований до координат під час виходу з виміру. Значення від 0,00001 до 30000000,0 (обидва включно).
- has_skylight: чи має вимір сонячне світло чи ні.
- has_ceiling: чи має вимір базову стелю. Зауважте, що це лише логічна стеля. Це не пов’язано з тим, чи дійсно вимір має стелю з блоків.
- ambient_light: скільки світла має вимір. Якщо встановлено на 0, він повністю відповідає рівню освітлення; якщо встановлено значення 1, навколишнє освітлення відсутнє.[потрібна додаткова інформація]
- fixed_time: (необов’язковий) Якщо встановлено значення int, час доби є вказаним значенням. Щоб забезпечити нормальний часовий цикл, залиште атрибут невизначеним (тобто не включайте його).
- monster_spawn_light_level: значення від 0 до 15 (обидва включно). Під час появи монстра необхідне максимальне світло. Формула цього світла така:
max( skyLight - 10, blockLight )
під час грози таmax( internalSkyLight, blockLight )
під час іншої погоди.- Постачальник цілих чисел
- monster_spawn_block_light_limit: значення від 0 до 15 (обидва включно). Під час появи монстра необхідне максимальне освітлення блока.
- piglin_safe: якщо false, піґліни і гоґліни трясуться і перетворюються на зомбованих сутностей.
- bed_works: якщо false, ліжко вибухає під час спроби заснути.
- respawn_anchor_works: якщо встановлено false, якір відродження зникає під час спроби встановити точку появи.
- has_raids: чи можуть гравці з ефектом Погана прикмета викликати набіг.
- logical_height: максимальна висота, на яку фрукт хорусу і портал в Незер можуть підняти гравців у цьому вимірі. Це виключає портали, які вже були побудовані понад ліміт, оскільки вони все ще нормально підключаються. Не може бути більшим за height.
- min_y: мінімальна висота, на якій можуть існувати блоки в цьому вимірі. Має бути від -2032 до 2031 і бути кратним 16 (фактично 2016 є максимальним).
- height: загальна висота, на якій можуть існувати блоки в цьому вимірі. Має бути від 16 до 4064 і бути кратним 16. Максимальна висота будівлі = min_y + height - 1, яка не може перевищувати 2031.
- infiniburn: теґ блока з
#
. Пожежі на цих блоках горять нескінченно. - effects: (необов’язковий, за замовчуванням
minecraft:overworld
) Може бути"minecraft:overworld"
,"minecraft:the_nether "
і"minecraft:the_end"
. Визначає ефект виміру, який використовується для цього виміру. Якщо встановити Верхній світ, вимір матиме хмари, сонце, зірки та місяць. Встановлення на Незер робить вимір з густим туманом, який закриває це поле зору, подібно до Незера. Якщо встановити Енд, вимір матиме небо з темними плямами, подібне до Енду, ігноруючи колір неба й туману.
Генератор шуму[ред. | ред. код]

Щоб мати місцевість, схожу на Верхній світ, у власному вимірі, можна використовувати тип генератора noise
.
{
"type": "tutorial:example_world",
"generator": {
"type": "minecraft:noise",
"settings": "minecraft:overworld",
"biome_source": {
"type": "minecraft:fixed",
"biome": "minecraft:plains"
}
}
}
Параметри шуму[ред. | ред. код]

У наведеному вище прикладі повторно використано параметри шуму minecraft:overworld
, яке припускає, що світ тягнеться від Y=-64 до Y=320. Він також містить непотрібну логіку для ванільних біомів. Щоб налаштувати параметри шуму, можна створити файл у worldgen/noise_settings
. Цей приклад змінює основу на кальцит, вимикає рудні жили та додає шар трав’яних блоків на поверхні.
Оскільки цей файл за замовчуванням дуже великий, найкраще почати з ванільних файлів. У вас є кілька варіантів:
- Витягніть файл із версії jar
- Завантажте файл безпосередньо з загальнодоступного сховища: overworld.json
{
"sea_level": 63,
"disable_mob_generation": false,
"aquifers_enabled": true,
"ore_veins_enabled": false,
"legacy_random_source": false,
"default_block": {
"Name": "minecraft:calcite"
},
"default_fluid": {
"Name": "minecraft:water",
"Properties": {
"level": "0"
}
},
"noise": {
"min_y": 0,
"height": 256,
"size_horizontal": 1,
"size_vertical": 2
},
"noise_router": {
// ... (збережіть те ж, що в ванільному Верхньому світі)
},
"spawn_target": [],
"surface_rule": {
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"offset": 0,
"surface_type": "floor",
"add_surface_depth": false,
"secondary_depth_range": 0
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:grass_block",
"Properties": {
"snowy": "false"
}
}
}
}
}
{
"type": "tutorial:example_world",
"generator": {
"type": "minecraft:noise",
"settings": "tutorial:example_world",
"biome_source": {
"type": "minecraft:fixed",
"biome": "minecraft:plains"
}
}
}
- : Кореневий об'єкт.
- sea_level: рівень моря в цьому вимірі. Зверніть увагу, що це значення впливає лише на створення світу. Рівень моря для появи мобів є фіксованим значенням 63.
- disable_mob_generation: вимикає створення істот після генерації чанку.
- ore_veins_enabled: чи генеруються рудні жили.
- aquifers_enabled: чи генеруються водоносні горизонти. Якщо встановлено значення false, майже всі печери нижче рівня моря заповнені водою.
- legacy_random_source: чи використовувати для створення світу старий генератор випадкових чисел із версії до 1.18.
- default_block: Блок за умовчанням, який використовується для рельєфу.
- Стан блока
- default_fluid: блок за умовчанням, який використовується для морів і озер.
- Стан блока
- spawn_target: (обов’язковий, але може бути порожнім) список кліматичних параметрів для визначення точок, навколо яких гравець намагається з’явитися. Гра вибирає деякі горизонтальні локації, які знаходяться на відстані не більше ніж 2560 блоків від початку координат (0,0), потім вибірку значень шуму («глибинний» шум і «зсув» завжди дорівнює 0), і обчислює
((x ^2+z^2)^2) / 390625 + (квадрат мінімальної відстані до діапазонів у списку)
. Гравець з'являється поблизу місця, де це значення найменше.- :Діапазон.
- Параметр шуму для біома (Див. Біом для використань кожного параметра в ванільній грі)
- :Діапазон.
- noise: поля для створення світу.
- min_y: мінімальна координата Y, де починає генеруватися ландшафт. Значення від -2032 до 2031 (обидва включно). Має бути кратним 16.
- height: загальна висота місцевості. Значення від 0 до 4064 (обидва включно). Має бути кратним 16. А
min_y + height
не може перевищувати 2032. - size_horizontal: значення від 0 до 4 (обидва включно)
- size_vertical: значення від 0 до 4 (обидва включно)
- noise_router: noise_router направляє функції щільності до параметрів шуму, які використовуються для генерації світу.
- surface_rule: основне правило поверхні для розміщення блоків на місцевості.
Маршрутизатор шуму[ред. | ред. код]
На останньому кроці маршрутизатор шуму залишився недоторканим із ванільного Верхнього світу. Але це створює проблему в нижній частині світу, оскільки цей спеціальний вимір починається з Y=0, а маршрутизатор шуму все ще припускає, що він починається з Y=-64. Це спричиняє діри на дні світу, де відкривається порожнеча.
Виправлення міститься в final_density
маршрутизатора шуму. Потрібно зробити два виправлення. Знайдіть наступні фрагменти коду у файлі параметрів шуму та замініть його виправленими версіями. Першу проблему також можна виправити в частині маршрутизатора шуму initial_density_without_jaggedness
в рядку 74, але це менш критично. Друге виправлення вимикає печери локшини.
До | Після |
---|---|
"argument1": {
"type": "minecraft:y_clamped_gradient",
"from_y": -64,
"to_y": -40,
"from_value": 0,
"to_value": 1
},
|
"argument1": {
"type": "minecraft:y_clamped_gradient",
"from_y": 0,
"to_y": 24,
"from_value": 0,
"to_value": 1
},
|
"argument2": "minecraft:overworld/caves/noodle"
|
"argument2": 1
|
-
До: великі діри на дні світу.
-
Після: усі печери заблоковано повними блоками.
Правила поверхні[ред. | ред. код]


На даний момент єдиними поверхневими блоками є кальцит і трав'яні блоки. Ви можете додати шар ґрунту під трав’яними блоками та градієнт корінної породи на дні світу за допомогою деяких складніших правил поверхні.
{
// ...
"surface_rule": {
"type": "minecraft:sequence",
"sequence": [
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:vertical_gradient",
"random_name": "minecraft:bedrock_floor",
"true_at_and_below": {
"above_bottom": 0
},
"false_at_and_above": {
"above_bottom": 5
}
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:bedrock"
}
}
},
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"offset": 0,
"surface_type": "floor",
"add_surface_depth": false,
"secondary_depth_range": 0
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:grass_block",
"Properties": {
"snowy": "false"
}
}
}
},
{
"type": "minecraft:condition",
"if_true": {
"type": "minecraft:stone_depth",
"offset": 0,
"surface_type": "floor",
"add_surface_depth": true,
"secondary_depth_range": 0
},
"then_run": {
"type": "minecraft:block",
"result_state": {
"Name": "minecraft:dirt"
}
}
}
]
}
}
Біом[ред. | ред. код]

У прикладі все ще використовується біом minecraft:plains
. Щоб змінити колір трави, структури, особливості, правила появи тощо, вам потрібен користувацький біом. У цьому прикладі додано біом tutorial:plains
, який змінює кольори трави та листя.
Кілька функцій додано на 10-му кроці декорування, який є vegetal_decoration
. Якщо ви хочете додати руди, вони пішли б до кроку 7: underground_ores
.
{
"temperature": 0.8,
"downfall": 0.4,
"has_precipitation": true,
"effects": {
"sky_color": 7907327,
"fog_color": 12638463,
"water_color": 4159204,
"water_fog_color": 329011,
"grass_color": 10073398,
"foliage_color": 13127730
},
"spawners": {},
"spawn_costs": {},
"carvers": {},
"features": [
[],
[],
[],
[],
[],
[],
[],
[],
[],
[
"minecraft:glow_lichen",
"minecraft:trees_plains",
"minecraft:patch_grass_plain",
"minecraft:patch_sugar_cane"
],
[]
]
}
{
"type": "tutorial:example_world",
"generator": {
"type": "minecraft:noise",
"settings": "tutorial:example_world",
"biome_source": {
"type": "minecraft:fixed",
"biome": "tutorial:plains"
}
}
}
Див. також[ред. | ред. код]
- Генерація користувацього світу
- Користувацький вимір
- Користувацькі параметри шуму
- Маршрутизатор шуму
- Правило поверхні
- Користувацький біом
Примітки[ред. | ред. код]
[приховати] | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
|