RecipeTELib — различия между версиями

м
м
Строка 278: Строка 278:
 
</div>
 
</div>
  
 +
<div class="mw-parser-output">
 
<div class="mw-parser-output">
 
<div class="mw-parser-output">
 
== Полная документация ==
 
== Полная документация ==
Строка 283: Строка 284:
 
{| border="1" cellpadding="1" cellspacing="1" style="width: 100%;"
 
{| border="1" cellpadding="1" cellspacing="1" style="width: 100%;"
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''Версия'''
+
| style="width: 121px; text-align: center;" | '''Версия'''
| style="width: 385px; text-align: center;" | '''Метод'''
+
| style="width: 326px; text-align: center;" | '''Метод'''
 
| style="text-align: center; width: 379px;" | '''Аргументы'''
 
| style="text-align: center; width: 379px;" | '''Аргументы'''
 
| style="text-align: center; width: 200px;" | '''Описание'''
 
| style="text-align: center; width: 200px;" | '''Описание'''
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1'''
| style="width: 385px;" | RecipeTE.registerGridCraftTable(object description)
+
| style="width: 326px;" | RecipeTE.registerGridCraftTable(object description)
 
| style="text-align: center; width: 379px;" |  
 
| style="text-align: center; width: 379px;" |  
 
*description- Описание верстака  
 
*description- Описание верстака  
 
**name - Идентификатор/имя верстака  
 
**name - Идентификатор/имя верстака  
 
**columns/cols - Кол-во колонок  
 
**columns/cols - Кол-во колонок  
**rows - Кол-во строк   
+
**rows - Кол-во строк  
 +
**elements - Объект с названиями элементов(С версии 1.1, не обязательный)
 +
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&nbsp;названия входных слотов
 +
***output - Строка названия выходного слото
 +
***progress - Строка названия шкалы прогресса 
 +
**time -&nbsp;Длительность производства(С версии 1.1, не обязательный)    
  
| colspan="1" rowspan="2" style="width: 200px;" | Регистрация верстака с сеткой
+
| colspan="1" rowspan="5" style="width: 200px;" | Регистрация верстака с сеткой
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1'''
| style="width: 385px;" | RecipeTE.registerGridCraftTable(string name, int columns, int rows)
+
| style="width: 326px;" | RecipeTE.registerGridCraftTable(string name, int columns, int rows)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*name - Идентификатор/имя верстака  
 
*name - Идентификатор/имя верстака  
Строка 306: Строка 312:
  
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1.1'''
| style="width: 385px;" | RecipeTE.registerCraftTable(object description)
+
| style="width: 326px;" | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*columns - Кол-во колонок
 +
*rows - Кол-во строк
 +
*elements - Объект с названиями элементов
 +
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&nbsp;названия входных слотов
 +
**output - Строка названия выходного слото
 +
**progress - Строка названия шкалы прогресса 
 +
 
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1.1'''
 +
| style="width: 326px;" | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*columns - Кол-во колонок
 +
*rows - Кол-во строк
 +
*time - Длительность производства
 +
 
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1.1'''
 +
| style="width: 326px;" | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*columns - Кол-во колонок
 +
*rows - Кол-во строк
 +
*elements - Объект с названиями элементов
 +
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&nbsp;названия входных слотов
 +
**output - Строка названия выходного слото
 +
**progress - Строка названия шкалы прогресса 
 +
*time - Длительность производства
 +
 
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1'''
 +
| style="width: 326px;" | RecipeTE.registerCraftTable(object description)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*description- Описание верстака  
 
*description- Описание верстака  
 
**name - Идентификатор/имя верстака  
 
**name - Идентификатор/имя верстака  
**columns/cols - Кол-во слотов   
+
**columns/cols - Кол-во слотов(Версия 1)
 +
**slots - Кол-во слотов(С версии 1.1)
 +
**elements - Объект с названиями элементов(С версии 1.1, не обязательный)
 +
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&nbsp;названия входных слотов
 +
***output - Строка названия выходного слото
 +
***progress - Строка названия шкалы прогресса    
 +
**time -&nbsp;Длительность производства(С версии 1.1, не обязательный) 
 +
 
 +
| colspan="1" rowspan="5" style="width: 200px;" | Регистрация верстака без сетки
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1'''
 +
| style="width: 326px;" | RecipeTE.registerCraftTable(string name, int slots)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*slots&nbsp;- Кол-во слотов
  
| colspan="1" rowspan="2" style="width: 200px;" | Регистрация верстака без сетки
 
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1.1'''
| style="width: 385px;" | RecipeTE.registerCraftTable(string name, int slots)
+
| style="width: 326px;" | RecipeTE.registerCraftTable(string name, int slots, int time)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*name - Идентификатор/имя верстака  
 
*name - Идентификатор/имя верстака  
 
*slots&nbsp;- Кол-во слотов  
 
*slots&nbsp;- Кол-во слотов  
 +
*time - Длительность производства
  
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1.1'''
| style="width: 385px;" | RecipeTE.registerTimerGridCraftTable(object description)
+
| style="width: 326px;" | RecipeTE.registerCraftTable(string name, int slots, object elements)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*slots&nbsp;- Кол-во слотов
 +
*elements - Объект с названиями элементов
 +
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&nbsp;названия входных слотов
 +
**output - Строка названия выходного слото
 +
**progress - Строка названия шкалы прогресса 
 +
 
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1.1'''
 +
| style="width: 326px;" | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*slots&nbsp;- Кол-во слотов
 +
*elements - Объект с названиями элементов
 +
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&nbsp;названия входных слотов
 +
**output - Строка названия выходного слото
 +
**progress - Строка названия шкалы прогресса 
 +
*time - Длительность производства
 +
 
 +
|-
 +
| style="width: 121px; text-align: center;" |
 +
'''1'''<br/> ''Устаревшее в 1.1''
 +
 
 +
| style="width: 326px;" | RecipeTE.registerTimerGridCraftTable(object description)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*description- Описание верстака  
 
*description- Описание верстака  
Строка 333: Строка 412:
 
| colspan="1" rowspan="2" style="width: 200px;" | Регистрация верстака с сеткой, требующий время на производство
 
| colspan="1" rowspan="2" style="width: 200px;" | Регистрация верстака с сеткой, требующий время на производство
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" |  
| style="width: 385px;" | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)
+
'''1'''<br/> ''Устаревшее в 1.1''
 +
 
 +
| style="width: 326px;" | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*name - Идентификатор/имя верстака  
 
*name - Идентификатор/имя верстака  
Строка 342: Строка 423:
  
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1'''
| style="width: 385px;" | RecipeTE.registerTimerCraftTable(object description)
+
| style="width: 326px;" | RecipeTE.registerTimerCraftTable(object description)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*description- Описание верстака  
 
*description- Описание верстака  
Строка 352: Строка 433:
 
| colspan="1" rowspan="2" style="width: 200px;" | Регистрация верстака без сетки, требующий время на производство
 
| colspan="1" rowspan="2" style="width: 200px;" | Регистрация верстака без сетки, требующий время на производство
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1'''
| style="width: 385px;" | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)
+
| style="width: 326px;" | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*name - Идентификатор/имя верстака  
 
*name - Идентификатор/имя верстака  
Строка 360: Строка 441:
  
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1'''
| style="width: 385px;" | RecipeTE.isRegistered(string name)
+
| style="width: 326px;" | RecipeTE.isRegistered(string name)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*name -&nbsp;Идентификатор/имя верстака  
 
*name -&nbsp;Идентификатор/имя верстака  
Строка 367: Строка 448:
 
| style="width: 200px;" | Вернет true, если верстак зарегистрирован, иначе false
 
| style="width: 200px;" | Вернет true, если верстак зарегистрирован, иначе false
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1'''
| style="width: 385px;" | RecipeTE.getMechanism(string name)
+
| style="width: 326px;" | RecipeTE.getMechanism(string name)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*name -&nbsp;Идентификатор/имя верстака  
 
*name -&nbsp;Идентификатор/имя верстака  
Строка 374: Строка 455:
 
| style="width: 200px;" | Вернет описание верстака если он сущечтвует, иначе false
 
| style="width: 200px;" | Вернет описание верстака если он сущечтвует, иначе false
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1'''
| style="width: 385px;" | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)
+
| style="width: 326px;" | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*result&nbsp;- Результат крафта
 +
**int id - ID предмета
 +
**int count - Кол-во
 +
**int data - Дата предмета 
 +
*recipe&nbsp;- Строка, образующая&nbsp;рецепт
 +
*ingridients&nbsp;- Объект ингридиентов
 +
 
 +
| colspan="1" rowspan="4" style="width: 200px;" | Добавить крафт для верстака ''name''
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1'''
 +
| style="width: 326px;" | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*name - Идентификатор/имя верстака  
 
*name - Идентификатор/имя верстака  
Строка 384: Строка 478:
 
*recipe&nbsp;- Строка, образующая&nbsp;рецепт  
 
*recipe&nbsp;- Строка, образующая&nbsp;рецепт  
 
*ingridients&nbsp;- Объект ингридиентов  
 
*ingridients&nbsp;- Объект ингридиентов  
*craft - функция крафта(Не обязательный)
+
*craft - функция крафта  
  
| style="width: 200px;" | Добавить крафт для верстака ''name''
 
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1.1'''
| style="width: 385px;" | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)
+
| style="width: 326px;" | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*result&nbsp;- Результат крафта
 +
**int id - ID предмета
 +
**int count - Кол-во
 +
**int data - Дата предмета 
 +
*recipe&nbsp;- Строка, образующая&nbsp;рецепт
 +
*ingridients&nbsp;- Объект ингридиентов
 +
*time_multiplier - Множитель времения(Только для верстаков с временем производства)
 +
 
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1.1'''
 +
| style="width: 326px;" | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*result&nbsp;- Результат крафта
 +
**int id - ID предмета
 +
**int count - Кол-во
 +
**int data - Дата предмета 
 +
*recipe&nbsp;- Строка, образующая&nbsp;рецепт
 +
*ingridients&nbsp;- Объект ингридиентов
 +
*time_multiplier - Множитель времения(Только для верстаков с временем производства)
 +
*craft - функция крафта
 +
 
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1'''
 +
| style="width: 326px;" | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*result&nbsp;- Результат крафта
 +
**int id - ID предмета
 +
**int count - Кол-во
 +
**int data - Дата предмета 
 +
*recipe&nbsp;- Массив строк, образующие рецепт
 +
*ingridients&nbsp;- Объект ингридиентов
 +
 
 +
| colspan="1" rowspan="4" style="width: 200px;" | Добавить крафт для верстака с сеткой ''name''
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1'''
 +
| style="width: 326px;" | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)
 +
| style="width: 379px;" |
 +
*name - Идентификатор/имя верстака
 +
*result&nbsp;- Результат крафта
 +
**int id - ID предмета
 +
**int count - Кол-во
 +
**int data - Дата предмета 
 +
*recipe&nbsp;- Массив строк, образующие рецепт
 +
*ingridients&nbsp;- Объект ингридиентов
 +
*craft - Функция крафта
 +
 
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1.1'''
 +
