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_idID мода.
[*]raw_name
Сырое имя. То есть класс предмета/блока.
[*]max_size
Максимальный размер стека.
[*]max_dmg
Максимальная metadata. Имеет место быть только у ломающихся инструментов.
[*]dmg
Значение metadata (то есть числа s: ID:s). В метадате содержатся данные, например, о цвете шерсти или красителя.
[*]qty
Количество в данный момент.
[*]id
ID айтема по новым стандартам (modID:itemName)
[*]display_name
Имя, какое мы видим, наводя на предмет.
[*]name
Тип айтема (блок/предмет)
gold_nugget = {}gold_nugget["id"] = "minecraft:gold_nugget"gold_nugget["dmg"] = 0ccc.setCrafttingSlot(1, gold_nugget)
Для составления "личного дела" айтема достаточно 2 значений: это id и dmg.После этого система сможет понять, какой именно айтем Вы просите. VI. Заключение. Теперь Вы знаете, что такое CCC и как им управляться =) Надеюсь на "пятаки", "лайки", комментарии. Ждите новых записей в моём блоге!