Перейти к основному содержанию

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
}

Ранее переданная листва также помещена в массив, чтобы стандартизировать формат хранения данных и удобно проходить по ним.