1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Добавление урона для предмета

Тема в разделе "Разработка плагинов для новичков", создана пользователем xXCopafumeXx, 16 ноя 2019.

  1. Автор темы
    xXCopafumeXx

    xXCopafumeXx Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    xXCopafumeXx
    Я создал предмет, который можно крафтить у верстаке. Так вот мне нужно выставить ему урон. Слышал про attribute modifiers но как его написать. Вот сам предмет
    private void craft() {
    ItemStack item = new ItemStack(Material.DIAMOND_AXE);
    ItemMeta meta = item.getItemMeta();
    meta.setDisplayName(ChatColor.RED + "Боевой топор");
    List<String> lore = new ArrayList<String>();
    lore.add("Боевой топор");
    meta.setLore(lore);
    item.setItemMeta(meta);
    ShapedRecipe s = new ShapedRecipe(item);
    s.shape(new String[] {"A A", " B ", "A A"});
    s.setIngredient('A', Material.DIAMOND);
    s.setIngredient('B', Material.DIAMOND_AXE);
    Bukkit.getServer().addRecipe(s);
     
  2. Studenikin

    Studenikin Старожил Пользователь

    Баллы:
    123
    Skype:
    vanya.studenikin
    Имя в Minecraft:
    stuvanya
    Кастишь мету к Damageable (не забыв проверить, что кастится)
    https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/meta/Damageable.html#setDamage-int-
     
  3. Автор темы
    xXCopafumeXx

    xXCopafumeXx Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    xXCopafumeXx
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
        public ItemBuilder setDamage(int damage) {
            ItemMeta meta = stack.getItemMeta();
            if(meta instanceof Damageable) {
                ((Damageable) meta).setDamage(damage);
            }
            this.stack.setItemMeta(meta);
            return this;
        }
    Код:
    public class ItemBuilder {
        ItemStack stack;
        public ItemBuilder(Material m) {
            this.stack = new ItemStack(m);
        }
        public ItemBuilder setName(String name) {
            ItemMeta meta = stack.getItemMeta();
            meta.setDisplayName(name);
            this.stack.setItemMeta(meta);
            return this;
        }
       
        public ItemBuilder setRepaircost(int damage) {
            ItemMeta meta = stack.getItemMeta();
            if(meta instanceof Repairable) {
                ((Repairable) meta).setRepairCost(damage);
            }
            this.stack.setItemMeta(meta);
            return this;
        }
       
        public ItemBuilder setDamage(int damage) {
            ItemMeta meta = stack.getItemMeta();
            if(meta instanceof Damageable) {
                ((Damageable) meta).setDamage(damage);
            }
            this.stack.setItemMeta(meta);
            return this;
        }
        public ItemBuilder setAmount(int amount) {
            this.stack.setAmount(amount);
            return this;
        }
        public ItemBuilder setLore(String... name) {
            ItemMeta meta = stack.getItemMeta();
            meta.setLore(Arrays.asList(name));
            this.stack.setItemMeta(meta);
            return this;
        }
        public ItemBuilder addEnchantment(String... name) {
            ItemMeta meta = stack.getItemMeta();
            for (String e : name) {
                EnchantmentWrapper ench = new EnchantmentWrapper(e.split(":")[0]);
                meta.addEnchant(ench, Integer.parseInt(e.split(":")[1]), true);
            }
            this.stack.setItemMeta(meta);
            return this;
        }
        public ItemBuilder setUnbreakable() {
            ItemMeta meta = stack.getItemMeta();
            meta.setUnbreakable(true);
            this.stack.setItemMeta(meta);
            return this;
        }
       
        public ItemBuilder setCustomModelData(int data) {
            ItemMeta meta = stack.getItemMeta();
            meta.setCustomModelData(data);
            this.stack.setItemMeta(meta);
            return this;
        }
        public ItemStack build() {
            return this.stack;
        }
    }
    
     
    Последнее редактирование: 16 ноя 2019
  5. Автор темы
    xXCopafumeXx

    xXCopafumeXx Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    xXCopafumeXx
    Спасибо
     
  6. Автор темы
    xXCopafumeXx

    xXCopafumeXx Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    xXCopafumeXx
    У меня неработает, как его именно в мой код вставить ?
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ну можешь мой итем билдер целиком забрать из спойлера.
     
  8. Автор темы
    xXCopafumeXx

    xXCopafumeXx Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    xXCopafumeXx
    Нет, смотри можешь его сойденить с моим кодом на крафт, ну и показать как это будет у меня просто там ошибки
     
  9. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    ItemStack item = new ItemBuilder(Material.STONE).setName(ChatColor.RED + "Боевой топор").setLore("Боевой топор").setDamage(100).build();
     

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