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.
Текстуры блоков в ресурспаке располагаются по адресу images/terrain-atlas/
Текстуры предметов в ресурспаке располагаются по адресу images/items-opaque/
После регистрации 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 // размер стака
}
Item.createFoodItem("строковый ID", "имя предмета", текстура, параметры) - создает съедобный предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
{
isTech: false,// если true, не добавляет предмет в креатив
stack: 64, // размер стака
food: 1 // восполнение здоровья едой
}
Item.createThrowableItem("строковый ID", "имя предмета", текстура, параметры) - создает кидаемый предмет на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
{
isTech: false, // если true, не добавляет предмет в креатив
stack: 64 // сколько предметов будет в одном стаке, максимум 64.
}
Item.createArmorItem("строковый ID", "имя предмета", текстура, параметры) - создает предмет брони на ранее зарегистрированном строковом ID, с данным именем, текстурой и параметрами.
Параметры имеют формат, если вы не хотите изменять значения по-умолчанию, просто не пишите их:
{
isTech: false, // если true, не добавляет предмет в креатив
armor: 1, // количество добавляемой брони в шкале защиты
type: <обязательное значение>, // тип предмета "helmet"/"chestplate"/"leggings"/"boots"
texture: <обязательное значение>, // текстура модели данной брони
durability: 1 // прочность брони
}
IDRegistry.genItemID("helmet");//создаем новый ID для шлема
IDRegistry.genItemID("chestplate");//создаем новый ID для нагрудника
IDRegistry.genItemID("leggings");//создаем новый ID для понож
IDRegistry.genItemID("boots");//создаем новый ID для ботинок
Item.createArmorItem("helmet", "Helmet", {name: "helmet"}, {type: "helmet", armor: 2, durability: 149, texture: "armor/lay_1.png"});//применяем наш ID helmet, добавляем имя Helmet, задаем текстуру предмета и объект описания.
Item.createArmorItem("chestplate", "Chestplate", {name: "chestplate"}, {type: "chestplate", armor: 6, durability: 216, texture: "armor/lay_1.png"});//применяем наш ID chestplate, добавляем имя ChestPlate, задаем текстуру предмета и объект описания.
Item.createArmorItem("leggings", "Leggings", {name: "leggings"}, {type: "leggings", armor: 5, durability: 203, texture: "armor/lay_2.png"});//применяем наш ID leggins, добавляем имя Leggins, задаем текстуру предмета и объект описания.
Item.createArmorItem("boots", "Boots", {name: "boots"}, {type: "boots", armor: 2, durability: 176, texture: "armor/lay_1.png"});//применяем наш ID boots, добавляем имя Boots, задаем текстуру предмета и объект описания.
IDRegistry.genItemID("testItem");
Item.createItem("testItem", "test item", {name: "stick", meta: 0}, {}); // создаем обычный предмет на ID testItem с текстурой палки и стандартными параметрами