RecipeTELib

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

Загрузка

Версия Ссылка Изменения
1 Скачать
  • Первая версия
1.1 Скачать
  • Слияние методов registerGridCraftTable and registerTimerGridCraftTable
  • Слияние методов registerCraftTable and registerTimerCraftTable
  • Исправлено имя метода с getTickResipes на getTickRecipes
  • Добавлена возможность использовать свои идентификаторы элементов
  • Для рецептов добавлен параметр множителя времени крафта
1.2 Скачать
  • Удален метод registerTimerGridCraftTable 
  • Удален метод registerTimerCraftTable 
  • Удален метод getTickResipes
  • Исправлена смена крафта у печей
GitHub GitHub  

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

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

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

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

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

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

IMPORT("RecipeTileEntityLib")

Верстак

Регистрация верстака

Добавление рецептов для верстака

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

Регистрация печи

Добавление рецептов для печи

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

 

Документация (до версии 2.0)

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

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

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
Удалено в 1.2

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

1
Устаревшее в 1.1
Удалено в 1.2

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
Удалено в 1.2
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)