Помогите OnPlayerDeath эвент ошибка

N-Games

Новичок
Баллы
16
Вот код:
Код:
public void onPlayerDeath(PlayerDeathEvent e)
{
    Player player = e.getEntity().getPlayer();
    Player kill = e.getEntity().getKiller();
    String killer = kill.getPlayer().getName();
    String pl = player.getName();
   
    File cy = new File(Main.jp.getDataFolder(),"p_"+pl+".yml");
    FileConfiguration cc = YamlConfiguration.loadConfiguration(cy);
    File kl = new File(Main.jp.getDataFolder(),"p_"+killer+".yml");
    FileConfiguration kk = YamlConfiguration.loadConfiguration(kl);
    int exp = cc.getInt("Exp");
    int exp2 = kk.getInt("Exp");
    long rand = Math.round((Math.random() * 101) + 50);
    if (exp > 101) {cc.set("Exp", exp - rand); player.sendMessage("§cВы умерли и у вас забрали " + rand + "очков влияния.");}
    kk.set("Exp", exp2 + rand);
    kill.sendMessage("§bВы убили игрока " + player.getName() + ", и получили за это " + rand + "очков влияния.");
    Save.saveCY(cc, cy);
    Save.saveCY(kk, kl);
}
Когда умираю нечего не происходит. Вообще. Даже если поменять pl на ник игрока нечего не забирает.
 
Вот код:
Код:
public void onPlayerDeath(PlayerDeathEvent e)
{
    Player player = e.getEntity().getPlayer();
    Player kill = e.getEntity().getKiller();
    String killer = kill.getPlayer().getName();
    String pl = player.getName();
  
    File cy = new File(Main.jp.getDataFolder(),"p_"+pl+".yml");
    FileConfiguration cc = YamlConfiguration.loadConfiguration(cy);
    File kl = new File(Main.jp.getDataFolder(),"p_"+killer+".yml");
    FileConfiguration kk = YamlConfiguration.loadConfiguration(kl);
    int exp = cc.getInt("Exp");
    int exp2 = kk.getInt("Exp");
    long rand = Math.round((Math.random() * 101) + 50);
    if (exp > 101) {cc.set("Exp", exp - rand); player.sendMessage("§cВы умерли и у вас забрали " + rand + "очков влияния.");}
    kk.set("Exp", exp2 + rand);
    kill.sendMessage("§bВы убили игрока " + player.getName() + ", и получили за это " + rand + "очков влияния.");
    Save.saveCY(cc, cy);
    Save.saveCY(kk, kl);
}
Когда умираю нечего не происходит. Вообще. Даже если поменять pl на ник игрока нечего не забирает.
Аннотацию @EventHandler поставил?
Слушатель зарегистрировал?
 
Никогда не работай с файлами в синхронных слушателях эвентов.
Не стоит работать с YamlConfiguration в синхронных слушателях эвентов.
Java:
// Отсутствует аннотация @EventHandler
public void onPlayerDeath(PlayerDeathEvent e) {
    Player player = e.getEntity().getPlayer();
    Player kill = e.getEntity().getKiller(); // Возможный null
    String killer = kill.getPlayer().getName(); // Возможный NullPointerException
    String pl = player.getName();

    File cy = new File(Main.jp.getDataFolder(),"p_"+pl+".yml");
    FileConfiguration cc = YamlConfiguration.loadConfiguration(cy); // Возможный IOException, в итоге пустой файл = нет записей.
    File kl = new File(Main.jp.getDataFolder(),"p_"+killer+".yml");
    FileConfiguration kk = YamlConfiguration.loadConfiguration(kl); // Возможный IOException, в итоге пустой файл = нет записей.
    int exp = cc.getInt("Exp");
    int exp2 = kk.getInt("Exp");
    long rand = Math.round((Math.random() * 101) + 50); // Вместо Math.random() можно использовать Random#nextInt()
    if (exp > 101) {
        cc.set("Exp", exp - rand);
        player.sendMessage("§cВы умерли и у вас забрали " + rand + "очков влияния.");
    }
    kk.set("Exp", exp2 + rand);
    kill.sendMessage("§bВы убили игрока " + player.getName() + ", и получили за это " + rand + "очков влияния.");
    Save.saveCY(cc, cy); // Возможный IOException, из-за чего теряются твои записи.
    Save.saveCY(kk, kl); // Возможный IOException, из-за чего теряются твои записи.
}
 
Никогда не работай с файлами в синхронных слушателях эвентов.
Не стоит работать с YamlConfiguration в синхронных слушателях эвентов.
Java:
// Отсутствует аннотация @EventHandler
public void onPlayerDeath(PlayerDeathEvent e) {
    Player player = e.getEntity().getPlayer();
    Player kill = e.getEntity().getKiller(); // Возможный null
    String killer = kill.getPlayer().getName(); // Возможный NullPointerException
    String pl = player.getName();

    File cy = new File(Main.jp.getDataFolder(),"p_"+pl+".yml");
    FileConfiguration cc = YamlConfiguration.loadConfiguration(cy); // Возможный IOException, в итоге пустой файл = нет записей.
    File kl = new File(Main.jp.getDataFolder(),"p_"+killer+".yml");
    FileConfiguration kk = YamlConfiguration.loadConfiguration(kl); // Возможный IOException, в итоге пустой файл = нет записей.
    int exp = cc.getInt("Exp");
    int exp2 = kk.getInt("Exp");
    long rand = Math.round((Math.random() * 101) + 50); // Вместо Math.random() можно использовать Random#nextInt()
    if (exp > 101) {
        cc.set("Exp", exp - rand);
        player.sendMessage("§cВы умерли и у вас забрали " + rand + "очков влияния.");
    }
    kk.set("Exp", exp2 + rand);
    kill.sendMessage("§bВы убили игрока " + player.getName() + ", и получили за это " + rand + "очков влияния.");
    Save.saveCY(cc, cy); // Возможный IOException, из-за чего теряются твои записи.
    Save.saveCY(kk, kl); // Возможный IOException, из-за чего теряются твои записи.
}
Там была анотация, просто забыл сюда ее написать
 
Скорее всего ты все таки не зарегистрировал слушатель. А так попробуй продебажить метод твой.
 
Назад
Верх