Таблицы добычи: пулы, броски и разница между записями и функциями
Таблица добычи, из которой ничего не выпадает, обычно имеет неверно расположенные веса или условия. Здесь объясняется, что контролирует каждый уровень вложенности, а также функции, о которых стоит знать.
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 уровнях — включает сокровища, если указано |
set_components | пользовательское имя, описание, любой компонент данных |
looting_enchant | бонус за уровень Добычи; только для таблиц сущностей |
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 охватывают другие варианты размещения. Это намного быстрее, чем размещать сундуки и перезагружаться, и это единственный разумный способ проверить распределение весов.
Создавайте таблицы с несколькими пулами, функциями и условиями, прикрепленными на правильном уровне, в Расширенном конструкторе таблиц добычи.