80LK (обсуждение | вклад) м |
80LK (обсуждение | вклад) м |
||
Строка 189: | Строка 189: | ||
</div> | </div> | ||
+ | <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> | ||
+ | |||
+ | Добавление рецептов для печи | ||
+ | |||
+ | Создание бесформенных рецептов для верстака происходит через метод '''''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> </div> | ||
− | |||
=== Полная документация === | === Полная документация === | ||
Версия | Ссылка | Изменения |
1 | Скачать |
|
1.1 | Скачать |
|
1.2 | Скачать |
|
2.0 |
| |
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);
Версия | Метод | Аргументы | Описание |
2.0 | void RecipeTE.registerWorkbench(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) |
|
Стандартная функция крафта |
Импортируйте библиотеку.
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({
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) |