Строка 71: | Строка 71: | ||
Интерфейсы хранилищ объединяют в себе функции для работы с контейнерами и хранилищем жидкости и позволяют описать логику передачи предметов и жидкостей. В библиотеке есть стандартные интерфейсы для ванильных контейнеров и TileEntity, но вы можете зарегистрировать свой собственный для вашего TileEntity. | Интерфейсы хранилищ объединяют в себе функции для работы с контейнерами и хранилищем жидкости и позволяют описать логику передачи предметов и жидкостей. В библиотеке есть стандартные интерфейсы для ванильных контейнеров и TileEntity, но вы можете зарегистрировать свой собственный для вашего TileEntity. | ||
+ | <div class="mw-parser-output"> | ||
=== Регистрация интерфейса хранилища === | === Регистрация интерфейса хранилища === | ||
− | ''StorageInterface.createInterface(id блока, прототип интерфейса).''<br/> <br/> Прототип интерфейса выглядит так: | + | ''StorageInterface.createInterface(id блока, прототип интерфейса).''<br/> <br/> Все параметры слотов и функции прототипа интерфейса опциональны.<br/> Прототип интерфейса выглядит так: |
<syntaxhighlight lang="JavaScript">StorageInterface.createInterface(id блока, { | <syntaxhighlight lang="JavaScript">StorageInterface.createInterface(id блока, { | ||
slots: { | slots: { | ||
Строка 101: | Строка 102: | ||
// функции интерфейса | // функции интерфейса | ||
});</syntaxhighlight> | });</syntaxhighlight> | ||
+ | </div> | ||
=== <br/> Функции интерфейса хранилища === | === <br/> Функции интерфейса хранилища === |
Данная библиотека для Inner Core позволяет описать взаимодействие блоков с трубами, воронками и прочими предметами для транспортировки предметов и жидкостей с помощью интерфейсов хранилищ, а так же добавляет методы для извлечения и загрузки предметов и жидкостей.
Версия | Ссылка | Список изменений | Дата релиза |
9 | Скачать |
|
14.12.2020 |
8 | Скачать |
|
10.12.2020 |
7 | - |
- В описании слота в интерфейсе хранилища теперь можно указать стороны, через которые с ним можно взаимодействовать |
10.06.2020 |
6 | Скачать | - Библиотека обновлена на InnerCore для Horizon: добавлена поддержка новых ванильных контейнеров. | 18.04.2020 |
5 | Скачать | - Исправлена ошибка взаимодействия с tile entity без интерфейса хранилища в методе StorageInterface.transportLiquid | 09.03.2020 |
4 | Скачать |
|
05.03.2020 |
3 | Скачать | - Релиз библиотеки | 02.02.2020 |
Для добавления библиотеки в мод ее файл (StorageInterface.js) нужно добавить в директорию lib/ в директории мода (если таковой нету, то ее нужно создать).
Для импорта библиотеки в мод в заголовочном файле (или если он остутвует в первом файле кода) следует добавить строку:
IMPORT("StorageInterface");
Интерфейсы хранилищ объединяют в себе функции для работы с контейнерами и хранилищем жидкости и позволяют описать логику передачи предметов и жидкостей. В библиотеке есть стандартные интерфейсы для ванильных контейнеров и TileEntity, но вы можете зарегистрировать свой собственный для вашего TileEntity.
StorageInterface.createInterface(id блока, прототип интерфейса).
Все параметры слотов и функции прототипа интерфейса опциональны.
Прототип интерфейса выглядит так:
StorageInterface.createInterface(id блока, {
slots: {
"slot1": {
input: boolean, // может ли слот принимать предметы
output: boolean, // может ли слот отдавать предметы
// Сторона блока, через которую доступен слот.
// Значение - число или одна из настроек: "horizontal", "verctical", "down", "up".
side: int | string,
// Максимальное количество предметов в слоте
maxStack: int,
// Может ли слот принять предмет item со стороны side
isValid: function(item, side, tileEntity) {
return boolean;
},
// Можно ли извлечь предмет из слота (item - предмет в слоте)
canOutput: function(item, side, tileEntity) {
return boolean;
}
},
// Означает все слоты с индексами от 2 до 10 (slot2, slot3, ..., slot10).
"slot^2-10": {
...
},
...
},
// функции интерфейса
});
Интерфейс хранилища обладает следующими функциями. Вы можете заменить их на свои в прототипе интерфейса при регистрации.
Название | Аргументы | Описание |
getSlot | name | Возвращает слот контейнера. |
setSlot | name, id, count, data, extra | Устанавливает предмет в слот контейнера. |
isValidInput | item, side, tileEntity | Аналогична функции isValid слота, но действует на все слоты контейнера. По умолчанию возвращает true. |
addItem | item, side, maxCount | Функция добавления предмета. Возвращает количество добавленных предметов. |
addItemToSlot | name, item, maxCount | Добавляет предмет в слот контейнера, maxCount - максимальное количество предмета, которое будет добавлено. |
getReceivingItemCount |
item, side | Возвращает сколько предметов из стака контейнер может принять. |
getContainerSlots |
- | Возвращает все слоты контейнера |
getInputSlots | side | Возвращяет названия слотов входа, доступных со стороны side. |
getOutputSlots | side | Возвращяет названия слотов выхода, доступных со стороны side. |
clearContainer | - | Очищает содержимое контейнера |
canReceiveLiquid | liquid, side | Может ли TileEntity принять жидкость с именем liquid со стороны side. По умолчанию возвращает true если в liquidStorage установлен лимит для этой жидкости. |
canTransportLiquid | liquid, side | Может ли TileEntity отдать жидкость с именем liquid со стороны side. По умолчанию возвращает true если в liquidStorage установлен лимит для этой жидкости. |
addLiquid | liquid, amount | Функция добавление жидкости. По умолчанию работает с liquidStorage. |
getLiquid | liquid, amount | Функция извлечения жидкости. По умолчанию работает с liquidStorage. |
getLiquidStored | storageName |
Функция получения жидкости, хранящейся в tile entity. Позволяет возвращать разные жидкости для входа и выхода. |
getLiquidStorage | storageName |
Возвращает хранилище жидкости. По умолчанию возвращает liquidStorage из TileEntity. Позволяет использовать альтернативные хранилища жидкостей. |
StorageInterface.createInterface(BlockID.ironFurnace, {
slots: {
"slotSource": {
input: true,
side: "up",
isValid: function(item, side){
return Recipes.getFurnaceRecipeResult(item.id, "iron");
}
},
"slotFuel": {
input: true,
side: "horizontal",
isValid: function(item, side){
return Recipes.getFuelBurnDuration(item.id, item.data) > 0;
}
},
"slotResult": {output: true}
}
});
Название | Аргументы | Описание |
getNearestContainers | coords, blockSource | Возвращает соседние контейнеры относительно блока на координатах coords в виде объекта, где ключами являются стороны блока. |
getNearestLiquidStorages | coords, blockSource | Работает аналогично предыдущему, но возвращает интерфейсы хранилищ для всех соседних TileEntity, имеющих хранилища жидкостей. |
putItems | items, containers | Добавляет предметы из массива items в контейнеры из объекта, возвращаемого методом getNearestContainers. |
putItemToContainer | item, container, side, maxCount |
Добавляет стак предметов в контейнер. Возвращает количество переданных предметов. |
extractItemsFromContainer | inputСontainer , outputContainer, side, maxCount, oneStack |
Позволяет извлечь предмет из контейнера и добавить его в tile entity или контейнер. Возвращает количество переданных предметов. |
extractItemsFromStorage | inputStorage, outputStorage, side, maxCount, oneStack | Аналогичен предыдущему, но принимает аргументами интерфейсы хранилищ. |
transportLiquid | liquid, maxAmount, outputStorage, inputStorage, outputSide |
Передаёт жидкость из одного TileEntity в другой. Возвращает количество переданной жидкости. |
extractLiquid | liquid, maxAmount, inputStorage, outputStorage, inputSide |
Похож на предыдущий, но позволяет извлечь жидкость из TileEntity Возвращает количество переданной жидкости. |
checkHoppers | tileEntity | Позволяет TileEntity взаимодействовать с воронками. Для этого должен вызываться в функции тика TileEntity . |
addItemToSlot | item, slot, maxCount |
Добавляет стак предметов в слот. Изменяет только объект слота, для корректной работы требуется установить слот через container.setSlot. Возвращает количество переданных предметов. |