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

Использование API другого плагина

Тема в разделе "Разработка плагинов для новичков", создана пользователем kirr9999, 28 сен 2014.

Статус темы:
Закрыта.
  1. Автор темы
    kirr9999

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

    Баллы:
    103
    Всем привет. Решил написать небольшой плагин, использующий API плагина iDisguise. Вот код :
    Код:
    package description.disguiseadd;
    
    import org.bukkit.ChatColor;
    import org.bukkit.entity.LivingEntity;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Projectile;
    import org.bukkit.entity.ThrownPotion;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.event.entity.PotionSplashEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import de.robingrether.idisguise.api.DisguiseAPI;
    
    public class DisguiseExPlugin extends JavaPlugin implements Listener {
        private DisguiseAPI api;
       
        public void onEnable() {
            api = getServer().getServicesManager().getRegistration(DisguiseAPI.class).getProvider();
            getServer().getPluginManager().registerEvents(this, this);
        }
       
        @EventHandler(priority = EventPriority.NORMAL)
        public void onEntityDamage(EntityDamageEvent e) {
            if(e.isCancelled()) return;
            if (e.getEntity() instanceof Player){
                if (e instanceof EntityDamageByEntityEvent) {
                    Player damager = null;
                    boolean cancel = false;
                    EntityDamageByEntityEvent edbye = (EntityDamageByEntityEvent) e;
                    if (edbye.getDamager() instanceof Projectile){
                        Projectile projectile = (Projectile) edbye.getDamager();
                        if (projectile.getShooter() instanceof Player) {
                            damager = (Player) projectile.getShooter();
                            cancel = true;
                        }
                    } else if (edbye.getDamager() instanceof Player) {
                        damager = (Player) edbye.getDamager();
                        cancel = true;
                    }
                    if (cancel && api.isDisguised(damager) && !damager.hasPermission("disguiseex.ignore")) {
                        damager.sendMessage(ChatColor.RED+"Вы не можете бить игрока будучи замаскированным!");
                        e.setCancelled(true);
                    }
                }
            }
        }
       
        @EventHandler(priority = EventPriority.NORMAL)
        public void PotionHit(PotionSplashEvent event) {
            if (event.isCancelled()) return;
            ThrownPotion potion = event.getPotion();
            if (potion.getShooter() instanceof Player) {
                Player damager = (Player) potion.getShooter();
                for(LivingEntity entity : event.getAffectedEntities()) {
                    if (entity instanceof Player) {
                        if (!((Player) entity).equals(damager)) {
                            if (api.isDisguised(damager) && !damager.hasPermission("disguiseex.ignore")) {
                                damager.sendMessage(ChatColor.RED+"Вы не можете наносить урон игроку будучи замаскированным!");
                                event.setCancelled(true);
                            }
                        }
                    }
                }
            }
        }
       
        @EventHandler(priority = EventPriority.NORMAL)
        public void onBlockPlace (BlockPlaceEvent e) {
            if (e.isCancelled()) return;
            Player player = e.getPlayer();
            if (api.isDisguised(player) && !player.hasPermission("disguiseex.ignore")) {
                player.sendMessage(ChatColor.RED+"Вы не можете строить будучи замаскированным!");
                e.setCancelled(true);
            }
        }
       
        @EventHandler(priority = EventPriority.NORMAL)
        public void onBlockBreak (BlockBreakEvent e) {
            if (e.isCancelled()) return;
            Player player = e.getPlayer();
            if (api.isDisguised(player) && !player.hasPermission("disguiseex.ignore")) {
                player.sendMessage(ChatColor.RED+"Вы не можете ломать блоки будучи замаскированным!");
                e.setCancelled(true);
            }
        }
       
    
    }
    При запуске этого плагина выводит такую вот ошибку:
    Код:
    2014-09-26 17:05:49 [SEVERE] Error occurred while enabling DisguiseExtention v1.0 (Is it up to date?)
    java.lang.NullPointerException
        at description.disguiseadd.DisguiseExPlugin.onEnable(DisguiseExPlugin.java:24)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:467)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:383)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugin(CraftServer.java:279)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.enablePlugins(CraftServer.java:261)
        at net.minecraft.server.MinecraftServer.func_71243_i(MinecraftServer.java:522)
        at net.minecraft.server.MinecraftServer.func_71222_d(MinecraftServer.java:486)
        at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:429)
        at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:225)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:637)
        at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:583)
    Подскажите, пожалуйста, что я делаю не так?
     
  2. Хостинг MineCraft
    <
  3. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    В depend есть нужный плагин?
     
  4. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    В plugin.yml нужно в softdepend прописывать названия всех тебе нужных плагнов, чтобы твой включался только после их готовности.
     
  5. Автор темы
    kirr9999

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

    Баллы:
    103
    Огромное спасибо)
     
Статус темы:
Закрыта.

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