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

Строка 1: Строка 1:
  
{|
+
1. РЕГИСТРАЦИЯ ID
|-
 
|
 
{| id="internal_wrapper"
 
|-
 
| id="pageContentMiddle" |
 
{|
 
|-
 
| id="workZone_article" |
 
 
 
= 1. РЕГИСТРАЦИЯ ID =
 
  
 
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.
 
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.
Строка 18: Строка 8:
 
Для регистрации ID предмета используется метод IDRegistry.genItemID("строковый ID") - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.<строковый ID>
 
Для регистрации ID предмета используется метод IDRegistry.genItemID("строковый ID") - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.<строковый ID>
  
'''Примеры''':
+
Примеры:
<blockquote>
 
''IDRegistry.genBlockID("testBlock"); // ''доступ BlockID.testBlock
 
  
''IDRegistry.genItemID("testItem"); // ''доступ ItemID.testItem--[[User:SaloEater|SaloEater]] ([[User_talk:SaloEater|talk]]) 20:12, 7 July 2017 (EEST)
+
IDRegistry.genBlockID("testBlock"); // доступ BlockID.testBlock
  
&nbsp;
+
IDRegistry.genItemID("testItem"); // доступ ItemID.testItem--SaloEater (talk) 20:12, 7 July 2017 (EEST)
</blockquote>
 
----
 
  
== 2. ТЕКСТУРЫ ==
+
2. ТЕКСТУРЫ
  
 
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.
 
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.
Строка 36: Строка 22:
 
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/
 
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/
  
----
+
3. СОЗДАНИЕ БЛОКОВ
 
 
== 3. СОЗДАНИЕ БЛОКОВ ==
 
  
 
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.
 
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.
Строка 46: Строка 30:
 
Каждая вариация в массиве имеет формат {name: "имя вариации", texture: [["текстура 1", <номер текстуры 1>], ["текстура 2", <номер текстуры 2>], ["текстура 3", <номер текстуры 3>], ["текстура 4", <номер текстуры 4>], ["текстура 5", <номер текстуры 5>], ["текстура 6", <номер текстуры 6>]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.
 
Каждая вариация в массиве имеет формат {name: "имя вариации", texture: [["текстура 1", <номер текстуры 1>], ["текстура 2", <номер текстуры 2>], ["текстура 3", <номер текстуры 3>], ["текстура 4", <номер текстуры 4>], ["текстура 5", <номер текстуры 5>], ["текстура 6", <номер текстуры 6>]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.
  
'''Пример''':
+
Пример:
<blockquote>
 
''IDRegistry.genBlockID("testBlock"); ''// регистрация
 
  
''Block.createBlock("testBlock", [''
+
IDRegistry.genBlockID("testBlock"); // регистрация
  
''&nbsp;&nbsp; &nbsp; {name: "test block", texture: [["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0]], inCreative: true}''
+
Block.createBlock("testBlock", [
  
''])'' // создание простого блока на ID "testBlock" с текстурой досок на всех сторонах, будет добавлен в креатив
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{name: "test block", texture: [["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0]], inCreative: true}
</blockquote>
 
----
 
  
== 3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ==
+
]) // создание простого блока на ID "testBlock" с текстурой досок на всех сторонах, будет добавлен в креатив
  
Метод Block.createBlockWithRotation -&nbsp; принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.
+
3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ
  
----
+
Метод Block.createBlockWithRotation -&nbsp;&nbsp;принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.
  
== 4. СОЗДАНИЕ ПРЕДМЕТОВ ==
+
4. СОЗДАНИЕ ПРЕДМЕТОВ
  
 
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: "имя текстуры", meta: <номер текстуры>}, если номер текстуры 0, его можно не указывать.
 
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: "имя текстуры", meta: <номер текстуры>}, если номер текстуры 0, его можно не указывать.
<blockquote>
+
 
''Item.createItem("строковый ID", "имя предмета", текстура, параметры)&nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
+
Item.createItem("строковый ID", "имя предмета", текстура, параметры)&nbsp;- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
</blockquote>
+
 
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
<blockquote>
 
''{''
 
  
''&nbsp;&nbsp; &nbsp; isTech: false'', // если true, не добавляет предмет в креатив
+
{
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isTech: false, // если true, не добавляет предмет в креатив
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stack: 64 // размер стака
  
''&nbsp;&nbsp; &nbsp; stack: 64 ''// размер стака
+
}&nbsp;
  
''}&nbsp;''
+
Item.createFoodItem("строковый ID", "имя предмета", текстура, параметры) - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
</blockquote>
 
----
 
  
&nbsp;
 
<blockquote>
 
''Item.createFoodItem("строковый ID", "имя предмета", текстура, параметры)'' - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
 
</blockquote>
 
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
<blockquote>
 
''{''
 
  
''&nbsp;&nbsp; &nbsp; isTech: false'', // если true, не добавляет предмет в креатив
+
{
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isTech: false, // если true, не добавляет предмет в креатив
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stack: 64, // размер стака
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;food: 1, // восполнение здоровья едой
  
''&nbsp;&nbsp; &nbsp; stack: 64'', // размер стака
+
}
  
''&nbsp;&nbsp; &nbsp; food: 1'', // восполнение здоровья едой
+
Item.createThrowableItem("строковый ID", "имя предмета", текстура, параметры) - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
  
''}''
 
</blockquote>
 
----
 
<blockquote>
 
''Item.createThrowableItem("строковый ID", "имя предмета", текстура, параметры)'' - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
 
</blockquote>
 
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
<blockquote>
 
''{''
 
  
''&nbsp;&nbsp; &nbsp; isTech: false'', // если true, не добавляет предмет в креатив
+
{
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isTech: false, // если true, не добавляет предмет в креатив
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stack: 64 // размер стака
 +
 
 +
}
  
''&nbsp;&nbsp; &nbsp; stack: 64 ''// размер стака
+
- Item.createArmorItem("строковый ID", "имя предмета", текстура, параметры) - создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
  
''}''
 
</blockquote>
 
----
 
<blockquote>
 
''- Item.createArmorItem("строковый ID", "имя предмета", текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
 
</blockquote>
 
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
<blockquote>
 
''{''
 
  
''&nbsp;&nbsp; &nbsp; isTech: false'', // если true, не добавляет предмет в креатив
+
{
  
''&nbsp;&nbsp; &nbsp; armor: 1'', // значение брони
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isTech: false, // если true, не добавляет предмет в креатив
  
''&nbsp;&nbsp; &nbsp; type: <обязательное значение>'', // тип предмета "helmet"/"chestplate"/"leggings"/"boots"
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;armor: 1, // значение брони
  
''&nbsp;&nbsp; &nbsp; texture: <обязательное значение>'', // текстура модели данного предмета брони
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type: <обязательное значение>, // тип предмета "helmet"/"chestplate"/"leggings"/"boots"
  
''&nbsp;&nbsp; &nbsp; durability: 1 ''// прочность
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;texture: <обязательное значение>, // текстура модели данного предмета брони
  
''}''
+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;durability: 1 // прочность
</blockquote>
 
&nbsp;
 
  
'''Пример''':
+
}
<blockquote>
 
''IDRegistry.genItemID("testItem");''
 
  
''Item.createItem("testItem", "test item", {name: "stick", meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами
+
Пример:
</blockquote>
 
|}
 
  
|}
+
IDRegistry.genItemID("testItem");
  
|}
+
Item.createItem("testItem", "test item", {name: "stick", meta: 0}, {}); // создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами

Версия 19:19, 7 июля 2017

1. РЕГИСТРАЦИЯ ID

ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.

Для регистрации ID блока используется метод IDRegistry.genBlockID("строковый ID") - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.<строковый ID>

Для регистрации ID предмета используется метод IDRegistry.genItemID("строковый ID") - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.<строковый ID>

Примеры:

IDRegistry.genBlockID("testBlock"); // доступ BlockID.testBlock

IDRegistry.genItemID("testItem"); // доступ ItemID.testItem--SaloEater (talk) 20:12, 7 July 2017 (EEST)

2. ТЕКСТУРЫ

В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.

Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/

Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/

3. СОЗДАНИЕ БЛОКОВ

После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.

Метод Block.createBlock("строковый ID", [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.

Каждая вариация в массиве имеет формат {name: "имя вариации", texture: [["текстура 1", <номер текстуры 1>], ["текстура 2", <номер текстуры 2>], ["текстура 3", <номер текстуры 3>], ["текстура 4", <номер текстуры 4>], ["текстура 5", <номер текстуры 5>], ["текстура 6", <номер текстуры 6>]], inCreative: true/false (добавлять ли данную вариацию блока в креатив)}. Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.

Пример:

IDRegistry.genBlockID("testBlock"); // регистрация

Block.createBlock("testBlock", [

     {name: "test block", texture: [["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0]], inCreative: true}

]) // создание простого блока на ID "testBlock" с текстурой досок на всех сторонах, будет добавлен в креатив

3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ

Метод Block.createBlockWithRotation -  принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.

4. СОЗДАНИЕ ПРЕДМЕТОВ

После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: "имя текстуры", meta: <номер текстуры>}, если номер текстуры 0, его можно не указывать.

Item.createItem("строковый ID", "имя предмета", текстура, параметры) - создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.

Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:

{

     isTech: false, // если true, не добавляет предмет в креатив

     stack: 64 // размер стака

Item.createFoodItem("строковый ID", "имя предмета", текстура, параметры) - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.

Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:

{

     isTech: false, // если true, не добавляет предмет в креатив

     stack: 64, // размер стака

     food: 1, // восполнение здоровья едой

}

Item.createThrowableItem("строковый ID", "имя предмета", текстура, параметры) - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.

Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:

{

     isTech: false, // если true, не добавляет предмет в креатив

     stack: 64 // размер стака

}

- Item.createArmorItem("строковый ID", "имя предмета", текстура, параметры) - создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.

Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:

{

     isTech: false, // если true, не добавляет предмет в креатив

     armor: 1, // значение брони

     type: <обязательное значение>, // тип предмета "helmet"/"chestplate"/"leggings"/"boots"

     texture: <обязательное значение>, // текстура модели данного предмета брони

     durability: 1 // прочность

}

Пример:

IDRegistry.genItemID("testItem");

Item.createItem("testItem", "test item", {name: "stick", meta: 0}, {}); // создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами