Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Атрибуты элементов инвентаря

Метки:
Теги Теги
inventory nbt

Error202

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
Error202
Lore меняется легко, а как правильно поменять атрибуты (для оружия: скорость, урон ...)?
Делаю так:

Код:
...
        net.minecraft.server.v1_15_R1.ItemStack nmsItem = CraftItemStack.asNMSCopy(item);
        NBTTagCompound tag = nmsItem.hasTag() ? nmsItem.getTag() : new NBTTagCompound();
        
        NBTTagCompound tagSpeed = new NBTTagCompound();
        NBTTagList tagList = new NBTTagList();
        
        tagSpeed.set("AttributeName", NBTTagString.a("generic.movementSpeed"));
        tagSpeed.set("Name", NBTTagString.a("generic.movementSpeed"));
        tagSpeed.set("Amount", NBTTagDouble.a(0.1));
        tagSpeed.set("Operation", NBTTagInt.a(0));
        tagSpeed.set("UUIDLeast", NBTTagInt.a(894654));
        tagSpeed.set("UUIDMost", NBTTagInt.a(2872));
        tagList.add(tagSpeed);
        tag.set("AttributeModifiers", tagList);
        nmsItem.setTag(tag);
        item = CraftItemStack.asBukkitCopy(nmsItem);
...

Но в результате скорость дублируется:
1.png


Как сделать только тогда, когда в ведущей руке?
 
Так же легко.
Код:
    public static void test(ItemStack stack) {
        ItemMeta meta = stack.getItemMeta();
        AttributeModifier at = new AttributeModifier(UUID.randomUUID(), Attribute.GENERIC_ATTACK_SPEED.name(), 10,
                AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND);
        meta.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED, at);
        stack.setItemMeta(meta);
    }
 

Поделиться этой страницей

Назад
Верх