Жидкости и работа с ними — различия между версиями

Строка 1: Строка 1:
<div class="mw-parser-output"><div class="mw-parser-output">
+
<div class="mw-parser-output">
Жидкости в Core Engine представлены как некоторый материал, который может храниться в tile entity или наполнять предмет, но при этом не могут находиться в мире.&nbsp;
+
<div class="mw-parser-output">
 +
<div class="mw-parser-output">
 +
<p>Жидкости в Core Engine представлены как некоторый материал, который может храниться в tile entity или наполнять предмет, но при этом не могут находиться в мире.&nbsp;</p>
  
Core Engine позволяет регистрировать новые жидкости, имеющие название и текстуру, предметы содержащие эти жидкости, а так же дает всем tile entity встроенный объект для хранения и работы с жидкостями, аналогичный контейнеру для хранения предметов и отображения слотов.
+
<p>Core Engine позволяет регистрировать новые жидкости, имеющие название и текстуру, предметы содержащие эти жидкости, а так же дает всем tile entity встроенный объект для хранения и работы с жидкостями, аналогичный контейнеру для хранения предметов и отображения слотов.</p>
  
Стандартные жидкости - молоко, лава и вода и их текстуры уже зарегистрированы, как и предметы, содержащие их, их строковые id:
+
<p>Стандартные жидкости - молоко, лава и вода и их текстуры уже зарегистрированы, как и предметы, содержащие их, их строковые id:</p>
  
*water - вода  
+
<ul>
*milk - молоко  
+
<li>water - вода</li>
*lava - лава  
+
<li>milk - молоко</li>
 +
<li>lava - лава</li>
 +
</ul>
  
=== Регистрация жидкости ===
+
<h3>Регистрация жидкости</h3>
  
''LiquidRegistry.registerLiquid("строковый id", "название", [массив имен текстур в интерфейсе])'' - регистрирует жидкость под данным строковым id и с данным названием и задает ей варианты текстур интерфейса, которые задаются как массив строковых имен текстур. Текстур интерфейса может быть несколько для того, чтобы при использовании их в шкалах различных размеров, Core Engine подбирал лучшее отношение сторон и изменял размер под размер шкалы (жидкость может быть использована другими модами с другим интерфейсом). Если вы хотите задать только одну текстуру для жидоксти, просто напишите ["имя текстуры"].
+
<p><i>LiquidRegistry.registerLiquid(&quot;строковый id&quot;, &quot;название&quot;, [массив имен текстур в интерфейсе])</i> - регистрирует жидкость под данным строковым id и с данным названием и задает ей варианты текстур интерфейса, которые задаются как массив строковых имен текстур. Текстур интерфейса может быть несколько для того, чтобы при использовании их в шкалах различных размеров, Core Engine подбирал лучшее отношение сторон и изменял размер под размер шкалы (жидкость может быть использована другими модами с другим интерфейсом). Если вы хотите задать только одну текстуру для жидоксти, просто напишите [&quot;имя текстуры&quot;].</p>
  
*''LiquidRegistry.isExists("строковый id")'' - проверяет существование жидкости с данным строковым id.  
+
<ul>
*''LiquidRegistry.getLiquidName("строковый id")'' - отдает имя жидкости по id или null, если такой жидкости нет  
+
<li><i>LiquidRegistry.isExists(&quot;строковый id&quot;)</i> - проверяет существование жидкости с данным строковым id.</li>
 +
<li><i>LiquidRegistry.getLiquidName(&quot;строковый id&quot;)</i> - отдает имя жидкости по id или null, если такой жидкости нет</li>
 +
</ul>
  
=== Регистрация предметов ===
+
<h3>Регистрация предметов</h3>
  
