Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
− | <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"> | + | <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"><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"> |
+ | Данная библиотека для 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"><div class="mw-parser-output"><div class="mw-parser-output"> | ||
== Загрузка == | == Загрузка == | ||
Строка 5: | Строка 7: | ||
|- | |- | ||
| Версия | | Версия | ||
− | + | | Ссылка | |
− | | style="width: | + | | style="width: 280px;" | Список изменений |
− | | style="width: | + | | style="width: 350px;" | Дата релиза |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| '''8''' | | '''8''' | ||
− | + | | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v8 Скачать] | |
− | | style="width: | + | | style="width: 280px;" | - Поддержка мультиплеера<br/> - Введены общие интерфейсы для всех контейнеров<br/> - Добавлены методы установки валидации предметов и макс стака для слотов в ItemContainer |
− | + | | style="width: 350px;" | 10.12.2020 | |
− | |||
− | |||
− | |||
− | |||
− | | style="width: | ||
|- | |- | ||
| '''7''' | | '''7''' | ||
− | | style="text-align: center | + | | style="text-align: center;" | - |
− | | style="width: | + | | style="width: 280px;" | - В описании слота в интерфейсе хранилища теперь можно указать стороны, через которые с ним можно взаимодействовать |
− | - В описании слота в интерфейсе хранилища теперь можно указать стороны, через которые с ним можно взаимодействовать | + | | style="width: 350px;" | 10.06.2020 |
− | |||
− | | style="width: | ||
|- | |- | ||
| '''6''' | | '''6''' | ||
− | + | | [https://yadi.sk/d/TITakdpdsjIGug Скачать] | |
− | | style="width: | + | | style="width: 280px;" | - Библиотека обновлена на InnerCore для Horizon: добавлена поддержка новых ванильных контейнеров. |
− | | style="width: | + | | style="width: 350px;" | 18.04.2020 |
|- | |- | ||
| '''5''' | | '''5''' | ||
− | + | | [https://yadi.sk/d/Om5TRGdlhylfQA Скачать] | |
− | | style="width: | + | | style="width: 280px;" | - Исправлена ошибка взаимодействия с tile entity без интерфейса хранилища в методе StorageInterface.transportLiquid |
− | | style="width: | + | | style="width: 350px;" | 09.03.2020 |
|- | |- | ||
| '''4''' | | '''4''' | ||
− | + | | [https://yadi.sk/d/1gBu4a-fEme-jA Скачать] | |
− | | style="width: | + | | style="width: 280px;" | |
− | + | - Улучшена работа с жидкостями<br/> - В интерфейс добавлено поле liquidStorage | |
− | |||
− | | style="width: | + | | style="width: 350px;" | 05.03.2020 |
|- | |- | ||
| '''3''' | | '''3''' | ||
− | + | | [https://drive.google.com/file/d/1Hsp2nLIER0wF-ZzDvdsy1btxWFhnebv1/view?usp=sharing Скачать] | |
− | | style="width: | + | | style="width: 280px;" | релиз библиотеки |
− | | style="width: | + | | style="width: 350px;" | 02.02.2020 |
|} | |} | ||
− | </div> <div | + | </div> </div> </div> </div> </div> </div> </div> |
== Импорт == | == Импорт == | ||
− | Для добавления библиотеки в мод ее файл ''([https://github.com/MineExplorer/ | + | Для добавления библиотеки в мод ее файл ''([https://github.com/MineExplorer/IndustrialCraft_2/blob/master/IndustrialCraft²/lib/StorageInterface.js StorageInterface.js])'' нужно добавить в директорию ''lib/'' в директории мода (если таковой нету, то ее нужно создать). |
− | |||
− | |||
− | |||
− | |||
+ | Для импорта библиотеки в мод в заголовочном файле (или если он остутвует в первом файле кода) следует добавить строку: | ||
+ | <pre>IMPORT("StorageInterface");</pre> | ||
+ | <div class="mw-parser-output"><div class="mw-parser-output"> | ||
== Интерфейсы хранилищ блоков == | == Интерфейсы хранилищ блоков == | ||
Интерфейсы хранилищ объединяют в себе функции для работы с контейнерами и хранилищем жидкости и позволяют описать логику передачи предметов и жидкостей. В библиотеке есть стандартные интерфейсы для ванильных контейнеров и TileEntity, но вы можете зарегистрировать свой собственный для вашего TileEntity. | Интерфейсы хранилищ объединяют в себе функции для работы с контейнерами и хранилищем жидкости и позволяют описать логику передачи предметов и жидкостей. В библиотеке есть стандартные интерфейсы для ванильных контейнеров и TileEntity, но вы можете зарегистрировать свой собственный для вашего TileEntity. | ||
− | + | ||
=== Регистрация интерфейса хранилища === | === Регистрация интерфейса хранилища === | ||
− | ''StorageInterface.createInterface(id блока, прототип интерфейса).'' | + | ''StorageInterface.createInterface(id блока, прототип интерфейса).''<br/> <br/> Прототип интерфейса выглядит так: |
− | |||
− | |||
<syntaxhighlight lang="JavaScript">StorageInterface.createInterface(id блока, { | <syntaxhighlight lang="JavaScript">StorageInterface.createInterface(id блока, { | ||
slots: { | slots: { | ||
"slot1": { | "slot1": { | ||
− | input: | + | input: true/false, // может ли слот принимать предметы |
− | output: | + | output: true/false, // может ли слот отдавать предметы |
− | + | isValid: function(item, side, tileEntity){ // может ли слот принять предмет item со стороны side | |
− | + | return true/false; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | return | ||
}, | }, | ||
− | // | + | canOutput: function(item, side, tileEntity){ // можно ли извлечь предмет из слота (item - предмет в слоте) |
− | + | return true/false; | |
− | return | ||
} | } | ||
}, | }, | ||
− | + | "slot2": { | |
− | |||
... | ... | ||
}, | }, | ||
... | ... | ||
}, | }, | ||
− | |||
// функции интерфейса | // функции интерфейса | ||
});</syntaxhighlight> | });</syntaxhighlight> | ||
− | + | ||
=== <br/> Функции интерфейса хранилища === | === <br/> Функции интерфейса хранилища === | ||
Строка 144: | Строка 95: | ||
| name, id, count, data, extra | | name, id, count, data, extra | ||
| Устанавливает предмет в слот контейнера. | | Устанавливает предмет в слот контейнера. | ||
+ | |- | ||
+ | | '''clearContainer''' | ||
+ | | - | ||
+ | | Очищает содержимое контейнера | ||
|- | |- | ||
| '''isValidInput''' | | '''isValidInput''' | ||
Строка 152: | Строка 107: | ||
| item, side, maxCount | | item, side, maxCount | ||
| Функция добавления предмета. Возвращает количество добавленных предметов. | | Функция добавления предмета. Возвращает количество добавленных предметов. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| '''getOutputSlots''' | | '''getOutputSlots''' | ||
| side | | side | ||
− | | | + | | Возвращяет названия доступных слотов выхода со стороны ''side''. |
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
| '''canReceiveLiquid''' | | '''canReceiveLiquid''' | ||
Строка 187: | Строка 118: | ||
| '''canTransportLiquid''' | | '''canTransportLiquid''' | ||
| liquid, side | | liquid, side | ||
− | | Может ли TileEntity отдать жидкость с именем ''liquid ''со стороны ''side''. По умолчанию возвращает true. | + | | Может ли TileEntity отдать жидкость с именем ''liquid ''со стороны ''side''. По умолчанию возвращает true если в liquidStorage установлен лимит для этой жидкости. |
|- | |- | ||
− | | ''' | + | | '''addLiquid''' |
− | | | + | | liquid, amount |
− | | | + | | Функция добавление жидкости. По умолчанию работает с liquidStorage. |
− | Функция добавление жидкости | ||
− | |||
|- | |- | ||
− | | ''' | + | | '''getLiquid''' |
− | | | + | | liquid, amount |
− | | Функция извлечения жидкости | + | | Функция извлечения жидкости. По умолчанию работает с liquidStorage. |
|- | |- | ||
− | | ''' | + | | '''getLiquidStored''' |
− | | | + | | storageName |
| | | | ||
− | + | Функция получения жидкости, хранящейся в tile entity. Позволяет возвращать разные жидкости для входа и выхода.<br/> '''storageName''' - "input" для получения жидкости на вход и "output" для жидкости на выход. | |
|- | |- | ||
− | | ''' | + | | '''getLiquidStorage''' |
− | | | + | | storageName |
| | | | ||
− | Возвращает | + | Возвращает хранилище жидкости. По умолчанию возвращает liquidStorage из TileEntity. Позволяет использовать альтернативные хранилища жидкостей.<br/> '''storageName''' - "input" для хранилища, принимающего жидкость, и "output" для отдающего. |
|} | |} | ||
− | <div class="mw-parser-output">< | + | <div class="mw-parser-output"> </div> <div class="mw-parser-output">В экземпляре интерфейса также есть следующие поля:</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, | ||
− | |||
isValid: function(item, side){ | isValid: function(item, side){ | ||
− | return Recipes.getFurnaceRecipeResult(item.id, "iron"); | + | return side != 0 && Recipes.getFurnaceRecipeResult(item.id, "iron"); |
} | } | ||
}, | }, | ||
"slotFuel": { | "slotFuel": { | ||
− | input: true | + | input: true, |
− | |||
isValid: function(item, side){ | isValid: function(item, side){ | ||
− | return Recipes.getFuelBurnDuration(item.id, item.data) > 0; | + | return side != 1 && Recipes.getFuelBurnDuration(item.id, item.data) > 0; |
} | } | ||
}, | }, | ||
"slotResult": {output: true} | "slotResult": {output: true} | ||
} | } | ||
− | });</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"> | + | </syntaxhighlight> |
+ | </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"><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. | + | *'''StorageInterface.newStorage('''''container ''или ''tileEntity''''')''' - возвращает новый интерфейс хранилища для TileEntity или контейнера. |
− | *'''StorageInterface.getStorage('''''blockSource, x, y, z''''')''' - | + | *'''StorageInterface.getStorage('''''blockSource, x, y, z''''')''' - Возвращает интерфейс хранилища для блока, являющегося контейнером. |
− | *'''StorageInterface.getLiquidStorage('''''blockSource, x, y, z''''')''' - возвращает интерфейс | + | *'''StorageInterface.getLiquidStorage('''''blockSource, x, y, z''''')''' - возвращает интерфейс хранилища, если на указанных координатах находится TileEntity с хранилищем жидкости. |
*'''StorageInterface.getNeighbourStorage('''''blockSource, coords, side''''')''' - возвращает интерфейс хранилища для соседнего блока со стороны side. | *'''StorageInterface.getNeighbourStorage('''''blockSource, coords, side''''')''' - возвращает интерфейс хранилища для соседнего блока со стороны side. | ||
− | *'''StorageInterface.getNeighbourLiquidStorage('''''blockSource, coords, side''''')''' - возвращает интерфейс для соседнего | + | *'''StorageInterface.getNeighbourLiquidStorage('''''blockSource, coords, side''''')''' - возвращает интерфейс хранилища для соседнего блока со стороны side, если там находится TileEntity с хранилищем жидкости. |
− | </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> | + | </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> |
+ | |||
== Остальные методы StorageInterface == | == Остальные методы StorageInterface == | ||
Строка 290: | Строка 220: | ||
| style="width: 114px;" | liquid, maxAmount, inputStorage, outputStorage, inputSide | | style="width: 114px;" | liquid, maxAmount, inputStorage, outputStorage, inputSide | ||
| style="width: 458px;" | | | style="width: 458px;" | | ||
− | Похож на предыдущий, но позволяет извлечь жидкость из TileEntity<br/> '''liquid '''- название жидкости. Если не | + | Похож на предыдущий, но позволяет извлечь жидкость из TileEntity<br/> '''liquid '''- название жидкости. Если не указно, то извлечёт любую жидкость из ''outputStorage'', если она может быть принята в ''inputStorage.''<br/> '''inputStorage '''- интерфейс хранилища или TileEntity, принимающий жидкость<br/> '''outputStorage '''- интерфейс хранилища, из которого будет извлечена жидкость<br/> '''inputSide '''- сторона блока, которая будет принимать жидкость. |
Возвращает количество переданной жидкости. | Возвращает количество переданной жидкости. | ||
Строка 307: | Строка 237: | ||
|} | |} | ||
− | </div> </div> </div> </div> | + | </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> |