Tree Capitator
Tree Capitator — это мод-библиотека, позволяющая добыть все дерево вместе с листвой, сломав всего один блок подходящим инструментом. При этом время ломания блока будет зависеть от размера дерева (можно отключить в конфиге мода). Также вы можете присесть для ломания блоков по одному. Последняя актуальная версия библиотеки доступна к загрузке в браузере модов.
Добавление своего дерева
По умолчанию разрушаться как деревья будут только ванильные дуб, сосна и так далее. Если модификация добавляет свои виды древесины и деревьев соответственно, их регистрация должна выполняться через интеграцию самостоятельно.
Для регистрации своих деревьев не нужно указывать форму или конкретные расположения блоков дерева, достаточно воспользоваться функцией:
TreeCapitator.registerTree(logBlocks, leavesBlocks, leavesRadius = 5);
Например, у нас есть гевея, состоящая из листвы, древесины и такой же древесины с возможностью собрать смолу. Добавим интеграцию и зарегистрируем свое дерево:
ModAPI.addAPICallback("TreeCapitator", function(TreeCapitator) {
TreeCapitator.registerTree(
[[BlockID.rubber_tree_log, -1], [BlockID.rubber_tree_log_latex, -1]],
[BlockID.rubber_tree_leaves, -1]
);
});
Отлично, теперь от разрушения любого блока древесины гевеи разрушится и все дерево. Мы упустили указание радиуса листвы, который определяет насколько далеко от ствола нужно искать листву, поскольку вся листва гевеи находится ближе 5 блоков от древесины. Измените параметр если он необходим.
Получить зарегистрированные данные можно в любой момент, используя любой идентификатор в блоках древесины:
TreeCapitator.getTreeData({ id: BlockID.rubber_tree_log, data: 0 });
Этой функцией крайне удобно пользоваться в калбеках, поскольку передаваемые блоки в них уже содержат все нужные поля. Функция возвращает массив с блоками древесины, листвы и указанный радиус листвы, либо значение по умолчанию:
{
log: [[BlockID.rubber_tree_log, -1], [BlockID.rubber_tree_log_latex, -1]],
leaves: [[BlockID.rubber_tree_leaves, -1]],
radius: 5
}
Ранее переданная листва также помещена в массив, чтобы стандартизировать формат хранения данных и удобно проходить по ним.