Власні інструменти та зброя
Інструменти необхідні для виживання та прогресу, дозволяючи гравцям збирати ресурси, будувати будівлі та захищатися.
Створення інструментального матеріалу
Ви можете створити матеріал інструменту, створивши екземпляр нового об’єкта ToolMaterial і зберігши його в полі, яке можна використовувати пізніше для створення предметів інструменту, які використовують матеріал.
java
public static final ToolMaterial GUIDITE_TOOL_MATERIAL = new ToolMaterial(
BlockTags.INCORRECT_FOR_WOODEN_TOOL,
455,
5.0F,
1.5F,
22,
GuiditeArmorMaterial.REPAIRS_GUIDITE_ARMOR
);1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Конструктор ToolMaterial приймає такі параметри в такому конкретному порядку:
| Параметр | Опис |
|---|---|
incorrectBlocksForDrops | Якщо блок знаходиться в неправильному теґу BlocksForDrops, це означає, що коли ви використовуєте інструмент, виготовлений із цього ToolMaterial на цьому блоці, блок не скине жодних предметів. |
durability | Міцність усіх інструментів із цього ToolMaterial. |
speed | Швидкість добування інструментів із цього ToolMaterial. |
attackDamageBonus | Інструменти з цього ToolMaterial матимуть додаткову шкоду від атаки. |
enchantmentValue | «Зачаровуваність» інструментів, які є з цього ToolMaterial. |
repairItems | Будь-які предмети в цьому теґу можна використовувати для лагодження інструментів цього ToolMaterial у ковадлі. |
Для цього прикладу ми будемо використовувати той самий предмет лагодження, який будемо використовувати для обладунків. Ми визначаємо посилання на теґ наступним чином:
java
public static final TagKey<Item> REPAIRS_GUIDITE_ARMOR = TagKey.create(BuiltInRegistries.ITEM.key(), Identifier.fromNamespaceAndPath(ExampleMod.MOD_ID, "repairs_guidite_armor"));1
Якщо вам важко визначити збалансовані значення для будь-якого з числових параметрів, вам слід розглянути константи інструментального матеріалу, такі як ToolMaterial.STONE або ToolMaterial.DIAMOND.
Створення предметів-інструментів
Використовуючи ту саму службову функцію, що й у посібнику створення вашого першого предмета, ви можете створювати предмети інструментів:
java
public static final Item GUIDITE_SWORD = register(
"guidite_sword",
Item::new,
new Item.Properties().sword(GUIDITE_TOOL_MATERIAL, 1f, 1f)
);1
2
3
4
5
2
3
4
5
Два рухомих значення (1f, 1f) стосуються шкоди від атаки інструмента та швидкості атаки інструмента відповідно.
Не забудьте додати їх до вкладок творчості, якщо ви хочете отримати доступ до них з інвентарю творчості!
java
ItemGroupEvents.modifyEntriesEvent(CreativeModeTabs.TOOLS_AND_UTILITIES)
.register((itemGroup) -> itemGroup.accept(ModItems.GUIDITE_SWORD));1
2
2
Вам також доведеться додати текстуру, переклад предмета та модель предмета. Однак для моделі item ви захочете використовувати модель item/handheld як батьківську модель замість звичайної item/generated.
У цьому прикладі я буду використовувати наступну модель і текстуру для предмета «Guidite Sword»:
json
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "example-mod:item/guidite_sword"
}
}1
2
3
4
5
6
2
3
4
5
6
Це майже все! Якщо ви зайдете в гру, ви побачите свій інструмент(и) на вкладці інструментів у меню творчого інвентарю.



