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

 
(не показано 46 промежуточных версий 14 участников)
Строка 1: Строка 1:
 +
<div class="mw-parser-output">
 +
=== Регистрация ID ===
  
{|
+
ID - уникальный идентификатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.
|-
 
|
 
{| id="internal_wrapper"
 
|-
 
| id="pageContentMiddle" |
 
{|
 
|-
 
| id="workZone_article" |
 
= &nbsp; =
 
 
 
== 1. РЕГИСТРАЦИЯ ID ==
 
 
 
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.
 
  
 
Для регистрации ID блока используется метод IDRegistry.genBlockID("строковый ID") - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.<строковый ID>
 
Для регистрации ID блока используется метод IDRegistry.genBlockID("строковый ID") - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.<строковый ID>
Строка 19: Строка 8:
 
Для регистрации ID предмета используется метод IDRegistry.genItemID("строковый ID") - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.<строковый ID>
 
Для регистрации ID предмета используется метод IDRegistry.genItemID("строковый ID") - после вызова этой функции сгенерируется новый уникальный ID для предмета, доступ к числовому значению которого может быть произведен как ItemID.<строковый ID>
  
'''Примеры''':
+
Примеры:
<blockquote>
+
<syntaxhighlight lang="Javascript">IDRegistry.genBlockID("testBlock"); // доступ BlockID.testBlock
''IDRegistry.genBlockID("testBlock"); // ''доступ BlockID.testBlock
+
IDRegistry.genItemID("testItem"); // доступ ItemID.testItem</syntaxhighlight>
 
+
<div class="mw-parser-output">
''IDRegistry.genItemID("testItem"); // ''доступ ItemID.testItem--[[User:SaloEater|SaloEater]] ([[User_talk:SaloEater|talk]]) 20:12, 7 July 2017 (EEST)
+
=== Текстуры ===
 
 
&nbsp;
 
</blockquote>  
 
----
 
 
 
== 2. ТЕКСТУРЫ ==
 
  
 
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.
 
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.
  
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/
+
Текстуры блоков в ресурспаке располагаются по адресу res/terrain-atlas/
 
 
Текстуры блоков в ресурспаке располагаются по адресу images/items-opaque/
 
  
----
+
Текстуры предметов&nbsp;в ресурспаке располагаются по адресу res/items-opaque/
  
== 3. СОЗДАНИЕ БЛОКОВ ==
+
Текстуры брони в ресурспаке располагаются по адресу res/armor
 +
</div>
 +
=== Создание блоков ===
  
 
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.
 
После регистрации ID для блока, создается сам блок на этом ID. На одном ID может быть создано несколько вариаций блока, каждая из которых обладает своим именем и текстурой, разные вариации одного блока в мире будут иметь один ID, но разные значения metadata, подробнее об этом будет позднее. Для создания блоков используется модуль Block.
Строка 45: Строка 28:
 
Метод Block.createBlock("строковый ID", [вариация1, вариация2, ...]) - создает блок и все его вариации на ранее зарегистрированном ID, если вариация 1, то просто создает данный блок.
 
Метод 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.
+
Каждая вариация в массиве имеет формат
 +
<syntaxhighlight lang="Javascript">{
 +
   name: "имя вариации",  
 +
    texture: [
 +
        ["название1", индекс1], // bottom
 +
        ["название2", индекс2], // top
 +
        ["название3", индекс3], // back
 +
        ["название4", индекс4], // front
 +
        ["название5", индекс5], // left
 +
        ["название6", индекс6] // right
 +
    ],  
 +
   inCreative: true/false //(добавлять ли данную вариацию блока в креатив)
 +
}</syntaxhighlight>
 +
 
 +
Если текстур указано меньше, чем 6, то последняя из них будет дублирована несколько раз, чтобы дополнить их кол-во до 6.
  
 
'''Пример''':
 
'''Пример''':
<blockquote>
+
<syntaxhighlight lang="Javascript">IDRegistry.genBlockID("testBlock"); // регистрация
''IDRegistry.genBlockID("testBlock"); ''// регистрация
+
Block.createBlock("testBlock", [
 
+
     {name: "test block", texture: [["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0]], inCreative: true}
''Block.createBlock("testBlock", [''
+
]); // создание простого блока на ID "testBlock" с текстурой досок на всех сторонах, будет добавлен в креатив</syntaxhighlight>
 
+
<div class="mw-parser-output"><div class="mw-parser-output">
''&nbsp;&nbsp; &nbsp; {name: "test block", texture: [["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0]], inCreative: true}''
+
==== Создание блоков с поворотом ====
 
 
''])'' // создание простого блока на ID "testBlock" с текстурой досок на всех сторонах, будет добавлен в креатив
 
</blockquote>  
 
----
 
 
 
== 3.1 СОЗДАНИЕ БЛОКА С ПОВОРОТОМ ==
 
 
 
Метод Block.createBlockWithRotation -&nbsp; принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.
 
 
 
----
 
  
== 4. СОЗДАНИЕ ПРЕДМЕТОВ ==
+
Метод Block.createBlockWithRotation -&nbsp;&nbsp;принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.
 +
</div> </div>
 +
=== Создание предметов ===
  
 
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: "имя текстуры", meta: <номер текстуры>}, если номер текстуры 0, его можно не указывать.
 
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: "имя текстуры", meta: <номер текстуры>}, если номер текстуры 0, его можно не указывать.
<blockquote>
 
''Item.createItem("строковый ID", "имя предмета", текстура, параметры)&nbsp;''- создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
 
</blockquote>
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
 
<blockquote>
 
''{''
 
  
''&nbsp;&nbsp; &nbsp; isTech: false'', // если true, не добавляет предмет в креатив
+
Item.createItem("строковый ID", "имя предмета", текстура, параметры) - создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
  
''&nbsp;&nbsp; &nbsp; stack: 64 ''// размер стака
+
Параметры имеют формат, если вы не хотите изменять значения по умолчанию, просто не пишите их:
 +
<syntaxhighlight lang="Javascript">{
 +
     isTech: false, // если true, не добавляет предмет в креатив
 +
     stack: 64 // размер стака
 +
} </syntaxhighlight>
  
''}&nbsp;''
+
'''Пример''':
</blockquote>
+
<syntaxhighlight lang="JavaScript">IDRegistry.genItemID("testItem");
----
+
Item.createItem("testItem", "test item", {name: "stick", meta: 0}, {}); // создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами</syntaxhighlight>
 
 
&nbsp;
 
<blockquote>
 
''Item.createFoodItem("строковый ID", "имя предмета", текстура, параметры)'' - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
 
</blockquote>
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
 
<blockquote>
 
''{''
 
 
 
''&nbsp;&nbsp; &nbsp; isTech: false'', // если true, не добавляет предмет в креатив
 
 
 
''&nbsp;&nbsp; &nbsp; stack: 64'', // размер стака
 
 
 
''&nbsp;&nbsp; &nbsp; food: 1'', // восполнение здоровья едой
 
 
 
''}''
 
</blockquote>
 
----
 
<blockquote>
 
''Item.createThrowableItem("строковый ID", "имя предмета", текстура, параметры)'' - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
 
</blockquote>
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
 
<blockquote>
 
''{''
 
 
 
''&nbsp;&nbsp; &nbsp; isTech: false'', // если true, не добавляет предмет в креатив
 
 
 
''&nbsp;&nbsp; &nbsp; stack: 64 ''// размер стака
 
 
 
''}''
 
</blockquote>
 
----
 
<blockquote>
 
''- Item.createArmorItem("строковый ID", "имя предмета", текстура, параметры) ''- создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
 
</blockquote>  
 
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
 
<blockquote>
 
''{''
 
  
''&nbsp;&nbsp; &nbsp; isTech: false'', // если true, не добавляет предмет в креатив
+
==== Создание еды ====
  
''&nbsp;&nbsp; &nbsp; armor: 1'', // значение брони
+
Item.createFoodItem("строковый ID", "имя предмета", текстура, параметры) - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
  
''&nbsp;&nbsp; &nbsp; type: <обязательное значение>'', // тип предмета "helmet"/"chestplate"/"leggings"/"boots"
+
Параметры имеют формат, если вы не хотите изменять значения по умолчанию, просто не пишите их:
 +
<syntaxhighlight lang="Javascript">{
 +
     isTech: false,// если true, не добавляет предмет в креатив
 +
     stack: 64, // размер стака
 +
     food: 1 // восполнение здоровья едой
 +
}</syntaxhighlight>
  
''&nbsp;&nbsp; &nbsp; texture: <обязательное значение>'', // текстура модели данного предмета брони
+
==== Создание кидаемого предмета ====
  
''&nbsp;&nbsp; &nbsp; durability: 1 ''// прочность
+
Item.createThrowableItem("строковый ID", "имя предмета", текстура, параметры) - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
 
 
''}''
 
</blockquote>
 
&nbsp;
 
  
 +
Параметры имеют формат, если вы не хотите изменять значения по умолчанию, просто не пишите их:
 +
<syntaxhighlight lang="Javascript">{
 +
     isTech: false, // если true, не добавляет предмет в креатив
 +
     stack: 64 // сколько предметов будет в одном стаке, максимум 64.
 +
}</syntaxhighlight>
 +
<div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">
 
'''Пример''':
 
'''Пример''':
<blockquote>
+
<syntaxhighlight lang="JavaScript">IDRegistry.genItemID("throwableItem");&nbsp;
''IDRegistry.genItemID("testItem");''
+
Item.createThrowableItem("throwableItem", "Throwable Item", { name: "throwable_item", meta: 0}, {})
 
+
</syntaxhighlight>
''Item.createItem("testItem", "test item", {name: "stick", meta: 0}, {}); ''// создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами
+
</div> </div> </div> </div> </div> </div>
</blockquote>  
+
==== Создание брони ====
|}
+
<pre>Item.createArmorItem(&quot;строковый ID&quot;, &quot;имя предмета&quot;, текстура, параметры) - создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.</pre>
  
|}
+
Параметры имеют формат, если вы не хотите изменять значения по умолчанию, просто не пишите их:
 +
<syntaxhighlight lang="Javascript">{
 +
     isTech: false, // если true, не добавляет предмет в креатив
 +
     armor: 1, // количество добавляемой брони в шкале защиты
 +
     type: <обязательное значение>, // тип предмета "helmet"/"chestplate"/"leggings"/"boots"
 +
     texture: <обязательное значение>, // текстура модели данной брони
 +
     durability: 1 // прочность брони
 +
}</syntaxhighlight>
 +
<div class="mw-parser-output"><div class="mw-parser-output">
 +
'''Пример брони''':
 +
<syntaxhighlight lang="Javascript">IDRegistry.genItemID("myHelmet"); // регистрируем ID шлема
 +
IDRegistry.genItemID("myChestplate"); // регистрируем ID нагрудника
 +
IDRegistry.genItemID("myLeggings"); // регистрируем ID понож
 +
IDRegistry.genItemID("myBoots"); // регистрируем ID ботинок
  
|}
+
Item.createArmorItem("myHelmet", "Helmet", {name: "helmet"}, {type: "helmet", armor: 2, durability: 149, texture: "armor/lay_1.png"}); // создаём шлем с ID myHelmet
 +
Item.createArmorItem("myChestplate", "Chestplate", {name: "chestplate"}, {type: "chestplate", armor: 6, durability: 216, texture: "armor/lay_1.png"}); // создаём нагрудник с ID myChestplate
 +
Item.createArmorItem("myLeggings", "Leggings", {name: "leggings"}, {type: "leggings", armor: 5, durability: 203, texture: "armor/lay_2.png"}); // создаём поножи с ID myLeggings
 +
Item.createArmorItem("myBoots", "Boots", {name: "boots"}, {type: "boots", armor: 2, durability: 176, texture: "armor/lay_1.png"}); // создаём ботинки с ID myBoots
 +
</syntaxhighlight>
 +
</div> </div> </div>

Текущая версия на 19:40, 27 декабря 2020

Регистрация 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

Текстуры[править]

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

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

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

Текстуры брони в ресурспаке располагаются по адресу res/armor

Создание блоков[править]

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

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

Каждая вариация в массиве имеет формат

{
    name: "имя вариации", 
    texture: [
        ["название1", индекс1], // bottom
        ["название2", индекс2], // top
        ["название3", индекс3], // back
        ["название4", индекс4], // front
        ["название5", индекс5], // left
        ["название6", индекс6]  // right
    ], 
    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" с текстурой досок на всех сторонах, будет добавлен в креатив

Создание блоков с поворотом[править]

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

Создание предметов[править]

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

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

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

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

Пример:

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

Создание еды[править]

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

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

{
     isTech: false,// если true, не добавляет предмет в креатив
     stack: 64, // размер стака
     food: 1 // восполнение здоровья едой
}

Создание кидаемого предмета[править]

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

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

{
     isTech: false, // если true, не добавляет предмет в креатив
     stack: 64 // сколько предметов будет в одном стаке, максимум 64.
}

Пример:

IDRegistry.genItemID("throwableItem");&nbsp;
Item.createThrowableItem("throwableItem", "Throwable Item", { name: "throwable_item", meta: 0}, {})

Создание брони[править]

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

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

{
     isTech: false, // если true, не добавляет предмет в креатив
     armor: 1, // количество добавляемой брони в шкале защиты
     type: <обязательное значение>, // тип предмета "helmet"/"chestplate"/"leggings"/"boots"
     texture: <обязательное значение>, // текстура модели данной брони
     durability: 1 // прочность брони
}

Пример брони:

IDRegistry.genItemID("myHelmet"); // регистрируем ID шлема
IDRegistry.genItemID("myChestplate"); // регистрируем ID нагрудника
IDRegistry.genItemID("myLeggings"); // регистрируем ID понож
IDRegistry.genItemID("myBoots"); // регистрируем ID ботинок

Item.createArmorItem("myHelmet", "Helmet", {name: "helmet"}, {type: "helmet", armor: 2, durability: 149, texture: "armor/lay_1.png"}); // создаём шлем с ID myHelmet
Item.createArmorItem("myChestplate", "Chestplate", {name: "chestplate"}, {type: "chestplate", armor: 6, durability: 216, texture: "armor/lay_1.png"}); // создаём нагрудник с ID myChestplate
Item.createArmorItem("myLeggings", "Leggings", {name: "leggings"}, {type: "leggings", armor: 5, durability: 203, texture: "armor/lay_2.png"}); // создаём поножи с ID myLeggings
Item.createArmorItem("myBoots", "Boots", {name: "boots"}, {type: "boots", armor: 2, durability: 176, texture: "armor/lay_1.png"}); // создаём ботинки с ID myBoots