Руководства / Команды и данные
Таблицы добычи: пулы, броски и разница между записями и функциями
Если таблица добычи ничего не выдаёт, обычно веса или условия стоят не на том уровне. Вот за что отвечает каждый уровень вложенности и какие функции стоит знать.
JSON таблицы добычи имеет четыре уровня вложенности, и каждый уровень значит своё. Почти любое «моя таблица ничего не выдаёт» — это условие, прикреплённое на уровень выше или ниже, чем задумывалось.
Четыре уровня
table
└── pools[] how many independent draws
└── entries[] what can come out of this draw
└── functions[] modify the item that came out
rollsу пула — сколько раз этот пул делает выборку. Один пул сrolls: 3делает три выборки из одного и того же списка записей.weightу записи — относительный вес внутри своего пула. Веса не обязаны давать в сумме что-либо определённое; запись с весом 10 против записи с весом 90 выпадает в десять раз реже.conditionsсуществуют на каждом уровне и означают разное. У пула они ограничивают всю выборку. У записи — только этот один вариант. У функции — только само изменение.
Чтобы дроп гарантированно выпал, нужен отдельный пул
Веса ничего гарантировать не могут, потому что пул выбирает ровно одну запись за бросок. Таблице, которая всегда должна выдавать карту плюс случайную добычу, нужно два пула:
"pools": [
{ "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:filled_map" } ] },
{ "rolls": { "min": 2, "max": 4 }, "entries": [ … weighted list … ] }
]
В первом пуле одна запись, поэтому он всегда её выдаёт. Второй пул делает 2–4 броска по взвешенному списку.
Функции, которые стоит знать
| Функция | Что делает |
|---|---|
set_count | фиксированное число или диапазон uniform |
enchant_randomly | случайные зачарования, при желании из списка |
enchant_with_levels | как у чародейского стола на N уровней — любое зачарование, если options его не сузит |
set_components | своё имя, описание, любой компонент данных |
enchanted_count_increase | бонус за каждый уровень зачарования (Добыча); только для таблиц сущностей |
set_damage | прочность долей, так 0.5 — половина износа |
furnace_smelt | переплавленная форма, если моб умер в огне |
enchant_with_levels и enchant_randomly не взаимозаменяемы. Первая имитирует чародейский стол и учитывает стоимость уровней; вторая выбирает произвольно и может выдать сочетания, которые игра никогда бы не сгенерировала.
Условия, к которым обычно тянутся
random_chance— фиксированная вероятностьrandom_chance_with_enchanted_bonus— современный шанс с учётом Добычиkilled_by_player— причина, по которой ваш редкий дроп никогда не появляется при смерти от паденияentity_properties— проверка типа, состояния или снаряжения жертвыmatch_tool— проверка использованного инструмента, для таблиц блоков
Тестирование без пересборки мира
/loot give @s loot my_pack:chests/treasure
кладёт таблицу прямо в ваш инвентарь. /loot spawn, /loot insert <pos> и /loot replace покрывают остальные варианты размещения. Это куда быстрее, чем ставить сундуки и перезагружаться, и это единственный разумный способ проверить распределение весов.
Собирайте многопуловые таблицы с функциями и условиями, прикреплёнными на правильном уровне, в Advanced Loot Table Builder.