<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://wiki.mineprogramming.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SaloEater</id>
		<title>mineprogramming wiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.mineprogramming.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SaloEater"/>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/SaloEater"/>
		<updated>2026-04-28T19:20:24Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%BB%D0%BB%D0%B1%D0%B5%D0%BA%D0%BE%D0%B2&amp;diff=348</id>
		<title>InnerCore/Список коллбеков</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%BB%D0%BB%D0%B1%D0%B5%D0%BA%D0%BE%D0%B2&amp;diff=348"/>
				<updated>2018-02-05T17:52:35Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;br/&amp;gt; Callback.addCallback(&amp;quot;ReadSaves&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - чтение всех сохранений&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;WriteSaves &amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - запись всех сохранений&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;GenerateNetherChunk&amp;quot;, function (chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
}); - генерация чанка в аду по координатам&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;GenerateEndChunk&amp;quot;, function&amp;amp;nbsp;;(chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
}); - генерация чанка в Эндер мире по координатам&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;GenerateChunk&amp;quot;, function (chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
}); - генерация чанка в обычном мире по координатам&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;GenerateChunkUndeground&amp;quot;, function (chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
}); - хз что это, скорей всего генерация чанка под землей&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;PreRestart&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});- перед перезапуском bl&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;tick&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - тик&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;LevelSelected&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - начало загрузки мира&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;LevelLoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - конец загрузки мира&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;LevelLeft&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - выход из мира&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;De[[InnerCore/str|stroy]]Block &amp;quot;, function ([[InnerCore/coords|coords]], [[InnerCore/block|block]], [[InnerCore/player|player]]) {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;;- уничтожение блока&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;De[[InnerCore/str|stroy]]BlockStart&amp;quot;, function ([[InnerCore/coords|coords]], [[InnerCore/block|block]], [[InnerCore/player|player]]) {&lt;br /&gt;
&lt;br /&gt;
}); - начало уничтожения блока&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;De[[InnerCore/str|stroy]]BlockContinue&amp;quot;, function ([[InnerCore/coords|coords]], [[InnerCore/block|block]], [[InnerCore/progress|progress]], [[InnerCore/player|player]]) {&lt;br /&gt;
&lt;br /&gt;
}); - продолжение уничтожения блока 3 в тик&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;Explosion&amp;quot;, function ([[InnerCore/coords|coords]], [[InnerCore/params|params]]) {&lt;br /&gt;
&lt;br /&gt;
}); - взрыв&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;RedstoneSignal&amp;quot;, function ([[InnerCore/coords|coords]], [[InnerCore/params|params]], [[InnerCore/block|block]]) {&lt;br /&gt;
&lt;br /&gt;
}); -&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;NativeCommand&amp;quot;, function ([[InnerCore/str|str]]) {&lt;br /&gt;
&lt;br /&gt;
}); - команда&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;ClientChat&amp;quot;, function ([[InnerCore/str|str]]) {&lt;br /&gt;
&lt;br /&gt;
}); - сообщение&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;ServerChat&amp;quot;, function ([[InnerCore/str|str]]) {&lt;br /&gt;
&lt;br /&gt;
}); - Мультиплеер не поддерживается&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function ([[InnerCore/coords|coords]], [[InnerCore/item|item]], [[InnerCore/block|block]]) {&lt;br /&gt;
&lt;br /&gt;
}); -&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;PlayerAttack&amp;quot;, function ([[InnerCore/player|player]], [[InnerCore/victim|victim]]) {&lt;br /&gt;
&lt;br /&gt;
}); - атака игрока&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;EntityAdded&amp;quot;, function ([[InnerCore/entity|entity]]) {&lt;br /&gt;
&lt;br /&gt;
}); - добаление моба&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;EntityRemoved&amp;quot;, function ([[InnerCore/entity|entity]]) {&lt;br /&gt;
&lt;br /&gt;
}); - удаление моба&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;EntityDeath&amp;quot;, function ([[InnerCore/entity|entity]]) {&lt;br /&gt;
&lt;br /&gt;
}); - смерть&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;EntityHurt&amp;quot;, function ([[InnerCore/attacker|attacker]], [[InnerCore/victim|victim]], [[InnerCore/damage|damage]]) {&lt;br /&gt;
&lt;br /&gt;
}); - получение урона мобом&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;ProjectileHit&amp;quot;, function ([[InnerCore/projectile|projectile]], [[InnerCore/item|item]], [[InnerCore/target|target]]) {&lt;br /&gt;
&lt;br /&gt;
}); -&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;ProjectileHitBlock&amp;quot;, function ([[InnerCore/projectile|projectile]], [[InnerCore/coords|coords]], [[InnerCore/block|block]]) {&lt;br /&gt;
&lt;br /&gt;
}); -&amp;amp;nbsp;;&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;ProjectileHitEntity&amp;quot;, function ([[InnerCore/projectile|projectile]], [[InnerCore/entity|entity]]) {&lt;br /&gt;
&lt;br /&gt;
}); -&amp;amp;nbsp;;&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;FoodEaten&amp;quot;, function (heal, satRatio) {&lt;br /&gt;
&lt;br /&gt;
}); -&amp;amp;nbsp;;&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;NativeGuiChanged&amp;quot;, function ([[InnerCore/screenName|screenName]]) {&lt;br /&gt;
&lt;br /&gt;
}); - &amp;amp;nbsp;;&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;ExpAdd&amp;quot;, function (amount, [[InnerCore/player|player]]) {&lt;br /&gt;
&lt;br /&gt;
}); - &amp;amp;nbsp;;&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;ExpLevelAdd&amp;quot;, function (levelAmount, [[InnerCore/player|player]]) {&lt;br /&gt;
&lt;br /&gt;
}); -&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;ModDirLoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;;-&amp;amp;nbsp;;сразу после загрузки модов&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;PreBlocksDefined&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - перед добавлением блоков&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;BlocksDefined&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;;- добавление блоков&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;PreLoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;;- перед окончательной загрузкой&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;APILoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;;- для загрузки API модов&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;ModsLoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - еще один&lt;br /&gt;
&lt;br /&gt;
Callback.addCallback(&amp;quot;PostLoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;;- окончательная загрузка всего&amp;lt;br/&amp;gt; &amp;amp;nbsp;&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D1%8B&amp;diff=345</id>
		<title>InnerCore/Контейнеры</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D1%8B&amp;diff=345"/>
				<updated>2018-02-05T16:28:34Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Контейнер - это объект, позволяющий хранить предметы в слотах, осуществлять операции с ними и так же обладающий методами для интеграции с любым интерфейсом, который открыт для этого контейнера. Произвольный контейнер может быть открыт как любой интерфейс, при этом он будет привязан ко всем слотам интерфейса.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Каждый объект tile entity в мире по умолчанию обладает контейнером, который автоматически сохраняется и для которого открывается интерфейс, отданый при выполнении события getGuiScreen. Подробнее об этом в уроке по tile entity и ниже.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Все специальные контейнеры, такие как инвентарь игрока или сундука наследуют все методы базового контейнера.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Методы ===&lt;br /&gt;
&lt;br /&gt;
Создание нового контейнера:&lt;br /&gt;
&amp;lt;pre&amp;gt;var container = new UI.Container();&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Обращение к встроенному контейнеру внутри tile entity: this.container&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Работа со слотами ===&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;pre&amp;gt;//интерфейс tile entity задается так:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
     // ...&lt;br /&gt;
&lt;br /&gt;
     elements: {&lt;br /&gt;
&lt;br /&gt;
          // ...&lt;br /&gt;
&lt;br /&gt;
          &amp;quot;test_slot&amp;quot;: {type: &amp;quot;slot&amp;quot;, x: 400, y: 400, size: 100} // самый обычный слот с именем test_slot&lt;br /&gt;
&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
А прототип tile entity имеет событие клика предметом по нему:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
     // ...&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
     click: function(id, count, data, coords){&lt;br /&gt;
&lt;br /&gt;
          var slot = this.container.getSlot(&amp;quot;test_slot&amp;quot;); // получаем объект слота, который привязан к слоту test_slot в интерфейсе&lt;br /&gt;
&lt;br /&gt;
          slot.id = id; slot.count = count; slot.data = data; // устанавливаем в слот тот предмет, которым тапнули по блоку tile entity&lt;br /&gt;
&lt;br /&gt;
          return false;&lt;br /&gt;
&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt; Таким образом каждый раз, когда мы будем тапать предметом по блоку данного tile entity, то в слоте test_slot будет лежать тот же самый предмет, что и в руке.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Работа с контейнером ===&lt;br /&gt;
&lt;br /&gt;
*getSlot(&amp;quot;имя слота&amp;quot;) -&amp;amp;nbsp;getSlot(&amp;quot;имя слота&amp;quot;) - возвращает объект слота с данным именем, если такого слота нет, создает пустой слот на этом имени и возвращает его. Слот это объект вида {id: id предмета, count: кол-во предмета, data: data предмета}. К слотам интерфейса привязываются слоты с такими же именами, как и у элементов этих слотов в интерфейсе. &lt;br /&gt;
*setSlot(&amp;quot;имя слота&amp;quot;, id, кол-во, data) - устанавливает переданный предмет в слот с данным именем. Краткая запись того, что было показано в примере. &lt;br /&gt;
*clearSlot(&amp;quot;имя слота&amp;quot;) - очищает слот с данным именем &lt;br /&gt;
*validateSlot(&amp;quot;имя слота&amp;quot;) - если кол-во или id предмета нулевое или отрицательное, очищает слот. Быстрое исправление некорректных значений слота (пустой слот с кол-вом больше 0, предмет существует, однако его кол-во 0) &lt;br /&gt;
*validateAll() - вызывает метод validateSlot для всех слотов &lt;br /&gt;
*dropAt(x, y, z) - очищает контейнер и дропает все, что содержалось в нем на данных координатах ввиде предметов &lt;br /&gt;
*refreshSlots() - ничего не делает в стандартном контейнере, для контейнеров инвентаря блоков и мобов обновляет данные о слотах в контейнере &lt;br /&gt;
*applyChanges() - ничего не делает в стандартном контейнере, для контейнеров инвентаря блоков и мобов сохраняет изменения, которые были произведены на контейнере &lt;br /&gt;
*openAs(объект интерфейса любого типа) - открывает данный объект интерфейса и привязывается к нему &lt;br /&gt;
*isOpened() - возвращает, открыт ли этот контейнер для какого-то интерфейса &lt;br /&gt;
*close() - если открыт для какого-то интерфейса, закрывает его &lt;br /&gt;
*getGuiContent() - если открыт для какого-то интерфейса, возвращает объект описания данного интерфейса, который можно изменять для динамичного изменения интерфейса. Не работает, если контейнер открыт для группы окон. &lt;br /&gt;
*getGuiScreen()&amp;amp;nbsp; - если открыт для какого-то интерфейса, возвращает объект этого интерфейса. &lt;br /&gt;
*getElement(&amp;quot;имя элемента&amp;quot;) - если в интерфейсе, для которого открыт данный контейнер, есть элемент с данным именем возвращает его. ВНИМАНИЕ! Это не тот объект элемента, который задается в объекте описания! &lt;br /&gt;
*requireElement(&amp;quot;имя элемента&amp;quot;, &amp;quot;тип элемента&amp;quot;) - аналогичен getElement, но если элемент имеет тип, отличающийся от данного, то вернет null. &lt;br /&gt;
*setScale(&amp;quot;имя элемента шкалы&amp;quot;, заполненность 0-1) - если шкала с данным именем существует, устанавливает ее значение на данное, при этом 0 - пустая шкала, 1 - полная &lt;br /&gt;
*setScaleAsLiquid(&amp;quot;имя элемента шкалы&amp;quot;, строковый id жидкости, заполненность 0-1) - если шкала с данным именем существует, устанавливает ее, как шкалу жидкости, меняя текстуру на текстуру жидкости с данным строковым id, при этом размер шкалы не меняется. &lt;br /&gt;
*setText(&amp;quot;имя элемента текста&amp;quot;, строка) - если элемент текста с данным именем существует, меняет его содержание на переданную строку &lt;br /&gt;
*setTextSize(&amp;quot;имя элемента текста&amp;quot;, размер) - если элемент текста с данным именем существует, меняет его размер &lt;br /&gt;
*setTextColor(&amp;quot;имя элемента текста&amp;quot;, цвет) - если элемент текста с данным именем существует, меняет его цвет &lt;br /&gt;
*setTextShadow(&amp;quot;имя элемента текста&amp;quot;, значение тени) - если элемент текста с данным именем существует, меняет его тень&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D1%8B&amp;diff=344</id>
		<title>InnerCore/Контейнеры</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D1%8B&amp;diff=344"/>
				<updated>2018-02-05T16:23:24Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Контейнер - это объект, позволяющий хранить предметы в слотах, осуществлять операции с ними и так же обладающий методами для интеграции с любым интерфейсом, который открыт для этого контейнера. Произвольный контейнер может быть открыт как любой интерфейс, при этом он будет привязан ко всем слотам интерфейса.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Каждый объект tile entity в мире по умолчанию обладает контейнером, который автоматически сохраняется и для которого открывается интерфейс, отданый при выполнении события getGuiScreen. Подробнее об этом в уроке по tile entity и ниже.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Все специальные контейнеры, такие как инвентарь игрока или сундука наследуют все методы базового контейнера.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Методы ===&lt;br /&gt;
&lt;br /&gt;
Создание нового контейнера:&lt;br /&gt;
&amp;lt;pre&amp;gt;var container = new UI.Container();&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Обращение к встроенному контейнеру внутри tile entity: this.container&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Работа со слотами ===&lt;br /&gt;
&lt;br /&gt;
*getSlot(&amp;quot;имя слота&amp;quot;) - возвращает объект слота с данным именем, если такого слота нет, создает пустой слот на этом имени и возвращает его. Слот это объект вида {id: id предмета, count: кол-во предмета, data: data предмета}. К слотам интерфейса привязываются слоты с такими же именами, как и у элементов этих слотов в интерфейсе. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;pre&amp;gt;//интерфейс tile entity задается так:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
     // ...&lt;br /&gt;
&lt;br /&gt;
     elements: {&lt;br /&gt;
&lt;br /&gt;
          // ...&lt;br /&gt;
&lt;br /&gt;
          &amp;quot;test_slot&amp;quot;: {type: &amp;quot;slot&amp;quot;, x: 400, y: 400, size: 100} // самый обычный слот с именем test_slot&lt;br /&gt;
&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
А прототип tile entity имеет событие клика предметом по нему:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
     // ...&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
     click: function(id, count, data, coords){&lt;br /&gt;
&lt;br /&gt;
          var slot = this.container.getSlot(&amp;quot;test_slot&amp;quot;); // получаем объект слота, который привязан к слоту test_slot в интерфейсе&lt;br /&gt;
&lt;br /&gt;
          slot.id = id; slot.count = count; slot.data = data; // устанавливаем в слот тот предмет, которым тапнули по блоку tile entity&lt;br /&gt;
&lt;br /&gt;
          return false;&lt;br /&gt;
&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Таким образом каждый раз, когда мы будем тапать предметом по блоку данного tile entity, то в слоте test_slot будет лежать тот же самый предмет, что и в руке.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*setSlot(&amp;quot;имя слота&amp;quot;, id, кол-во, data) - устанавливает переданный предмет в слот с данным именем. Краткая запись того, что было показано в примере. &lt;br /&gt;
*clearSlot(&amp;quot;имя слота&amp;quot;) - очищает слот с данным именем &lt;br /&gt;
*validateSlot(&amp;quot;имя слота&amp;quot;) - если кол-во или id предмета нулевое или отрицательное, очищает слот. Быстрое исправление некорректных значений слота (пустой слот с кол-вом больше 0, предмет существует, однако его кол-во 0) &lt;br /&gt;
*validateAll() - вызывает метод validateSlot для всех слотов &lt;br /&gt;
*dropAt(x, y, z) - очищает контейнер и дропает все, что содержалось в нем на данных координатах ввиде предметов &lt;br /&gt;
*refreshSlots() - ничего не делает в стандартном контейнере, для контейнеров инвентаря блоков и мобов обновляет данные о слотах в контейнере &lt;br /&gt;
*applyChanges() - ничего не делает в стандартном контейнере, для контейнеров инвентаря блоков и мобов сохраняет изменения, которые были произведены на контейнере &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Работа с контейнером ===&lt;br /&gt;
&lt;br /&gt;
*openAs(объект интерфейса любого типа) - открывает данный объект интерфейса и привязывается к нему &lt;br /&gt;
*isOpened() - возвращает, открыт ли этот контейнер для какого-то интерфейса &lt;br /&gt;
*close() - если открыт для какого-то интерфейса, закрывает его &lt;br /&gt;
*getGuiContent() - если открыт для какого-то интерфейса, возвращает объект описания данного интерфейса, который можно изменять для динамичного изменения интерфейса. Не работает, если контейнер открыт для группы окон. &lt;br /&gt;
*getGuiScreen()&amp;amp;nbsp; - если открыт для какого-то интерфейса, возвращает объект этого интерфейса. &lt;br /&gt;
*getElement(&amp;quot;имя элемента&amp;quot;) - если в интерфейсе, для которого открыт данный контейнер, есть элемент с данным именем возвращает его. ВНИМАНИЕ! Это не тот объект элемента, который задается в объекте описания! &lt;br /&gt;
*requireElement(&amp;quot;имя элемента&amp;quot;, &amp;quot;тип элемента&amp;quot;) - аналогичен getElement, но если элемент имеет тип, отличающийся от данного, то вернет null. &lt;br /&gt;
*setScale(&amp;quot;имя элемента шкалы&amp;quot;, заполненность 0-1) - если шкала с данным именем существует, устанавливает ее значение на данное, при этом 0 - пустая шкала, 1 - полная &lt;br /&gt;
*setScaleAsLiquid(&amp;quot;имя элемента шкалы&amp;quot;, строковый id жидкости, заполненность 0-1) - если шкала с данным именем существует, устанавливает ее, как шкалу жидкости, меняя текстуру на текстуру жидкости с данным строковым id, при этом размер шкалы не меняется. &lt;br /&gt;
*setText(&amp;quot;имя элемента текста&amp;quot;, строка) - если элемент текста с данным именем существует, меняет его содержание на переданную строку &lt;br /&gt;
*setTextSize(&amp;quot;имя элемента текста&amp;quot;, размер) - если элемент текста с данным именем существует, меняет его размер &lt;br /&gt;
*setTextColor(&amp;quot;имя элемента текста&amp;quot;, цвет) - если элемент текста с данным именем существует, меняет его цвет &lt;br /&gt;
*setTextShadow(&amp;quot;имя элемента текста&amp;quot;, значение тени) - если элемент текста с данным именем существует, меняет его тень&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_GUI&amp;diff=343</id>
		<title>InnerCore/Введение в GUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2_GUI&amp;diff=343"/>
				<updated>2018-02-05T16:22:23Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Для создания GUI (графический интерфейс пользователя) в Inner Core предусмотрены огромные возможности, которые позволяют не только создавать сложный интерфейс в стиле MCPE (и не только), но и эффективно интегрировать его с остальными игровыми элементами, которые добавляются модами с помощью контейнеров.&lt;br /&gt;
&lt;br /&gt;
=== Единицы измерения ===&lt;br /&gt;
&lt;br /&gt;
Все размеры и координаты в интерфейсе задаются в юнитах, где 1 юнит это 1/1000 от ширины окна, в котором создается интерфейс. Если юниты используются для задания позиции и размера окна, то 1 юнит составляет 1/1000 от ширины экрана (как и в случае, когда окно открыто на весь экран).&lt;br /&gt;
&lt;br /&gt;
=== Текстуры и цвет ===&lt;br /&gt;
&lt;br /&gt;
Текстуры интерфейса, которые находятся в папке gui вашего мода, будут загруженны и доступны под именем файла без расширения: &amp;quot;gui/slot.png&amp;quot; будет загружен как &amp;quot;slot&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Цвет задается с помощью метода класса android api android.graphics.Color.rgb(r, g, b) - где r, g и b - красная, зеленая и синяя составляющие цвета от 0 до 255 каждая.&lt;br /&gt;
&lt;br /&gt;
Фонт текста задается как объект с 3 значениями: {size: ..., color: ..., shadow: ...}, где size - размер текста, color - цвет, shadow - тень со значением от 0 до 1.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Текстурой рамки является текстура размера 16x16, изображающая нужную рамку самого маленького размера, которая будет потом растянута до любых размеров.&lt;br /&gt;
&lt;br /&gt;
=== Объект описания ===&lt;br /&gt;
&lt;br /&gt;
Любой интерфейс имеет объект описания, позволяющий задать данный интерфейс и динамично изменять его, меняя этот объект, пока интерфейс открыт. Объект описания любого типа имеет значения drawing (массив) и elements (объект), которые задают отрисовку фона и элементы соответственно. Их изменение из любого места ведет к динамичному изменению интерфейса, если он открыт. Т.е если вы изменените параметры какого-то элемента или команды отрисовки, то интерфейс изменится в соответствии с вашими изменениями.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Команды рисования ===&lt;br /&gt;
&lt;br /&gt;
Команды рисования задаются в объекте описания в массиве drawing и отвечают за отрисовку фона интерфейса.&lt;br /&gt;
&lt;br /&gt;
==== Формат: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;drawing: [&lt;br /&gt;
     {/* команда 1 */},&lt;br /&gt;
     {/* команда 2 */},&lt;br /&gt;
     {/* команда 3 */},&lt;br /&gt;
     ....&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Стардартные команды: ====&lt;br /&gt;
&lt;br /&gt;
*{type: &amp;quot;background&amp;quot;, color: цвет} - заполняет весь фон указанным цветом. &lt;br /&gt;
*{type: &amp;quot;bitmap&amp;quot;, bitmap: &amp;quot;текстура&amp;quot;, x: число, y: число, scale: число} - отрисовывает данную текстуру на данных координатах. Параметр scale отвечает за то, сколько юнитов приходится на 1 пиксель текстуры, если этот параметр не указан, он будет равен 1. &lt;br /&gt;
*{type: &amp;quot;frame&amp;quot;, x: число, y: число, width: число, height: число, bitmap: &amp;quot;текстура рамки&amp;quot;, bg: цвет, scale: число} - отрисовывает рамку данного размера на данных координатах, bitmap - текстура рамки, если не указана, будет использовать стандартная, bg - определите, если хотите, чтобы у рамки был фон какого-то цвета, scale - во сколько раз будет увеличена текстура рамки (толщина рамки), если не указана, то принята за 1. &lt;br /&gt;
*{type: &amp;quot;text&amp;quot;, text: &amp;quot;текст&amp;quot;, x: число, y: число, font: фонт текста} - отрисовывает данный текст на данных координатах с данным фонтом. &lt;br /&gt;
*{type: &amp;quot;line, x1: число, y1: число, x2: число, y2: число, width: число, color: цвет} - отрисовывает линию между заданными координатами. width - толщина линии в юнитах, по-умолчанию 1, color - цвет линии, по-умолчанию черный. &lt;br /&gt;
&lt;br /&gt;
=== Элементы ===&lt;br /&gt;
&lt;br /&gt;
Элементы задаются в объекте описания в объекте elements, каждый элемент должен иметь уникальное имя. По этим именам с ними можно будет взаимодействовать из других частей кода.&lt;br /&gt;
&lt;br /&gt;
==== Формат: ====&lt;br /&gt;
&amp;lt;pre&amp;gt;elements: {&lt;br /&gt;
     &amp;quot;name1&amp;quot;: {/* элемент 1 */},&lt;br /&gt;
     &amp;quot;name2&amp;quot;: {/* элемент 2 */},&lt;br /&gt;
     &amp;quot;name3&amp;quot;: {/* элемент 3 */},&lt;br /&gt;
     ....&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Объект функций клика ====&lt;br /&gt;
&amp;lt;div&amp;gt;Такой объект используется в некоторых элементах, например в кнопках, чтобы определить действие при нажатии.&amp;amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;
Формат объекта:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
     onClick: function(position, container, tileEntity, window, canvas, scale){ // если определен, задает функцию короткого нажатия&lt;br /&gt;
          // container - контейнер, для которого открыт данный интерфейс&lt;br /&gt;
          // tileEntity - если интерфейс открыт для какого то tile entity, то передаст его, иначе null&lt;br /&gt;
          // остальные параметры будут рассмотрены в других уроках&lt;br /&gt;
     },&lt;br /&gt;
&lt;br /&gt;
     onLongClick: function(position, container, tileEntity, window, canvas, scale){ // если определен, задает функцию долгого нажатия&lt;br /&gt;
          // container - контейнер, для которого открыт данный интерфейс&lt;br /&gt;
          // tileEntity - если интерфейс открыт для какого то tile entity, то передаст его, иначе null&lt;br /&gt;
          // остальные параметры будут рассмотрены в других уроках&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==== Стандартные элементы: ====&lt;br /&gt;
&lt;br /&gt;
*{type: &amp;quot;slot&amp;quot;, x: число, y: число, size: число, visual: лог.значение, bitmap: &amp;quot;текстура&amp;quot;, clicker: объект функций клика} - создает слот на данных координатах данного размера в юнитах, если параметр visual опреден и равен true, то слот не может быть выделен и из него ничего нельзя забрать, если bitmap определена, то стандартная текстура слота будет изменена на данную, если clicker определен, то стандартные функции клика будут заменены на определенные в нем. &lt;br /&gt;
*{type: &amp;quot;invSlot&amp;quot;, x: число, y: число, size: число, index: число, bitmap: &amp;quot;текстура&amp;quot;} - создает частный случай слота - слот инвентаря на данных координатах данного размера в юнитах, синхронизированный со слотом инвентаря с индексом index (от 0 до 45, слоты 0-8 - хотбар), если bitmap определена, то стандартная текстура слота будет изменена на данную. &lt;br /&gt;
*{type: &amp;quot;button&amp;quot;, x: число, y: число, bitmap: &amp;quot;текстура&amp;quot;, bitmap2: &amp;quot;текстура&amp;quot;, scale: число, clicker: объект функций клика} - создает кнопку на данных координатах с данной текстурой bitmap, функции клика будут вызываться при нажатии на кнопку, если bitmap2 определена, то при нажатии кнопку изменит текстуру на нее. Параметр scale отвечает за то, сколько юнитов приходится на 1 пиксель текстуры, если этот параметр не указан, он будет равен 1.&amp;amp;nbsp;&amp;lt;br/&amp;gt; Параметры функций объекта клика имеют тут другой порядок: &lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
     onClick: function(container, tileEntity, position,  window, canvas, scale){/* ... */},&lt;br /&gt;
     onLongClick: function(container, tileEntity, position, window, canvas, scale){/* ... */}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*{type: &amp;quot;closeButton&amp;quot;, x: число, y: число, global: лог.значение, bitmap: &amp;quot;текстура&amp;quot;, bitmap2: &amp;quot;текстура&amp;quot;, scale: число} - создает кнопку закрытия окна на данных координатах, если bitmap и bitmap2 не определены, кнопка имеет стандартную текстуру, если параметр global определен и равен true, то кнопка закроет всю группу окон, а не только данное окно. Параметр scale отвечает за то, сколько юнитов приходится на 1 пиксель текстуры, если этот параметр не указан, он будет равен 1. &lt;br /&gt;
*{type: &amp;quot;scale&amp;quot;, x: число, y: число, direction: число, bitmap: &amp;quot;текстура&amp;quot;, scale: число, invert: лог.значение, overlay: &amp;quot;текстура&amp;quot;, overlayScale: число, overlayOffset: {x: число, y: число}} - создает шкалу на данных координатах с текстурой bitmap и в направлении direction. Параметр scale отвечает за то, сколько юнитов приходится на 1 пиксель текстуры, если этот параметр не указан, он будет равен 1.&amp;lt;br/&amp;gt; Направления: &lt;br /&gt;
**0 - право &lt;br /&gt;
**1 - верх &lt;br /&gt;
**2 - лево &lt;br /&gt;
**3 - низ   &lt;br /&gt;
&lt;br /&gt;
Если invert определен и равен true, то позиция вырезки из текстуры будет инвертирована, что создаст видимость того, что шкала как бы выдвигается, а не заполняется.&amp;lt;br/&amp;gt; overlay - если определен, накладывает на шкалу дополнительную текстуру, которая перекрывает шкалу.&amp;lt;br/&amp;gt; overlayScale - параметр scale для перекрытия.&amp;lt;br/&amp;gt; overlayOffset: {x: , y: } - если определен, задает позицию перекрытия, относительно позиции шкалы в юнитах.&lt;br /&gt;
&lt;br /&gt;
*{type: &amp;quot;text&amp;quot;, x: число, y: число, width: число, height: число, text: &amp;quot;текст&amp;quot;, font: фонт текста} - создает динамичный текст на заданных координатах, width и height задают длину и ширину области, которая будет очищаться перед отрисовкой текста. text задает начальный текст, font - фонт текста. &lt;br /&gt;
*{type: &amp;quot;image&amp;quot;, x: число, y: число, bitmap: &amp;quot;текстура&amp;quot;, scale: число, overlay: &amp;quot;текстура&amp;quot;, overlayScale: число, overlayOffset: {x: число, y: число}, clicker: объект функций клика} - создает динамичную картинку на заданых координатах с текстурой bitmap. Параметр scale отвечает за то, сколько юнитов приходится на 1 пиксель текстуры, если этот параметр не указан, он будет равен 1.&amp;lt;br/&amp;gt; Если clicker определен, то функции клика из него будут вызываться при нажатии на элемент.&amp;lt;br/&amp;gt; overlay - если определен, накладывает на шкалу дополнительную текстуру, которая перекрывает шкалу.&amp;lt;br/&amp;gt; overlayScale - параметр scale для перекрытия.&amp;lt;br/&amp;gt; overlayOffset: {x: , y: } - если определен, задает позицию перекрытия, относительно позиции шкалы в юнитах. &lt;br /&gt;
&lt;br /&gt;
=== Стилизация&amp;amp;nbsp; ===&lt;br /&gt;
&lt;br /&gt;
Кроме drawing и elements в объекте описания можно определить объект стилизации интерфейса для изменения стандартных текстур элементов.&lt;br /&gt;
&lt;br /&gt;
Если какое-то из нижеприведённых значений будет указано в объекте стилизации, оно заменит стандартый параметр.&lt;br /&gt;
&amp;lt;pre&amp;gt;params: {&lt;br /&gt;
     slot: &amp;quot;текстура слота&amp;quot;,&lt;br /&gt;
     invSlot: &amp;quot;текстура слота инвентаря&amp;quot;,&lt;br /&gt;
     frame: &amp;quot;текстура обычной рамки&amp;quot;,&lt;br /&gt;
     selection: &amp;quot;текстура выделения слота&amp;quot;,&lt;br /&gt;
     closeButton: &amp;quot;текстура кнопки закрытия&amp;quot;,&lt;br /&gt;
     closeButton2: &amp;quot;текстура нажатой кнопки закрытия&amp;quot;,&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Типы интерфейса ===&lt;br /&gt;
&lt;br /&gt;
Интерфейс бывает 3 типов: однооконный, многооконный и стандартный. В данной главе будет рассмотрен только последний, как самый простой в использовании и при этом эффективный и применимый в большинстве случаев. Объект интерфейса во всех этих случаев создается как объект класса одного из типов, после создания такой объект класса может быть настроен и открыт для любого контейнера.&lt;br /&gt;
&lt;br /&gt;
Любой интерфейс может быть протестирован с помощью функции UI.testUI(объект интерфейса);&lt;br /&gt;
&lt;br /&gt;
=== Стандартный интерфейс ===&lt;br /&gt;
&lt;br /&gt;
Создается как объект класса UI.StandartWindow, которому может быть передан объект описания.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Пример использования:&lt;br /&gt;
&amp;lt;pre&amp;gt;var testUiScreen = UI.StandartWindow({/* ... пустой объект описания ... */});&lt;br /&gt;
UI.testUI(testUiScreen); // откроет полностью пустой интерфейс&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Формат объекта описания стандартного типа интерфейса:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
     standart: { // стандартные параметы, поддерживаемые данным типом интерфейса, позволяют быстро задавать базовые элементы, такие как заголовок, фон и инвентарь&lt;br /&gt;
          // если хотите определить какой то стандартный элемент, но оставить его без изменений, то пропишите там единственное значение - standart: true, например inventory: {standart: true} &lt;br /&gt;
          header: { // определите, если вам нужен заголовок, заголовок содержит кнопку закрытия&lt;br /&gt;
               text: { // обязательный параметр, если заголовок определен&lt;br /&gt;
                    text: &amp;quot;текст заголовка&amp;quot;, // содержание текста, обязательный параметр&lt;br /&gt;
               },&lt;br /&gt;
​​​​​​​               font: {...}, // фонт текста, определите, если хотите изменить стандартный&lt;br /&gt;
               color: цвет, // нужен только, если вы хотите изменить цвет заголовка&lt;br /&gt;
               frame: &amp;quot;текстура рамки&amp;quot;, // нужно только, если вы хотите изменить текстуру рамки заголовка&lt;br /&gt;
               width: 80, // высота заголовка в юнитах,&lt;br /&gt;
               hideButton: true, // определите и установите значение на true, чтобы убрать кнопку закрытия&lt;br /&gt;
          },&lt;br /&gt;
          inventory: { // для определения стандартного инвентаря используйте inventory: {standart: true} &lt;br /&gt;
               width: 300, // ширина окна инвентаря &lt;br /&gt;
               padding: 20, // паддинг окна инвентаря&lt;br /&gt;
          },&lt;br /&gt;
          background: { // для определения стандартного фона используйте background: {standart: true} &lt;br /&gt;
               color: цвет, // определите, если хотите изменить цвет фона&lt;br /&gt;
               bitmap: &amp;quot;текстура фона&amp;quot;, // определите, если хотите добавить текстуру фона&lt;br /&gt;
               frame: &amp;quot;текстура рамки&amp;quot; // определите, если хотите добавить рамку&lt;br /&gt;
          },&lt;br /&gt;
          minHeight: 650, // если высота окна в юнитах меньше этого параметра, окно будет прокручиваться так, чтобы его внутренний размер составлял по высоте minHeight юнитов&lt;br /&gt;
     },&lt;br /&gt;
     params: {&lt;br /&gt;
          // стилизация (изменение стандартных текстур)&lt;br /&gt;
     },&lt;br /&gt;
     drawing: [/* команды отрисовки фона */],&lt;br /&gt;
     elements: {/* описание элементов */}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Пример ===&lt;br /&gt;
&lt;br /&gt;
Как пример использован реальный интерфейс из таумкрафта (реактор аспектов).&lt;br /&gt;
&lt;br /&gt;
'''Для того, чтобы пример работал, установите таумкрафт или скопируйте оттуда нужные текстуры интерфейса''' (которые используются в объекте описания интерфейса).&lt;br /&gt;
&amp;lt;pre&amp;gt;var aspectReactorGui = new UI.StandartWindow({&lt;br /&gt;
     standart: {&lt;br /&gt;
          header: {&lt;br /&gt;
               text: {&lt;br /&gt;
                    text: &amp;quot;Aspect reactor&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               color: android.graphics.Color.rgb(0x47, 0x26, 0x0c),&lt;br /&gt;
               frame: &amp;quot;thaum_frame_header&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          inventory: {&lt;br /&gt;
               standart: true&lt;br /&gt;
          },&lt;br /&gt;
          background: {&lt;br /&gt;
               bitmap: &amp;quot;thaum_background&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          minHeight: 600&lt;br /&gt;
     },&lt;br /&gt;
     params: {&lt;br /&gt;
          textures: {&lt;br /&gt;
               slot: &amp;quot;thaum_slot&amp;quot;,&lt;br /&gt;
               invSlot: &amp;quot;thaum_inv_slot&amp;quot;,&lt;br /&gt;
               selection: &amp;quot;thaum_selection&amp;quot;,&lt;br /&gt;
               closeButton: &amp;quot;thaum_close_button_up&amp;quot;,&lt;br /&gt;
               closeButton2: &amp;quot;thaum_close_button_down&amp;quot;,&lt;br /&gt;
               frame: &amp;quot;thaum_frame_default&amp;quot;&lt;br /&gt;
          }&lt;br /&gt;
     },&lt;br /&gt;
     drawing: [&lt;br /&gt;
          {type: &amp;quot;bitmap&amp;quot;, x: 842, y: 104, bitmap: &amp;quot;aspect_scale_background&amp;quot;, scale: 4},&lt;br /&gt;
          {type: &amp;quot;bitmap&amp;quot;, x: 560, y: 100, bitmap: &amp;quot;aspect_reactor_background&amp;quot;, scale: 360 / 128},&lt;br /&gt;
     ],&lt;br /&gt;
     elements: {&lt;br /&gt;
          &amp;quot;slot1&amp;quot;: {type: &amp;quot;slot&amp;quot;, x: 400, y: 100, size: 160},&lt;br /&gt;
          &amp;quot;slot2&amp;quot;: {type: &amp;quot;slot&amp;quot;, x: 400, y: 300, size: 160},&lt;br /&gt;
          &amp;quot;aspectScale&amp;quot;: {type: &amp;quot;scale&amp;quot;, x: 850, y: 120, direction: 1, scale: 8, value: 1, bitmap: &amp;quot;aspectScale_nitor&amp;quot;, overlay: &amp;quot;aspect_scale_overlay_1&amp;quot;, overlayScale: 4},&lt;br /&gt;
          &amp;quot;stateText&amp;quot;: {type: &amp;quot;text&amp;quot;, x: 625, y: 227, width: 90, height: 100, text: &amp;quot;&amp;quot;, font: {color: android.graphics.Color.WHITE, shadow: .6, size: 25}}&lt;br /&gt;
     }&lt;br /&gt;
});&lt;br /&gt;
UI.testUI(aspectReactorGui); // тестовое открытие после создания&lt;br /&gt;
// добавляем созданный интерфейс нашему tile entity из прошлых глав&lt;br /&gt;
IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
// создаем блок&lt;br /&gt;
TileEntity.registerPrototype(BlockID.testBlock, {&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;defaultValues: {&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;someValue: 0 // сохраняемое значение someValue, по умолчанию 0&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;},&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;tick: function(){&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// что то сделать каждый тик, к примеру выводим someValue&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Debug.message(this.data.someValue);&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;},&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;click: function(id, count, data, coords){&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;this.data.someValue = 1; // установить значение someValue на 1&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;},&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;getGuiScreen: function(){&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;return aspectReactorGui; // при попытке открыть интерфейс, возвращаем наш объект интерфейса&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;// остальные события не трогаем&lt;br /&gt;
});&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_Callback&amp;diff=337</id>
		<title>InnerCore/Модуль Callback</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_Callback&amp;diff=337"/>
				<updated>2018-02-05T15:49:34Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Модуль Callback позволяет отлавливаь основные события игры.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы отловить определенное событие в игре, используется функция&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;callback_name&amp;quot;, function(args){&lt;br /&gt;
    //your code here&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Список всех коллбеков можно найти [[InnerCore/Список_коллбеков|здесь]].&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы вызвать событие вручную, используется метод&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;Callback.invokeCallback(&amp;quot;callback_name&amp;quot;);&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%BB%D0%BB%D0%B1%D0%B5%D0%BA%D0%BE%D0%B2&amp;diff=276</id>
		<title>InnerCore/Список коллбеков</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%BB%D0%BB%D0%B1%D0%B5%D0%BA%D0%BE%D0%B2&amp;diff=276"/>
				<updated>2018-02-05T14:42:40Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ReadSaves&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - чтение всех сохранений&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;WriteSaves &amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - запись всех сохранений&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;GenerateNetherChunk&amp;quot;, function (chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
}); - генерация чанка в аду по координатам&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;GenerateEndChunk&amp;quot;, function&amp;amp;nbsp;(chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
}); - генерация чанка в Эндер мире по координатам&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;GenerateChunk&amp;quot;, function (chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
}); - генерация чанка в обычном мире по координатам&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;GenerateChunkUndeground&amp;quot;, function (chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
}); - хз что это, скорей всего генерация чанка под землей&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;PreRestart&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});- перед перезапуском bl&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;tick&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - тик&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;LevelSelected&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - начало загрузки мира&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;LevelLoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - конец загрузки мира&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;LevelLeft&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - выход из мира&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;DestroyBlock &amp;quot;, function (coords, block, player) {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;- уничтожение блока (coords.relative, coords.side)&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;DestroyBlockStart&amp;quot;, function (coords, block, player) {&lt;br /&gt;
&lt;br /&gt;
}); - начало уничтожения блока&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;DestroyBlockContinue&amp;quot;, function (coords, block, progress, player) {&lt;br /&gt;
&lt;br /&gt;
}); - продолжение уничтожения блока 3 в тик&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;Explosion&amp;quot;, function (coords, params) {&lt;br /&gt;
&lt;br /&gt;
}); - взрыв params.entity, params.power, params.onFire&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;RedstoneSignal&amp;quot;, function (coords, params, block) {&lt;br /&gt;
&lt;br /&gt;
}); - params.power, params.booleanPar&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;NativeCommand&amp;quot;, function (str) {&lt;br /&gt;
&lt;br /&gt;
}); - команда&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ClientChat&amp;quot;, function (str) {&lt;br /&gt;
&lt;br /&gt;
}); - сообщение&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ServerChat&amp;quot;, function (str) {&lt;br /&gt;
&lt;br /&gt;
}); - Мультиплеер не поддерживается&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ItemUse&amp;quot;, function (coords, item, block) {&lt;br /&gt;
&lt;br /&gt;
}); - coords.relative, coords.side - там предметом item по блоку block&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;PlayerAttack&amp;quot;, function (player, victim) {&lt;br /&gt;
&lt;br /&gt;
}); - атака игрока&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;EntityAdded&amp;quot;, function (entity) {&lt;br /&gt;
&lt;br /&gt;
}); - добаление моба&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;EntityRemoved&amp;quot;, function (entity) {&lt;br /&gt;
&lt;br /&gt;
}); - удаление моба&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;EntityDeath&amp;quot;, function (entity) {&lt;br /&gt;
&lt;br /&gt;
}); - смерть&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;EntityHurt&amp;quot;, function (attacker, victim, damage) {&lt;br /&gt;
&lt;br /&gt;
}); - получение урона мобом&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ProjectileHit&amp;quot;, function (projectile, item, target) {&lt;br /&gt;
&lt;br /&gt;
}); - (item.id, item.count, item.data), (target.x, target.y, target.z, if block hit - target.coords, if entity hit - target.entity)&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ProjectileHitBlock&amp;quot;, function (projectile, coords, block) {&lt;br /&gt;
&lt;br /&gt;
}); -&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ProjectileHitEntity&amp;quot;, function (projectile, entity) {&lt;br /&gt;
&lt;br /&gt;
}); -&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;FoodEaten&amp;quot;, function (heal, satRatio) {&lt;br /&gt;
&lt;br /&gt;
}); -&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;NativeGuiChanged&amp;quot;, function (screenName) {&lt;br /&gt;
&lt;br /&gt;
}); - &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ExpAdd&amp;quot;, function (amount, player) {&lt;br /&gt;
&lt;br /&gt;
}); - &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ExpLevelAdd&amp;quot;, function (levelAmount, player) {&lt;br /&gt;
&lt;br /&gt;
}); -&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ModDirLoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;-&amp;amp;nbsp;сразу после загрузки модов&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;PreBlocksDefined&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - перед добавлением блоков&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;BlocksDefined&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;- добавление блоков&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;PreLoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;- перед окончательной загрузкой&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;APILoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;- для загрузки API модов&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;ModsLoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
}); - еще один&lt;br /&gt;
&lt;br /&gt;
''Callback''.add''Callback''(&amp;quot;PostLoaded&amp;quot;, function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;amp;nbsp;- окончательная загрузка всего&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%B1%D0%BE%D0%B2&amp;diff=175</id>
		<title>InnerCore/Создание мобов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%B1%D0%BE%D0%B2&amp;diff=175"/>
				<updated>2017-07-23T18:53:52Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= СОЗДАНИЕ МОБОВ =&lt;br /&gt;
&lt;br /&gt;
Для создания нового моба нужно зарегистрировать его тип с его уникальным id, по которому в последствии моб будет определяться. После создания, объект типа моба будет использоваться для описания этого типа. Для регистрации нового типа мобов используется метод&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
MobRegistry.registerEntity(&amp;quot;name&amp;quot;)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
где '''name '''- уникальное название данного типа мобов. Эта функция возвращает созданный ею объект типа моба. Новый моб по умолчанию не будет иметь стандартную модель, стандартными здоровьем и размерами, не будет обладать искусственным интеллектом (будет стоять на месте) и дропом. Все это ему предстоит добавить. Пример:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
var myTestEntity = MobRegistry.registerEntity(&amp;quot;test-entity&amp;quot;); // создаем тип моба под названием test-entity и сохраняем его в переменную, этот моб пока ничего не делает и имеет стандартные параметры&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= СПАВН МОБОВ =&lt;br /&gt;
&lt;br /&gt;
Для спавна новых мобов в мир используется функция&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Entity.spawnCustom(&amp;quot;name&amp;quot;, x, y, z) - создает моба типа name на данных координатах и возвращает объект этого моба.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
IDRegistry.genItemID(&amp;quot;test-entity-spawn&amp;quot;); // регистрируем id предмета-спавнера&amp;lt;br/&amp;gt; Item.createItem(&amp;quot;test-entity-spawn&amp;quot;, &amp;quot;spawn test entity&amp;quot;, {name: &amp;quot;stick&amp;quot;}); // создаем предмет- спавнер&amp;lt;br/&amp;gt; Item.registerUseFunction(&amp;quot;test-entity-spawn&amp;quot;, function(coords, item, block){ // задаем предмету- спавнеру функцию использования&amp;lt;br/&amp;gt; Entity.spawnCustom(&amp;quot;test-entity&amp;quot;, coords.relative.x + .5, coords.relative.y + .5, coords.relative.z + .5); // при использовании создать моба нашего типа на координатах использования });&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Как результат этого кода при нажатии нашим новым предметом в любую точку, там появится моб, который будет стоять на месте и выглядеть примерно так:&lt;br /&gt;
&lt;br /&gt;
[https://pp.userapi.com/c638116/v638116224/49ca8/-1HCt15x470.jpg https://pp.userapi.com/c638116/v638116224/49ca8/-1HCt15x470.jpg]&lt;br /&gt;
&lt;br /&gt;
= КОНТРОЛЛЕРЫ МОБОВ =&lt;br /&gt;
&lt;br /&gt;
Новые типы мобов в Core Engine задаются как объекты, которые обладают набором контроллеров - объектов, каждый из которых обладает набором событий и отвечающих за что- то свое. С помощью настройки и изменения этих контроллеров описывается сам тип мобов. Типы мобов имеют стандартные контроллеры, но так же можно создавать свои, однако про это будет в другой главе. Для настройки контроллера в функцию его настройки передается объект, который содержит все нужные функции и значения, которые нужно изменить в контроллере. В дальнейшей документации для стандартных контроллеров будет приводиться объект со всеми значениями, которые можно изменить, однако если какое-то из них не требуется, его можно просто не прописывать. Методам, которые вызываются '''внутри '''контроллера доступные следующие значения: 1. &amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;''this.parent''&amp;lt;/span&amp;gt; - объект моба, содержащий все контроллеры 2. &amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;''this.entity''&amp;lt;/span&amp;gt; - сам моб, на которого будут вызываться все операции с ним (например &amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;''Entity.getPosition(this.entity)''&amp;lt;/span&amp;gt;)&amp;lt;br/&amp;gt; В большинстве случаев вам не нужно будет добавлять свои контроллеры и вам достаточно будет стандартных:&lt;br /&gt;
&lt;br /&gt;
#&amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;''Event Controller (event)''&amp;lt;/span&amp;gt; - контроллер событий - это контроллер, настрока которого позволяет добавлять функции, которые будут вызываться, когда с мобом происходит какое то событие. &lt;br /&gt;
#&amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;''Description Controller (description)''&amp;lt;/span&amp;gt; - контроллер описания - это контроллер, который позволяет описать основные параметры моба - его размеры, здоровье и дроп. &lt;br /&gt;
#&amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;''Visual Controller (visual)''&amp;lt;/span&amp;gt; - визуальный контроллер - этот контроллер загружает модели и позволяет оперировать ими меняя их и запуская анимации. Отвечает за внешний вид моба. &lt;br /&gt;
#&amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;''AI Controller (AI)''&amp;lt;/span&amp;gt; - контроллер ИИ (искусственного интеллекта) - это контроллер, который обеспечивает мобу ИИ, совмещая объекты ИИ и управляя ими. &lt;br /&gt;
&lt;br /&gt;
В скобках даны имена, по которым один контроллер может обращаться к другому через this.parent, например к визуальному контроллеру this.parent.visual.&lt;br /&gt;
&lt;br /&gt;
= КОНТРОЛЛЕР СОБЫТИЙ =&lt;br /&gt;
&lt;br /&gt;
Для настройки контроллера событий используется функция&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;сущность&amp;gt;.customizeEvents(custom)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;где '''custom '''- объект, содержащий все события, которые вам требуются. Ниже приведен объект настройки ''(custom)'' со всеми возможными событиями и их описанием:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;tick: function() {}, // вызывается каждый игровой тик для моба этого типа&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;created: function(extra) {}, // вызывается при создании моба данного типа, extra - дополнительные данные, которые могут быть переданы в &amp;amp;nbsp; функцию спавна 5 параметром&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;loaded: function() {}, // вызывается, когда моб загружается в мир - после создания, входа в мир или загрузки чанка, если игрок был далеко, но подошел достаточно близко&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;unloaded: function() {}, // вызывается, когда чанк с мобом был выгружен, игрок ушел слишком далеко&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;removed: function() {}, // вызывается, если моб уничтожен или деспавнился&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;death: function(attacker) {}, // вызывается, если моб убит, attacker - в случае убийства мобом и игроком в него передается моб-убийца&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;attackedBy: &amp;amp;nbsp; &amp;amp;nbsp; function(attacker) {}, // вызывается при атаке моба, attacker - атакующий&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;hurtBy: function(attacker, amount) {}, // вызывается при получении урона, attacker определен если урон получен от моба или игрока&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;projectileHit: function(projectile) {} // вызывается, когда в моба попадает снаряд, projectile - этот снаряд&amp;lt;br/&amp;gt; }&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
var myTestEntity = new MobRegistry.registerEntity(&amp;quot;test-entity&amp;quot;);&amp;lt;br/&amp;gt; myTestEntity.customizeEvents({&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;created: function() {&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;Game.message(&amp;quot;Hi!&amp;quot;); // при создании моба напишет &amp;quot;Hi!&amp;quot; в чат&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;},&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;attackedBy: function(attacker) {&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;Game.message(&amp;quot;Ouch, &amp;quot; + attacker + &amp;quot;!&amp;quot;); // при атаке моба напишет &amp;quot;Ouch,&amp;amp;nbsp;!&amp;quot; в чат&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;},&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;tick: function() {&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;var position = Entity.getPosition(this.entity); // получаем позицию моба&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;Particles.addParticle(position.x, position.y + .5, position.z, Native.ParticleType.flame, 0, 0.1, 0); // создаем на позиции моба частицу огня каждый тик &amp;amp;nbsp; &amp;amp;nbsp; }&amp;lt;br/&amp;gt; });&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
= КОНТРОЛЛЕР ОПИСАНИЯ =&lt;br /&gt;
&lt;br /&gt;
Для настроки контроллера описания используется функция&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;сущность&amp;gt;..customizeDescription(custom)&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
где '''custom '''- объект, содержащий все настройки описания.&amp;lt;br/&amp;gt; Ниже приведен объект ''(custom)'' со всеми возможными настройками и их описанием:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;getHitbox: function() {&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;return {&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;w: hitboxWidth,&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;h: hitboxHeight&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;}; // возвращает ширину и высоту хитбокса моба, если не задана, его размеры будут 1, 1&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;},&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;getHealth: function() { return maxHealth; // возвращает максимальное здоровье моба, которое задается ему при спавне, если не задана, то &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; здоровье будет 20 единиц&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;},&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;getNameTag: function() { return &amp;quot;name tag&amp;quot;; // возвращает имя моба, если не задана, имени не будет&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;},&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;getDrop: function(attacker) { return dropArray; // возвращает массив возможного дропа при смерти, attacker - если определен, моб-убийца&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;/* Формат дропа: массив, состоящий из возможных предметов, каждый предмет задается так:&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; id: id предмета: число,&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; count: кол-во предмета: либо число, либо массив чисел (будет выбрано случайно из массива), либо объект {min: , max: } - кол-во будет &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;выбрано&amp;amp;nbsp;между min и max, включая их&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; data: метадата предмета, формат аналогичен count&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;chance: шанс, число от 0 до 1 - вероятность дропа этого предмета&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;separate: если true, то при количестве больше 1, предмет будет дропнут в виде нескольких предметов, каждый с кол-вом 1&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;} */&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&amp;lt;br/&amp;gt; }&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
myTestEntity.customizeDescription({&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;getDrop: function() {&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;return [{&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;id: 331,&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;count: {min: 5, max: 10},&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;separate: true, chance: 0.5&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;},&amp;amp;nbsp;// редстоун в кол-ве от 5 до 10&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;{&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;id: 264,&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;count: [1, 1, 3],&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;separate: true, chance: 0.5&amp;lt;br/&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; }, // либо 1 либо 3 алмаза, при этом 1 выпадает в 2 раза чаще ];&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&amp;lt;br/&amp;gt; });&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
= МОДЕЛИ МОБОВ ТЕКСТУРЫ =&lt;br /&gt;
&lt;br /&gt;
Текстуры в Core Engine задаются специальным типом объектов и используются для рендера мобов. Текстуры содержат информацию о самой текстуре, ее разрешении, масштабировании и данные для анимации. Для создания текстуры, файл этой текстуры должен присутствовать где-то в папке images в архиве ресурсов мода '''(resources.zip по умолчанию)'''. Чтобы создать объект текстуры нужно вызвать&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
new Texture(&amp;quot;name&amp;quot;)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
где '''name '''- имя текстуры в ресурсах с расширением. У объекта текстуры имеются базовые методы, которые нужны для установки разрешения текстуры:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;текстура&amp;gt;.setResolution(w, h) - устанавливает разрешение, w, h - высота текстуры в пикселях.&amp;lt;br/&amp;gt; &amp;lt;текстура&amp;gt;.setPixelScale(scale) - устанавливает масштаб пикселей (чем больше, тем больше пикселей помещается на 1 единицу модели.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
К примеру значение 1 = текстурам 16х16, 2 = 32х32 и т.д.). По умолчанию масштаб равен 1 (16х16).&amp;lt;br/&amp;gt; '''Пример''':&lt;br /&gt;
&lt;br /&gt;
Файл bird_blue.png находится в ресурсах и имеет разрешение 128x64. Однако это текстура моба, которая будет использоваться в разрешении вдвое больше стандартного.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
var blue_bird_texture = new Texture(&amp;quot;bird_blue.png&amp;quot;); // создадим объект текстуры&amp;lt;br/&amp;gt; blue_bird_texture.setResolution(128, 64); // зададим разрешение&amp;lt;br/&amp;gt; blue_bird_texture.setPixelScale(2); // установим масштабирование&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Так же этот код можно записать короче, в таком формате:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
var blue_bird_texture = new Texture(&amp;quot;bird_blue.png&amp;quot;).setResolution(128, 64).setPixelScale(2);&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Для создания анимации текстуре используется метод&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
.setAnimation([&amp;quot;name1&amp;quot;, &amp;quot;name2&amp;quot;, ...], delay)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;где '''name1''', '''name2 '''и т.д. - имена файлов кадров анимации, которая будет проигрываться циклично, а '''delay '''- время показа каждого кадра в тиках, если этот параметр не указан, он будет равен 1.&lt;br /&gt;
&lt;br /&gt;
= РЕНДЕРЫ =&lt;br /&gt;
&lt;br /&gt;
Рендеры мобов задают их статичную модель без текстуры, являясь набором параллелепипедов (боксов). Для создания объекта рендера нужно вызвать &amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;''new Render()''&amp;lt;/span&amp;gt;. Основной метод объекта рендера для его создания это метод&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
.setPart(&amp;quot;part-name&amp;quot;, part-data, {})&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
где '''part-name''' - имя части рендера, которую надо задать, а'''part-data''' - объект, описывающий эту часть.&amp;lt;br/&amp;gt; Стандартный тип рендера, который тут рассматривается имеет следующие части:&lt;br /&gt;
&lt;br /&gt;
#body - тело и основная часть модели, скорее всего вся модель будет описываться через эту часть. &lt;br /&gt;
#head - голова, используется, если вам важен поворот. Все последующие части используются в стандартном рендере, только если результат должен выглядеть примерно как модель игрока (плюс минус детали). &lt;br /&gt;
#leftArm - левая рука &lt;br /&gt;
#rightArm - правая рука &lt;br /&gt;
#leftLeg - левая нога &lt;br /&gt;
#rightLeg - правая нога &lt;br /&gt;
&lt;br /&gt;
Так же стоит заметить важные особенности системы координат части body:&lt;br /&gt;
&lt;br /&gt;
#&amp;amp;nbsp;Единица системы координат равна 1\16 блока и 1 пикселю текстуры 16х16 &lt;br /&gt;
#&amp;amp;nbsp;Ось Y системы координат направлена вниз, остальные оси направлены в нормальных направлениях. &lt;br /&gt;
#&amp;amp;nbsp;Позиция моба (его нижняя центральная точка) в этой системе координат будет находиться на координатах (0, 24, 0) &lt;br /&gt;
&lt;br /&gt;
Эта система позаимствована напрямую из MCPE без всяких конвертаций, так что она выглядит немного странно.&lt;br /&gt;
&lt;br /&gt;
'''Формат объекта описания части рендера (part-data)''':&lt;br /&gt;
&lt;br /&gt;
Объект представляет собой массив элементов, каждый из которых может быть боксом (параллелепипедом) или пустым объектом.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
[&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Object1,&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Object2,&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;...&amp;lt;br/&amp;gt; ];&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Бокс задается в следующем формате:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
{&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;type: &amp;quot;box&amp;quot;, // определяет, что это бокс, а не пустой объект&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;coords: {x: x, y: y, z: z}, // координаты центра бокса x, y, z&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;size: {x: x, y: y, z: z}, // размер бокса (x, y, z / ширина, высота, длина),&amp;lt;br/&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;uv: {x: x, y: y} // координаты текстуры бокса x, y&amp;lt;br/&amp;gt; }&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Пустой объект имеет только параметр coords, все остальные значения не требуются. Кроме того любой объект может иметь параметр children, который является таким же массивом, как и сама часть, но началом его системы координат будет не (0, 0, 0), а координаты части-родителя.&amp;lt;br/&amp;gt; '''Координаты текстур (uv)''':&amp;lt;br/&amp;gt; Текстура на бокс накладывается как показано на рисунке, координаты UV должны быть координатами верхнего левого угла, а размеры бокса должны совпадать с размерами прямоугольников на рисунке. Важно то, что при измененном масштабе текстуры (pixel scale) координаты должны указываться с его учетом (их нужно разделить на масштаб).&amp;lt;br/&amp;gt; [https://pp.userapi.com/c638116/v638116250/55929/mFzqr8DvHOo.jpg [1]]&lt;br /&gt;
&lt;br /&gt;
= МОДЕЛИ =&lt;br /&gt;
&lt;br /&gt;
Модели совмещают текстуру и рендер, являясь полноценной визуальной составляющей, которую можно использовать для мобов. Модель создается с помощью &amp;lt;span style=&amp;quot;font-size:larger;&amp;quot;&amp;gt;''new EntityModel();''&amp;lt;/span&amp;gt; Для задания модели используются следующие методы:&lt;br /&gt;
&lt;br /&gt;
#&amp;amp;nbsp;.setTexture(texture) - устанавливает текстуру, где texture - объект текстуры &lt;br /&gt;
#&amp;amp;nbsp;.setRender(render) - устанавливает рендер, где render - объект рендера &lt;br /&gt;
#&amp;amp;nbsp;.createAnimation(frames, function(frame) { ... return&amp;amp;nbsp;; }, delay) - создает анимацию модели, где frames - кол-во кадров анимации, далее идет код, который от номера кадра (от 0 до frames – 1) должен вернуть рендер для этого кадра, если ренден не возвращается, используется предыдущий кадр, delay - задержка между кадрами в тиках, если не указан, равен 1. &lt;br /&gt;
&lt;br /&gt;
'''Пример будет в главе про визуальный контроллер.'''&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%B1%D0%BE%D0%B2&amp;diff=173</id>
		<title>InnerCore/Создание мобов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BC%D0%BE%D0%B1%D0%BE%D0%B2&amp;diff=173"/>
				<updated>2017-07-23T17:27:30Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: Created page with &amp;quot; = СОЗДАНИЕ МОБОВ =  Для создания нового моба нужно зарегистрировать его тип с его уникальным id, п...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= СОЗДАНИЕ МОБОВ =&lt;br /&gt;
&lt;br /&gt;
Для создания нового моба нужно зарегистрировать его тип с его уникальным id, по которому в последствии моб будет определяться. После создания, объект типа моба будет использоваться для описания этого типа. Для регистрации нового типа мобов используется метод&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
MobRegistry.registerEntity(&amp;quot;name&amp;quot;)&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
где '''name '''- уникальное название данного типа мобов. Эта функция возвращает созданный ею объект типа моба. Новый моб по умолчанию не будет иметь стандартную модель, стандартными здоровьем и размерами, не будет обладать искусственным интеллектом (будет стоять на месте) и дропом. Все это ему предстоит добавить. Пример:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
var myTestEntity = MobRegistry.registerEntity(&amp;quot;test-entity&amp;quot;); // создаем тип моба под названием test-entity и сохраняем его в переменную, этот моб пока ничего не делает и имеет стандартные параметры&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= СПАВН МОБОВ =&lt;br /&gt;
&lt;br /&gt;
Для спавна новых мобов в мир используется функция&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Entity.spawnCustom(&amp;quot;name&amp;quot;, x, y, z) - создает моба типа name на данных координатах и возвращает объект этого моба.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Пример:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
IDRegistry.genItemID(&amp;quot;test-entity-spawn&amp;quot;); // регистрируем id предмета-спавнера&amp;lt;br/&amp;gt; Item.createItem(&amp;quot;test-entity-spawn&amp;quot;, &amp;quot;spawn test entity&amp;quot;, {name: &amp;quot;stick&amp;quot;}); // создаем предмет- спавнер&amp;lt;br/&amp;gt; Item.registerUseFunction(&amp;quot;test-entity-spawn&amp;quot;, function(coords, item, block){ // задаем предмету- спавнеру функцию использования&amp;lt;br/&amp;gt; Entity.spawnCustom(&amp;quot;test-entity&amp;quot;, coords.relative.x + .5, coords.relative.y + .5, coords.relative.z + .5); // при использовании создать моба нашего типа на координатах использования });&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Как результат этого кода при нажатии нашим новым предметом в любую точку, там появится моб, который будет стоять на месте и выглядеть примерно так:&lt;br /&gt;
&lt;br /&gt;
[[Core_ent_1.png|core_ent_1.png]]&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=129</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=129"/>
				<updated>2017-07-07T17:32:26Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== РЕГИСТРАЦИЯ ID ==&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);'' // доступ BlockID.testBlock&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);'' // доступ ItemID.testItem&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== ТЕКСТУРЫ ==&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
== СОЗДАНИЕ БЛОКОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
I''DRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);'' // регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
'']) ''// создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ===&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp;&amp;amp;nbsp;принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
== СОЗДАНИЕ ПРЕДМЕТОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false, ''// если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
=== Создание еды ===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'',''// если true, не добавляет предмет в креатив''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;food: 1''&amp;amp;nbsp;// восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
=== Создание кидаемого предмета ===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''stack: 64'' // размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
=== Создание брони ===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;durability: 1'' // прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== Пример ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=128</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=128"/>
				<updated>2017-07-07T17:31:56Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== РЕГИСТРАЦИЯ ID ==&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);'' // доступ BlockID.testBlock&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);'' // доступ ItemID.testItem&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== ТЕКСТУРЫ ==&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
== СОЗДАНИЕ БЛОКОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
I''DRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);'' // регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
'']) ''// создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ===&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp;&amp;amp;nbsp;принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
== СОЗДАНИЕ ПРЕДМЕТОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false, ''// если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== Создание еды ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'',''// если true, не добавляет предмет в креатив''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;food: 1''&amp;amp;nbsp;// восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== Создание кидаемого предмета ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''stack: 64'' // размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== Создание брони ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;durability: 1'' // прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== Пример ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=127</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=127"/>
				<updated>2017-07-07T17:31:29Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== РЕГИСТРАЦИЯ ID ==&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);'' // доступ BlockID.testBlock&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);'' // доступ ItemID.testItem&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== ТЕКСТУРЫ ==&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
== СОЗДАНИЕ БЛОКОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
I''DRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);'' // регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
'']) ''// создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
=== &amp;amp;nbsp; ===&lt;br /&gt;
&lt;br /&gt;
=== СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ===&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp;&amp;amp;nbsp;принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
== СОЗДАНИЕ ПРЕДМЕТОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false, ''// если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== Создание еды ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'',''// если true, не добавляет предмет в креатив''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;food: 1''&amp;amp;nbsp;// восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== Создание кидаемого предмета ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''stack: 64'' // размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== Создание брони ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;durability: 1'' // прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== Пример ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=126</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=126"/>
				<updated>2017-07-07T17:29:07Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 1. РЕГИСТРАЦИЯ ID ==&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);'' // доступ BlockID.testBlock&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);'' // доступ ItemID.testItem&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== 2. ТЕКСТУРЫ ==&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
