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

Помогите Событие выдачи игроку опыта

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

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

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Это было предложено в первом сообщении :confused:
     
  2. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Код:
    public class ExpChangeEventTimer extends BukkitRunnable{
    
    //Код писал в редакторе сообщения рубакита, извините если что-то не так
    
         public HashMap<Player, Integer> exps = new HashMap<Player, Integer>();
    
         public void run(){
              for(Player p : Bukkit.getOnlinePlayers(){
                   if(exps.contains(p){
                        if(exps.get(p) != p.getExperience(){
                             Bukkit.getPluginManager().callEvent(new PlayerExpChangeEvent(p, p.getExperience());
                             exps.remove(p);
                        }else{
                             exps.remove(p);
                             exps.put(p, p.getExperience());
                        }
                   }else exps.put(p, p.getExperience());
              }
         }
    }
    
    public class MyPlugin extends JavaPlugin{
    
         public void onEnable(){
              new ExpChangeEventTimer().runTaskTimer(this, 20, 20);
         }
         
    }
    
     
  3. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Часть с проверкой изменения опыта мне очень не нравиться. Лучше так:
    Код:
    public void run() {
       for (Player p: Bukkit.getOnlinePlayers() {
         if (exps.contains(p)) {
           if (exps.get(p) != p.getExperience()) Bukkit.getPluginManager().callEvent(new PlayerExpChangeEvent(p, p.getExperience()));
         }
         exps.put(p, p.getExperience());
       }
    }
    
    Кстати, нашёл много ошибок с незакрытыми скобками.
     
  4. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Ну да, есть немного говнокода :D
    Привык что в Средах разработки скобки ставятся автоматом
     

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