Строка 34: | Строка 34: | ||
Добавление интерфейса для tile entity на примере железной печки из мода IndustrialCraft 2 | Добавление интерфейса для tile entity на примере железной печки из мода IndustrialCraft 2 | ||
<div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;">StorageInterface.createInterface(BlockID.ironFurnace, {<br/> slots: {<br/> "slotSource": {input: true,<br/> isValid: function(item, side){<br/> return side != 0 && Recipes.getFurnaceRecipeResult(item.id, "iron");<br/> }<br/> },<br/> "slotFuel": {input: true, <br/> isValid: function(item, side){<br/> return side != 1 && Recipes.getFuelBurnDuration(item.id, item.data) > 0;<br/> }<br/> },<br/> "slotResult": {output: true}<br/> }<br/> });</div> | <div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;">StorageInterface.createInterface(BlockID.ironFurnace, {<br/> slots: {<br/> "slotSource": {input: true,<br/> isValid: function(item, side){<br/> return side != 0 && Recipes.getFurnaceRecipeResult(item.id, "iron");<br/> }<br/> },<br/> "slotFuel": {input: true, <br/> isValid: function(item, side){<br/> return side != 1 && Recipes.getFuelBurnDuration(item.id, item.data) > 0;<br/> }<br/> },<br/> "slotResult": {output: true}<br/> }<br/> });</div> | ||
+ | <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"> | ||
== Методы для передачи предметов и жидкостей == | == Методы для передачи предметов и жидкостей == | ||
Строка 44: | Строка 45: | ||
| '''getNearestContainers''' | | '''getNearestContainers''' | ||
| coords, side, sideExcluded | | coords, side, sideExcluded | ||
− | | Возвращает соседние с блоком на координатах coords контейнеры в виде массива. Если указан параметр side, то вернёт контейнер с этой стороны. Если sideExcluded равен true, то наоборот, все контейнеры кроме контейнера с указанной стороны. | + | | Возвращает соседние с блоком на координатах ''coords ''контейнеры в виде массива. Если указан параметр ''side'', то вернёт контейнер с этой стороны. Если ''sideExcluded ''равен ''true'', то наоборот, все контейнеры кроме контейнера с указанной стороны. |
|- | |- | ||
| '''getNearestLiquidStorages''' | | '''getNearestLiquidStorages''' | ||
Строка 52: | Строка 53: | ||
| '''putItems''' | | '''putItems''' | ||
| items, containers | | items, containers | ||
− | | Добавляет предметы из массива items в контейнеры из массива containers. Удобно использовать в связке с методом ''' | + | | Добавляет предметы из массива items в контейнеры из массива containers. Удобно использовать в связке с методом ''getNearestContainers'''''.''' |
|- | |- | ||
| '''putItemToContainer''' | | '''putItemToContainer''' | ||
Строка 61: | Строка 62: | ||
| inputTile, container, side, maxCount, oneStack | | inputTile, container, side, maxCount, oneStack | ||
| | | | ||
− | Позволяет извлечь предмет из контейнера и добавить его в tile entity.<br/> inputTile - tile entity, в который будут добавлены предметы<br/> container - контейнер, из которого будут извлечены предметы<br/> maxCount - сколько предметов извлечь [опционально]<br/> oneStack - если true, то будет извлечён только один стак предметов. | + | Позволяет извлечь предмет из контейнера и добавить его в tile entity.<br/> '''inputTile '''- tile entity, в который будут добавлены предметы<br/> '''container '''- контейнер, из которого будут извлечены предметы<br/> '''maxCount '''- сколько предметов извлечь [опционально]<br/> '''oneStack '''- если true, то будет извлечён только один стак предметов. |
|- | |- | ||
Строка 67: | Строка 68: | ||
| liquid, maxAmount, outputTile, inputTile, outputSide | | liquid, maxAmount, outputTile, inputTile, outputSide | ||
| | | | ||
− | Передаёт жидкость из одного tile entity в другой.<br/> liquid - название жидкости<br/> maxAmount - максимальное количество, которое будет передано<br/> outputTile - tile entity, из которого будет передана жидкость<br/> inputTile - tile entity, в который будет передана жидкость<br/> outputSide - сторона, через которую передаётся жидкость | + | Передаёт жидкость из одного tile entity в другой.<br/> '''liquid '''- название жидкости<br/> '''maxAmount '''- максимальное количество, которое будет передано<br/> '''outputTile '''- tile entity, из которого будет передана жидкость<br/> '''inputTile '''- tile entity, в который будет передана жидкость<br/> '''outputSide '''- сторона, через которую передаётся жидкость |
|- | |- | ||
Строка 73: | Строка 74: | ||
| liquid, maxAmount, inputTile, outputTile, inputSide | | liquid, maxAmount, inputTile, outputTile, inputSide | ||
| | | | ||
− | Похож на предыдущий, но позволяет извлечь жидкость из tile entity<br/> liquid - в отличие от предыдущего метода жидкость может быть не указана, тогда извлечёт жидкость, которая хранится в outputTile. | + | Похож на предыдущий, но позволяет извлечь жидкость из tile entity<br/> '''liquid '''- в отличие от предыдущего метода жидкость может быть не указана, тогда извлечёт жидкость, которая хранится в ''outputTile''. |
|- | |- | ||
Строка 82: | Строка 83: | ||
| '''addItemToSlot''' | | '''addItemToSlot''' | ||
| item, slot, count | | item, slot, count | ||
− | | Внутренний метод библиотеки для добавления предмета в слот. При использовании на нативном контейнере нужно также установить слот, используя container.setSlot. | + | | Внутренний метод библиотеки для добавления предмета в слот. При использовании на нативном контейнере нужно также установить слот, используя ''container.setSlot.'' |
|} | |} | ||
+ | <div class="mw-parser-output"> </div> </div> </div> </div> </div> </div> </div> </div> | ||
− | |||
== Обратная совместимость == | == Обратная совместимость == | ||
Данная библиотека совместима с модами, использующими старый стандарт описания слотов tile entity через функцию getTransportSlots и взаимодействия с ними через функции addTransportedItem и getTransportedItem, а так же добавляет такие функции для tile entity при создании его интерфейса. </div> </div> </div> </div> | Данная библиотека совместима с модами, использующими старый стандарт описания слотов tile entity через функцию getTransportSlots и взаимодействия с ними через функции addTransportedItem и getTransportedItem, а так же добавляет такие функции для tile entity при создании его интерфейса. </div> </div> </div> </div> | ||
</div> | </div> |
Данная библиотека для Inner Core позволяет описать взаимодействие блоков с трубами, воронками и прочими предметами для транспортировки предметов и жидкостей с помощью интерфейсов хранилищ, а так же добавляет методы для извлечения и загрузки предметов и жидкостей.
Версия | Ссылка | Список изменений | Дата релиза |
3 | Скачать | релиз библиотеки | 02.02.2020 |
Для добавления библиотеки в мод ее файл (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 | inputTile, 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. |
</div>