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

Помогите EnchantItemEvent либо не вызывается, либо я накосячил

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

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

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

    Баллы:
    96
    Задумка такова, когда игрок чарит предмет, у него тратится не 1, 2 или 3 уровня, а необходимый для зачара минус (1, 2 или 3) которые уже потрачены. В общем, как в более ранних версиях.
    Вот код:
    Код:
    package levelenchant;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.enchantment.EnchantItemEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin
    {
    
     @Override
      public void onLoad() {
      }
    
      @Override
      public void onDisable() {
      }
    
      @Override
      public void onEnable() {
      }
      @EventHandler(priority = EventPriority.MONITOR)
      public void Ench(EnchantItemEvent event){
        Bukkit.broadcastMessage("Enchanted");
        Player player = event.getEnchanter();
        int buffer = event.whichButton() + 1;
        if(event.getExpLevelCost() <= buffer) return;
    
        int expLoss = event.getExpLevelCost() - buffer;
        player.setLevel(player.getLevel() - expLoss);
    
      }
    
    }
    
     
  2. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Может проще воспользоваться методом setExpLevelCost в ивенте?
     
  3. Автор темы
    HauserGrim

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

    Баллы:
    96
    Забыл зарегать ивент, но теперь суть в другом, оно иногда криво чарит, а точнее снимает уровень, но предмет остаётся без чара.

    Устанавливает необходимый уровень для зачара, а не тот, который будет сниматься.
     
  4. Автор темы
    HauserGrim

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

    Баллы:
    96
    На сколько я понял, при клике снимает expLoss и у игрока уже нет необходимого уровня, в итоге вещь остаётся без чара, а игрок уровней ( из expLoss).

    В общем, теперь нужна помощь с этим.

    Тут есть тема типа нубятника, только для говнокодеров?

    UPD
    Теперь вот так:

    Код:
      @EventHandler(priority = EventPriority.MONITOR)
      public void Ench(EnchantItemEvent event){
        int buffer = event.whichButton() + 1;
        if(event.getExpLevelCost() <= buffer) return;
        int expLoss = event.getExpLevelCost() - buffer;
        event.getEnchanter().giveExpLevels(expLoss *= -1);
      }
     
    Последнее редактирование: 18 июл 2019
  5. TheSkiffSailor

    TheSkiffSailor Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    TheSkiffSailor
    Код:
    @EventHandler(priority = EventPriority.MONITOR)
      public void Ench(EnchantItemEvent event){
        int buffer = event.whichButton()++;
        if(event.getExpLevelCost() <= buffer) {
            return;
            e.setCancelled(true);
        }
        int expLoss = event.getExpLevelCost() - buffer;
        event.getEnchanter().giveExpLevels(expLoss *= -1);
      }
    Если я правильно понял что тебе надо..
     
  6. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Весь раздел, считай, для этого и существует.
    Упоролся штоле.
     
  7. Автор темы
    HauserGrim

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

    Баллы:
    96
    Даже если это имело какой-либо смысл, то это будет срабатывать только если у игрока 1 - 3 уровня
    :eek:
     
  8. Автор темы
    HauserGrim

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

    Баллы:
    96
    Плагин, в котором я подсматривал, заработал на 1.14, кое что подправил и юзаю.
    https://github.com/XDMAN500/OldEnchant

    Никак не научусь нормально плагины писать, везде столько готовых решений...
     
  9. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Ахахах, молодец дурачок, скопировал код с поста выше, добавил пару скобок и cancellable ahahahhaahahah
     
  10. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Почему же ты не хочешь прислушаться к моему совету не давать глупые ответы?
     
  11. TheSkiffSailor

    TheSkiffSailor Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    TheSkiffSailor
    Прислушаюсь, ты то фигни не скажешь
     

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