*''LiquidRegistry.registerItem("строковый id", {id: id пустого предмета, data: data пустого предмета}, {id: id полного предмета, data: data полного предмета})'' - регистрирует предмет, содержащий жидкость с данным строковым id в 2 состояниях - пустой и полный. После регистрации предмет будет доступен для методов наполнения и опустошения.  
+
<ul>
*''LiquidRegistry.getEmptyItem(id, data)'' - принимает на вход id и дату полного предмета, возвращает объект формата {id: id пустого предмета, data: data пустого предмета, liquid: строковый id жидкости, которая содержалась в полном предмете}, если это не предмет, заполненный какой то жидкостью, возвращает null  
+
<li><i>LiquidRegistry.registerItem(&quot;строковый id&quot;, {id: id пустого предмета, data: data пустого предмета}, {id: id полного предмета, data: data полного предмета})</i> - регистрирует предмет, содержащий жидкость с данным строковым id в 2 состояниях - пустой и полный. После регистрации предмет будет доступен для методов наполнения и опустошения.</li>
*''LiquidRegistry.getItemLiquid(id, data)'' - принимает на вход id и дату полного предмета, возвращает строковый id жидкости, которая в нем содержится, если это не предмет, заполненный какой то жидкостью, возвращает null  
+
<li><i>LiquidRegistry.getEmptyItem(id, data)</i> - принимает на вход id и дату полного предмета, возвращает объект формата {id: id пустого предмета, data: data пустого предмета, liquid: строковый id жидкости, которая содержалась в полном предмете}, если это не предмет, заполненный какой то жидкостью, возвращает null</li>
*''LiquidRegistry.getFullItem(id, data, "строковый id") ''- принимает на вход пустой предмет и строковый id жидкости, возвращает объект формата {id: id полного предмета, data: data полного предмета}, если предмет не является предметом, который может содержать жидкость, или такая жидкость не существует, вернет null  
+
<li><i>LiquidRegistry.getItemLiquid(id, data)</i> - принимает на вход id и дату полного предмета, возвращает строковый id жидкости, которая в нем содержится, если это не предмет, заполненный какой то жидкостью, возвращает null</li>
 +
<li><i>LiquidRegistry.getFullItem(id, data, &quot;строковый id&quot;) </i>- принимает на вход пустой предмет и строковый id жидкости, возвращает объект формата {id: id полного предмета, data: data полного предмета}, если предмет не является предметом, который может содержать жидкость, или такая жидкость не существует, вернет null</li>
 +
</ul>
  
=== Хранилище жидкости ===
+
<h3>Хранилище жидкости</h3>
  
Объект хранилища жидкости позволяет хранить жидкости и оперировать с ними. Каждый объект tile entity по умолчанию имеет объект хранилища жидкости (this.liquidStorage), которые привязаны к нему, так же его можно создать командой ''new LiquidRegistry.Storage()'' - новый объект хранилища.
+
<p>Объект хранилища жидкости позволяет хранить жидкости и оперировать с ними. Каждый объект tile entity по умолчанию имеет объект хранилища жидкости (this.liquidStorage), которые привязаны к нему, так же его можно создать командой <i>new LiquidRegistry.Storage()</i> - новый объект хранилища.</p>
  
Методы объекта хранилища жидкости:
+
<p>Методы объекта хранилища жидкости:</p>
  