| style="width: 326px;" | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*name - Идентификатор/имя верстака  
 
*name - Идентификатор/имя верстака  
Строка 398: Строка 544:
 
*recipe&nbsp;- Массив строк, образующие рецепт  
 
*recipe&nbsp;- Массив строк, образующие рецепт  
 
*ingridients&nbsp;- Объект ингридиентов  
 
*ingridients&nbsp;- Объект ингридиентов  
*craft - Функция крафта (Не обязательный)  
+
*time_multiplier&nbsp;- Множитель времения(Только для верстаков с временем производства)  
  
| style="width: 200px;" | Добавить крафт для верстака с сеткой ''name''
 
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1.1'''
| style="width: 385px;" | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)
+
| style="width: 326px;" | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 +
*name - Идентификатор/имя верстака
 +
*result&nbsp;- Результат крафта
 +
**int id - ID предмета
 +
**int count - Кол-во
 +
**int data - Дата предмета 
 +
*recipe&nbsp;- Массив строк, образующие рецепт
 +
*ingridients&nbsp;- Объект ингридиентов
 +
*time_multiplier&nbsp;- Множитель времения(Только для верстаков с временем производства)
 +
*craft - функция крафта
 +
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1'''<br/> ''Устаревшее в 1.1''
 +
| style="width: 326px;" | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)
 +
