Перейти к содержимому

Fingercomp's Playground

  • записей
    87
  • комментария
    452
  • просмотра
    311 254

MoarPeripherals ver. 1.5, Computer Controlled Crafter.

Fingercomp

2 855 просмотров

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. Крафтим!
Начнём с ГУИ.
4BaoEmi.png
В мой инвентарь Вам заглядывать смысла нет, так что показываю только верхнюю часть. Верхняя часть делится ещё на 3 части! Нет, не пугайтесь преждевременно. Первая часть — сетка крафта, вторая — клетка результата, а третья часть — это инвентарь. Инвентарь можно пополнять или забирать из него с помощью труб, роботов, компьютеров. Но не об этом речь. Предположим, мне позарез нужны Raw Circuit Board. Крафтятся они из блока глины, кактуса пережаренного и золотого зубчика. Кладём в инвентарь ингредиенты.
VEXtLRo.png
Я написал маленькую программу 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(). В первом аргументе передаём слот, куда хотим положить предмет (не забыли ещё нумерацию?). А во втором — предмет. На самом деле, не обязательно иметь предмет в инвентаре. Можно написать из головы, но об этом — чуть позже.
Теперь, если мы откроем ГУИ, он будет выглядеть так:
es0aSkF.png
Но просто так Вы плату сырую не возьмёте, опять нужен комп. Помните, я говорил о волшебном рычажке? А вот и он!
mbQG4Lx.png
Последняя строка. Мы крафтим сам предмет! И если мы опять заглянем в столик, то обнаружим такую картину:
x2fDHlX.png
Скрафченный предмет лежит вместе с остальными, так что вытащить его можно только с помощью фильтра.
IV. Убираем за собой.
Намусорили, а убирать кто будет? Мы, конечно же =) Пользуемся свякой clearCraftingSlot() и clearCraftingGrid(). Суть понятна из названия. Скриншоты:
EEl8H1z.png
l8AKzwH.png
yTMHzxL.png
IkUPHR0.png
V. Автономный режим activated!
И напоследок о том, что из себя представляет таблица.
p3v1KdF.png

  • mod_id
    • ID мода.

    [*]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 и как им управляться =) Надеюсь на "пятаки", "лайки", комментарии. :) Ждите новых записей в моём блоге!

  • Нравится 6


6 комментариев


Рекомендуемые комментарии

Строчка в чейнджлоге новой версии:

"NEW: Russian (ru_RU) translation (thanks Fingercomp)"

:)

Надо вспомнить, как делать Pull Request'ы и забабахать им туда новый перевод.

Поделиться комментарием


Ссылка на комментарий

эм а можно просто ид предмета юзать,

и как он работает с ид методатой?

Если метадаты нет, то или указать в поле соответствующем 0, или вообще его не ставить.

Если в таблице есть ИД и МЕТА, то будут использоваться они.

Поделиться комментарием


Ссылка на комментарий
Гость
Добавить комментарий...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...