Урок по программированию в MineTweaker 3
ссылка на мод
УРОК №2
ОСНОВНЫЕ РЕЦЕПТЫ
Использование вспомогательного мода MineTweaker RecipeMaker
Если вы не хотите возиться с кодом, добавлять или удалять рецепты вручную, то обратите внимание на замечательный аддон для MineTweaker от автора DoubleDoorDevelopment под названием
MineTweaker RecipeMaker
Использование обозначений в рецепте
Основное, что можно делать с помощью MineTweaker - это добавление/удаление рецептов. В MineTweaker нет визульного редактора, только "голый" код в виде скриптового языка. Поэтому вы должны понять, как написать ваш рецепт в виде кода.
В прошлом уроке, на примере функции print, вы смогли увидеть возможности MineTweaker:
print("My text");
Правда, это очень простой пример. Куда более полезной функуцей является функция добавления рецепта:
recipes.addShaped(что_хотим_получить, ингридиенты);
Эта строчка вызывает функцию addShaped для добавления рецепта к объекту. Обратите внимание, что данная функция добавляет исключительно рецепт крафта для объекта. Скажем, если вы захотите добавить рецепт внутрь печки или в какую-нибудь машину из мода, то за это будут отвечать другие функции. Об этих функциях мы поговорим немного позже.
Какие-же аргументы необходимо присвоить функции addShaped? В качестве аргументов мы должны использовать получаемый результат и составляющие (ингридиенты) рецепта.
Давайте, в качестве примера, возьмем Железный штаны и опишем их рецепт в виде кода:
Код рецепта для MineTweaker будет выглядеть следующим образом:
[[<minecraft:iron_ingot>, <minecraft:iron_ingot>, <minecraft:iron_ingot>],
[<minecraft:iron_ingot>, null, <minecraft:iron_ingot>],
[<minecraft:iron_ingot>, null, <minecraft:iron_ingot>]]
Если вы раньше не имели опыта программирования, то данный код может испугать. Правда, в нем нет ничего страшного, представьте его в таком виде:
Каждый элемент в MineTweaker имеет свое название заключенное в угловые скобки. Это правило действует для всех элементов в том числе руды или жидкостей.
Таким образом, название железного слитка для MineTweaker будет иметь вид <minecraft:iron_ingot>, а для железных штанов <minecraft:iron_leggings>.
А как быть с пустыми местами, спросите вы? Просто пропустить их нельзя, вы должны указать, что в этом месте ничего нет. MineTweaker для этого случая имеет специальное слово "null"
В итоге, заключительный код добавления рецепта железных штанов будет иметь вид:
recipes.addShaped(<minecraft:iron_leggings>,
[[<minecraft:iron_ingot>, <minecraft:iron_ingot>, <minecraft:iron_ingot>],
[<minecraft:iron_ingot>, null, <minecraft:iron_ingot>],
[<minecraft:iron_ingot>, null, <minecraft:iron_ingot>]]);
Данный код вы можете написать так, как вам удобно для восприятия, хоть в одну строчку. MineTweaker все равно его прочитает и запустит. Также вы можете один раз присвоить переменную железному слитку и использовать ее в дальнейшем коде. Как это сделать, будет описано в конце урока.
Основные рецепты
Небольшая вводная. Давайте рассмотрим рецепт палки. В ванильном рецепте Minecraft палки крафтятся из двух досок и в результате мы получаем 4 палки. Причем доски должны располагаться друг над другом.
Но, что если мы хотим изменить это? Что делать, если, допустим, мы считаем более правильным и логичным располагать доски не по вертикали, а по диагонали? (палку же мы получаем с наклоном, не так-ли?)
Изменить рецепт палочки проще простого. Создайте скрипт со следующим содержанием:
recipes.remove(<minecraft:stick>);
recipes.addShaped(<minecraft:stick> * 4, [[<minecraft:planks>, null], [null, <minecraft:planks>]]);
Запустите Minecraft или перезапустите скрипт, если вы в игре. Теперь возьмите две дубовые деревянные доски (oak wood planks) и проверьте рецепт.
Все работает? Отлично! Но, в этом рецепте есть ошибка: если вы вместо дубовых досок будете использовать березовые или еловые, то рецепт не будет работать.
Почему? Спросите вы. А все потому, что доски имеют мета данные. По умолчанию, если вы не указываете мета данные, MineTweaker присваивает значение равное 0, а это дуб. Но, мы хотим использовать в своем рецепте любые доски.
К счастью это легко исправить. При использовании имен мы можем добавлять мета данные. Например, если в качестве мета данных использовать 1: <minecraft:planks:1> это будут еловые доски. Также, мы можем использовать в качестве мета данных символ "*". Этот символ разрешает использовать любое значение мета данных: <minecraft:planks:*>
Измените свой рецепт и перезагрузите скрипт:
recipes.remove(<minecraft:stick>);
recipes.addShaped(<minecraft:stick> * 4, [[<minecraft:planks:*>, null], [null, <minecraft:planks:*>]]);
Все отлично! Теперь мы можем использовать в крафте абсолютно любые доски.
Если вы не знаете, как узнать название предмета, то возьмите его в руки и введи команду /minetweaker hand. Название предмета отобразится на экране и скопируется в буфер, так что вы можете вставить его непосредственно в скрипт.