Починка предмета#
Как мы знаем в Minecraft можно чинить предметы с прочностью двумя способами:
- Объединение одинаковых предметов в сетке крафта
- С помощью наковальни и предмета для починки
Таблицы предметов применяемых при починке#
ToolMaterial:
Материал | Название предмета | Предмет |
---|---|---|
WOOD | Доски | Blocks.planks |
STONE | Булыжник | Blocks.cobblestone |
GOLD | Золотой слиток | Items.gold_ingot |
IRON | Железный слиток | Items.iron_ingot |
EMERALD | Алмаз | Items.diamond |
ArmorMaterial:
Материал | Название предмета | Предмет |
---|---|---|
CLOTH | Кожа | Items.leather |
CHAIN | Железный слиток | Items.iron_ingot |
IRON | Железный слиток | Items.iron_ingot |
GOLD | Золотой слиток | Items.gold_ingot |
DIAMOND | Алмаз | Items.diamond |
Внимание!
Заменять предмет починки для материалов Minecraft не разрешено, при попытке заменить вы получите исключение. Добавить можно только один предмет для починки!
Приступим к добавлению своего предмета для починки наших инструментов и брони. Создайте предмет, который будет использоваться для
починки. Затем перейдите в класс ModItems
и вызовете метод ToolMaterial#setRepairItem(ItemStack)
. К сожалению,
у ArmorMaterial
нет метода setRepairItem(ItemStack)
поэтому, чтобы добавить предмет для починки, необходимо
передать в переменную customCraftingMaterial
предмет. Чтобы добавить блок, воспользуйтесь методом Item#getItemFromBlock(Block)
.
public class ModItems {
public static final Item.ToolMaterial RUBY_TOOL_MATERIAL = EnumHelper.addToolMaterial("mcmodding:ruby", 4, 1800, 16F, 5F, 30);
public static final ItemArmor.ArmorMaterial RUBY_ARMOR_MATERIAL = EnumHelper.addArmorMaterial("mcmodding:ruby", 66, new int[]{5, 5, 5, 5}, 30);
static {
RUBY_TOOL_MATERIAL.setRepairItem(new ItemStack(RUBY));
RUBY_ARMOR_MATERIAL.customCraftingMaterial = RUBY;
}
}
Метод ToolMaterial#setRepairItem(ItemStack)
принимает стэк предметов.
ItemStack
Первым параметром в ItemStack
выступает класс Item
или Block
(см. статью "Создание блока"),
вторым параметром идёт количество предметов в стэке, максимум может быть 64 предмета(в зависимости от предмета
это кол-во может меняться: 1 - лодка, 16 - снежки, 64 - камень и др.) Третий параметр это damage.
Стандартное значение последних двух параметров: размер - 1, damage - 0.
Мы будем использовать стандартные значения, поэтому достаточно в ItemStack
передать только предмет.
Запускаем игру и пробуем починить наш инструмент в наковальне(аналогично для брони).
Починка в сетке крафта#
Разработчики Minecraft заранее позаботились о том, что большинство предметов имеющих прочность должны чиниться за счёт
объединения одинаковых по мете и типу предмета, но что если мы хотим чинить наш предмет только через наковальню?
Для этого предусмотрено состояние canRepair
, чтобы отключить починку через сетку крафта, добавьте в конструктор своего
предмета вызов метода Item#setNoRepair
.
До добавления Item#setNoRepair
:
После добавления Item#setNoRepair
: