🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
🇺🇦 Українська (Ukrainian - Ukraine)
🇺🇦 Українська (Ukrainian - Ukraine)
Зовнішній вигляд
Ця сторінка написана для версії:
1.21.4
Ця сторінка написана для версії:
1.21.4
Обладунки забезпечує гравцеві підвищений захист від атак мобів та інших гравців.
Технічно вам не потрібен спеціальний клас для вашого матеріалу обладунку, але це все одно хороша практика з кількістю статичних полів, які вам знадобляться.
Для цього прикладу ми створимо клас GuiditeArmorMaterial
для зберігання наших статичних полів.
Ця константа буде використовуватися в методі Item.Settings#maxDamage(int damageValue)
під час створення наших предметів обладунків, вона також потрібна як параметр у конструкторі ArmorMaterial
, коли ми створимо наш об’єкт ArmorMaterial
пізніше.
public static final int BASE_DURABILITY = 15;
Якщо вам важко визначити збалансовану базову міцність, ви можете звернутися до екземплярів матеріалу обладунків ванілльного кольору, знайденого в інтерфейсі ArmorMaterials
.
Попри те, що нам не потрібно реєструвати наш ArmorMaterial
в жодних реєстрах, загалом добре зберігати будь-які ключі реєстру як константи, оскільки гра використовуватиме це для пошуку відповідних текстур для наших обладунків.
public static final RegistryKey<EquipmentAsset> GUIDITE_ARMOR_MATERIAL_KEY = RegistryKey.of(EquipmentAssetKeys.REGISTRY_KEY, Identifier.of(FabricDocsReference.MOD_ID, "guidite"));
Пізніше ми передамо це конструктору ArmorMaterial
.
ArmorMaterial
Щоб створити наш матеріал, нам потрібно створити новий екземпляр запису ArmorMaterial
, тут використовуватимуться базова міцність і константи ключа реєстру матеріалів.
public static final ArmorMaterial INSTANCE = new ArmorMaterial(
BASE_DURABILITY,
Map.of(
EquipmentType.HELMET, 3,
EquipmentType.CHESTPLATE, 8,
EquipmentType.LEGGINGS, 6,
EquipmentType.BOOTS, 3
),
5,
SoundEvents.ITEM_ARMOR_EQUIP_IRON,
0.0F,
0.0F,
REPAIRS_GUIDITE_ARMOR,
GUIDITE_ARMOR_MATERIAL_KEY
);
Конструктор ArmorMaterial
приймає такі параметри в такому конкретному порядку:
Параметр | Опис |
---|---|
durability | Базова міцність усіх частин обладунків, вона використовується при розрахунку загальної міцності кожної окремої частини обладунків, для якої використовується цей матеріал. Це має бути базова константа міцності, яку ви створили раніше. |
defense | Мапування EquipmentType (переліку, що представляє кожен слот для обладунків) на ціле значення, яке вказує на захисну цінність матеріалу при використанні у відповідному слоті для обладунків. |
enchantmentValue | «Зачаровуваність» предмета обладунків, які використовують цей матеріал. |
equipSound | Запис у реєстрі звукової події, яка відтворюється, коли ви одягаєте частину обладунків, яка використовує цей матеріал. Щоб дізнатися більше про звуки, перегляньте сторінку Власні звуки. |
toughness | Плаваюче значення, яке представляє атрибут "міцності" матеріалу обладунків - по суті, наскільки добре обладунки поглинають пошкодження. |
knockbackResistance | Плаваюче значення, яке представляє ступінь опору до відкидання, який матеріал обладунків надає власнику. |
repairIngredient | Теґ предмета, який представляє всі предмети, які можна використовувати для лагодження предметів обладунків з цього матеріалу в ковадлі. |
assetId | Ключ реєстру EquipmentAsset , це має бути константа ключа реєстру активів обладнання, яку ви створили раніше. |
Якщо вам важко визначити значення для будь-якого з параметрів, ви можете проконсультуватися з екземплярами ArmorMaterial
, які можна знайти в інтерфейсі ArmorMaterials
.
Тепер, коли ви зареєстрували матеріал, ви можете створювати предмети обладунків у своєму класі ModItems
:
Очевидно, що комплект обладунків не потребує кожного типу, щоб бути задоволеним, ви можете мати комплект із лише чоботами, наголінниками тощо. Панцир черепахи (шолом) ванілли є гарним прикладом комплекту обладунків з відсутніми слотами.
На відміну від ToolMaterial
, ArmorMaterial
не зберігає жодної інформації про міцність предметів. З цієї причини базову міцність необхідно вручну додати до Item.Settings
предметів обладунків під час їх реєстрації.
Це досягається шляхом передачі створеної нами раніше константи BASE_DURABILITY
в метод maxDamage
у класі Item.Settings
.
public static final RegistryKey<Item> GUIDITE_HELMET_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "guidite_helmet"));
public static final Item GUIDITE_HELMET = register(new ArmorItem(GuiditeArmorMaterial.INSTANCE, EquipmentType.HELMET, new Item.Settings().registryKey(GUIDITE_HELMET_KEY).maxDamage(EquipmentType.HELMET.getMaxDamage(GuiditeArmorMaterial.BASE_DURABILITY))), GUIDITE_HELMET_KEY);
public static final RegistryKey<Item> GUIDITE_CHESTPLATE_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "guidite_chestplate"));
public static final Item GUIDITE_CHESTPLATE = register(new ArmorItem(GuiditeArmorMaterial.INSTANCE, EquipmentType.CHESTPLATE, new Item.Settings().registryKey(GUIDITE_CHESTPLATE_KEY).maxDamage(EquipmentType.CHESTPLATE.getMaxDamage(GuiditeArmorMaterial.BASE_DURABILITY))), GUIDITE_CHESTPLATE_KEY);
public static final RegistryKey<Item> GUIDITE_LEGGINGS_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "guidite_leggings"));
public static final Item GUIDITE_LEGGINGS = register(new ArmorItem(GuiditeArmorMaterial.INSTANCE, EquipmentType.LEGGINGS, new Item.Settings().registryKey(GUIDITE_LEGGINGS_KEY).maxDamage(EquipmentType.LEGGINGS.getMaxDamage(GuiditeArmorMaterial.BASE_DURABILITY))), GUIDITE_LEGGINGS_KEY);
public static final RegistryKey<Item> GUIDITE_BOOTS_KEY = RegistryKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "guidite_boots"));
public static final Item GUIDITE_BOOTS = register(new ArmorItem(GuiditeArmorMaterial.INSTANCE, EquipmentType.BOOTS, new Item.Settings().registryKey(GUIDITE_BOOTS_KEY).maxDamage(EquipmentType.BOOTS.getMaxDamage(GuiditeArmorMaterial.BASE_DURABILITY))), GUIDITE_BOOTS_KEY);
Вам також потрібно буде додати предмети до групи предметів, якщо ви хочете, щоб вони були доступні з творчого інвентарю.
Як і для всіх предметів, для них також слід створити ключі перекладу.
Вам потрібно буде створити набір текстур для предметів і набір текстур для фактичних обладунків, коли її носить «гуманоїдна» сутність (гравці, зомбі, скелети тощо).
Ці текстури нічим не відрізняються від інших предметів– ви повинні створити текстури та створити загальну згенеровану модель предмета, про що йдеться в створення вашого першого предмета.
Для прикладу ви можете використовувати наведені нижче текстури та модель JSON як еталон.
INFO
Вам знадобляться файли моделі JSON для всіх предметів, а не лише для шолома, це той самий принцип, що й інші моделі предметів.
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "fabric-docs-reference:item/guidite_helmet"
}
}
Як бачите, в грі предмети обладунків повинні мати відповідні моделі:
Коли сутність носить ваші обладунки, нічого не буде показано. Це тому, що вам не вистачає текстур і визначень моделі обладнання.
Є два шари для текстури обладунків, обидва повинні бути присутніми.
Раніше ми створили константу RegistryKey<EquipmentAsset>
під назвою GUIDITE_ARMOR_MATERIAL_KEY
, яку ми передали в наш конструктор ArmorMaterial
. Рекомендується так само назвати текстуру, тому в нашому випадку це guidite.png
assets/mod-id/textures/entity/equipment/humanoid/guidite.png
– містить текстури верхньої частини тіла та черевиків.assets/mod-id/textures/entity/equipment/humanoid_leggings/guidite.png
- Містить текстури наголінників.TIP
Якщо ви оновлюєте старішу версію гри до 1.21.4, у теці humanoid
буде ваша текстура обладунків layer0.png
, а в теці humanoid_leggings
— ваша текстура обладунків layer1.png
.
Далі вам потрібно буде створити пов’язане визначення моделі обладнання. Вони знаходяться в теці /assets/mod-id/equipment/
.
Константа RegistryKey<EquipmentAsset>
, яку ми створили раніше, визначатиме назву файлу JSON. У цьому випадку це буде guidite.json
.
Оскільки ми плануємо додати лише «гуманоїда» (шолом, нагрудник, наголінники, чоботи тощо) обладунків, наше визначення моделі обладнання виглядатиме так:
{
"layers": {
"humanoid": [
{
"texture": "fabric-docs-reference:guidite"
}
],
"humanoid_leggings": [
{
"texture": "fabric-docs-reference:guidite"
}
]
}
}
З наявністю текстур і визначення моделі спорядження ви зможете бачити свої обладунки на сутностях, які її носять: