Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
− | Данная библиотека для Inner Core представляет собой инструмент для быстрого создания новых типов энергии и имеет большой функционал для работы с ними. | + | <div class="mw-parser-output">Данная библиотека для Inner Core представляет собой инструмент для быстрого создания новых типов энергии и имеет большой функционал для работы с ними. |
== Загрузка == | == Загрузка == | ||
− | Последняя версия (v9) - [https://github.com/MineExplorer/IC_Libraries/releases/tag/energy-net-v9 скачать]<br/> Файлы:<br/> energy-net.js - сама библиотека<br/> energy-net.d.ts - заголовочный файл (API) | + | Последняя версия (v9) - [https://github.com/MineExplorer/IC_Libraries/releases/tag/energy-net-v9 скачать]<br/> Файлы:<br/> energy-net.js - сама библиотека<br/> energy-net.d.ts - заголовочный файл (API) |
== Импорт == | == Импорт == | ||
− | Для добавления библиотеки в мод ее файл ''(energy-net.js)'' нужно добавить в папку ''lib/'' в директории мода (если таковой нету, то ее нужно создать).Для импорта библиотеки в мод в заголовочном файле (или если он отсутствует в первом файле кода) следует добавить строку: | + | Для добавления библиотеки в мод ее файл ''(energy-net.js)'' нужно добавить в папку ''lib/'' в директории мода (если таковой нету, то ее нужно создать).Для импорта библиотеки в мод в заголовочном файле (или если он отсутствует в первом файле кода) следует добавить строку: |
<syntaxhighlight lang="JavaScript">IMPORT("EnergyNet"); | <syntaxhighlight lang="JavaScript">IMPORT("EnergyNet"); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 14: | Строка 14: | ||
#''EnergyTypeRegistry'' - модуль для регистрации новых типов энергии | #''EnergyTypeRegistry'' - модуль для регистрации новых типов энергии | ||
#''EnergyTileRegistry'' - модуль для привязки типов энергии к TileEntity | #''EnergyTileRegistry'' - модуль для привязки типов энергии к TileEntity | ||
− | #''EnergyGridBuilder'' - модуль построения энергосетей | + | #''EnergyGridBuilder'' - модуль построения энергосетей и взаимодействия с ними |
− | #''EnergyNet'' - модуль | + | #''EnergyNet ''- модуль для хранения и получения энергосетей |
− | #''EnergyNode'' - базовый класс энергоузла | + | #''EnergyNode ''- базовый класс энергоузла |
− | #''EnergyGrid'' - класс узла блока-проводника | + | #''EnergyGrid ''- класс узла блока-проводника |
== Механика передачи энергии == | == Механика передачи энергии == | ||
− | Энергия может передаваться как по проводам, так и напрямую от генератора к соседним механизмам. Для этого строится граф (энергосеть), в которым механизмы и блоки-проводники являются узлами. Энергия передаётся пакетами от блока-источника по всем узлам, с которыми он соединён. Каждый пакет имеет определённое количество энергии и напряжение (количество энергии, которое в нём было изначально). | + | Энергия может передаваться как по проводам, так и напрямую от генератора к соседним механизмам. Для этого строится граф (энергосеть), в которым механизмы и блоки-проводники являются узлами. Энергия передаётся пакетами от блока-источника по всем узлам, с которыми он соединён. Каждый пакет имеет определённое количество энергии и напряжение (количество энергии, которое в нём было изначально). |
В целях оптимизации провода одного типа, соединенные друг с другом, объединяются в один энергоузел, в то время как каждый блок-механизм имеет свой энергоузел. | В целях оптимизации провода одного типа, соединенные друг с другом, объединяются в один энергоузел, в то время как каждый блок-механизм имеет свой энергоузел. | ||
Строка 38: | Строка 38: | ||
*<''energyType''>''.name'' - имя данного типа энергии. | *<''energyType''>''.name'' - имя данного типа энергии. | ||
*<''energyType''>''.registerWire(id, value, energyGridClass?)'' – регистрирует провод с данным id. Параметры: | *<''energyType''>''.registerWire(id, value, energyGridClass?)'' – регистрирует провод с данным id. Параметры: | ||
− | **''value'' - лимит на размер пакета энергии (напряжение), который блок может проводить. При превышении максимального напряжения размер пакета уменьшается до лимита провода и вызывается функция onOverload в классе провода. | + | **''value ''- лимит на размер пакета энергии (напряжение), который блок может проводить. При превышении максимального напряжения размер пакета уменьшается до лимита провода и вызывается функция onOverload в классе провода. |
− | **''energyGridClass'' - опционально, позволяет задать свой класс провода, который должен быть наследован от класса ''EnergyGrid''. | + | **''energyGridClass'' - опционально, позволяет задать свой класс провода, который должен быть наследован от класса ''EnergyGrid''. |
'''Пример:''' | '''Пример:''' | ||
− | <syntaxhighlight lang="JavaScript">// в начале мода импортируем библиотеку ( | + | <syntaxhighlight lang="JavaScript">// в начале мода импортируем библиотеку (она должна находиться в lib/) importLib("energylib.js", "*"); |
// создаем тип энергии redstone flux | // создаем тип энергии redstone flux | ||
Строка 52: | Строка 52: | ||
== Привязка типов энергии к TileEntity == | == Привязка типов энергии к TileEntity == | ||
− | ''EnergyTileRegistry.addEnergyTypeForId(blockId, energyType)'' - добавляет в tile entity объект класса [[ | + | ''EnergyTileRegistry.addEnergyTypeForId(blockId, energyType)'' - добавляет в tile entity объект класса [[EnergyNode]], который может быть получен через ''this.energyNode'' в функциях tile entity, а так же дополнительные события, которые позволяют ему работать с данным типом энергии. К одному tile entity можно привязать несколько разных типов энергии.<br/> <u>Параметры:</u> |
− | *''blockId'' – id блока, на который был зарегистрирован нужный tile entity. | + | *''blockId ''– id блока, на который был зарегистрирован нужный tile entity. |
*''energyType'' - тип энергии, который требуется к нему привязать. | *''energyType'' - тип энергии, который требуется к нему привязать. | ||
Новые события: | Новые события: | ||
− | *''energyTick: function(type, node) { /* … */ }'' - вызывается каждый тик для энергоузла tile entity.<br/> Параметры: | + | *''energyTick: function(type, node) { /* … */ }'' - вызывается каждый тик для энергоузла tile entity.<br/> Параметры: |
**''type'' - название типа энергии, для которого вызвано это событие. | **''type'' - название типа энергии, для которого вызвано это событие. | ||
− | **''node'' - энергоузел механизма, позволяет добавлять энергию | + | **''node ''- энергоузел механизма, позволяет добавлять энергию |
*''energyReceive: function(type, amount, voltage) { /* … */ }'' – вызывается при приёме пакета энергии данным tile entity. Должна возвращать количество энергии, которое удалось добавить.<br/> Параметры: | *''energyReceive: function(type, amount, voltage) { /* … */ }'' – вызывается при приёме пакета энергии данным tile entity. Должна возвращать количество энергии, которое удалось добавить.<br/> Параметры: | ||
**''type'' - название типа энергии | **''type'' - название типа энергии | ||
**''amount'' – количество энергии | **''amount'' – количество энергии | ||
**''voltage'' – напряжение энергии | **''voltage'' – напряжение энергии | ||
− | *''canReceiveEnergy: function(side, type) {return boolean;}'' – определяет, может ли tile entity получать энергию данного типа и с каких сторон. Вызывается при попытке соединения tile entity к энергосети. По умолчанию возвращает ''true''. | + | *''canReceiveEnergy: function(side, type) {return boolean;}'' – определяет, может ли tile entity получать энергию данного типа и с каких сторон. Вызывается при попытке соединения tile entity к энергосети. По умолчанию возвращает ''true''. |
*''canExtractEnergy: function(side, type) {return boolean;}'' – определяет, с каких сторон tile entity может выдавать энергию. По умолчанию возвращает ''true''. | *''canExtractEnergy: function(side, type) {return boolean;}'' – определяет, с каких сторон tile entity может выдавать энергию. По умолчанию возвращает ''true''. | ||
− | *''isConductor': function(type) {return boolean;}'' – определяет, может ли tile entity проводить энергию данного типа. По умолчанию возвращает ''false''. | + | *''isConductor'''': function(type) {return boolean;}'' – определяет, может ли tile entity проводить энергию данного типа. По умолчанию возвращает ''false''. |
== Объект EnergyNode == | == Объект EnergyNode == | ||
Строка 75: | Строка 75: | ||
*''add(amount, voltage)'' - добавляет в сеть данное кол-во энергии ''(amount)'', возвращает, какое кол-во энергии добавить не удалось из-за переполнения (0, если вся энергия добавлена). Если значение ''voltage'' (напряжение) не указано, то оно будет равно ''amount''. | *''add(amount, voltage)'' - добавляет в сеть данное кол-во энергии ''(amount)'', возвращает, какое кол-во энергии добавить не удалось из-за переполнения (0, если вся энергия добавлена). Если значение ''voltage'' (напряжение) не указано, то оно будет равно ''amount''. | ||
− | *''addCoords(x, y, z)'' - добавляет блок на координатах x, y, z в список блоков энергоузла (позволяет, например, сделать проводящим энергию блоки обшивки в многоблочном механизме) | + | *''addCoords(x, y, z) ''- добавляет блок на координатах x, y, z в список блоков энергоузла (позволяет, например, сделать проводящим энергию блоки обшивки в многоблочном механизме) |
− | *''removeCoords(x, y, z)'' - удаляет блок из энергоузла | + | *''removeCoords(x, y, z)'' - удаляет блок из энергоузла |
*''addConnection(node)'' - добавляет выходящее соединение с другим узлом | *''addConnection(node)'' - добавляет выходящее соединение с другим узлом | ||
*''removeConnection(node) ''- удаляет соединение с узлом | *''removeConnection(node) ''- удаляет соединение с узлом | ||
Строка 84: | Строка 84: | ||
== Работа с энергетическими сетями == | == Работа с энергетическими сетями == | ||
− | ''EnergyNet.getNodeOnCoords(blockSource, x, y, z)'' – возвращает узел на данных координатах, если он существует. Используется в IndustrialCraft для нанесения урона от оголённых проводов и для мультиметра. | + | ''EnergyNet.getNodeOnCoords(blockSource, x, y, z)'' – возвращает узел на данных координатах, если он существует. Используется в IndustrialCraft для нанесения урона от оголённых проводов и для мультиметра. |
== Примеры == | == Примеры == | ||
=== Генератор === | === Генератор === | ||
− | |||
− | |||
<syntaxhighlight lang="JavaScript">// Cоздадим блок с id "RFgenerator", который будет вырабатывать энергию. | <syntaxhighlight lang="JavaScript">// Cоздадим блок с id "RFgenerator", который будет вырабатывать энергию. | ||
TileEntity.registerPrototype(BlockID.RFgenerator, { | TileEntity.registerPrototype(BlockID.RFgenerator, { | ||
Строка 105: | Строка 103: | ||
=== Потребитель === | === Потребитель === | ||
− | |||
− | |||
<syntaxhighlight lang="JavaScript">// Cоздадим блок с id "RFconsumer", который будет потреблять энергию для производства алмазов. | <syntaxhighlight lang="JavaScript">// Cоздадим блок с id "RFconsumer", который будет потреблять энергию для производства алмазов. | ||
TileEntity.registerPrototype(BlockID.RFconsumer, { | TileEntity.registerPrototype(BlockID.RFconsumer, { | ||
Строка 133: | Строка 129: | ||
=== Хранилище === | === Хранилище === | ||
− | Стороны приёма и отправки энергии для хранилища должны быть разделены. Иначе | + | Стороны приёма и отправки энергии для хранилища должны быть разделены. Иначе энергия между двумя связанных друг с другом механизмами могут бесконечно обмениваться энергией друг с другом, игнорируя другие tile enity. |
<syntaxhighlight lang="JavaScript">//Cоздадим блок с id "RFstorage" и настроим его так, чтобы он отдавал энергию снизу, а принимал сбоку или сверху. | <syntaxhighlight lang="JavaScript">//Cоздадим блок с id "RFstorage" и настроим его так, чтобы он отдавал энергию снизу, а принимал сбоку или сверху. | ||
TileEntity.registerPrototype(BlockID.RFstorage, { | TileEntity.registerPrototype(BlockID.RFstorage, { | ||
Строка 162: | Строка 158: | ||
// привяжем к этому tile entity наш тип энергии | // привяжем к этому tile entity наш тип энергии | ||
EnergyTileRegistry.addEnergyTypeForId(BlockID.RFstorage, energyRF);</syntaxhighlight> | EnergyTileRegistry.addEnergyTypeForId(BlockID.RFstorage, energyRF);</syntaxhighlight> | ||
+ | </div> |