(добавлена 12 версия) |
|||
| (не показаны 24 промежуточные версии 2 участников) | |||
| Строка 1: | Строка 1: | ||
| − | <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">Данная библиотека для Inner Core позволяет описать взаимодействие блоков с трубами, воронками и прочими предметами для транспортировки предметов и жидкостей с помощью интерфейсов хранилищ, а так же добавляет методы для извлечения и загрузки предметов и жидкостей. <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"> |
| − | Данная библиотека для Inner Core позволяет описать взаимодействие блоков с трубами, воронками и прочими предметами для транспортировки предметов и жидкостей с помощью интерфейсов хранилищ, а так же добавляет методы для извлечения и загрузки предметов и жидкостей. | ||
| − | |||
== Загрузка == | == Загрузка == | ||
| Строка 7: | Строка 5: | ||
|- | |- | ||
| Версия | | Версия | ||
| − | | Ссылка | + | | style="width: 36px;" | Ссылка |
| − | | style="width: | + | | style="width: 393px;" | Список изменений |
| − | | style="width: | + | | style="width: 250px;" | Дата релиза |
| + | |- | ||
| + | | '''12''' | ||
| + | | style="width: 36px;" | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v12 Скачать] | ||
| + | | style="width: 393px;" | | ||
| + | *getOutputSlots возвращает пустые слоты tile entity | ||
| + | |||
| + | | style="width: 250px;" | 07.08.2021 | ||
| + | |- | ||
| + | | '''11''' | ||
| + | | style="width: 36px;" | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v11 Скачать] | ||
| + | | style="width: 393px;" | | ||
| + | *Библиотека поддерживает предметы с отрицательными ид | ||
| + | *В интерфейс хранилища добавлены следующие поля:<br/> - liquidUnitRatio<br/> - getInputTank(side)<br/> - getOutputTank(side)<br/> - receiveLiquid(liquidStorage, liquid, amount)<br/> - extractLiquid(liquidStorage, liquid, amount)<br/> И удалены поля: addLiquid. getLiquid, getLiquidStored, getLiquidStorage | ||
| + | |||
| + | | style="width: 250px;" | 01.04.2021 | ||
| + | |- | ||
| + | | '''10''' | ||
| + | | style="width: 36px;" | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v10 Скачать] | ||
| + | | style="width: 393px;" | | ||
| + | *Метод newStorage переименован в getInterface | ||
| + | *Исправлен стак предметов при использовании функций валидации и макс. стака в ItemContainer из библиотеки | ||
| + | |||
| + | | style="width: 250px;" | 09.01.2021 | ||
| + | |- | ||
| + | | '''9''' | ||
| + | | style="width: 36px;" | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v9 Скачать] | ||
| + | | style="width: 393px;" | | ||
| + | *Новые методы для интерфейсов хранилищ:<br/> - getContainerSlots()<br/> - getInputSlots(side)<br/> - getReceivingItemCount(item, side)<br/> - addItemToSlot(name, item, maxCount)<br/> - clearContainer() | ||
| + | *Исправлен стандартный интерфейс TIleEntity | ||
| + | |||
| + | | style="width: 250px;" | 14.12.2020 | ||
| + | |- | ||
| + | | '''8''' | ||
| + | | style="width: 36px;" | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v8 Скачать] | ||
| + | | style="width: 393px;" | | ||
| + | *Поддержка мультиплеера | ||
| + | *Добавлены стандартные интерфейсы для всех видов контейнеров | ||
| + | *Добавлены методы для получение интерфейсов хранилищ | ||
| + | *Добавлены методы для установки валидации предметов и макс стака слотов в ItemContainer | ||
| + | |||
| + | | style="width: 250px;" | 10.12.2020 | ||
| + | |- | ||
| + | | '''7''' | ||
| + | | style="text-align: center; width: 36px;" | - | ||
| + | | style="width: 393px;" | | ||
| + | - В описании слота в интерфейсе хранилища теперь можно указать стороны, через которые с ним можно взаимодействовать | ||
| + | |||
| + | | style="width: 250px;" | 10.06.2020 | ||
|- | |- | ||
| '''6''' | | '''6''' | ||
| − | | [https://yadi.sk/d/TITakdpdsjIGug Скачать] | + | | style="width: 36px;" | [https://yadi.sk/d/TITakdpdsjIGug Скачать] |
| − | | style="width: | + | | style="width: 393px;" | - Библиотека обновлена на InnerCore для Horizon: добавлена поддержка новых ванильных контейнеров. |
| − | | style="width: | + | | style="width: 250px;" | 18.04.2020 |
|- | |- | ||
| '''5''' | | '''5''' | ||
| − | | [https://yadi.sk/d/Om5TRGdlhylfQA Скачать] | + | | style="width: 36px;" | [https://yadi.sk/d/Om5TRGdlhylfQA Скачать] |
| − | | style="width: | + | | style="width: 393px;" | - Исправлена ошибка взаимодействия с tile entity без интерфейса хранилища в методе StorageInterface.transportLiquid |
| − | | style="width: | + | | style="width: 250px;" | 09.03.2020 |
|- | |- | ||
| '''4''' | | '''4''' | ||
| − | | [https://yadi.sk/d/1gBu4a-fEme-jA Скачать] | + | | style="width: 36px;" | [https://yadi.sk/d/1gBu4a-fEme-jA Скачать] |
| − | | style="width: | + | | style="width: 393px;" | |
| − | + | *Улучшена работа с жидкостями | |
| + | *В интерфейс добавлено поле liquidStorage | ||
| − | | style="width: | + | | style="width: 250px;" | 05.03.2020 |
|- | |- | ||
| '''3''' | | '''3''' | ||
| − | | [https://drive.google.com/file/d/1Hsp2nLIER0wF-ZzDvdsy1btxWFhnebv1/view?usp=sharing Скачать] | + | | style="width: 36px;" | [https://drive.google.com/file/d/1Hsp2nLIER0wF-ZzDvdsy1btxWFhnebv1/view?usp=sharing Скачать] |
| − | | style="width: | + | | style="width: 393px;" | - Релиз библиотеки |
| − | | style="width: | + | | style="width: 250px;" | 02.02.2020 |
|} | |} | ||
| − | </div> </div> </div> </div> </div> </div> | + | </div> <div class="mw-parser-output"> </div> </div> </div> </div> </div> |
== Импорт == | == Импорт == | ||
| − | Для добавления библиотеки в мод ее файл ''([https://github.com/MineExplorer/ | + | Для добавления библиотеки в мод ее файл ''([https://github.com/MineExplorer/IC_Libraries/blob/master/library/StorageInterface.js StorageInterface.js])'' нужно добавить в директорию ''lib/'' в директории мода (если таковой нету, то ее нужно создать). |
| − | Для импорта библиотеки в мод в заголовочном файле (или если он | + | Для импорта библиотеки в мод в заголовочном файле (или если он отсутствует в первом файле кода) следует добавить строку: |
| − | <pre>IMPORT("StorageInterface");</pre> | + | <pre>IMPORT("StorageInterface"); |
| + | </pre> | ||
| + | |||
| + | == Интерфейсы хранилищ блоков == | ||
| + | |||
| + | Интерфейсы хранилищ объединяют в себе функции для работы с контейнерами и хранилищем жидкости и позволяют описать логику передачи предметов и жидкостей. В библиотеке есть стандартные интерфейсы для ванильных контейнеров и TileEntity, но вы можете зарегистрировать свой собственный для вашего TileEntity. | ||
<div class="mw-parser-output"><div class="mw-parser-output"> | <div class="mw-parser-output"><div class="mw-parser-output"> | ||
| − | == | + | === Регистрация интерфейса хранилища === |
| − | + | ''StorageInterface.createInterface(id блока, прототип интерфейса).'' | |
| − | + | Все параметры слотов и функции прототипа интерфейса опциональны.<br/> Прототип интерфейса выглядит так: | |
<syntaxhighlight lang="JavaScript">StorageInterface.createInterface(id блока, { | <syntaxhighlight lang="JavaScript">StorageInterface.createInterface(id блока, { | ||
slots: { | slots: { | ||
"slot1": { | "slot1": { | ||
| − | input: | + | input: boolean, // может ли слот принимать предметы |
| − | output: | + | output: boolean, // может ли слот отдавать предметы |
| − | + | // Сторона блока, через которую доступен слот. | |
| − | return | + | // Значение - число или одна из настроек: "horizontal", "verctical", "down", "up". |
| + | side: int | string, | ||
| + | // Максимальное количество предметов в слоте | ||
| + | maxStack: int, | ||
| + | // Может ли слот принять предмет item со стороны side | ||
| + | isValid: function(item, side, tileEntity) { | ||
| + | return boolean; | ||
}, | }, | ||
| − | + | // Можно ли извлечь предмет из слота (item - предмет в слоте) | |
| − | return | + | canOutput: function(item, side, tileEntity) { |
| + | return boolean; | ||
} | } | ||
}, | }, | ||
| − | " | + | // Все слоты с именем slot и индексами от 2 до 10 (slot2, ..., slot10). |
| + | "slot^2-10": { | ||
... | ... | ||
}, | }, | ||
... | ... | ||
| − | } | + | }, |
| + | liquidUnitRatio: 1, // количество вёдер жидкости в базовом юните жидкости | ||
| + | // функции интерфейса | ||
});</syntaxhighlight> | });</syntaxhighlight> | ||
| + | </div> </div> | ||
| + | === <br/> Функции интерфейса хранилища === | ||
| − | + | Интерфейс хранилища обладает следующими функциями. Вы можете заменить их на свои в прототипе интерфейса при регистрации. | |
{| border="1" cellpadding="1" cellspacing="1" | {| border="1" cellpadding="1" cellspacing="1" | ||
| Строка 72: | Строка 136: | ||
| Аргументы | | Аргументы | ||
| Описание | | Описание | ||
| + | |- | ||
| + | | '''getSlot''' | ||
| + | | name | ||
| + | | Возвращает слот контейнера. | ||
| + | |- | ||
| + | | '''setSlot''' | ||
| + | | name, id, count, data, extra | ||
| + | | Устанавливает предмет в слот контейнера. | ||
|- | |- | ||
| '''isValidInput''' | | '''isValidInput''' | ||
| Строка 79: | Строка 151: | ||
| '''addItem''' | | '''addItem''' | ||
| item, side, maxCount | | item, side, maxCount | ||
| − | | Функция добавления предмета | + | | Функция добавления предмета. Возвращает количество добавленных предметов. |
| + | |- | ||
| + | | '''addItemToSlot''' | ||
| + | | name, item, maxCount | ||
| + | | Добавляет предмет в слот контейнера, maxCount - максимальное количество предмета, которое будет добавлено. | ||
| + | |- | ||
| + | | | ||
| + | '''getReceivingItemCount''' | ||
| + | |||
| + | | item, side | ||
| + | | Возвращает сколько предметов из стака контейнер может принять. | ||
| + | |- | ||
| + | | | ||
| + | '''getContainerSlots''' | ||
| + | |||
| + | | - | ||
| + | | Возвращает все слоты контейнера | ||
| + | |- | ||
| + | | '''getInputSlots''' | ||
| + | | side | ||
| + | | Возвращяет названия слотов входа, доступных со стороны ''side''. | ||
|- | |- | ||
| '''getOutputSlots''' | | '''getOutputSlots''' | ||
| side | | side | ||
| − | | | + | | Возвращает названия слотов выхода, доступных со стороны ''side''. |
| + | |- | ||
| + | | '''clearContainer''' | ||
| + | | - | ||
| + | | Очищает содержимое контейнера | ||
|- | |- | ||
| '''canReceiveLiquid''' | | '''canReceiveLiquid''' | ||
| liquid, side | | liquid, side | ||
| − | | Может ли | + | | Может ли TileEntity принять жидкость с именем ''liquid ''со стороны ''side''. По умолчанию возвращает true если в liquidStorage установлен лимит для этой жидкости. |
|- | |- | ||
| '''canTransportLiquid''' | | '''canTransportLiquid''' | ||
| liquid, side | | liquid, side | ||
| − | | Может ли | + | | Может ли TileEntity отдать жидкость с именем ''liquid ''со стороны ''side''. По умолчанию возвращает true. |
| + | |- | ||
| + | | '''receiveLiquid''' | ||
| + | | liquidStorage, liquid, amount | ||
| + | | | ||
| + | Функция добавление жидкости в хранилище.<br/> '''liquidStorage''' - хранилище, принимающее жидкость<br/> '''liquid '''- название жидкости<br/> '''amount '''- количество жидкости | ||
| + | |||
|- | |- | ||
| − | | ''' | + | | '''extractLiquid''' |
| − | | liquid, amount | + | | liquidStorage, liquid, amount |
| − | | Функция | + | | Функция извлечения жидкости из хранилища. |
|- | |- | ||
| − | | ''' | + | | '''getInputTank''' |
| − | | | + | | side |
| − | | | + | | |
| + | Возвращает входное хранилище жидкости TileEntity. По умолчанию возвращает liquidStorage.<br/> '''side '''- сторона с которой будет производиться работа | ||
| + | |||
|- | |- | ||
| − | | ''' | + | | '''getOutputTank''' |
| − | | | + | | side |
| − | | | + | | |
| + | Возвращает выходное хранилище жидкости TileEntity. По умолчанию возвращает liquidStorage.<br/> '''side '''- сторона с которой будет производиться работа | ||
| + | |||
|} | |} | ||
| − | <div class="mw-parser-output"> | + | <div class="mw-parser-output"><br/> В экземпляре интерфейса также есть следующие поля:</div> <div class="mw-parser-output">''isNativeContainer ''- true если контейнер является ванильным, false если из TileEntity.</div> <div class="mw-parser-output">''container ''- контейнер;<br/> ''tileEntity ''- если создан для TileEntity.</div> <div class="mw-parser-output"> </div> <div class="mw-parser-output">Регистрация интерфейса для TileEntity на примере железной печки из мода IndustrialCraft 2</div> <syntaxhighlight lang="JavaScript">StorageInterface.createInterface(BlockID.ironFurnace, { |
slots: { | slots: { | ||
"slotSource": { | "slotSource": { | ||
input: true, | input: true, | ||
| + | side: "up", | ||
isValid: function(item, side){ | isValid: function(item, side){ | ||
| − | return | + | return Recipes.getFurnaceRecipeResult(item.id, "iron"); |
} | } | ||
}, | }, | ||
"slotFuel": { | "slotFuel": { | ||
| − | input: true, | + | input: true, |
| + | side: "horizontal", | ||
isValid: function(item, side){ | isValid: function(item, side){ | ||
| − | return | + | return Recipes.getFuelBurnDuration(item.id, item.data) > 0; |
} | } | ||
}, | }, | ||
| Строка 122: | Строка 230: | ||
} | } | ||
});</syntaxhighlight> | });</syntaxhighlight> | ||
| − | < | + | <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"> | + | === Методы для получения интерфесов хранилищ === |
| − | == Методы для | + | |
| + | *'''StorageInterface.getInterface('''''container ''или ''tileEntity''''')''' - возвращает интерфейс хранилища для TileEntity или контейнера. | ||
| + | *'''StorageInterface.getStorage('''''blockSource, x, y, z''''')''' - возвращает интерфейс хранилища для контейнера на координатах | ||
| + | *'''StorageInterface.getLiquidStorage('''''blockSource, x, y, z''''')''' - возвращает интерфейс для TileEntity, хранящего жидкости, по координатам. | ||
| + | *'''StorageInterface.getNeighbourStorage('''''blockSource, coords, side''''')''' - возвращает интерфейс хранилища для соседнего блока со стороны side. | ||
| + | *'''StorageInterface.getNeighbourLiquidStorage('''''blockSource, coords, side''''')''' - возвращает интерфейс для соседнего TileEntity, хранящего жидкости, со стороны side | ||
| + | </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> | ||
| + | == Остальные методы StorageInterface == | ||
{| border="1" cellpadding="1" cellspacing="1" | {| border="1" cellpadding="1" cellspacing="1" | ||
|- | |- | ||
| − | | Название | + | | style="width: 178px;" | Название |
| − | | Аргументы | + | | style="width: 114px;" | Аргументы |
| − | | Описание | + | | style="width: 458px;" | Описание |
|- | |- | ||
| − | | '''getNearestContainers''' | + | | style="width: 178px;" | '''getNearestContainers''' |
| − | | coords, | + | | style="width: 114px;" | coords, blockSource |
| − | | Возвращает соседние | + | | style="width: 458px;" | Возвращает соседние контейнеры относительно блока на координатах ''coords ''в виде объекта, где ключами являются стороны блока. |
|- | |- | ||
| − | | '''getNearestLiquidStorages''' | + | | style="width: 178px;" | '''getNearestLiquidStorages''' |
| − | | coords, | + | | style="width: 114px;" | coords, blockSource |
| − | | | + | | style="width: 458px;" | Работает аналогично предыдущему, но возвращает интерфейсы хранилищ для всех соседних TileEntity, имеющих хранилища жидкостей. |
|- | |- | ||
| − | | '''putItems''' | + | | style="width: 178px;" | '''putItems''' |
| − | | items, containers | + | | style="width: 114px;" | items, containers |
| − | | Добавляет предметы из массива items в контейнеры из | + | | style="width: 458px;" | Добавляет предметы из массива items в контейнеры из объекта, возвращаемого методом ''getNearestContainers'''''.''' |
|- | |- | ||
| − | | '''putItemToContainer''' | + | | style="width: 178px;" | '''putItemToContainer''' |
| − | | item, container, side, maxCount | + | | style="width: 114px;" | item, container, side, maxCount |
| − | | | + | | style="width: 458px;" | |
| + | Добавляет стак предметов в контейнер.<br/> '''maxCount '''- максимальное количество предметов, которое может быть передано за раз (по умолчанию 64). | ||
| + | |||
| + | Возвращает количество переданных предметов. | ||
| + | |||
|- | |- | ||
| − | | '''extractItemsFromContainer''' | + | | style="width: 178px;" | '''extractItemsFromContainer''' |
| − | | | + | | style="width: 114px;" | inputСontainer , outputContainer, side, maxCount, oneStack |
| − | | | + | | style="width: 458px;" | |
| − | Позволяет извлечь предмет из контейнера и добавить его в tile entity.<br/> ''' | + | Позволяет извлечь предмет из контейнера и добавить его в tile entity или контейнер.<br/> '''inputStorage '''- TileEntity или контейнер, в который будут добавлены предметы<br/> '''outputContainer '''- контейнер, из которого будут извлечены предметы<br/> '''maxCount '''- сколько предметов может быть извлечено (по умолчанию не ограничено)<br/> '''oneStack '''- если true, то извлечёт только один стак предметов. |
| + | |||
| + | Возвращает количество переданных предметов. | ||
|- | |- | ||
| − | | '''transportLiquid''' | + | | style="width: 178px;" | '''extractItemsFromStorage''' |
| − | | liquid, maxAmount, | + | | style="width: 114px;" | inputStorage, outputStorage, side, maxCount, oneStack |
| − | | | + | | style="width: 458px;" | Аналогичен предыдущему, но принимает аргументами интерфейсы хранилищ. |
| − | Передаёт жидкость из одного | + | |- |
| + | | style="width: 178px;" | '''transportLiquid''' | ||
| + | | style="width: 114px;" | liquid, maxAmount, outputStorage, inputStorage, outputSide | ||
| + | | style="width: 458px;" | | ||
| + | Передаёт жидкость из одного TileEntity в другой.<br/> '''liquid '''- название жидкости<br/> '''maxAmount '''- максимальное количество, которое будет передано<br/> '''outputStorage '''- интерфейс хранилища или TileEntity, из которого будет передана жидкость<br/> '''inputStorage '''- интерфейс хранилища, принимающего жидкость<br/> '''outputSide '''- сторона блока, через которую передаётся жидкость. | ||
| + | |||
| + | Возвращает количество переданной жидкости. | ||
|- | |- | ||
| − | | '''extractLiquid''' | + | | style="width: 178px;" | '''extractLiquid''' |
| − | | liquid, maxAmount, | + | | style="width: 114px;" | liquid, maxAmount, inputStorage, outputStorage, inputSide |
| − | | | + | | style="width: 458px;" | |
| − | Похож на предыдущий, но позволяет извлечь жидкость из | + | Похож на предыдущий, но позволяет извлечь жидкость из TileEntity<br/> '''liquid '''- название жидкости. Если не указано, то извлечёт любую жидкость из ''outputStorage'', если она может быть принята в ''inputStorage.''<br/> '''inputStorage '''- интерфейс хранилища или TileEntity, принимающий жидкость<br/> '''outputStorage '''- интерфейс хранилища, из которого будет извлечена жидкость<br/> '''inputSide '''- сторона блока, которая будет принимать жидкость. |
| + | |||
| + | Возвращает количество переданной жидкости. | ||
|- | |- | ||
| − | | '''checkHoppers''' | + | | style="width: 178px;" | '''checkHoppers''' |
| − | | tileEntity | + | | style="width: 114px;" | tileEntity |
| − | | Позволяет | + | | style="width: 458px;" | Позволяет TileEntity взаимодействовать с воронками. Для этого должен вызываться в функции тика TileEntity . |
|- | |- | ||
| − | | '''addItemToSlot''' | + | | style="width: 178px;" | '''addItemToSlot''' |
| − | | item, slot, | + | | style="width: 114px;" | item, slot, maxCount |
| − | | | + | | style="width: 458px;" | |
| − | + | Добавляет стак предметов в слот. Изменяет только объект слота, для корректной работы требуется установить слот через ''container.setSlot.''<br/> '''maxCount '''- максимальное количество, которое будет передано в слот (по умолчанию 64). | |
| − | < | ||
| − | + | Возвращает количество переданных предметов. | |
| − | + | |} | |
| − | + | </div> </div> </div> </div> | |
| Версия | Ссылка | Список изменений | Дата релиза |
| 12 | Скачать |
|
07.08.2021 |
| 11 | Скачать |
|
01.04.2021 |
| 10 | Скачать |
|
09.01.2021 |
| 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;
}
},
// Все слоты с именем slot и индексами от 2 до 10 (slot2, ..., slot10).
"slot^2-10": {
...
},
...
},
liquidUnitRatio: 1, // количество вёдер жидкости в базовом юните жидкости
// функции интерфейса
});
Интерфейс хранилища обладает следующими функциями. Вы можете заменить их на свои в прототипе интерфейса при регистрации.
| Название | Аргументы | Описание |
| 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. |
| receiveLiquid | liquidStorage, liquid, amount |
Функция добавление жидкости в хранилище. |
| extractLiquid | liquidStorage, liquid, amount | Функция извлечения жидкости из хранилища. |
| getInputTank | side |
Возвращает входное хранилище жидкости TileEntity. По умолчанию возвращает liquidStorage. |
| getOutputTank | side |
Возвращает выходное хранилище жидкости TileEntity. По умолчанию возвращает liquidStorage. |
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. Возвращает количество переданных предметов. |