Данная библиотека для Inner Core позволяет описать взаимодействие блоков с трубами, воронками и прочими предметами для транспортировки предметов и жидкостей с помощью интерфейсов хранилищ, а так же добавляет методы для извлечения и загрузки предметов и жидкостей.
Для добавления библиотеки в мод ее файл (StorageInterface.js) нужно добавить в директорию lib/ в директории мода (если таковой нету, то ее нужно создать).
Для импорта библиотеки в мод в заголовочном файле (или если он остутвует в первом файле кода) следует добавить строку:
IMPORT("StorageInterface");
На данный момент интерфейсы привязываются только к tile entity, но в будущем по умолчанию интерфейсы будут прописаны у контейнеров из Майнкрафта, прежде всего печки.
Интерфейс для хранилища добавляется с помощью метода StorageInterface.createInterface(id блока, объект интерфейса) и в общем виде выглядит так:
Здесь указаны все функции объекта интерфейса, которые можно задать этим методом. При их отсутствии добавляются функции по умолчанию, и для некоторых функций приведён их код.
Добавление интерфейса для tile entity на примере железной печки из мода IndustrialCraft 2
Название | Аргументы | Описание |
getNearestContainers | coords, side, sideExcluded | Возвращает соседние с блоком на координатах coords контейнеры в виде массива. Если указан параметр side, то вернёт контейнер с этой стороны. Если sideExcluded равен true, то наоборот, все контейнеры кроме контейнера с указанной стороны. |
getNearestLiquidStorages | coords, side, sideExcluded | Аналогична предыдущей, но возвращает все соседние tile entity, имеющие хранилища жидкостей. |
putItems | items, containers | Добавляет предметы из массива items в контейнеры из массива containers. Удобно использовать в связке с методом getNearestContainers. |
putItemToContainer | item, container, side, maxCount | Метод более низкого уровня, на котором основана работа предыдущего метода. Добавляет стак предметов в контейнер, но позволяет также указать максимальное количество предметов, которое может быть передано за раз. |
extractItemsFromContainer | inputContainer, container, side, maxCount, oneStack |
Позволяет извлечь предмет из контейнера и добавить его в tile entity. |
transportLiquid | liquid, maxAmount, outputTile, inputTile, outputSide |
Передаёт жидкость из одного tile entity в другой. |
extractLiquid | liquid, maxAmount, inputTile, outputTile, inputSide |
Похож на предыдущий, но позволяет извлечь жидкость из tile entity |
checkHoppers | tileEntity | Позволяет tile entity взаимодействовать с воронками. Для этого должна выполняться в функции тика tile entity. Требует интерфейса хранилища у tile entity для работы. |
addItemToSlot | item, slot, count | Внутренний метод библиотеки для добавления предмета в слот. При использовании на нативном контейнере нужно также установить слот, используя container.setSlot. |
Данная библиотека совместима с модами, использующими старый стандарт описания слотов tile entity через функцию getTransportSlots, а так же добавляет эту функцию и функцию addTransportedItem для tile entity при создании его интерфейса.