- Баллы
- 66
Приветствую! В моем проекте задействовано кастомное оружие и присутствует возможность превращения его из алмазного в незеритовое на кузнечном столе. Вот код (В данном случае алмазный кинжал в незеритовый):
Однако, подобная механика не учитывает износ начального предмета, в отличие от оригинального оружия игры, потому, конечный инструмент всегда обладает максимальной прочностью. Собственно, вопрос: как можно перенести прочность от "сырьевого" объекта к готовому? Были попытки сделать это с помощью set/getDurability, но этот метод значится устаревшим. Версия Minecraft - 1.16+. Подскажите, пожалуйста, что можно сделать.
PHP:
@EventHandler
void onSmithingTableEvent(PrepareSmithingEvent event) {
SmithingInventory inventory = event.getInventory();
ItemStack tool = inventory.getItem(0);
ItemStack mod = inventory.getItem(1);
if(tool == null || mod == null) {
return;
}
if(tool.getType() != Material.DIAMOND_SWORD || !tool.hasItemMeta() || !tool.getItemMeta().hasDisplayName() || !tool.getItemMeta().getDisplayName().equals(ChatColor.WHITE + "Алмазный кинжал") || mod.getType() != Material.NETHERITE_INGOT) {
return;
}
ItemStack diamonddaggere = new ItemStack(Material.NETHERITE_SWORD);
ItemMeta meta = diamonddaggere.getItemMeta();
AttributeModifier modifier3 = new AttributeModifier(UUID.randomUUID(), "generic.attackDamage", 6, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND);
meta.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE, modifier3);
AttributeModifier modifier4 = new AttributeModifier(UUID.randomUUID(), "generic.attackSpeed", 3, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND);
meta.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED, modifier4);
meta.setDisplayName(ChatColor.WHITE + "Незеритовый кинжал");
diamonddaggere.setItemMeta(meta);
event.setResult(diamonddaggere);
}