Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Не работает плагин

Тема в разделе "Разработка плагинов для новичков", создана пользователем kovand, 18 июн 2016.

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

    kovand Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    1kovand1
    Я накодил небольшой плагин, компилятор ошибок не выдает, но в игре нечего не работает.
    P.s этот плагин я кодил для себя, т.к NoFlyPvp Со своей главной обязаностью не справляется, говорят что это баг, и может быть, что этот баг в самом Bukkit-е?
    Код:
    package me.kovand.AntiFLYPVP;
    
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class AntiFLYPVP extends JavaPlugin implements Listener
    {
    
        boolean isEnabled;
        public void config()
        {
            FileConfiguration config = this.getConfig();
            if(!config.isBoolean("enable"))
                config.set("enable", true);
            this.saveConfig();
            isEnabled = config.getBoolean("enabled");
            if(isEnabled == false)
            {
                getServer().getPluginManager().disablePlugin(this);
                return;
            }
        }
        @Override
        public void onEnable()
        {
            config();
         
        }
     
        @EventHandler(priority = EventPriority.LOWEST)
        public void onEntityDamageByEntity(EntityDamageByEntityEvent e)
        {
         
            if(e.getDamager() instanceof Player && e instanceof Player)
            {
                Player pl = (Player)e;
                if(pl.isFlying() || pl.getGameMode() == (GameMode.CREATIVE))
                {
                pl.setFlying(false);
                pl.setGameMode(getServer().getDefaultGameMode());
                pl.sendMessage(ChatColor.RED+"Mayday! Mayday! Mayday! Нас подбили, мы падаем!");
                return;
                }
             
                Player pld = (Player)e.getDamager();
                if(pld.isFlying() || pld.getGameMode() == (GameMode.CREATIVE))
                    {
                    e.setCancelled(true);
                    pld.sendMessage(ChatColor.RED+"Вы не можете драться в полете или креативе");
                    pld.setFlying(false);
                    pld.setGameMode(getServer().getDefaultGameMode());
                    return;
                    }
             
             
            }
         
        }
    }
    
    [

    Код:
    name: AntiFLYPVP
    main: me.kovand.AntiFLYPVP.AntiFLYPVP
    version: 1.0
    
     
  2. Хостинг MineCraft
    <
  3. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    убери
    e.getEntity()
     
  4. Автор темы
    kovand

    kovand Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    1kovand1
    Всмысле вместо (Player)e?
     
  5. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Player pl = (Player)e.getEntity();
     
  6. Автор темы
    kovand

    kovand Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    1kovand1
    А e instanceof Player вообще убрать?[DOUBLEPOST=1466259687,1466259449][/DOUBLEPOST]А еще он имеет привычку дисаблиться вне зависимости от значения isEnabled
     
  7. Larin

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

    Баллы:
    103
    Ты хоть понимаешь, для чего нужен instanceof?
     
  8. Автор темы
    kovand

    kovand Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    1kovand1
    Понимаю
     
  9. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Ты не зарегестрировал евент.
    Код:
    package me.kovand.AntiFLYPVP;
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    public class AntiFLYPVP extends JavaPlugin implements Listener
    {
        boolean isEnabled;
        public void config()
        {
            this.saveDefaultConfig();
            FileConfiguration config = this.getConfig();
            if(!config.isBoolean("enable")){
                config.set("enable", true);
                this.saveConfig();
            }
            isEnabled = config.getBoolean("enabled");
            if(!isEnabled)
            {
                getServer().getPluginManager().disablePlugin(this);
                return;
            }
        }
        @Override
        public void onEnable()
        {
            config();
          Bukkit.getPluginManager().registerEvents(this, this);
    
        
        }
        @EventHandler(priority = EventPriority.LOWEST)
        public void onEntityDamageByEntity(EntityDamageByEntityEvent e)
        {
        
            if(e.getDamager().getType() == EntityType.PLAYER && e.getEntity().getType() == EntityType.PLAYER)
            {
                Player pl = (Player)e.getEntity();
                if(pl.isFlying() || pl.getGameMode() == (GameMode.CREATIVE))
                {
                pl.setFlying(false);
                pl.setGameMode(getServer().getDefaultGameMode());
                pl.sendMessage(ChatColor.RED+"Mayday! Mayday! Mayday! Нас подбили, мы падаем!");
                return;
                }
            
                Player pld = (Player)e.getDamager();
                if(pld.isFlying() || pld.getGameMode() == (GameMode.CREATIVE))
                    {
                    e.setCancelled(true);
                    pld.sendMessage(ChatColor.RED+"Вы не можете драться в полете или креативе");
                    pld.setFlying(false);
                    pld.setGameMode(getServer().getDefaultGameMode());
                    return;
                    }
            
            
            }
        
        }
    }
    
     
  10. Автор темы
    kovand

    kovand Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    1kovand1
    Бывает,невнимательный я сегодня[DOUBLEPOST=1466260351,1466260266][/DOUBLEPOST]А дисаблится почему?
     
  11. VamPerchick

    VamPerchick Активный участник Пользователь

    Баллы:
    76
    Потому что.:lol:
     
  12. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Не надежно, можно напичать хак, который будет прописывать команду на флай или гм, как только нам сменили режим.
     
  13. Автор темы
    kovand

    kovand Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    1kovand1
    И что ты предлагаешь?
    У меня две идеи:
    Первая: Сделать кик;
    Вторая:Запретить смену гм или включение флая на опред. время после их отключения
    Я все равно планировал отключение гм и флая делать опциональным, так что не смертельно
     

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