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

 
(не показаны 34 промежуточные версии 12 участников)
Строка 1: Строка 1:
 
+
<div class="mw-parser-output">
 
=== Регистрация ID ===
 
=== Регистрация ID ===
  
ID - уникальный идентефикатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.
+
ID - уникальный идентификатор блока\предмета, задается строкой и натуральным числом, которое сопоставляется этой строке. Чтобы зарегистрировать ID, используется модуль IDRegistry.
  
 
Для регистрации ID блока используется метод IDRegistry.genBlockID("строковый ID") - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.<строковый ID>
 
Для регистрации ID блока используется метод IDRegistry.genBlockID("строковый ID") - после вызова этой функции сгенерируется новый уникальный ID для блока, доступ к числовому значению которого может быть произведен как BlockID.<строковый ID>
Строка 9: Строка 9:
  
 
Примеры:
 
Примеры:
<pre>IDRegistry.genBlockID("testBlock"); // доступ BlockID.testBlock
+
<syntaxhighlight lang="Javascript">IDRegistry.genBlockID("testBlock"); // доступ BlockID.testBlock
IDRegistry.genItemID("testItem"); // доступ ItemID.testItem</pre>
+
IDRegistry.genItemID("testItem"); // доступ ItemID.testItem</syntaxhighlight>
 
+
<div class="mw-parser-output">
 
 
 
=== Текстуры ===
 
=== Текстуры ===
  
 
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.
 
В ресурсах мода текстуры блоков и предметов задаются в определенном формате: каждая текстура должна быть в формате .png и имеет имя и номер, название любой текстуры выглядит так: имя_номер.png и никак иначе. Номера текстур с одним именем должны идти последовательно и начинаться с 0.
  
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/
+
Текстуры блоков в ресурспаке располагаются по адресу res/terrain-atlas/
  
Текстуры предметов&nbsp;в ресурспаке располагаются по адресу images/items-opaque/
+
Текстуры предметов&nbsp;в ресурспаке располагаются по адресу res/items-opaque/
  
 +
Текстуры брони в ресурспаке располагаются по адресу res/armor
 +
</div>
 
=== Создание блоков ===
 
=== Создание блоков ===
  
Строка 27: Строка 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.
  
 
'''Пример''':
 
'''Пример''':
<pre>IDRegistry.genBlockID("testBlock"); // регистрация
+
<syntaxhighlight lang="Javascript">IDRegistry.genBlockID("testBlock"); // регистрация
 
