- Баллы
- 66
Приветствую! Столкнулся с такой проблемой. В моем плагине есть кастомное оружие из всех присутствующих в игре материалов, в том числе алмазов. Потому встал вопрос о перековке алмазных предметов в незеритовые. Для этого написал такой код, в данном случае, перековки кинжала:
Однако, хоть оружие по сути и претерпевает изменения, но ему не присваивается требуемая мета. У него не меняются названия и показатели урона. Подскажите, пожалуйста, с чем это может быть связано. Заранее благодарю.
PHP:
@EventHandler
public void PrepareSmithing(PrepareSmithingEvent e) {
SmithingInventory inventory = e.getInventory();
ItemStack tool = new ItemStack(Material.DIAMOND_SWORD);
ItemMeta a = tool.getItemMeta();
AttributeModifier modifier = new AttributeModifier(UUID.randomUUID(), "generic.attackDamage", 4.5f, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND);
a.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE, modifier);
AttributeModifier modifier2 = new AttributeModifier(UUID.randomUUID(), "generic.attackSpeed", 3, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND);
a.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED, modifier2);
a.setDisplayName(ChatColor.WHITE + "Алмазный кинжал");
tool.setItemMeta(a);
ItemStack me = inventory.getItem(1);
ItemStack y = inventory.getItem(1);
if(y.getType() == Material.DIAMOND_SWORD) {
if(y.hasItemMeta()) {
if(y.getItemMeta().equals(a)) {
if(me.getType() == Material.BRICK) {
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);
e.setResult(diamonddaggere);
}
}
}
}
}