Инструменты необходимы для выживания и развития, позволяя игрокам собирать ресурсы, строить здания и защищаться.
Создание Материала Инструмента
INFO
If you're creating multiple tool materials, consider using an Enum to store them. Vanilla does this in the ToolMaterials class, which stores all the tool materials that are used in the game.
Этот класс также можно использовать для определения свойств материала вашего инструмента по отношению к классическим материалам инструмента.
"Вы можете создать материал для инструмента, создав новый класс, который его наследует — в этом примере я буду создавать инструменты «Guidite»:
java
public class GuiditeMaterial implements ToolMaterial {
// Your IDE should override the interface's methods for you, or at least shout at you to do so.
}1
2
3
2
3
Материал инструмента сообщает игре следующую информацию:
Прочность -
getDurability()Сколько раз можно использовать инструмент, прежде чем он сломается.
Пример
java@Override public int getDurability() { return 455; }1
2
3
4
5Скорость добычи -
getMiningSpeedMultiplier()Если инструмент используется для разрушения блоков, с какой скоростью он должен их разрушать?
Для справки: скорость добычи алмазного инструмента составляет 8,0F, а скорость добычи каменного инструмента — 4,0F.
Пример
java@Override public float getMiningSpeedMultiplier() { return 5.0F; }1
2
3
4
5Урон от атаки -
getAttackDamage()Сколько единиц урона должен наносить инструмент при использовании его в качестве оружия против другого существа?
Пример
java@Override public float getAttackDamage() { return 1.5F; }1
2
3
4
5Обратный тег -
getMiningLevel()Обратный тег показывает, что инструмент не может добывать. Например, использование тега
BlockTags.INCORRECT_FOR_WOODEN_TOOLзапрещает инструмент добывать определенные блоки:json{ "values": [ "#minecraft:needs_diamond_tool", "#minecraft:needs_iron_tool", "#minecraft:needs_stone_tool" ] }1
2
3
4
5
6
7Это означает, что инструмент не может добывать блоки, для которых требуется алмазный, железный или каменный инструмент.
Пример
Мы воспользуемся тегом железного инструмента. Это не позволяет инструментам Guidite добывать блоки, для которых требуется инструмент прочнее железа.
java@Override public TagKey<Block> getInverseTag() { return BlockTags.INCORRECT_FOR_IRON_TOOL; }1
2
3
4
5Если вы хотите использовать пользовательский тег, вы можете использовать
TagKey.of(...)для создания пользовательского ключа тега.Зачарование -
getEnchantability()Насколько легко получить лучшие и более высокие уровни чар с помощью этого предмета? Для справки: зачаровываемость золота составляет 22, в то время как зачаровываемость незерита — 15.
Пример
java@Override public int getEnchantability() { return 22; }1
2
3
4
5Ингредиент(ы) для восстановления -
getRepairIngredient()Какой предмет или предметы используются для ремонта инструмента?
Пример
java@Override public Ingredient getRepairIngredient() { return Ingredient.ofItems(ModItems.SUSPICIOUS_SUBSTANCE, Items.POTATO); }1
2
3
4
5
После того как вы создали материал для инструмента и настроили его по своему вкусу, вы можете создать его экземпляр для использования в конструкторах предметов инструмента.
java
public static final GuiditeMaterial INSTANCE = new GuiditeMaterial();1
Создание инструментов
Используя ту же вспомогательную функцию, что и в руководстве Создание вашего первого элемента, вы можете создавать свои инструменты:
java
public static final Item GUIDITE_SWORD = register(new SwordItem(GuiditeMaterial.INSTANCE, new Item.Settings()), "guidite_sword");1
Не забудьте добавить их в группу предметов, если вы хотите получить к ним доступ из творческого инвентаря!
java
ItemGroupEvents.modifyEntriesEvent(ItemGroups.TOOLS)
.register((itemGroup) -> itemGroup.add(ModItems.GUIDITE_SWORD));1
2
2
Вам также придется добавить текстуру, перевод предмета и модель предмета. Однако для модели элемента вам следует использовать модель item/handheld в качестве родительской.
В этом примере я буду использовать следующую модель и текстуру для предмета «Меч Guidite»:
json
{
"parent": "item/handheld",
"textures": {
"layer0": "example-mod:item/guidite_sword"
}
}1
2
3
4
5
6
2
3
4
5
6
Вот и все! Если вы зайдете в игру, вы увидите свой(и) инструмент(ы) на вкладке инструментов в меню творческого инвентаря.



