MoarPeripherals ver. 1.5, Computer Controlled Crafter.
Minecraft Mods
#1
Обзор обновлений MoarPeripherals 1.5
#1. Computer Controlled Crafter.
Приветствую Вас в первой части обзора обновлений аддона к CC MoarPeripherals версии 1.5. Мы рассмотрим один из новых блоков, именуемый Computer Controlled Crafter, или, в моём русском переводе, крафтер. :P
I. Что это и с чем его едят?
Крафтер — это блок, позволяющий крафтить с компьютера! В принципе, всё =)
II. API.
Крафтер имеет несколько функций:
- getInventorySize() :: number
- Возвращает кол-во слотов для крафта (их девять )
[*]craft() :: boolean
- Собственно, тот самый рычаг, и если за него дёрнуть, то начнётся крафт! Если всё пройдёт успешно, положит рядом с ингредиентами и завизжит отрадости: true! Если же нет... то где-то Вы ошиблись =)
[*]getStackInSlot(slot) :: table
- Некоторый аналог Item Dictionary. Позволяет узнавать доскональную инфу о блоке/предмете. Возвращает таблицу, к которой, я обещаю, мы скоро вернёмся.
[*]isRecipeValid() :: boolean
- Суть ясна из названия функции. Возвращает true, если можно скрафтить загадочную хрень, и false, если рецепт не существует.
[*]getCraftingSlot(slot) :: table
- То же, что и getStackInSlot(), но для предметов в сетке крафта.
[*]setCraftingSlot(slot, item) :: boolean
- Аккуратно укладывает на верстак... скорее, дисплей, так как взаимодействовать напрямую нельзя, предмет в нужный слот (к этому мы скоро вернёмся).
[*]clearCraftingSlot(slot)
- Недвусмысленная функция. Очищает слот в сетке крафта.
[*]clearCraftingGrid()
- Менее аккуратный собратец предыдущей функции. Очищает всё скопом.
- Возвращает кол-во слотов для крафта (их девять )
Итак, порцию страшилок Вы получили... Теперь перейдём к самому весёлому: к кодингу!
III. Крафтим!
Начнём с ГУИ.
В мой инвентарь Вам заглядывать смысла нет, так что показываю только верхнюю часть. Верхняя часть делится ещё на 3 части! Нет, не пугайтесь преждевременно. Первая часть — сетка крафта, вторая — клетка результата, а третья часть — это инвентарь. Инвентарь можно пополнять или забирать из него с помощью труб, роботов, компьютеров. Но не об этом речь. Предположим, мне позарез нужны Raw Circuit Board. Крафтятся они из блока глины, кактуса пережаренного и золотого зубчика. Кладём в инвентарь ингредиенты.
Я написал маленькую программу test, в которой показывается код и он же выполняется. Разбираем!
Во-первых, подключаем перефиральное устройство.
Затем получаем инфу об айтемах. Для того, чтобы не париться, возьмём готовую ф-ию "getStackInSlot". Что это за цифры? Слоты в инвентаре и в верстаке нуммеруются слева направо, сверзу вниз, то есть так:
1 2 3
4 5 6
7 8 9,
или, в случае инвентаря:
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18.
В слоте 1 лежит кактус пережаренный. Потому в переменную cactus_green заносится та самая таблица с инфой об айтеме... Её состав рассмотрим попозже =)
Теперь сеттинг рецепта. Пользуемся ф-ей setCraftingSlot(). В первом аргументе передаём слот, куда хотим положить предмет (не забыли ещё нумерацию?). А во втором — предмет. На самом деле, не обязательно иметь предмет в инвентаре. Можно написать из головы, но об этом — чуть позже.
Теперь, если мы откроем ГУИ, он будет выглядеть так:
Но просто так Вы плату сырую не возьмёте, опять нужен комп. Помните, я говорил о волшебном рычажке? А вот и он!
Последняя строка. Мы крафтим сам предмет! И если мы опять заглянем в столик, то обнаружим такую картину:
Скрафченный предмет лежит вместе с остальными, так что вытащить его можно только с помощью фильтра.
IV. Убираем за собой.
Намусорили, а убирать кто будет? Мы, конечно же =) Пользуемся свякой clearCraftingSlot() и clearCraftingGrid(). Суть понятна из названия. Скриншоты:
V. Автономный режим activated!
И напоследок о том, что из себя представляет таблица.
- mod_id
- ID мода.
[*]raw_name
- Сырое имя. То есть класс предмета/блока.
[*]max_size
- Максимальный размер стека.
[*]max_dmg
- Максимальная metadata. Имеет место быть только у ломающихся инструментов.
[*]dmg
- Значение metadata (то есть числа s: ID:s). В метадате содержатся данные, например, о цвете шерсти или красителя.
[*]qty
- Количество в данный момент.
[*]id
- ID айтема по новым стандартам (modID:itemName)
[*]display_name
- Имя, какое мы видим, наводя на предмет.
[*]name
- Тип айтема (блок/предмет)
- ID мода.
gold_nugget = {}gold_nugget["id"] = "minecraft:gold_nugget"gold_nugget["dmg"] = 0ccc.setCrafttingSlot(1, gold_nugget)
Для составления "личного дела" айтема достаточно 2 значений: это id и dmg.После этого система сможет понять, какой именно айтем Вы просите.
VI. Заключение.
Теперь Вы знаете, что такое CCC и как им управляться =) Надеюсь на "пятаки", "лайки", комментарии. Ждите новых записей в моём блоге!
- 6
6 комментариев
Рекомендуемые комментарии