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

Помогите Как поменять макс. прочность предмета?

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

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

    Obelix Активный участник

    Баллы:
    61
    Были две попытки поменять максимальную прочность. 1). Поменять прочность в исходном коде ядра (использую Spigot 1.12.2) в enumeration в Material как напрямую, так и с добавлением сетера для переменной durability. Не помогло. 2). Так и попытка отдельно менять прочность с помощью плагина и встроенного сетера в ItemStack, например, вот код для лука:
    Код:
    @EventHandler
        public void onPlayerShootBow(EntityShootBowEvent e) {
            if (e.getEntity() instanceof Player) {
                Player p = (Player) e.getEntity();
                breakItem(p, p.getItemInHand(), (short)3 );
            }
        }
    private void breakItem(Player p, ItemStack i, short durability) {
            if (i.getDurability() > durability) {
                i.setDurability(durability);
                p.setItemInHand(i);
            }
        }
    И это тоже не работает. Помогите, пожалуйста
    Или может я что то не так сделал?
     
  2. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Максимальная прочность изменяется в клиенте и на сервере.
    Но ты можешь имитировать это плагином, устанавливая % прочность твоего предмета от максимальной и записывая свою прочность в лор или в nbt тег предмета. То есть допустим прочность лука 385, а тебе нужно имитировать 1000. Когда у тебя должна быть прочность 500/1000, ты ставишь 385 * (500 / 1000) = 182. В итоге визуально будет видно 50% прочности.
     
  3. Автор темы
    Obelix

    Obelix Активный участник

    Баллы:
    61
    Хорошо, допустим, буду использовать % и хранить текущую прочность в лоре. Но как её установить? Вот я изменил метод, чтобы узнать работает ли он вообще. (Моя идея заключалась в том, чтобы ломать предмет до того значения, сколько мне нужно от него прочности, в данном случае я хочу, чтобы лук стрелял только 3 раза). В итоге после выстрела в чате пишется "3", но сам лук имеет обычную прочность. Если в сообщении вместо i написать p.getItemInHand() результат будет аналогичный.
    Код:
    private void breakItem(Player p, ItemStack i, short durability) {
            if (i.getDurability() > durability) {
                i.setDurability(durability);
                p.setItemInHand(i);
                p.sendMessage(String.valueOf(i.getDurability()));
            }
        }
     

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