- Баллы
- 108
- Имя в Minecraft
- CraftCoderr
Это было предложено в первом сообщенииМега-идея - в методе setExp и т.д вызывать эвент. Правда, для этого чутка перелопатить классы придется, но ничего страшного![]()

Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Это было предложено в первом сообщенииМега-идея - в методе setExp и т.д вызывать эвент. Правда, для этого чутка перелопатить классы придется, но ничего страшного![]()

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);
}
}
Часть с проверкой изменения опыта мне очень не нравиться. Лучше так://Код писал в редакторе сообщения рубакита, извините если что-то не так
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());
}
}
Ну да, есть немного говнокодаЧасть с проверкой изменения опыта мне очень не нравиться. Лучше так:
Кстати, нашёл много ошибок с незакрытыми скобками.JavaScript: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()); } }
