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

Помогите Проверка на разницу в уровнях

Статус
Закрыто для дальнейших ответов.

oleg57zls

Старожил
Пользователь
Баллы
173
Имя в Minecraft
Blayzer
Здравствуйте, возникла потребность сделать проверку по уровням. То есть:
Если разница в уровнях больше чем задано в конфиге отменять возможность пвп с игроками.
Например, если один игрок имеет 5 уровень, а второй имеет 15 уровень, а разница в конфиге - 5, то они не смогут участвовать в пвп.
Как реализовать подобное?
 
В ивенте получения урона сравнивай уровни обоих игроков и отменяй его.
boolean cancel = Math.abs(p1Lvl - p2Lvl) > cfgLvl;
 
В ивенте получения урона сравнивай уровни обоих игроков и отменяй его.
boolean cancel = Math.abs(p1Lvl - p2Lvl) > cfgLvl;
У меня вот такой говнокод. Можете привести это в нормальный вид, с вашим методом?

Код:
    @EventHandler (priority = EventPriority.MONITOR)
    public void onEntityDamage(EntityDamageByEntityEvent e) {
        Player player = (Player) e.getEntity();
        Player playerdmg = (Player) e.getDamager();
       
        int difflvl = player.getLevel() - playerdmg.getLevel();
        int difflvldmg = playerdmg.getLevel() - player.getLevel();
       
        if (player instanceof Player && playerdmg instanceof Player) {
            if (plugin.getConfig().getBoolean("pvp.funcdiffpvplvl") != false) {
                if(difflvl <= plugin.getConfig().getInt("pvp.diffpvplvl") && difflvldmg <= plugin.getConfig().getInt("pvp.diffpvplvl")) {
                  e.setCancelled(true);
                if (plugin.getConfig().getBoolean("messages.msgreqlvl") != false) {
                        player.sendMessage(ChatColor.GREEN + plugin.getConfig().getString("messages.prefix") + ChatColor.WHITE + plugin.getConfig().getString("messages.reqlvldmg"));
                        playerdmg.sendMessage(ChatColor.GREEN + plugin.getConfig().getString("messages.prefix") + ChatColor.WHITE + plugin.getConfig().getString("messages.reqlvldmg"));
                }
                }
            }
    }
    }
 
Код:
@EventHandler
public void onEntityDamage(EntityDamageByEntityEvent e){
    if(e.getEntity() instanceof Player && e.getDamager() instanceof Player){
        Player attacked = (Player)e.getEntity();
        Player attacker = (Player)e.getDamager();
        int lvl = Math.abs(attacker.getLevel() - attacked.getLevel());
        if(lvl > plugin.getConfig().getInt("pvp.diffpvplvl")){
            e.setCancelled(true);
        }
    }
}
 
Код:
@EventHandler
public void onEntityDamage(EntityDamageByEntityEvent e){
    if(e.getEntity() instanceof Player && e.getDamager() instanceof Player){
        Player attacked = (Player)e.getEntity();
        Player attacker = (Player)e.getDamager();
        int lvl = Math.abs(attacker.getLevel() - attacked.getLevel());
        if(lvl > plugin.getConfig().getInt("pvp.diffpvplvl")){
            e.setCancelled(true);
        }
    }
}
Спасибо!
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх