Менеджеры рецептов
Link to менеджеры-рецептов
Менеджеры рецептов — это системы крафта, такие как верстак, печь или костер, поддерживающие стандартную систему наборо данных JSON
Большинство менеджеров рецептов имеют аналогичные методы удаления, но разные методы для добавления рецептов.
Менеджеры рецептов — это то, что вы в основном будете использовать для взаимодействия с рецептами в игре, однако некоторые моды не используют систему наборов данных, и для них придется добавлять и отключать рецепты иным образом.
Получение менеджера рецептов
Link to получение-менеджера-рецептов
Обычно к менеджерам рецептов обращаются через обработчик скобок (за исключением стандартных менеджеров рецептов, доступных через глобальное значение).
Формат менеджера рецептов такой:
ZenScript Copy<recipetype:id_мода:имя>
Некоторые примеры:
ZenScript Copy<recipetype:minecraft:smoking> // Возвращает менеджер рецептов коптильни
<recipetype:botania:mana_infusion> // Возвращает менеджер рецептов наполнения маной Botania
<recipetype:thermal:pulverizer> // Возвращает менеджер рецептов в измельчителе из Thermal Expansion
Менеджеры стандартных рецептов особенны тем, что для них есть глобальные переменные, позволяющие ссылаться на них без обработчика скобок.
Менеджеры рецептов в обычной игре такие:
Менеджер рецептов | Обработчик скобок | Глобальная переменная |
---|---|---|
Менеджер рецептов Выплавка в плавильной печи | Обработчик скобок <recipetype:minecraft:blasting> | Глобальная переменная blastFurnace |
Менеджер рецептов Готовка на костре | Обработчик скобок <recipetype:minecraft:campfire_cooking> | Глобальная переменная campfire |
Менеджер рецептов Крафт | Обработчик скобок <recipetype:minecraft:crafting> | Глобальная переменная craftingTable |
Менеджер рецептов Выплавка в обычной печи | Обработчик скобок <recipetype:minecraft:smelting> | Глобальная переменная furnace |
Менеджер рецептов Использование кузнечного стола | Обработчик скобок <recipetype:minecraft:smithing> | Глобальная переменная smithing |
Менеджер рецептов Копчение | Обработчик скобок <recipetype:minecraft:smoking> | Глобальная переменная smoker |
Менеджер рецептов Камнерезание | Обработчик скобок <recipetype:minecraft:stonecutting> | Глобальная переменная stoneCutter |
На них можно ссылаться либо по обработчику скобок, либо через глобальную переменную. Например:
ZenScript Copy<recipetype:minecraft:blasting>.removeAll() // Удаляет все рецепты плавильной печи
Что равносильно следующему:
ZenScript CopyblastFurnace.removeAll() // Удаляет все рецепты плавильной печи
Глобальные переменные просто упрощают обращение к менеджерам рецептов.
Причина, почему не для всех менеджеров рецептов создаются глобальные переменные в том, что могут случиться конфликты, если разные моды добавят машины с одинаковым именем — дробилку, например.
Методы
Link to методы
Name: getRecipeByName
Этот метод получает рецепт по имени и возвращает объект Recipe.
ZenScript CopygetRecipeByName(String name);
Можно применить его, чтобы получить ингредиенты рецепта и вывести commandString
для каждого из них.
ZenScript Copyfor ingredient in craftingTable.getRecipeByName("minecraft:arrow").ingredients {
println(ingredient.commandString);
}
Name: getRecipesByOutput
Этот метод получает список рецептов на основании его выхода и возвращает список объектов Recipe.
ZenScript CopygetRecipesByOutput(IIngredient name);
Можно использовать этот метод, чтобы получить ингредиенты всех рецептов с данным выходом и вывести commandString
для каждого.
ZenScript Copyfor recipe in craftingTable.getRecipesByOutput(<item:minecraft:stick>) {
println("> " + recipe.id);
for ingredient in recipe.ingredients {
println(ingredient.commandString);
}
}
Name: getAllRecipes
Этот метод получает список всех рецептов для данного менеджера рецептов и возвращает список объектов Recipe.
ZenScript CopygetAllRecipes();
Можно использовать этот метод, чтобы получить ингредиенты всех рецептов и вывести commandString
для каждого:
ZenScript Copyfor recipe in furnace.getAllRecipes() {
println("> " + recipe.id);
for ingredient in recipe.ingredients {
println(ingredient.commandString);
}
}
Name: remove
Позволяет удалять рецепты из менеджера рецепта по выходному предмету.
ZenScript Copyremove(IItemStack output);
Пример использования — удаление рецепта палки в верстаке.
ZenScript CopycraftingTable.remove(<item:minecraft:stick>);
Еще пример — удаление выплавки алмаза из алмазной руды в печи:
ZenScript Copyfurnace.remove(<item:minecraft:diamond>);
Name: removeByName
Позволяет удалять рецепты из менеджера рецептов по имени рецепта.
ZenScript CopyremoveByName(String name);
Пример использования — удаление рецепта стрелы в верстаке:
ZenScript CopycraftingTable.removeByName("minecraft:arrow");
Name: removeByModid
This method allows you to remove recipes from this Recipe Manager based on the the recipe name's modid.
There is an optional parameter that is used to exclude recipes from being removed.
Note: The name given to the RecipeFilter is just the path of the recipe id.
For example, if the recipe id is minecraft:orange_wool
, the name given will be orange_wool
. Еще пример — ID рецепта id_мода:путь/имя
, именем будет только часть путь/имя
.
ZenScript CopyremoveByModid(String modid);
или
removeByModid(String modid, RecipeFilter exclude);
Пример использования — удаление всех рецептов из верстака на minecraft:
ZenScript CopycraftingTable.removeByModid("minecraft");
Еще пример — удаление всех рецептов на minecraft кроме рецепта оранжевой шерсти.
ZenScript CopycraftingTable.removeByModid("minecraft", (name as string) => {
return name == "orange_wool";
});
Name: removeByRegex
Позволяет удалять рецепты из менеджера рецептов, проверяя ID рецепта по регулярному выражению.
ZenScript CopyremoveByRegex(String regex);
Пример использования — удаление всех рецептов, ID которых соответствует шаблону .*wool.*
(то есть, все, которые содержат wool
где угодно в названии).
ZenScript CopycraftingTable.removeByRegex(".*wool.*");
Name: removeAll
Позволяет удалять все рецепты из менеджера рецептов.
ZenScript CopyremoveAll(String regex);
Пример — удаление всех рецептов в плавильной печи.
ZenScript CopyblastFurnace.removeAll();