*''updateUiScale("имя элемента ui", "строковый id", контейнер) ''- устанавливает для данного контейнера шкалу с данным именем, как шкалу жидкости с данным строковым id, изменяя текстуру на текстуру жидкости и значение на ее объем относительно лимита. Если параметр контейнер не передан, а хранилище привязано к tile entity, то будет использован контейнер этого tile entity.  
+
<ul>
*''hasDataFor("строковый id")'' - проверяет, есть ли в нем данные для данной жидкость  
+
<li><i>updateUiScale(&quot;имя элемента ui&quot;, &quot;строковый id&quot;, контейнер) </i>- устанавливает для данного контейнера шкалу с данным именем, как шкалу жидкости с данным строковым id, изменяя текстуру на текстуру жидкости и значение на ее объем относительно лимита. Если параметр контейнер не передан, а хранилище привязано к tile entity, то будет использован контейнер этого tile entity.</li>
*''setLimit("строковый id", лимит в ведрах) ''- устанавливает конкретной жидкости лимит количества в ведрах, если вместо строкового id передан null, устанавливает данный лимит для всех жидкостей  
+
<li><i>hasDataFor(&quot;строковый id&quot;)</i> - проверяет, есть ли в нем данные для данной жидкость</li>
*''getLimit("строковый id") ''- возвращает лимит данной жидкости в ведрах  
+
<li><i>setLimit(&quot;строковый id&quot;, лимит в ведрах) </i>- устанавливает конкретной жидкости лимит количества в ведрах, если вместо строкового id передан null, устанавливает данный лимит для всех жидкостей</li>
*''setAmount("строковый id", объем в ведрах) ''- устанавливает объем данной жидкости в ведрах, без проверки лимита  
+
<li><i>getLimit(&quot;строковый id&quot;) </i>- возвращает лимит данной жидкости в ведрах</li>
*''getAmount("строковый id") ''- возвращает кол-во данной жидкости в ведрах  
+
<li><i>setAmount(&quot;строковый id&quot;, объем в ведрах) </i>- устанавливает объем данной жидкости в ведрах, без проверки лимита</li>
*''getRelativeAmount("строковый id")'' - возвращает кол-во данной жидкости, деленное на лимит для данной жидкости (используется для шкал интерфейса)  
+
<li><i>getAmount(&quot;строковый id&quot;) </i>- возвращает кол-во данной жидкости в ведрах</li>
*''getLiquidStored("строковый id") ''- возвращает строковый id первой жидкости, которая содержится в данном хранилище и кол-во которой больше 0, подходит для&nbsp; работы с хранилищем, в котором хранится 1 тип жидкости, а так же сочитается с методом getLiquid  
+
<li><i>getRelativeAmount(&quot;строковый id&quot;)</i> - возвращает кол-во данной жидкости, деленное на лимит для данной жидкости (используется для шкал интерфейса)</li>
*''isFull("строковый id") ''- возвращает true, если кол-во данной жидкости равно ее лимиту (заполнена ли она до предела), если аргумент не передан, проверяет, заполненны ли все жидкости в хранилище до предела.  
+
<li><i>getLiquidStored(&quot;строковый id&quot;) </i>- возвращает строковый id первой жидкости, которая содержится в данном хранилище и кол-во которой больше 0, подходит для&nbsp; работы с хранилищем, в котором хранится 1 тип жидкости, а так же сочитается с методом getLiquid</li>
*''isEmpty("строковый id")'' - возвращает true, если кол-во данной жидкости равно 0 (пустота), если аргумент не передан, проверяет, все ли жидкости в хранилище на 0.  
+
<li><i>isFull(&quot;строковый id&quot;) </i>- возвращает true, если кол-во данной жидкости равно ее лимиту (заполнена ли она до предела), если аргумент не передан, проверяет, заполненны ли все жидкости в хранилище до предела.</li>
*''addLiquid("строковый id", объем в ведрах) ''- добавляет данный объем данной жидкости в хранилище, возвращает объем лишней жидкости (которая не уместилась в лимит)  
+
<li><i>isEmpty(&quot;строковый id&quot;)</i> - возвращает true, если кол-во данной жидкости равно 0 (пустота), если аргумент не передан, проверяет, все ли жидкости в хранилище на 0.</li>
*''getLiquid("строковый id", объем в ведрах) ''- забирает данный объем данной жидкости из хранилища, возвращает объем, который удалось забрать (если жидкости меньше требуемого кол-ва, то отдает не переданный объем, а меньше). Если жидкости в хранилище не хватает и хранилище привязано к tile entity будет вызвано событие requireMoreLiquid в tile entity.  
+
<li><i>addLiquid(&quot;строковый id&quot;, объем в ведрах) </i>- добавляет данный объем данной жидкости в хранилище, возвращает объем лишней жидкости (которая не уместилась в лимит)</li>
</div> </div>
+
<li><i>getLiquid(&quot;строковый id&quot;, объем в ведрах) </i>- забирает данный объем данной жидкости из хранилища, возвращает объем, который удалось забрать (если жидкости меньше требуемого кол-ва, то отдает не переданный объем, а меньше). Если жидкости в хранилище не хватает и хранилище привязано к tile entity будет вызвано событие requireMoreLiquid в tile entity.</li>
 +
</ul>
 +
</div>
 +
</div>
 +
</div>

Версия 13:31, 10 июня 2018

Жидкости в Core Engine представлены как некоторый материал, который может храниться в tile entity или наполнять предмет, но при этом не могут находиться в мире. 

Core Engine позволяет регистрировать новые жидкости, имеющие название и текстуру, предметы содержащие эти жидкости, а так же дает всем tile entity встроенный объект для хранения и работы с жидкостями, аналогичный контейнеру для хранения предметов и отображения слотов.

Стандартные жидкости - молоко, лава и вода и их текстуры уже зарегистрированы, как и предметы, содержащие их, их строковые id:

  • water - вода
  • milk - молоко
  • lava - лава

Регистрация жидкости

