Ингредиенты
Начиная с версии 2.2.8a AlgorithmLX добавил систему ингредиентов, аналогичной той, что находится в Fabric API
NBTIngredient
NBT-ингредиенты позволяют задать специальные NBT-теги, которые должны присутствовать в предмете для его использования в рецептах. Это особенно полезно, когда требуется учитывать дополнительные характеристики предметов, такие как чары, персонализированные имена, метаданные или другие свойства, записанные в NBT.
Например, можно создать рецепт, который позволяет использовать только палку с чаром "Добыча III" для крафта алмаза, или ограничить использование предметов с определёнными владельцами, уровнем прочности или уникальными метками.
Таким образом, NBT-ингредиенты позволяют создавать более сложные и гибкие механики крафта, учитывая свойства предметов, а не только их базовый тип.
Пример использования:
{
// ваш код выше
"ingredients": [
{
// Тип ингредиента
"hollowcore:type": "hollowcore:nbt",
// Оригинальный ингредиент
"base": {
"item": "minecraft:stick"
},
// Есть альтернативный вариант: "nbt":"\"Enchantments\":[{\"id\":\"efficiency\",\"lvl\":3}]"
// Но я не думаю, что это слишком удобно..
"nbt": {
"Enchantments": [
{
"id": "efficiency",
"lvl": 3
}
]
},
// Дает сериализатору понять, стоит ли проверять соответсвтие NBT предмета и NBT в рецепте
// Значение true - вернет положительное значение, если NBT предмета и NBT, указанный в рецепте, совпадут
// Значение false - вернет положительное значение, если есть любой NBT на предмете
"strict": false
}
]
}
ArrayIngredient
Ингредиенты, связанные с массивами. К таким относится AllIngredient и AnyIngredient
AllIngredient
AllIngredient (Все ингредиенты) – это составной ингредиент, который проходит проверку, только если предмет соответствует всем указанным ингредиентам одновременно. При получении списка возможных предметов он оставляет только те, которые присутствуют во всех входных ингредиентах. Это позволяет создавать рецепты с более строгими условиями, например, если предмет должен обладать сразу несколькими свойствами.
Пример использования:
{
// ваш код выше
"ingredients": [
{
// Тип ингредиента
"hollowcore:type": "hollowcore:all",
"ingredients": [
// Первый ингредиент
{
"item": "minecraft:apple"
},
// Второй ингредиент
{
"item": "minecraft:gold_apple"
},
// Третий ингредиент
{
"item": "minecraft:diamond"
}
]
}
]
}
AnyIngredient
AnyIngredient (Любой ингредиент) – это составной ингредиент, который проходит проверку, если предмет соответствует хотя бы одному из заданных ингредиентов. Он объединяет все возможные варианты в один список, позволяя гибко определять крафтовые рецепты. Например, если в составе указаны "камень" и "железо", то для крафта можно использовать любой из этих материалов.
Пример использования:
{
// ваш код выше
"ingredients": [
{
// Тип ингредиента
"hollowcore:type": "hollowcore:any",
"ingredients": [
// Первый ингредиент
{
"item": "minecraft:apple"
},
// Второй ингредиент
{
"item": "minecraft:gold_apple"
},
// Третий ингредиент
{
"item": "minecraft:diamond"
}
]
}
]
}
DifferenceIngredient
Исключаемый ингредиент - это специальный тип ингредиента, который позволяет создавать составные рецепты с исключением определённых элементов. Он принимает два ингредиента: базовый (base) и исключаемый (subtracted). В процессе проверки (test) он проверяет, соответствует ли предмет базовому ингредиенту и не принадлежит ли к исключаемому.
Этот механизм позволяет гибко настраивать рецепты, убирая нежелательные компоненты. Например, если базовый ингредиент – все виды дерева, а исключаемый – дуб, то в рецепте можно использовать любые деревянные блоки, кроме дуба.
{
// ваш код выше
"ingredients": [
{
// Тип ингредиента
"hollowcore:type": "hollowcore:difference",
// Любой ингредиент
"base": {
"tag": "minecraft:items/planks"
},
// Любой ингредиент-исключитель
"subtracted": {
"hollowcore:type": "any",
"ingredients": [
// Исключаем Дубовые доски и Акациевые доски
{
"item": "minecraft:oak_planks"
},
{
"item": "minecraft:acacia_planks"
}
]
}
}
]
}