Данная библиотека для Inner Core позволяет описать взаимодействие блоков с трубами, воронками и прочими предметами для транспортировки предметов и жидкостей с помощью интерфейсов хранилищ, а так же добавляет методы для извлечения и загрузки предметов и жидкостей.
Загрузка
Версия
|
Ссылка
|
Список изменений
|
Дата релиза
|
3
|
Скачать
|
релиз библиотеки
|
02.02.2020
|
Импорт
Для добавления библиотеки в мод ее файл (StorageInterface.js) нужно добавить в директорию lib/ в директории мода (если таковой нету, то ее нужно создать).
Для импорта библиотеки в мод в заголовочном файле (или если он остутвует в первом файле кода) следует добавить строку:
IMPORT("StorageInterface");
Интерфейсы хранилищ блоков
На данный момент интерфейсы привязываются только к tile entity, но в будущем по умолчанию интерфейсы будут прописаны у контейнеров из Майнкрафта, прежде всего печки.
В общем виде интерфейс хранилища tile entity выглядит так:
StorageInterface.createInterface(id блока, {
slots: {
"slot1": {
input: bool, // может ли слот принимать предметы
output: bool, // может ли слот отдавать предметы
isValid: function(item, side, tileEntity){ // может ли слот принять предмет item со стороны side
return bool;
},
canOutput: function(item, side, tileEntity){ // можно ли извлечь предмет из слота (item - предмет в слоте)
return bool;
}
},
"slot2": {
...
},
...
},
isValidInput: function(item, side, tileEntity){ // аналогична функции isValid слота, но действует на все слоты контейнера
return true;
},
addItem: function(item, side, maxCount){ return int; }, // кастомная функция добавления предмета
getItems: function(side){ return []; }, // кастомная функция получения предметов для извлечения
// методы работы с хранилищем жидкости
canReceiveLiquid: function(liquid, side){ return false; }, // может ли tile entity принять жидкость (liquid - название жидкости)
canTransportLiquid: function(liquid, side){ return false; }, // может ли tile entity отдать жидкость (liquid - название жидкости)
addLiquid: function(luquid, amount){ // функция добавление жидкости
return this.tileEntity.liquidStorage.addLiquid(luquid, amount);
}
getLiquid: function(luquid, amount){ // функция извлечения жидкости
return this.tileEntity.liquidStorage.getLiquid(luquid, amount);
}
});
Для большинства функций указан их код по умолчанию (если вы её не пропишите в интерфейсе), либо тип возвращаемого ими значения.
Добавление интерфейса для tile entity на примере железной печки из мода IndustrialCraft 2
StorageInterface.createInterface(BlockID.ironFurnace, {
slots: {
"slotSource": {input: true,
isValid: function(item, side){
return side != 0 && Recipes.getFurnaceRecipeResult(item.id, "iron");
}
},
"slotFuel": {input: true,
isValid: function(item, side){
return side != 1 && Recipes.getFuelBurnDuration(item.id, item.data) > 0;
}
},
"slotResult": {output: true}
}
});
Обратная совместимость
Данная библиотека совместима с модами, используюшими старый стандарт описания слотов tile entity через функцию getTransportSlots и добавляет такую функцию для tile entity при создании его интерфейса.