Інструменти необхідні для виживання та прогресу, дозволяючи гравцям збирати ресурси, будувати будівлі та захищатися.
Створення інструментального матеріалу
Ви можете створити матеріал інструменту, створивши екземпляр нового об’єкта 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
Це майже все! Якщо ви зайдете в гру, ви побачите свій інструмент(и) на вкладці інструментів у меню творчого інвентарю.