== 3. СОЗДАНИЕ БЛОКОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
I''DRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);'' // регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
'']) ''// создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
=== &amp;amp;nbsp; ===&lt;br /&gt;
&lt;br /&gt;
=== 3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ===&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp;&amp;amp;nbsp;принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
== 4. СОЗДАНИЕ ПРЕДМЕТОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false, ''// если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'',''// если true, не добавляет предмет в креатив''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;food: 1''&amp;amp;nbsp;// восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''stack: 64'' // размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;durability: 1'' // прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
== 5. Пример ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=125</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=125"/>
				<updated>2017-07-07T17:27:29Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 1. РЕГИСТРАЦИЯ ID ==&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);'' // доступ BlockID.testBlock&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);'' // доступ ItemID.testItem&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. ТЕКСТУРЫ ==&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. СОЗДАНИЕ БЛОКОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
I''DRegistry.genBlockID(&amp;quot;testBlock&amp;quot;);'' // регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
'']) ''// создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
=== &amp;amp;nbsp; ===&lt;br /&gt;
&lt;br /&gt;
=== 3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ===&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp;&amp;amp;nbsp;принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. СОЗДАНИЕ ПРЕДМЕТОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false, ''// если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'',''// если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;food: 1''&amp;amp;nbsp;// восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;''stack: 64'' // размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;durability: 1'' // прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=124</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=124"/>
				<updated>2017-07-07T17:19:56Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
