Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите OnPlayerRespawn и OnWorldChange не работают.

oleg57zls

Старожил
Пользователь
Баллы
173
Имя в Minecraft
Blayzer
OnPlayerRespawn и OnWorldChange не работают на ядре KCauldron, на Bukkit все в порядке. Экстра сердца не хотят показыватся, я думаю что именно эти методы не работают. Кто нибудь сталкивался с таким?
Часть кода:
Код:
@EventHandler (priority = EventPriority.MONITOR)
public void onWorldChange(PlayerChangedWorldEvent e) {
    Player player = e.getPlayer();
    scaleHealth(player);
}

@EventHandler (priority = EventPriority.MONITOR)
public void onPlayerRespawn(PlayerRespawnEvent e) {
    Player player = e.getPlayer();
    scaleHealth(player);
}




@EventHandler (priority = EventPriority.MONITOR)
private void scaleHealth(Player player) {

    ArrayList<String> hpList = new ArrayList<>(plugin.getConfig().getStringList("hp"));
    if (!hpList.get(0).equals("none")) {
      for (String hp : hpList) {

        int levelCompare = Integer.parseInt(hp.split(" ")[0] )- 1;
        int hpAmount = Integer.parseInt(hp.split(" ")[1]);
        int lvl = player.getLevel();
        int maxHP;
        int getHpUp = hpAmount-20;

        if (lvl == levelCompare && lvl > 0) {
             maxHP = hpAmount;
             player.setMaxHealth(maxHP);

             // Пишем в чат, когда добавляются дополнительные сердца
             if (plugin.getConfig().getBoolean("messages.msghpup") != false) {
             player.sendMessage(ChatColor.GREEN + plugin.getConfig().getString("messages.prefix") + ChatColor.WHITE + plugin.getConfig().getString("messages.hpup") + getHpUp + "!");
             }
             return;
        }
        }

        // Пишем в чат, когда получаем максимальное количество сердец       
        if (player.getLevel() > 0) {

            if (plugin.getConfig().getBoolean("messages.msgmaxhp") != false) {
            player.sendMessage(ChatColor.GREEN + plugin.getConfig().getString("messages.prefix") + ChatColor.WHITE + plugin.getConfig().getString("messages.maxhp"));
            }
            }
    }
}
 
Игнорируются сами ивенты или именно метод setMaxHealth()?
Поискал и нашел какой то патч, сюдя по коментам он исправляет эту
проблему
// CraftBukkit start - Send scaled max health
+ if (this.myEntity instanceof EntityPlayerMP)
+ {
+ ((EntityPlayerMP) this.myEntity).getBukkitEntity().injectScaledMaxHealth(set, false);
+ }
+
+ // CraftBukkit end

 
Последнее редактирование:
Игнорируются сами ивенты или именно метод setMaxHealth()?
Поискал и нашел какой то патч, сюдя по коментам он исправляет эту
проблему
// CraftBukkit start - Send scaled max health
+ if (this.myEntity instanceof EntityPlayerMP)
+ {
+ ((EntityPlayerMP) this.myEntity).getBukkitEntity().injectScaledMaxHealth(set, false);
+ }
+
+ // CraftBukkit end

Я честно говоря не знаю точно, на Баккит все работает. На ККаулдрон нет. Сам код работает, но сердца не показываются визуально после смерти или смене мира. Если перезайти, то покажет.
Что это за код? Его в плагин встроить?
 
Я честно говоря не знаю точно, на Баккит все работает. На ККаулдрон нет. Сам код работает, но сердца не показываются визуально после смерти или смене мира. Если перезайти, то покажет.
Что это за код? Его в плагин встроить?
Как я понял это проблема в самом KCauldron и они ее зафиксили вроде, но как установить этот патч я без понятия.
 
Как я понял это проблема в самом KCauldron и они ее зафиксили вроде, но как установить этот патч я без понятия.
Ставил последнюю версию ядра, то-же не работало. Я создал на их багтрекере тему, мб ответят.
А так, думаю какие то костыли для реализации есть. Или просто использование этих методов другое, но документации я не нашел по данному ядру.
 

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

Назад
Верх