80LK (обсуждение | вклад) м |
YztGrifYT (обсуждение | вклад) м (исправленные) |
||
| (не показано 57 промежуточных версий 5 участников) | |||
| Строка 1: | Строка 1: | ||
<div class="mw-parser-output"><div class="mw-parser-output">'''RecipeTELib''''' ''- библиотека, упрощающая создание верстаков и печей.</div> <div class="mw-parser-output"> | <div class="mw-parser-output"><div class="mw-parser-output">'''RecipeTELib''''' ''- библиотека, упрощающая создание верстаков и печей.</div> <div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"><div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"><div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"><div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"> | ||
<div class="mw-parser-output"> | <div class="mw-parser-output"> | ||
== Загрузка == | == Загрузка == | ||
| Строка 10: | Строка 19: | ||
|- | |- | ||
| style="text-align: center; width: 63px;" | '''1''' | | style="text-align: center; width: 63px;" | '''1''' | ||
| − | | style="text-align: center; width: 57px;" | Скачать | + | | style="text-align: center; width: 57px;" | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать] |
| + | | style="width: 362px;" | | ||
| + | *Первая версия | ||
| + | |||
| + | |- | ||
| + | | style="text-align: center; width: 63px;" | '''1.1''' | ||
| + | | style="text-align: center; width: 57px;" | [https://vk.com/wall-80513593_2248 Скачать] | ||
| style="width: 362px;" | | | style="width: 362px;" | | ||
| − | + | *Слияние методов registerGridCraftTable and registerTimerGridCraftTable | |
| + | *Слияние методов registerCraftTable and registerTimerCraftTable | ||
| + | *Исправлено имя метода с getTickResipes на getTickRecipes | ||
| + | *Добавлена возможность использовать свои идентификаторы элементов | ||
| + | *Для рецептов добавлен параметр множителя времени крафта | ||
| + | |- | ||
| + | | style="text-align: center; width: 63px;" | '''1.2''' | ||
| + | | style="text-align: center; width: 57px;" | [https://vk.com/wall-80513593_2253 Скачать] | ||
| + | | style="width: 362px;" | | ||
| + | *Удален метод registerTimerGridCraftTable | ||
| + | *Удален метод registerTimerCraftTable | ||
| + | *Удален метод getTickResipes | ||
| + | *Исправлена смена крафта у печей | ||
| + | |||
| + | |- | ||
| + | | style="text-align: center; width: 63px;" | '''2.0''' | ||
| + | | style="text-align: center; width: 57px;" | | ||
| + | | style="width: 362px;" | | ||
| + | *Библиотека переписана | ||
| + | *Добавлена возможность создавать бесформенные рецепты | ||
| + | |||
| + | |- | ||
| + | | style="text-align: center; width: 63px;" | '''2.1''' | ||
| + | | style="text-align: center; width: 57px;" | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub] | ||
| + | | style="width: 362px;" | | ||
| + | *Исправление ошибок | ||
| + | *Поддержка RecipeViewer | ||
| + | *В TileEntity верстака добавлен метод setWorkbench(sid) | ||
| + | |||
| + | |- | ||
| + | | style="text-align: center; width: 63px;" | '''GitHub''' | ||
| + | | style="text-align: center; width: 57px;" | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub] | ||
| + | | style="width: 362px;" | | ||
|} | |} | ||
| − | |||
| − | |||
</div> | </div> | ||
| Строка 28: | Строка 73: | ||
<div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> | ||
| − | == Документация == | + | <div class="mw-parser-output"> |
| + | <div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"> | ||
| + | == Документация <span style="color:#dddddd;">(2.0 и выше)</span> == | ||
| − | |||
| − | |||
=== Инициализация === | === Инициализация === | ||
Импортируйте библиотеку. | Импортируйте библиотеку. | ||
<syntaxhighlight lang="JavaScript">IMPORT("RecipeTileEntityLib")</syntaxhighlight> | <syntaxhighlight lang="JavaScript">IMPORT("RecipeTileEntityLib")</syntaxhighlight> | ||
| − | |||
=== Верстак === | === Верстак === | ||
| + | <div class="mw-parser-output"><div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"> | ||
| + | ==== Регистрация верстака ==== | ||
| + | |||
| + | Для начала создаем блок: | ||
| + | <syntaxhighlight lang="JavaScript">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 | ||
| + | }]);</syntaxhighlight> | ||
| + | |||
| + | Затем создаем наш интерфейс: | ||
| + | |||
| + | {| border="1" cellpadding="0" cellspacing="0" style="width: 100%;" | ||
| + | |- | ||
| + | | style="background-color: rgb(204, 0, 0);" | <span style="color:#ffffff;">'''ВАЖНО!: '''Слоты, в которые нужно ложить предмет нужно называть "'''''inputSlot'''''"+ '''порядковое число''' слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.<br/> Слот результата должен иметь название "'''''outputSlot'''''", иначе указать имя слота при регистрации.</span> | ||
| + | |} | ||
| + | <syntaxhighlight lang="JavaScript">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"} | ||
| + | } | ||
| + | });</syntaxhighlight> | ||
| + | |||
| + | Затем регистрируем наш верстак: | ||
| + | <syntaxhighlight lang="JavaScript">RecipeTE.registerWorkbench("Workbench_Grid",//SID блока | ||
| + | { | ||
| + | rows:4,//Кол-во строк сетки | ||
| + | cols:4,//Кол-во столбцов сетки | ||
| + | GuiScreen:Workbench_Grid //Интерфейс верстака | ||
| + | //Так же тут можно(И нужно) описать поля TileEntity | ||
| + | });</syntaxhighlight> | ||
| + | </div> | ||
<div class="mw-parser-output"> | <div class="mw-parser-output"> | ||
| + | ==== Добавление рецептов для верстака ==== | ||
| + | |||
| + | Создание рецептов для верстака с сеткой происходит через метод '''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где: | ||
| + | |||
| + | *name_workbench - имя верстака | ||
| + | *result - объект результата | ||
| + | **id - ID предмета | ||
| + | **count - Кол-во предмета | ||
| + | **data - Дата предмета | ||
| + | *recipe - Массив строк крафта | ||
| + | *ingredients - объект ингредиентов | ||
| + | <syntaxhighlight lang="JavaScript">RecipeTE.addShapeRecipe("Workbench_Grid", { | ||
| + | id:280, | ||
| + | count:1 | ||
| + | }, [ | ||
| + | "aa", | ||
| + | "aa" | ||
| + | ], { | ||
| + | a:{ | ||
| + | id:5 | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | RecipeTE.addShapeRecipe("Workbench_Grid", { | ||
| + | id:280, | ||
| + | count:1 | ||
| + | }, [ | ||
| + | "aaaa", | ||
| + | "a a", | ||
| + | "a a", | ||
| + | "aaaa" | ||
| + | ], { | ||
| + | a:{ | ||
| + | id:1 | ||
| + | } | ||
| + | });</syntaxhighlight> | ||
| + | <div class="mw-parser-output"> </div> </div> | ||
| + | |||
| + | === Электрическая печь(Редстоун сигнал) === | ||
| + | <div class="mw-parser-output"><div class="mw-parser-output"> | ||
| + | <div class="mw-parser-output"> | ||
| + | ==== Регистрация печи ==== | ||
| + | <div class="mw-parser-output"> | ||
| + | Для начала создаем блок: | ||
| + | <syntaxhighlight lang="JavaScript">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 | ||
| + | }]);</syntaxhighlight> | ||
| + | |||
| + | Затем создаем наш интерфейс: | ||
| + | |||
| + | {| border="1" cellpadding="0" cellspacing="0" | ||
| + | |- | ||
| + | | style="background-color: rgb(204, 0, 0);" | <span style="color:#ffffff;">'''ВАЖНО!: '''Слоты, в которые нужно ложить предмет нужно называть "'''''inputSlot'''''"+ '''порядковое число''' слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.<br/> Слот результата должен иметь название "'''''outputSlot'''''", иначе указать имя слота при регистрации.</span> | ||
| + | |} | ||
| + | <syntaxhighlight lang="JavaScript">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:{ | ||
| + | "myInputSlot":{x:530, y:170, type:"slot"}, | ||
| + | |||
| + | "myOutputSlot":{x:698, y:170, type:"slot", isValid:RecipeTE.outputSlotValid }, | ||
| + | |||
| + | "timerScale":{ | ||
| + | type: "scale", | ||
| + | x: 600, | ||
| + | y: 170, | ||
| + | direction:0, | ||
| + | bitmap: "arrow_scale", | ||
| + | scale: 4 | ||
| + | } | ||
| + | } | ||
| + | });</syntaxhighlight> | ||
| + | |||
| + | Затем регистрируем наш верстак: | ||
| + | <syntaxhighlight lang="JavaScript">RecipeTE.registerWorkbench("Furnace", { | ||
| + | time:5 * 20, //Время крафта | ||
| + | slots:1, //Кол-во слотов | ||
| + | GuiScreen:Furnace, //Интерфейс печи | ||
| + | input:["myInputSlot"], //Входные слоты | ||
| + | output:"myOutputSlot", //Слот результата | ||
| + | scale:"timerScale", //Шкала прогресса | ||
| + | condition:function(){ //Условие работы верстака | ||
| + | return this.data.power | ||
| + | }, | ||
| + | //Параметры TileEntity | ||
| + | defaultValues:{ | ||
| + | power:false, | ||
| + | }, | ||
| + | redstone: function(params){ | ||
| + | if(params.power < 10) | ||
| + | this.data.power = false; | ||
| + | else | ||
| + | this.data.power = true; | ||
| + | } | ||
| + | }); | ||
| + | </syntaxhighlight> | ||
| + | </div> </div> | ||
| + | |||
| + | <div class="mw-parser-output"> | ||
| + | ==== Добавление рецептов для печи ==== | ||
| + | |||
| + | Создание бесформенных рецептов для верстака происходит через метод '''''RecipeTE.addRecipe(name_workbench, result, ingredients)''''', где: | ||
| + | |||
| + | *name_workbench - имя верстака | ||
| + | *result - объект результата | ||
| + | **id - ID предмета | ||
| + | **count - Кол-во предмета | ||
| + | **data - Дата предмета | ||
| + | *ingredients - Массив ингредиентов | ||
| + | <syntaxhighlight lang="JavaScript">RecipeTE.addRecipe("Furnace", {id:280}, [{id:5}]); | ||
| + | RecipeTE.addRecipe("Furnace", {id:281}, [{id:1}], .2); | ||
| + | </syntaxhighlight> | ||
| + | </div> | ||
| + | |||
| + | === Интеграция с RecipeViewer === | ||
<div class="mw-parser-output"> | <div class="mw-parser-output"> | ||
<div class="mw-parser-output"> | <div class="mw-parser-output"> | ||
<div class="mw-parser-output"> | <div class="mw-parser-output"> | ||
| + | <h3>Добавление ваших крафтов происходит автоматически.</h3> | ||
| + | |||
| + | <p>В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.</p> | ||
| + | |||
| + | <pre class="fck_mw_syntaxhighlight"> | ||
| + | <syntaxhighlight lang="JavaScript"> | ||
| + | { | ||
| + | type: "bitmap", | ||
| + | bitmap: "arrow", | ||
| + | x: 600, | ||
| + | y: 170, | ||
| + | RV:true, | ||
| + | scale: 4 | ||
| + | }</syntaxhighlight></pre> | ||
| + | |||
| + | <p>Для задания своего интерфейса в RecipeViewer прототип должен иметь поле RVGuiScreen с полями drawable и elements.<br /> | ||
| + | Входные слоты имеют имя input+index, выходные - output+index.</p> | ||
| + | |||
| + | <p>Подробнее об элементах на странице <a href="InnerCore%2F%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B2%20GUI">Введение в GUI</a>. </div></p> | ||
| + | |||
| + | <div class="mw-parser-output"> </div> | ||
| + | </div> | ||
| + | |||
| + | === Полная документация === | ||
| + | |||
| + | {| border="1" cellpadding="1" cellspacing="1" style="width: 100%;" | ||
| + | |- | ||
| + | | style="text-align: center;" | '''Версия''' | ||
| + | | style="text-align: center;" | '''Метод''' | ||
| + | | style="text-align: center;" | '''Аргументы''' | ||
| + | | style="text-align: center;" | '''Описание''' | ||
| + | |- | ||
| + | | style="text-align: center; vertical-align: top;" | '''2.0''' | ||
| + | | style="text-align: center; vertical-align: top;" | void RecipeTE.addWorkbench(string name, object Info) | ||
| + | | style="text-align: center; vertical-align: top;" | | ||
| + | *name - Имя верстака | ||
| + | *TE_Prototype - объект прототипа TE | ||
| + | **int columns || cols - кол-ыо столбцов сетки | ||
| + | **int rows - кол-во строк сетки | ||
| + | **int slots - кол-во слотов(В место cols и rows) | ||
| + | **UIWindow gui - Окно для TileEntity | ||
| + | **int time - Кол-во тиков, нужное для крафта | ||
| + | **string output - имя слота для результата(По стандарту outputSlot) | ||
| + | **string input - префикс слотов входных предметов(По стандарту inputSlot) | ||
| + | **string[] input - массив имен входных слотов. | ||
| + | **string scale - Имя шкалы используемое для отображения прогресса | ||
| + | |||
| + | | style="vertical-align: top;" | Регистрирует верстак с именем name не привязывая его к блоку | ||
| + | |- | ||
| + | | style="text-align: center; vertical-align: top;" | '''2.0''' | ||
| + | | style="text-align: center; vertical-align: top;" | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype) | ||
| + | | style="text-align: center; vertical-align: top;" | | ||
| + | *block_sid - Строковый ID блока | ||
| + | *TE_Prototype - объект прототипа TE | ||
| + | **int columns || cols - кол-ыо столбцов сетки | ||
| + | **int rows - кол-во строк сетки | ||
| + | **int slots - кол-во слотов(В место cols и rows) | ||
| + | **UIWindow gui - Окно для TileEntity | ||
| + | **int time - Кол-во тиков, нужное для крафта | ||
| + | **string output - имя слота для результата(По стандарту outputSlot) | ||
| + | **string input - префикс слотов входных предметов(По стандарту inputSlot) | ||
| + | **string[] input - массив имен входных слотов. | ||
| + | **string scale - Имя шкалы используемое для отображения прогресса | ||
| + | **function condition - функция-условие функционирования верстака | ||
| + | |||
| + | | style="vertical-align: top;" | Регистрирует верстак для блока с SID block_sid | ||
| + | |- | ||
| + | | style="text-align: center; vertical-align: top;" | '''2.0''' | ||
| + | | style="text-align: center; vertical-align: top;" | bool RecipeTE.isRegistered(string block_sid) | ||
| + | | style="vertical-align: top;" | | ||
| + | *block_sid - Строковый ID блока | ||
| + | |||
| + | | style="vertical-align: top;" | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false | ||
| + | |- | ||
| + | | style="text-align: center; vertical-align: top;" | '''2.0''' | ||
| + | | style="text-align: center; vertical-align: top;" | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft) | ||
| + | | style="vertical-align: top;" | | ||
| + | *block_sid - Строковый ID блока | ||
| + | *result - результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int data - дата предмета(По стандарту 0) | ||
| + | **int count - Кол-во предметоа(По стандарту 1) | ||
| + | *ingridients - Массив объектов ингредиента | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во предметоа(По стандарту 1) | ||
| + | **int data - дата предмета(По стандарту 0) | ||
| + | *time_multiplier - множитель времени крафта(По стандарту 1) | ||
| + | *craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) | ||
| + | |||
| + | | style="vertical-align: top;" | Добавлет безформенный рецепт для верстака block_sid | ||
| + | |- | ||
| + | | style="text-align: center; vertical-align: top;" | '''2.0''' | ||
| + | | style="text-align: center; vertical-align: top;" | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft) | ||
| + | | style="vertical-align: top;" | | ||
| + | *block_sid - Строковый ID блока | ||
| + | *result - результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int data - дата предмета(По стандарту 0) | ||
| + | **int count - Кол-во предметоа(По стандарту 1) | ||
| + | *recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) | ||
| + | *ingridients - Объект описывающий символы рецепта как ингредиент<br/> Объект ингредиента: | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во предметоа(По стандарту 1) | ||
| + | **int data - дата предмета(По стандарту 0) | ||
| + | *time_multiplier - множитель времени крафта(По стандарту 1) | ||
| + | *craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) | ||
| + | |||
| + | | style="vertical-align: top;" | Добавляет крафт для верстака block_sid | ||
| + | |- | ||
| + | | style="text-align: center; vertical-align: top;" | '''2.0''' | ||
| + | | style="text-align: center; vertical-align: top;" | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft) | ||
| + | | style="vertical-align: top;" | | ||
| + | *block_sid - Строковый ID блока | ||
| + | *result - результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int data - дата предмета(По стандарту 0) | ||
| + | **int count - Кол-во предметоа(По стандарту 1) | ||
| + | *recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) | ||
| + | *ingridients - Объект описывающий символы рецепта как ингредиент<br/> Объект ингредиента: | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во предметоа(По стандарту 1) | ||
| + | **int data - дата предмета(По стандарту 0) | ||
| + | *time_multiplier - множитель времени крафта(По стандарту 1) | ||
| + | *craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) | ||
| + | |||
| + | | style="vertical-align: top;" | Добавляет крафт для верстака block_sid | ||
| + | |- | ||
| + | | style="text-align: center; vertical-align: top;" | '''2.0''' | ||
| + | | style="text-align: center; vertical-align: top;" | void RecipeTE.defaultCraftEvent(TileEntity TE) | ||
| + | | style="vertical-align: top;" | | ||
| + | *TE - TileEntity верстака | ||
| + | |||
| + | | style="vertical-align: top;" | Стандартная функция крафта | ||
| + | |} | ||
| + | |||
| + | </div> </div> </div> </div> </div> </div> </div> </div> </div> | ||
| + | </div> | ||
| + | |||
| + | == Документация <span style="color:#95a5a6;"><span style="font-size:smaller;">(до версии 2.0)</span></span> == | ||
| + | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> | ||
| + | === Инициализация === | ||
| + | |||
| + | Импортируйте библиотеку. | ||
| + | <syntaxhighlight lang="JavaScript">IMPORT("RecipeTileEntityLib")</syntaxhighlight> | ||
| + | </div> </div> | ||
| + | === Верстак === | ||
| + | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> | ||
==== Создание верстака ==== | ==== Создание верстака ==== | ||
| − | Для начала создаем блок | + | Для начала создаем блок: |
<syntaxhighlight lang="JavaScript">IDRegistry.genBlockID("Workbench_Grid"); | <syntaxhighlight lang="JavaScript">IDRegistry.genBlockID("Workbench_Grid"); | ||
Block.createBlock("Workbench_Grid", [{ | Block.createBlock("Workbench_Grid", [{ | ||
| Строка 61: | Строка 461: | ||
}]);</syntaxhighlight> | }]);</syntaxhighlight> | ||
| − | Затем создаем наш интерфейс | + | Затем создаем наш интерфейс: |
| − | <syntaxhighlight lang="JavaScript">var Workbench_Grid = new UI.StandartWindow({ | + | <blockquote> |
| + | <span style="font-size:small;">'''!ВАЖНО!: '''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть "'''''inputSlot'''''"+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название "'''''outputSlot'''''", так же стоит задавать '''''isValid''''' для outputSlot как '''''RecipeTE.outputSlotValid'''''</span> | ||
| + | </blockquote> <syntaxhighlight lang="JavaScript">var Workbench_Grid = new UI.StandartWindow({ | ||
standart: { | standart: { | ||
header: {text: {text: "Workbench Grid 4x4"}}, | header: {text: {text: "Workbench Grid 4x4"}}, | ||
| Строка 102: | Строка 504: | ||
*'''''RecipeTE.registerGridCraftTable(description);''''' | *'''''RecipeTE.registerGridCraftTable(description);''''' | ||
| − | + | ||
| − | + | | |
| − | + | <syntaxhighlight lang="JavaScript">RecipeTE.registerGridCraftTable({ | |
| − | });</ | + | name:"Workbench_Grid", |
| + | rows:4, | ||
| + | cols:4 | ||
| + | });</syntaxhighlight> | ||
*'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' | *'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' | ||
| − | |||
| | ||
| − | </ | + | <syntaxhighlight lang="JavaScript">RecipeTE.registerGridCraftTable("Workbench_Grid", 4, 4);</syntaxhighlight> |
| + | Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity) ''''': | ||
| + | <syntaxhighlight lang="JavaScript">TileEntity.registerPrototype(BlockID["Workbench_Grid"], { | ||
| + | getGuiScreen: function(){ | ||
| + | return Workbench_Grid; | ||
| + | }, | ||
| + | |||
| + | tick:function(){ | ||
| + | RecipeTE.getTickResipes("Workbench_Grid", this); | ||
| + | } | ||
| + | }); | ||
| + | </syntaxhighlight> | ||
| + | </div> | ||
==== Создание рецептов для верстака ==== | ==== Создание рецептов для верстака ==== | ||
| + | Создание рецептов для верстака с сеткой происходит через метод '''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где: | ||
| + | |||
| + | *name_workbench - имя верстака | ||
| + | *result - объект результата | ||
| + | **id - ID предмета | ||
| + | **count - Кол-во предмета | ||
| + | **data - Дата предмета | ||
| + | *recipe - Массив строк крафта | ||
| + | *ingredients - объект ингредиентов | ||
| + | |||
| + | | ||
| + | <syntaxhighlight lang="JavaScript">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 | ||
| + | } | ||
| + | });</syntaxhighlight> | ||
| + | </div> | ||
=== Электрическая(редстоун сигнал) печь === | === Электрическая(редстоун сигнал) печь === | ||
| + | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> | ||
| + | ==== Создание печи ==== | ||
| + | |||
| + | Для начала создаем блок: | ||
| + | <syntaxhighlight lang="JavaScript">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 | ||
| + | }]);</syntaxhighlight> | ||
| + | |||
| + | Затем создаем наш интерфейс: | ||
| + | <blockquote> | ||
| + | <span style="font-size:small;">'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''"'''inputSlot'''"''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название "'''''outputSlot'''''", так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''"timerScale"'''''</span> | ||
| + | </blockquote> <syntaxhighlight lang="JavaScript">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 | ||
| + | } | ||
| + | } | ||
| + | });</syntaxhighlight> | ||
| + | |||
| + | Затем регистрируем наш верстак(печь), есть два способа: | ||
| + | |||
| + | *'''RecipeTE.registerTimerCraftTable(description);''' | ||
| + | |||
| + | | ||
| + | <syntaxhighlight lang="JavaScript">RecipeTE.registerTimerCraftTable({ | ||
| + | name:"Furnace", | ||
| + | cols:1, | ||
| + | timer:5*20 | ||
| + | }); | ||
| + | </syntaxhighlight> | ||
| − | = | + | *'''RecipeTE.registerTimerCraftTable(name, columns, timer);''' |
| + | |||
| + | | ||
| + | <syntaxhighlight lang="JavaScript">RecipeTE.registerTimerCraftTable("Furnace", 1, 5*20);</syntaxhighlight> | ||
| + | Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием: | ||
| + | <syntaxhighlight lang="JavaScript">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; | ||
| + | }); | ||
| + | } | ||
| + | });</syntaxhighlight> | ||
| + | </div> | ||
==== Создание рецептов для печи ==== | ==== Создание рецептов для печи ==== | ||
| + | |||
| + | Создание рецептов для верстака(печи) без сетки происходит через метод '''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где: | ||
| + | |||
| + | *name_workbench - имя верстака | ||
| + | *result - объект результата | ||
| + | **id - ID предмета | ||
| + | **count - Кол-во предмета | ||
| + | **data - Дата предмета | ||
| + | *recipe - Строка крафта | ||
| + | *ingredients - объект ингредиентов | ||
| | ||
| − | </div> </div> </div> | + | <syntaxhighlight lang="JavaScript">RecipeTE.addRecipe("Furnace", {id:280, count:1}, "a", {a:{id:5}}); |
| + | </syntaxhighlight> | ||
| + | </div> <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> | ||
| + | |||
| + | <div class="mw-parser-output"> | ||
| + | === Полная документация === | ||
| + | |||
| + | {| border="1" cellpadding="1" cellspacing="1" style="width: 100%;" | ||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''Версия''' | ||
| + | | style="width: 326px; text-align: center;" | '''Метод''' | ||
| + | | style="text-align: center; width: 379px;" | '''Аргументы''' | ||
| + | | style="text-align: center; width: 200px;" | '''Описание''' | ||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1''' | ||
| + | | style="width: 326px;" | RecipeTE.registerGridCraftTable(object description) | ||
| + | | style="text-align: center; width: 379px;" | | ||
| + | *description- Описание верстака | ||
| + | **name - Идентификатор/имя верстака | ||
| + | **columns/cols - Кол-во колонок | ||
| + | **rows - Кол-во строк | ||
| + | **elements - Объект с названиями элементов(С версии 1.1, не обязательный) | ||
| + | ***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс) названия входных слотов | ||
| + | ***output - Строка названия выходного слото | ||
| + | ***progress - Строка названия шкалы прогресса | ||
| + | **time - Длительность производства(С версии 1.1, не обязательный) | ||
| + | |||
| + | | colspan="1" rowspan="5" style="width: 200px;" | Регистрация верстака с сеткой | ||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1''' | ||
| + | | style="width: 326px;" | RecipeTE.registerGridCraftTable(string name, int columns, int rows) | ||
| + | | style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *columns - Кол-во колонок | ||
| + | *rows - Кол-во строк | ||
| + | |||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1.1''' | ||
| + | | 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'' + индекс) названия входных слотов | ||
| + | **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'' + индекс) названия входных слотов | ||
| + | **output - Строка названия выходного слото | ||
| + | **progress - Строка названия шкалы прогресса | ||
| + | *time - Длительность производства | ||
| + | |||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1''' | ||
| + | | style="width: 326px;" | RecipeTE.registerCraftTable(object description) | ||
| + | | style="width: 379px;" | | ||
| + | *description- Описание верстака | ||
| + | **name - Идентификатор/имя верстака | ||
| + | **columns/cols - Кол-во слотов(Версия 1) | ||
| + | **slots - Кол-во слотов(С версии 1.1) | ||
| + | **elements - Объект с названиями элементов(С версии 1.1, не обязательный) | ||
| + | ***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс) названия входных слотов | ||
| + | ***output - Строка названия выходного слото | ||
| + | ***progress - Строка названия шкалы прогресса | ||
| + | **time - Длительность производства(С версии 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 - Кол-во слотов | ||
| + | |||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1.1''' | ||
| + | | style="width: 326px;" | RecipeTE.registerCraftTable(string name, int slots, int time) | ||
| + | | style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *slots - Кол-во слотов | ||
| + | *time - Длительность производства | ||
| + | |||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1.1''' | ||
| + | | style="width: 326px;" | RecipeTE.registerCraftTable(string name, int slots, object elements) | ||
| + | | style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *slots - Кол-во слотов | ||
| + | *elements - Объект с названиями элементов | ||
| + | **input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс) названия входных слотов | ||
| + | **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 - Кол-во слотов | ||
| + | *elements - Объект с названиями элементов | ||
| + | **input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс) названия входных слотов | ||
| + | **output - Строка названия выходного слото | ||
| + | **progress - Строка названия шкалы прогресса | ||
| + | *time - Длительность производства | ||
| + | |||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | | ||
| + | '''1'''<br/> ''Устаревшее в 1.1<br/> <span style="color:#e74c3c;"><span style="background-color:#ffffff;">Удалено в 1.2</span></span>'' | ||
| + | |||
| + | | style="width: 326px;" | RecipeTE.registerTimerGridCraftTable(object description) | ||
| + | | style="width: 379px;" | | ||
| + | *description- Описание верстака | ||
| + | **name - Идентификатор/имя верстака | ||
| + | **columns/cols - Кол-во колонок | ||
| + | **rows - Кол-во строк | ||
| + | **timer - Время производства в тиках | ||
| + | |||
| + | | colspan="1" rowspan="2" style="width: 200px;" | Регистрация верстака с сеткой, требующий время на производство | ||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | | ||
| + | '''1'''<br/> ''Устаревшее в 1.1''<br/> ''<span style="color:#e74c3c;"><span style="background-color:#ffffff;">Удалено в 1.2</span></span>'' | ||
| + | |||
| + | | style="width: 326px;" | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer) | ||
| + | | style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *columns - Кол-во колонок | ||
| + | *rows - Кол-во строк | ||
| + | *timer - Время производства в тиках | ||
| + | |||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1''' | ||
| + | | style="width: 326px;" | RecipeTE.registerTimerCraftTable(object description) | ||
| + | | style="width: 379px;" | | ||
| + | *description- Описание верстака | ||
| + | **name - Идентификатор/имя верстака | ||
| + | **columns/cols - Кол-во слотов | ||
| + | **timer - Время производства в тиках | ||
| + | |||
| + | | colspan="1" rowspan="2" style="width: 200px;" | Регистрация верстака без сетки, требующий время на производство | ||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1''' | ||
| + | | style="width: 326px;" | RecipeTE.registerTimerCraftTable(string name, int slots, int timer) | ||
| + | | style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *slots - Кол-во слотов | ||
| + | *timer - Время производства в тиках | ||
| + | |||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1''' | ||
| + | | style="width: 326px;" | RecipeTE.isRegistered(string name) | ||
| + | | style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | |||
| + | | style="width: 200px;" | Вернет true, если верстак зарегистрирован, иначе false | ||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1''' | ||
| + | | style="width: 326px;" | RecipeTE.getMechanism(string name) | ||
| + | | style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | |||
| + | | style="width: 200px;" | Вернет описание верстака если он сущечтвует, иначе false | ||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1''' | ||
| + | | style="width: 326px;" | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients) | ||
| + | | style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *result - Результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во | ||
| + | **int data - Дата предмета | ||
| + | *recipe - Строка, образующая рецепт | ||
| + | *ingridients - Объект ингридиентов | ||
| + | |||
| + | | 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;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *result - Результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во | ||
| + | **int data - Дата предмета | ||
| + | *recipe - Строка, образующая рецепт | ||
| + | *ingridients - Объект ингридиентов | ||
| + | *craft - функция крафта | ||
| + | |||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1.1''' | ||
| + | | style="width: 326px;" | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier) | ||
| + | | style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *result - Результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во | ||
| + | **int data - Дата предмета | ||
| + | *recipe - Строка, образующая рецепт | ||
| + | *ingridients - Объект ингридиентов | ||
| + | *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 - Результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во | ||
| + | **int data - Дата предмета | ||
| + | *recipe - Строка, образующая рецепт | ||
| + | *ingridients - Объект ингридиентов | ||
| + | *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 - Результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во | ||
| + | **int data - Дата предмета | ||
| + | *recipe - Массив строк, образующие рецепт | ||
| + | *ingridients - Объект ингридиентов | ||
| + | |||
| + | | 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 - Результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во | ||
| + | **int data - Дата предмета | ||
| + | *recipe - Массив строк, образующие рецепт | ||
| + | *ingridients - Объект ингридиентов | ||
| + | *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;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *result - Результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во | ||
| + | **int data - Дата предмета | ||
| + | *recipe - Массив строк, образующие рецепт | ||
| + | *ingridients - Объект ингридиентов | ||
| + | *time_multiplier - Множитель времения(Только для верстаков с временем производства) | ||
| + | |||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1.1''' | ||
| + | | style="width: 326px;" | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft) | ||
| + | | style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *result - Результат крафта | ||
| + | **int id - ID предмета | ||
| + | **int count - Кол-во | ||
| + | **int data - Дата предмета | ||
| + | *recipe - Массив строк, образующие рецепт | ||
| + | *ingridients - Объект ингридиентов | ||
| + | *time_multiplier - Множитель времения(Только для верстаков с временем производства) | ||
| + | *craft - функция крафта | ||
| + | |||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1'''<br/> ''Устаревшее в 1.1''<br/> ''<span style="color:#e74c3c;"><span style="background-color:#ffffff;">Удалено в 1.2</span></span>'' | ||
| + | | style="width: 326px;" | RecipeTE.getTickResipes(string name, TileEntity TE, function condition) | ||
| + | | colspan="1" rowspan="2" style="width: 379px;" | | ||
| + | *name - Идентификатор/имя верстака | ||
| + | *TE - TileEntity | ||
| + | *condition - Функция условия (Не обязательный) | ||
| + | |||
| + | | colspan="1" rowspan="2" style="width: 200px;" | Обработчик тика для TileEntity | ||
| + | |- | ||
| + | | style="width: 121px; text-align: center;" | '''1.1''' | ||
| + | | 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: 121px; text-align: center;" | '''1''' | ||
| + | | style="width: 326px;" | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench) | ||
| + | | style="width: 379px;" | | ||
| + | *TE - TileEntity | ||
| + | *workbench - Объект описания верстака | ||
| + | |||
| + | | style="width: 200px;" | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe) | ||
| + | |} | ||
| + | |||
| + | </div> | ||
| + | </div> | ||
| Версия | Ссылка | Изменения |
| 1 | Скачать |
|
| 1.1 | Скачать |
|
| 1.2 | Скачать |
|
| 2.0 |
| |
| 2.1 | GitHub |
|
| GitHub | GitHub |
Используя данный продукт вы автоматически соглашаетесь с этими правилами
Импортируйте библиотеку.
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", иначе указать имя слота при регистрации. |
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"}
}
});
Затем регистрируем наш верстак:
RecipeTE.registerWorkbench("Workbench_Grid",//SID блока
{
rows:4,//Кол-во строк сетки
cols:4,//Кол-во столбцов сетки
GuiScreen:Workbench_Grid //Интерфейс верстака
//Так же тут можно(И нужно) описать поля TileEntity
});
Создание рецептов для верстака с сеткой происходит через метод RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients), где:
RecipeTE.addShapeRecipe("Workbench_Grid", {
id:280,
count:1
}, [
"aa",
"aa"
], {
a:{
id:5
}
});
RecipeTE.addShapeRecipe("Workbench_Grid", {
id:280,
count:1
}, [
"aaaa",
"a a",
"a a",
"aaaa"
], {
a:{
id:1
}
});
Для начала создаем блок:
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", иначе указать имя слота при регистрации. |
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:{
"myInputSlot":{x:530, y:170, type:"slot"},
"myOutputSlot":{x:698, y:170, type:"slot", isValid:RecipeTE.outputSlotValid },
"timerScale":{
type: "scale",
x: 600,
y: 170,
direction:0,
bitmap: "arrow_scale",
scale: 4
}
}
});
Затем регистрируем наш верстак:
RecipeTE.registerWorkbench("Furnace", {
time:5 * 20, //Время крафта
slots:1, //Кол-во слотов
GuiScreen:Furnace, //Интерфейс печи
input:["myInputSlot"], //Входные слоты
output:"myOutputSlot", //Слот результата
scale:"timerScale", //Шкала прогресса
condition:function(){ //Условие работы верстака
return this.data.power
},
//Параметры TileEntity
defaultValues:{
power:false,
},
redstone: function(params){
if(params.power < 10)
this.data.power = false;
else
this.data.power = true;
}
});
Создание бесформенных рецептов для верстака происходит через метод RecipeTE.addRecipe(name_workbench, result, ingredients), где:
RecipeTE.addRecipe("Furnace", {id:280}, [{id:5}]);
RecipeTE.addRecipe("Furnace", {id:281}, [{id:1}], .2);
В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.
<syntaxhighlight lang="JavaScript">
{
type: "bitmap",
bitmap: "arrow",
x: 600,
y: 170,
RV:true,
scale: 4
}</syntaxhighlight>
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле RVGuiScreen с полями drawable и elements.
Входные слоты имеют имя input+index, выходные - output+index.
Подробнее об элементах на странице <a href="InnerCore%2F%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B2%20GUI">Введение в GUI</a>. </div>
| Версия | Метод | Аргументы | Описание |
| 2.0 | void RecipeTE.addWorkbench(string name, object Info) |
|
Регистрирует верстак с именем name не привязывая его к блоку |
| 2.0 | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype) |
|
Регистрирует верстак для блока с SID block_sid |
| 2.0 | bool RecipeTE.isRegistered(string block_sid) |
|
Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false |
| 2.0 | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft) |
|
Добавлет безформенный рецепт для верстака block_sid |
| 2.0 | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft) |
|
Добавляет крафт для верстака block_sid |
| 2.0 | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft) |
|
Добавляет крафт для верстака block_sid |
| 2.0 | void RecipeTE.defaultCraftEvent(TileEntity TE) |
|
Стандартная функция крафта |
Для начала создаем блок:
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({
name:"Workbench_Grid",
rows:4,
cols:4
});
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), где:
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({
name:"Furnace",
cols:1,
timer:5*20
});
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), где:
RecipeTE.addRecipe("Furnace", {id:280, count:1}, "a", {a:{id:5}});
| Версия | Метод | Аргументы | Описание |
| 1 | RecipeTE.registerGridCraftTable(object description) |
|
Регистрация верстака с сеткой |
| 1 | RecipeTE.registerGridCraftTable(string name, int columns, int rows) |
| |
| 1.1 | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements) |
| |
| 1.1 | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time) |
| |
| 1.1 | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time) |
| |
| 1 | RecipeTE.registerCraftTable(object description) |
|
Регистрация верстака без сетки |
| 1 | RecipeTE.registerCraftTable(string name, int slots) |
| |
| 1.1 | RecipeTE.registerCraftTable(string name, int slots, int time) |
| |
| 1.1 | RecipeTE.registerCraftTable(string name, int slots, object elements) |
| |
| 1.1 | RecipeTE.registerCraftTable(string name, int slots, object elements, int time) |
| |
|
1 |
RecipeTE.registerTimerGridCraftTable(object description) |
|
Регистрация верстака с сеткой, требующий время на производство |
|
1 |
RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer) |
| |
| 1 | RecipeTE.registerTimerCraftTable(object description) |
|
Регистрация верстака без сетки, требующий время на производство |
| 1 | RecipeTE.registerTimerCraftTable(string name, int slots, int timer) |
| |
| 1 | RecipeTE.isRegistered(string name) |
|
Вернет true, если верстак зарегистрирован, иначе false |
| 1 | RecipeTE.getMechanism(string name) |
|
Вернет описание верстака если он сущечтвует, иначе false |
| 1 | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients) |
|
Добавить крафт для верстака name |
| 1 | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft) |
| |
| 1.1 | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier) |
| |
| 1.1 | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft) |
| |
| 1 | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients) |
|
Добавить крафт для верстака с сеткой name |
| 1 | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft) |
| |
| 1.1 | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier) |
| |
| 1.1 | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft) |
| |
| 1 Устаревшее в 1.1 Удалено в 1.2 |
RecipeTE.getTickResipes(string name, TileEntity TE, function condition) |
|
Обработчик тика для TileEntity |
| 1.1 | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition) | ||
| 1 | RecipeTE.outputSlotValid() | Функция проверки слота результата | |
| 1 | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench) |
|
Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe) |