Внимание! Вы не авторизовались на сайте. Ваш 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"> |
+ | Данная библиотека для 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 блока, прототип интерфейса).''<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/> '''Функции интерфейса хранилища''' | |
Интерфейс хранилища обладает следующими функциями. Вы можете заменить их на свои в прототипе интерфейса при регистрации. | Интерфейс хранилища обладает следующими функциями. Вы можете заменить их на свои в прототипе интерфейса при регистрации. | ||
Строка 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 | + | </syntaxhighlight> |
− | + | </div> <div class="mw-parser-output"><div class="mw-parser-output"> | |
+ | '''Методы StorageInterface для получения интерфесов хранилищ''' | ||
+ | |||
+ | {| border="1" cellpadding="1" cellspacing="1" | ||
+ | |- | ||
+ | | style="width: 178px;" | Название | ||
+ | | style="width: 114px;" | Аргументы | ||
+ | | style="width: 458px;" | Описание | ||
+ | |- | ||
+ | | style="width: 178px;" | '''newStorage''' | ||
+ | | style="width: 114px;" | container или tileEntity | ||
+ | | style="width: 458px;" | Возвращает новый интерфейс хранилища для TileEntity или контейнера | ||
+ | |- | ||
+ | | style="width: 178px;" | '''getStorage''' | ||
+ | | style="width: 114px;" | blockSource, x, y, z | ||
+ | | style="width: 458px;" | | ||
+ | Возвращает интерфейс хранилища для блока, являющегося контейнером. | ||
− | + | |- | |
− | + | | style="width: 178px;" | '''getLiquidStorage''' | |
− | + | | style="width: 114px;" | blockSource, x, y, z | |
− | + | | style="width: 458px;" | Возвращает интерфейс хранилища, если на указанных координатах находится TileEntity с хранилищем жидкости. | |
− | + | |- | |
− | </div> </div> </div> < | + | | style="width: 178px;" | '''getNeighbourStorage''' |
+ | | style="width: 114px;" | blockSource, coords, side | ||
+ | | style="width: 458px;" | Возвращает интерфейс хранилища для соседнего блока со стороны side. | ||
+ | |- | ||
+ | | style="width: 178px;" | '''getNeighbourLiquidStorage''' | ||
+ | | style="width: 114px;" | blockSource, coords, side | ||
+ | | style="width: 458px;" | Возвращает интерфейс хранилища для соседнего блока со стороны side, если там находится TileEntity с хранилищем жидкости. | ||
+ | |} | ||
+ | </div> </div> </div> <div class="mw-parser-output"> | ||
== Остальные методы StorageInterface == | == Остальные методы StorageInterface == | ||
Строка 290: | Строка 241: | ||
| 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: | Строка 258: | ||
|} | |} | ||
− | </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> |