LiquidRegistry.registerLiquid("строковый id", "название", [массив имен текстур в интерфейсе]) - регистрирует жидкость под данным строковым id и с данным названием и задает ей варианты текстур интерфейса, которые задаются как массив строковых имен текстур. Текстур интерфейса может быть несколько для того, чтобы при использовании их в шкалах различных размеров, Core Engine подбирал лучшее отношение сторон и изменял размер под размер шкалы (жидкость может быть использована другими модами с другим интерфейсом). Если вы хотите задать только одну текстуру для жидоксти, просто напишите ["имя текстуры"].

  • LiquidRegistry.isExists("строковый id") - проверяет существование жидкости с данным строковым id.
  • LiquidRegistry.getLiquidName("строковый id") - отдает имя жидкости по id или null, если такой жидкости нет

Регистрация предметов

  • LiquidRegistry.registerItem("строковый id", {id: id пустого предмета, data: data пустого предмета}, {id: id полного предмета, data: data полного предмета}) - регистрирует предмет, содержащий жидкость с данным строковым id в 2 состояниях - пустой и полный. После регистрации предмет будет доступен для методов наполнения и опустошения.
  • LiquidRegistry.getEmptyItem(id, data) - принимает на вход id и дату полного предмета, возвращает объект формата {id: id пустого предмета, data: data пустого предмета, liquid: строковый id жидкости, которая содержалась в полном предмете}, если это не предмет, заполненный какой то жидкостью, возвращает null
  • LiquidRegistry.getItemLiquid(id, data) - принимает на вход id и дату полного предмета, возвращает строковый id жидкости, которая в нем содержится, если это не предмет, заполненный какой то жидкостью, возвращает null
  • LiquidRegistry.getFullItem(id, data, "строковый id") - принимает на вход пустой предмет и строковый id жидкости, возвращает объект формата {id: id полного предмета, data: data полного предмета}, если предмет не является предметом, который может содержать жидкость, или такая жидкость не существует, вернет null

Хранилище жидкости

Объект хранилища жидкости позволяет хранить жидкости и оперировать с ними. Каждый объект tile entity по умолчанию имеет объект хранилища жидкости (this.liquidStorage), которые привязаны к нему, так же его можно создать командой new LiquidRegistry.Storage() - новый объект хранилища.

Методы объекта хранилища жидкости:

  • updateUiScale("имя элемента ui", "строковый id", контейнер) - устанавливает для данного контейнера шкалу с данным именем, как шкалу жидкости с данным строковым id, изменяя текстуру на текстуру жидкости и значение на ее объем относительно лимита. Если параметр контейнер не передан, а хранилище привязано к tile entity, то будет использован контейнер этого tile entity.
  • hasDataFor("строковый id") - проверяет, есть ли в нем данные для данной жидкость
  • setLimit("строковый id", лимит в ведрах) - устанавливает конкретной жидкости лимит количества в ведрах, если вместо строкового id передан null, устанавливает данный лимит для всех жидкостей
  • getLimit("строковый id") - возвращает лимит данной жидкости в ведрах
  • setAmount("строковый id", объем в ведрах) - устанавливает объем данной жидкости в ведрах, без проверки лимита
  • getAmount("строковый id") - возвращает кол-во данной жидкости в ведрах
  • getRelativeAmount("строковый id") - возвращает кол-во данной жидкости, деленное на лимит для данной жидкости (используется для шкал интерфейса)
  • getLiquidStored("строковый id") - возвращает строковый id первой жидкости, которая содержится в данном хранилище и кол-во которой больше 0, подходит для  работы с хранилищем, в котором хранится 1 тип жидкости, а так же сочитается с методом getLiquid
  • isFull("строковый id") - возвращает true, если кол-во данной жидкости равно ее лимиту (заполнена ли она до предела), если аргумент не передан, проверяет, заполненны ли все жидкости в хранилище до предела.
  • isEmpty("строковый id") - возвращает true, если кол-во данной жидкости равно 0 (пустота), если аргумент не передан, проверяет, все ли жидкости в хранилище на 0.
  • addLiquid("строковый id", объем в ведрах) - добавляет данный объем данной жидкости в хранилище, возвращает объем лишней жидкости (которая не уместилась в лимит)
  • getLiquid("строковый id", объем в ведрах) - забирает данный объем данной жидкости из хранилища, возвращает объем, который удалось забрать (если жидкости меньше требуемого кол-ва, то отдает не переданный объем, а меньше). Если жидкости в хранилище не хватает и хранилище привязано к tile entity будет вызвано событие requireMoreLiquid в tile entity.