1. РЕГИСТРАЦИЯ ID&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
&lt;br /&gt;
IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); // доступ BlockID.testBlock&lt;br /&gt;
&lt;br /&gt;
IDRegistry.genItemID(&amp;quot;testItem&amp;quot;); // доступ ItemID.testItem--SaloEater (talk) 20:12, 7 July 2017 (EEST)&lt;br /&gt;
&lt;br /&gt;
2. ТЕКСТУРЫ&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
3. СОЗДАНИЕ БЛОКОВ&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); // регистрация&lt;br /&gt;
&lt;br /&gt;
Block.createBlock(&amp;quot;testBlock&amp;quot;, [&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;{name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}&lt;br /&gt;
&lt;br /&gt;
]) // создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&lt;br /&gt;
3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp;&amp;amp;nbsp;принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
4. СОЗДАНИЕ ПРЕДМЕТОВ&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&lt;br /&gt;
Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false, // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64 // размер стака&lt;br /&gt;
&lt;br /&gt;
}&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false, // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64, // размер стака&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;food: 1, // восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false, // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;stack: 64 // размер стака&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
- Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) - создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;isTech: false, // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;armor: 1, // значение брони&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;type: &amp;lt;обязательное значение&amp;gt;, // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;texture: &amp;lt;обязательное значение&amp;gt;, // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;durability: 1 // прочность&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); // создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=123</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=123"/>
				<updated>2017-07-07T17:18:25Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
{| id=&amp;quot;internal_wrapper&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;pageContentMiddle&amp;quot; | &lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;workZone_article&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
= 1. РЕГИСТРАЦИЯ ID =&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Примеры''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); // ''доступ BlockID.testBlock&lt;br /&gt;
&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;); // ''доступ ItemID.testItem--[[User:SaloEater|SaloEater]] ([[User_talk:SaloEater|talk]]) 20:12, 7 July 2017 (EEST)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. ТЕКСТУРЫ ==&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. СОЗДАНИЕ БЛОКОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); ''// регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; {name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
''])'' // создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ==&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp; принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. СОЗДАНИЕ ПРЕДМЕТОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; food: 1'', // восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''- Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; durability: 1 ''// прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=122</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=122"/>
				<updated>2017-07-07T17:18:09Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
{| id=&amp;quot;internal_wrapper&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;pageContentMiddle&amp;quot; | &lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;workZone_article&amp;quot; | &lt;br /&gt;
= &amp;amp;nbsp; =&lt;br /&gt;
&lt;br /&gt;
== 1. РЕГИСТРАЦИЯ ID ==&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Примеры''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); // ''доступ BlockID.testBlock&lt;br /&gt;
&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;); // ''доступ ItemID.testItem--[[User:SaloEater|SaloEater]] ([[User_talk:SaloEater|talk]]) 20:12, 7 July 2017 (EEST)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. ТЕКСТУРЫ ==&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. СОЗДАНИЕ БЛОКОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); ''// регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; {name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
''])'' // создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ==&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp; принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. СОЗДАНИЕ ПРЕДМЕТОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; food: 1'', // восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''- Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; durability: 1 ''// прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=121</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=121"/>
				<updated>2017-07-07T17:15:41Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
{| id=&amp;quot;internal_wrapper&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;pageContentMiddle&amp;quot; | &lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;workZone_article&amp;quot; | &lt;br /&gt;
= '''Создание блоков и предметов''' =&lt;br /&gt;
&lt;br /&gt;
== 1. РЕГИСТРАЦИЯ ID ==&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Примеры''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); // ''доступ BlockID.testBlock&lt;br /&gt;
&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;); // ''доступ ItemID.testItem--[[User:SaloEater|SaloEater]] ([[User_talk:SaloEater|talk]]) 20:12, 7 July 2017 (EEST)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. ТЕКСТУРЫ ==&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. СОЗДАНИЕ БЛОКОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); ''// регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; {name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
''])'' // создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ==&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp; принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. СОЗДАНИЕ ПРЕДМЕТОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; food: 1'', // восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''- Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; durability: 1 ''// прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=120</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=120"/>
				<updated>2017-07-07T17:15:23Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
{| id=&amp;quot;internal_wrapper&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;pageContentMiddle&amp;quot; | &lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;workZone_article&amp;quot; | &lt;br /&gt;
= '''1.1 Создание блоков и предметов''' =&lt;br /&gt;
&lt;br /&gt;
== 1. РЕГИСТРАЦИЯ ID ==&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Примеры''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); // ''доступ BlockID.testBlock&lt;br /&gt;
&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;); // ''доступ ItemID.testItem--[[User:SaloEater|SaloEater]] ([[User_talk:SaloEater|talk]]) 20:12, 7 July 2017 (EEST)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 2. ТЕКСТУРЫ ==&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3. СОЗДАНИЕ БЛОКОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); ''// регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; {name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
''])'' // создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ==&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp; принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== 4. СОЗДАНИЕ ПРЕДМЕТОВ ==&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; food: 1'', // восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''- Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; durability: 1 ''// прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=119</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=119"/>
				<updated>2017-07-07T17:14:39Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
{| id=&amp;quot;internal_wrapper&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;pageContentMiddle&amp;quot; | &lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;workZone_article&amp;quot; | &lt;br /&gt;
= '''1.1 Создание блоков и предметов''' =&lt;br /&gt;
&lt;br /&gt;
1. РЕГИСТРАЦИЯ ID&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Примеры''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); // ''доступ BlockID.testBlock&lt;br /&gt;
&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;); // ''доступ ItemID.testItem--[[User:SaloEater|SaloEater]] ([[User_talk:SaloEater|talk]]) 20:12, 7 July 2017 (EEST)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
2. ТЕКСТУРЫ&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
3. СОЗДАНИЕ БЛОКОВ&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); ''// регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; {name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
''])'' // создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp; принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
4. СОЗДАНИЕ ПРЕДМЕТОВ&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; food: 1'', // восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''- Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; durability: 1 ''// прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:SaloEater&amp;diff=118</id>
		<title>Участник:SaloEater</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:SaloEater&amp;diff=118"/>
				<updated>2017-07-07T17:14:02Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: Created page with &amp;quot; {| |- | ヽ(￣～￣　)ノ |}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| ヽ(￣～￣　)ノ&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=117</id>
		<title>InnerCore/Создание блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=117"/>
				<updated>2017-07-07T17:12:43Z</updated>
		
		<summary type="html">&lt;p&gt;SaloEater: Created page with &amp;quot; {| |- |  {| id=&amp;quot;internal_wrapper&amp;quot; |- | id=&amp;quot;pageContentMiddle&amp;quot; |  {| |- | id=&amp;quot;workZone_article&amp;quot; |  = '''1.1 Создание блоков и предметов''' =  1. РЕГ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
{| id=&amp;quot;internal_wrapper&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;pageContentMiddle&amp;quot; | &lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| id=&amp;quot;workZone_article&amp;quot; | &lt;br /&gt;
= '''1.1 Создание блоков и предметов''' =&lt;br /&gt;
&lt;br /&gt;
1. РЕГИСТРАЦИЯ ID&lt;br /&gt;
&lt;br /&gt;
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID блока используется метод IDRegistry.genBlockID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для регистрации ID предмета используется метод IDRegistry.genItemID(&amp;quot;строковый ID&amp;quot;) - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.&amp;lt;строковый ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Примеры''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); // ''доступ BlockID.testBlock&lt;br /&gt;
&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;); // ''доступ ItemID.testItem--[[User:SaloEater|SaloEater]] ([[User talk:SaloEater|talk]]) 20:12, 7 July 2017 (EEST)&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
2. ТЕКСТУРЫ&lt;br /&gt;
&lt;br /&gt;
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/&lt;br /&gt;
&lt;br /&gt;
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
3. СОЗДАНИЕ БЛОКОВ&lt;br /&gt;
&lt;br /&gt;
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlock(&amp;quot;строковый ID&amp;quot;, [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.&lt;br /&gt;
&lt;br /&gt;
Каждая вариация в массиве имеет формат {name: &amp;quot;имя вариации&amp;quot;, texture: [[&amp;quot;текстура 1&amp;quot;, &amp;lt;номер текстуры 1&amp;gt;], [&amp;quot;текстура 2&amp;quot;, &amp;lt;номер текстуры 2&amp;gt;], [&amp;quot;текстура 3&amp;quot;, &amp;lt;номер текстуры 3&amp;gt;], [&amp;quot;текстура 4&amp;quot;, &amp;lt;номер текстуры 4&amp;gt;], [&amp;quot;текстура 5&amp;quot;, &amp;lt;номер текстуры 5&amp;gt;], [&amp;quot;текстура 6&amp;quot;, &amp;lt;номер текстуры 6&amp;gt;]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genBlockID(&amp;quot;testBlock&amp;quot;); ''// регистрация&lt;br /&gt;
&lt;br /&gt;
''Block.createBlock(&amp;quot;testBlock&amp;quot;, [''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; {name: &amp;quot;test block&amp;quot;, texture: [[&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0], [&amp;quot;planks&amp;quot;, 0]], inCreative: true}''&lt;br /&gt;
&lt;br /&gt;
''])'' // создание простого блока на ID &amp;quot;testBlock&amp;quot; с текстурой досок на всех сторонах, будет добавлен в креатив&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ&lt;br /&gt;
&lt;br /&gt;
Метод Block.createBlockWithRotation -&amp;amp;nbsp; принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
4. СОЗДАНИЕ ПРЕДМЕТОВ&lt;br /&gt;
&lt;br /&gt;
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: &amp;quot;имя текстуры&amp;quot;, meta: &amp;lt;номер текстуры&amp;gt;}, если номер текстуры 0, его можно не указывать.&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)&amp;amp;nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}&amp;amp;nbsp;''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createFoodItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64'', // размер стака&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; food: 1'', // восполнение здоровья едой&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''Item.createThrowableItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры)'' - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; stack: 64 ''// размер стака&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
----&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''- Item.createArmorItem(&amp;quot;строковый ID&amp;quot;, &amp;quot;имя предмета&amp;quot;, текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''{''&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; isTech: false'', // если true, не добавляет предмет в креатив&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; armor: 1'', // значение брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; type: &amp;lt;обязательное значение&amp;gt;'', // тип предмета &amp;quot;helmet&amp;quot;/&amp;quot;chestplate&amp;quot;/&amp;quot;leggings&amp;quot;/&amp;quot;boots&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; texture: &amp;lt;обязательное значение&amp;gt;'', // текстура модели данного предмета брони&lt;br /&gt;
&lt;br /&gt;
''&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; durability: 1 ''// прочность&lt;br /&gt;
&lt;br /&gt;
''}''&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
'''Пример''':&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
''IDRegistry.genItemID(&amp;quot;testItem&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
''Item.createItem(&amp;quot;testItem&amp;quot;, &amp;quot;test item&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>SaloEater</name></author>	</entry>

	</feed>