| colspan="1" rowspan="2" style="width: 379px;" |
 
*name - Идентификатор/имя верстака  
 
*name - Идентификатор/имя верстака  
 
*TE&nbsp;- TileEntity  
 
*TE&nbsp;- TileEntity  
 
*condition -&nbsp;Функция условия (Не обязательный)  
 
*condition -&nbsp;Функция условия (Не обязательный)  
  
| style="width: 200px;" | Обработчик тика для TileEntity
+
| colspan="1" rowspan="2" style="width: 200px;" | Обработчик тика для TileEntity
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1.1'''
| colspan="2" rowspan="1" style="width: 385px;" | RecipeTE.outputSlotValid()
+
| style="width: 326px;" | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)
 +
|-
 +
| style="width: 121px; text-align: center;" | '''1'''
 +
| colspan="2" rowspan="1" style="width: 709px;" | RecipeTE.outputSlotValid()
 
| style="width: 200px;" | Функция проверки слота результата
 
| style="width: 200px;" | Функция проверки слота результата
 
|-
 
|-
| style="width: 61px; text-align: center;" | '''1'''
+
| style="width: 121px; text-align: center;" | '''1'''
| style="width: 385px;" | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)
+
| style="width: 326px;" | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)
 
| style="width: 379px;" |  
 
| style="width: 379px;" |  
 
*TE&nbsp;- TileEntity  
 
*TE&nbsp;- TileEntity  
Строка 423: Строка 585:
 
| style="width: 200px;" | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)
 
| style="width: 200px;" | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)
 
|}
 
|}
 
&nbsp;
 
 
</div>
 
</div>

Версия 17:30, 22 июня 2019

RecipeTELib - библиотека, упрощающая создание верстаков и печей.

Условия использования

  • Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество
  • Запрещено изменение кода библиотеки
  • Запрещено явное копирование кода в другие библиотеки или моды 

Используя данный продукт вы автоматически соглашаетесь с этими правилами

Документация

Инициализация

Импортируйте библиотеку.

IMPORT("RecipeTileEntityLib")

Верстак

Создание верстака

Для начала создаем блок:

IDRegistry.genBlockID("Workbench_Grid");
Block.createBlock("Workbench_Grid", [{
    name: "Workbench Grid", 
    texture: [
        ["work_table_bottom", 0], // bottom
        ["work_table_top", 0], // top
        ["work_table_side", 0], // back
        ["work_table_side", 1], // front
        ["work_table_side", 0], // left
        ["work_table_side", 0]  // right
    ], 
    inCreative: true 
}]);

Затем создаем наш интерфейс:

!ВАЖНО!: Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть "inputSlot"+ порядковое число слота, начиная с нуля. Слот результата должен иметь название "outputSlot", так же стоит задавать isValid для outputSlot как RecipeTE.outputSlotValid

var Workbench_Grid = new UI.StandartWindow({
    standart: {
        header: {text: {text: "Workbench Grid 4x4"}},
        inventory: {standart:true},
        background: {standart: true}
    },
    drawing: [{
        type: "bitmap",
        bitmap: "arrow",
        x: 600,
        y: 170, scale: 4
    }],
    elements:{
        "inputSlot0":{x:350, y:80, type:"slot"},
        "inputSlot1":{x:410, y:80, type:"slot"},
        "inputSlot2":{x:470, y:80, type:"slot"},
        "inputSlot3":{x:530, y:80, type:"slot"},

        "inputSlot4":{x:350, y:140, type:"slot"},
        "inputSlot5":{x:410, y:140, type:"slot"},
        "inputSlot6":{x:470, y:140, type:"slot"},
        "inputSlot7":{x:530, y:140, type:"slot"},

        "inputSlot8":{x:350, y:200, type:"slot"},
        "inputSlot9":{x:410, y:200, type:"slot"},
        "inputSlot10":{x:470, y:200, type:"slot"},
        "inputSlot11":{x:530, y:200, type:"slot"},

        "inputSlot12":{x:350, y:260, type:"slot"},
        "inputSlot13":{x:410, y:260, type:"slot"},
        "inputSlot14":{x:470, y:260, type:"slot"},
        "inputSlot15":{x:530, y:260, type:"slot"},

        "outputSlot":{x:698, y:170, type:"slot", isValid:RecipeTE.outputSlotValid }
    }
});

Затем регистрируем наш верстак, есть два способа:

  • RecipeTE.registerGridCraftTable(description);
RecipeTE.registerGridCraftTable({
    name:"Workbench_Grid",
    rows:4,
    cols:4
});
  • ​​RecipeTE.registerGridCraftTable(name, columns, rows);
RecipeTE.registerGridCraftTable("Workbench_Grid", 4, 4);

Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем RecipeTE.getTickResipes(name, TileEntity) :

TileEntity.registerPrototype(BlockID["Workbench_Grid"], {
    getGuiScreen: function(){
        return Workbench_Grid;
    },
    
    tick:function(){
        RecipeTE.getTickResipes("Workbench_Grid", this);
    }  
});

Создание рецептов для верстака

Создание рецептов для верстака с сеткой происходит через метод RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients), где:

  • name_workbench - имя верстака
  • result - объект результата
    • id - ID предмета
    • count - Кол-во предмета
    • data - Дата предмета
  • recipe - Массив строк крафта
  • ingredients - объект ингредиентов
RecipeTE.addGridRecipe("Workbench_Grid", {
    id:280,
    count:1
},
[   "aa",
    "aa"
], {
    a:{
        id:5
    }
});

RecipeTE.addGridRecipe("Workbench_Grid", {
    id: 281,
    count: 1
},
[   "aaaa",
    "a  a",
    "a  a",
    "aaaa"
], {
    a: {
        id: 1,
        data:0
    }
});

Электрическая(редстоун сигнал) печь

Создание печи

Для начала создаем блок:

IDRegistry.genBlockID("Furnace");
Block.createBlockWithRotation("Furnace", [{
    name: "Furnace", 
    texture: [
        ["iron_furnace_bottom", 0], // bottom
        ["iron_furnace_top", 0], // top
        ["iron_furnace_side", 0], // back
        ["iron_furnace_front", 0], // front
        ["iron_furnace_side", 0], // left
        ["iron_furnace_side", 0]  // right
    ], 
    inCreative: true 
}]);

Затем создаем наш интерфейс:

!ВАЖНО!: Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть "inputSlot"+ порядковое число слота, начиная с нуля. Слот результата должен иметь название "outputSlot", так же стоит задавть isValidдля outputSlot как RecipeTE.outputSlotValid, для шкалы процесса использовать имя "timerScale"

var Furnace = new UI.StandartWindow({
    standart: {
        header: {text: {text: "Furnace"}},
        inventory: {standart:true},
        background: {standart: true}
    },
    drawing: [{
        type: "bitmap",
        bitmap: "arrow",
        x: 600,
        y: 170,
        scale: 4
    }],
    elements:{
        "inputSlot0":{x:530, y:170, type:"slot"},
        
        "outputSlot":{x:698, y:170, type:"slot", isValid:RecipeTE.outputSlotValid },

        "timerScale":{
            type: "scale",
            x: 600,
            y: 170,
            direction:0,
            bitmap: "arrow_scale",
            scale: 4
        }
    }
});

Затем регистрируем наш верстак(печь), есть два способа:

  • RecipeTE.registerTimerCraftTable(description);
RecipeTE.registerTimerCraftTable({
    name:"Furnace",
    cols:1,
    timer:5*20
});
  • ​​RecipeTE.registerTimerCraftTable(name, columns, timer);
RecipeTE.registerTimerCraftTable("Furnace", 1, 5*20);

Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе redstone мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем RecipeTE.getTickResipes(name, TileEntity, condition) с нашим условием:

TileEntity.registerPrototype(BlockID["Furnace"], {
    getGuiScreen: function(){
        return Furnace;
    },
    redstone: function(params){
        if(params.power < 10)
            this.data.power = false;
        else
            this.data.power = true;
    },
    tick:function(){
        RecipeTE.getTickResipes("Furnace", this, function(TE){
            return TE.data.power;
        });
    }
});

Создание рецептов для печи

Создание рецептов для верстака(печи) без сетки происходит через метод RecipeTE.addRecipe(name_workbench, result, recipe, ingredients), где:

  • name_workbench - имя верстака
  • result - объект результата
    • id - ID предмета
    • count - Кол-во предмета
    • data - Дата предмета
  • recipe - Строка крафта
  • ingredients - объект ингредиентов
RecipeTE.addRecipe("Furnace", {id:280, count:1}, "a", {a:{id:5}});

Полная документация

Версия Метод Аргументы Описание
1 RecipeTE.registerGridCraftTable(object description)
  • description- Описание верстака
    • name - Идентификатор/имя верстака
    • columns/cols - Кол-во колонок
    • rows - Кол-во строк
    • elements - Объект с названиями элементов(С версии 1.1, не обязательный)
      • input - Массив строк(Кол-во жлементов должно быть равно columns * row) или строка(Слоты должны иметь название elements.input + индекс) названия входных слотов
      • output - Строка названия выходного слото
      • progress - Строка названия шкалы прогресса
    • time - Длительность производства(С версии 1.1, не обязательный)
Регистрация верстака с сеткой
1 RecipeTE.registerGridCraftTable(string name, int columns, int rows)
  • name - Идентификатор/имя верстака
  • columns - Кол-во колонок
  • rows - Кол-во строк
1.1 RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)
  • name - Идентификатор/имя верстака
  • columns - Кол-во колонок
  • rows - Кол-во строк
  • elements - Объект с названиями элементов
    • input - Массив строк(Кол-во жлементов должно быть равно columns * row) или строка(Слоты должны иметь название elements.input + индекс) названия входных слотов
    • output - Строка названия выходного слото
    • progress - Строка названия шкалы прогресса
1.1 RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)
  • name - Идентификатор/имя верстака
  • columns - Кол-во колонок
  • rows - Кол-во строк
  • time - Длительность производства
1.1 RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)
  • name - Идентификатор/имя верстака
  • columns - Кол-во колонок
  • rows - Кол-во строк
  • elements - Объект с названиями элементов
    • input - Массив строк(Кол-во жлементов должно быть равно columns * row) или строка(Слоты должны иметь название elements.input + индекс) названия входных слотов
    • output - Строка названия выходного слото
    • progress - Строка названия шкалы прогресса
  • time - Длительность производства
1 RecipeTE.registerCraftTable(object description)
  • description- Описание верстака
    • name - Идентификатор/имя верстака
    • columns/cols - Кол-во слотов(Версия 1)
    • slots - Кол-во слотов(С версии 1.1)
    • elements - Объект с названиями элементов(С версии 1.1, не обязательный)
      • input - Массив строк(Кол-во жлементов должно быть равно columns * row) или строка(Слоты должны иметь название elements.input + индекс) названия входных слотов
      • output - Строка названия выходного слото
      • progress - Строка названия шкалы прогресса
    • time - Длительность производства(С версии 1.1, не обязательный)
Регистрация верстака без сетки
1 RecipeTE.registerCraftTable(string name, int slots)
  • name - Идентификатор/имя верстака
  • slots - Кол-во слотов
1.1 RecipeTE.registerCraftTable(string name, int slots, int time)
  • name - Идентификатор/имя верстака
  • slots - Кол-во слотов
  • time - Длительность производства
1.1 RecipeTE.registerCraftTable(string name, int slots, object elements)
  • name - Идентификатор/имя верстака
  • slots - Кол-во слотов
  • elements - Объект с названиями элементов
    • input - Массив строк(Кол-во жлементов должно быть равно columns * row) или строка(Слоты должны иметь название elements.input + индекс) названия входных слотов
    • output - Строка названия выходного слото
    • progress - Строка названия шкалы прогресса
1.1 RecipeTE.registerCraftTable(string name, int slots, object elements, int time)
  • name - Идентификатор/имя верстака
  • slots - Кол-во слотов
  • elements - Объект с названиями элементов
    • input - Массив строк(Кол-во жлементов должно быть равно columns * row) или строка(Слоты должны иметь название elements.input + индекс) названия входных слотов
    • output - Строка названия выходного слото
    • progress - Строка названия шкалы прогресса
  • time - Длительность производства

1
Устаревшее в 1.1

RecipeTE.registerTimerGridCraftTable(object description)
  • description- Описание верстака
    • name - Идентификатор/имя верстака
    • columns/cols - Кол-во колонок
    • rows - Кол-во строк
    • timer - Время производства в тиках
Регистрация верстака с сеткой, требующий время на производство

1
Устаревшее в 1.1

RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)
  • name - Идентификатор/имя верстака
  • columns - Кол-во колонок
  • rows - Кол-во строк
  • timer - Время производства в тиках
1 RecipeTE.registerTimerCraftTable(object description)
  • description- Описание верстака
    • name - Идентификатор/имя верстака
    • columns/cols - Кол-во слотов
    • timer - Время производства в тиках
Регистрация верстака без сетки, требующий время на производство
1 RecipeTE.registerTimerCraftTable(string name, int slots, int timer)
  • name - Идентификатор/имя верстака
  • slots - Кол-во слотов
  • timer - Время производства в тиках
1 RecipeTE.isRegistered(string name)
  • name - Идентификатор/имя верстака
Вернет true, если верстак зарегистрирован, иначе false
1 RecipeTE.getMechanism(string name)
  • name - Идентификатор/имя верстака
Вернет описание верстака если он сущечтвует, иначе false
1 RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)
  • name - Идентификатор/имя верстака
  • result - Результат крафта
    • int id - ID предмета
    • int count - Кол-во
    • int data - Дата предмета
  • recipe - Строка, образующая рецепт
  • ingridients - Объект ингридиентов
Добавить крафт для верстака name
1 RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)
  • name - Идентификатор/имя верстака
  • result - Результат крафта
    • int id - ID предмета
    • int count - Кол-во
    • int data - Дата предмета
  • recipe - Строка, образующая рецепт
  • ingridients - Объект ингридиентов
  • craft - функция крафта
1.1 RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)
  • name - Идентификатор/имя верстака
  • result - Результат крафта
    • int id - ID предмета
    • int count - Кол-во
    • int data - Дата предмета
  • recipe - Строка, образующая рецепт
  • ingridients - Объект ингридиентов
  • time_multiplier - Множитель времения(Только для верстаков с временем производства)
1.1 RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)
  • name - Идентификатор/имя верстака
  • result - Результат крафта
    • int id - ID предмета
    • int count - Кол-во
    • int data - Дата предмета
  • recipe - Строка, образующая рецепт
  • ingridients - Объект ингридиентов
  • time_multiplier - Множитель времения(Только для верстаков с временем производства)
  • craft - функция крафта
1 RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)
  • name - Идентификатор/имя верстака
  • result - Результат крафта
    • int id - ID предмета
    • int count - Кол-во
    • int data - Дата предмета
  • recipe - Массив строк, образующие рецепт
  • ingridients - Объект ингридиентов
Добавить крафт для верстака с сеткой name
1 RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)
  • name - Идентификатор/имя верстака
  • result - Результат крафта
    • int id - ID предмета
    • int count - Кол-во
    • int data - Дата предмета
  • recipe - Массив строк, образующие рецепт
  • ingridients - Объект ингридиентов
  • craft - Функция крафта
1.1 RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)
  • name - Идентификатор/имя верстака
  • result - Результат крафта
    • int id - ID предмета
    • int count - Кол-во
    • int data - Дата предмета
  • recipe - Массив строк, образующие рецепт
  • ingridients - Объект ингридиентов
  • time_multiplier - Множитель времения(Только для верстаков с временем производства)
1.1 RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)
  • name - Идентификатор/имя верстака
  • result - Результат крафта
    • int id - ID предмета
    • int count - Кол-во
    • int data - Дата предмета
  • recipe - Массив строк, образующие рецепт
  • ingridients - Объект ингридиентов
  • time_multiplier - Множитель времения(Только для верстаков с временем производства)
  • craft - функция крафта
1
Устаревшее в 1.1
RecipeTE.getTickResipes(string name, TileEntity TE, function condition)
  • name - Идентификатор/имя верстака
  • TE - TileEntity
  • condition - Функция условия (Не обязательный)
Обработчик тика для TileEntity
1.1 RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)
1 RecipeTE.outputSlotValid() Функция проверки слота результата
1 RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)
  • TE - TileEntity
  • workbench - Объект описания верстака
Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)