Block.createBlock("testBlock", [
 
Block.createBlock("testBlock", [
    {name: "test block", texture: [["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0]], inCreative: true}
+
     {name: "test block", texture: [["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0], ["planks", 0]], inCreative: true}
]) // создание простого блока на ID "testBlock" с текстурой досок на всех сторонах, будет добавлен в креатив
+
]); // создание простого блока на ID "testBlock" с текстурой досок на всех сторонах, будет добавлен в креатив</syntaxhighlight>
</pre>
+
<div class="mw-parser-output"><div class="mw-parser-output">
 
 
 
==== Создание блоков с поворотом ====
 
==== Создание блоков с поворотом ====
  
 
Метод Block.createBlockWithRotation -&nbsp;&nbsp;принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.
 
Метод Block.createBlockWithRotation -&nbsp;&nbsp;принимает те же аргументы, что и Block.createBlock, но для каждой вариации блока создает 4 вариации, которые реализуют поворот, блок, созданный этим методом, автоматически будет ставиться с нужным поворотом.
 
+
</div> </div>
 
=== Создание предметов ===
 
=== Создание предметов ===
  
 
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: "имя текстуры", meta: <номер текстуры>}, если номер текстуры 0, его можно не указывать.
 
После регистрации ID предмета, создается сам предмет на этом ID. Предметы могут быть разных типов: обычный, броня, еда и кидаемый, для каждого из них существует свой метод. Для создания предметов используется модуль Item. Каждый предмет имеет текстуру, которая задается в формате {name: "имя текстуры", meta: <номер текстуры>}, если номер текстуры 0, его можно не указывать.
<pre>Item.createItem("строковый ID", "имя предмета", текстура, параметры) - создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.</pre>
 
  
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
+
Item.createItem("строковый ID", "имя предмета", текстура, параметры) - создает обычный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
<pre>{
+
 
    isTech: false, // если true, не добавляет предмет в креатив
+
Параметры имеют формат, если вы не хотите изменять значения по умолчанию, просто не пишите их:
    stack: 64 // размер стака
+
<syntaxhighlight lang="Javascript">{
} </pre>
+
     isTech: false, // если true, не добавляет предмет в креатив
 +
     stack: 64 // размер стака
 +
} </syntaxhighlight>
 +
 
 +
'''Пример''':
 +
<syntaxhighlight lang="JavaScript">IDRegistry.genItemID("testItem");
 +
Item.createItem("testItem", "test item", {name: "stick", meta: 0}, {}); // создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами</syntaxhighlight>
  
 
==== Создание еды ====
 
==== Создание еды ====
<pre>Item.createFoodItem("строковый ID", "имя предмета", текстура, параметры) - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.</pre>
 
  
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
+
Item.createFoodItem("строковый ID", "имя предмета", текстура, параметры) - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
<pre>{
+
 
    isTech: false,// если true, не добавляет предмет в креатив
+
Параметры имеют формат, если вы не хотите изменять значения по умолчанию, просто не пишите их:
    stack: 64, // размер стака
+
<syntaxhighlight lang="Javascript">{
    food: 1 // восполнение здоровья едой
+
     isTech: false,// если true, не добавляет предмет в креатив
}</pre>
+
     stack: 64, // размер стака
 +
     food: 1 // восполнение здоровья едой
 +
}</syntaxhighlight>
  
 
==== Создание кидаемого предмета ====
 
==== Создание кидаемого предмета ====
<pre>Item.createThrowableItem("строковый ID", "имя предмета", текстура, параметры) - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.</pre>
 
  
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
+
Item.createThrowableItem("строковый ID", "имя предмета", текстура, параметры) - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
<pre>{
 
    isTech: false, // если true, не добавляет предмет в креатив
 
    stack: 64 // размер стака
 
}</pre>
 
  
 +
Параметры имеют формат, если вы не хотите изменять значения по умолчанию, просто не пишите их:
 +
<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">
 +
'''Пример''':
 +
<syntaxhighlight lang="JavaScript">IDRegistry.genItemID("throwableItem");&nbsp;
 +
Item.createThrowableItem("throwableItem", "Throwable Item", { name: "throwable_item", meta: 0}, {})
 +
</syntaxhighlight>
 +
</div> </div> </div> </div> </div> </div>
 
==== Создание брони ====
 
==== Создание брони ====
<pre>Item.createArmorItem("строковый ID", "имя предмета", текстура, параметры) - создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.</pre>
+
<pre>Item.createArmorItem(&quot;строковый ID&quot;, &quot;имя предмета&quot;, текстура, параметры) - создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.</pre>
  
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
+
Параметры имеют формат, если вы не хотите изменять значения по умолчанию, просто не пишите их:
<pre>{
+
<syntaxhighlight lang="Javascript">{
    isTech: false, // если true, не добавляет предмет в креатив
+
     isTech: false, // если true, не добавляет предмет в креатив
    armor: 1, // значение брони
+
     armor: 1, // количество добавляемой брони в шкале защиты
    type: <обязательное значение>, // тип предмета "helmet"/"chestplate"/"leggings"/"boots"
+
     type: <обязательное значение>, // тип предмета "helmet"/"chestplate"/"leggings"/"boots"
    texture: <обязательное значение>, // текстура модели данного предмета брони
+
     texture: <обязательное значение>, // текстура модели данной брони
    durability: 1 // прочность
+
     durability: 1 // прочность брони
}</pre>
+
}</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
<pre>IDRegistry.genItemID("testItem");
+
Item.createArmorItem("myChestplate", "Chestplate", {name: "chestplate"}, {type: "chestplate", armor: 6, durability: 216, texture: "armor/lay_1.png"}); // создаём нагрудник с ID myChestplate
Item.createItem("testItem", "test item", {name: "stick", meta: 0}, {}); // создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами</pre>
+
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>

Текущая версия на 20: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