MC Toolkit

Руководства / Команды и данные

Таблицы добычи: пулы, броски и разница между записями и функциями

Если таблица добычи ничего не выдаёт, обычно веса или условия стоят не на том уровне. Вот за что отвечает каждый уровень вложенности и какие функции стоит знать.

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.

Конструктор таблиц добычи →

Другие руководства

Смотреть все →