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

Помогите Взаимодействие плагинов между собой

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

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

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Как зарегистрировать метод, что-бы его можно было вызвать из другого плагина?
    Код:
    Bukkit.getPluginManager().getPlugin(plugin).myMethod();
     
  2. Хостинг MineCraft
    <
  3. akke

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

    Баллы:
    103
    Если я не ошибаюсь, то просто в главном классе плагина лепишь public метод, а в другом плагине пишешь нечто подобное


    Код:
    import ru.myCoolPlugin.CoolPlugin;
     
    <...>
     
    try {
     
    CoolPlugin cpl = ( CoolPlugin ) Bukkit.getPluginManager().getPlugin("CoolPlugin");
     
    } catch (Exception e) {
     
    //твой плагин не найден
     
    }
     
    cpl.anyMethod();
     
    Сникерсни нравится это.
  4. Автор темы
    Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Именно так уже пробовал.. (
    Так-же пытался рыться в WG - но так ничего и не нашел.. Слишком много кода там..)
     
  5. Автор темы
    Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Решил самостоятельно.
    Код:
        private ChatShop getChatShop() {
            Plugin ch = Bukkit.getPluginManager().getPlugin("ChatShop");
            if (ch == null || !(ch instanceof ChatShop)) {
                return null;
            }
            return (ChatShop) ch;
        }
        getChatShop().myMethod();
     
    ВремяПриключений нравится это.
  6. TEEN

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

    Баллы:
    88
    Skype:
    teen_true
    Имя в Minecraft:
    TEEN
    Подскажите где почитать или покажите пример кода взаимодействия плагинов.
    Задача: взаимодействовать с плагинов iConomy, и в будущем сделать связку своих плагинов, которые бы могли работать автономно.

    Например плагин определяет какой-либо тип/статус игроку, и нужно получить этот статус другим своим плагином. Общую таблицу в бд не предлагать, т.к. неудобно и ресурсоемко.
     
  7. TEEN

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

    Баллы:
    88
    Skype:
    teen_true
    Имя в Minecraft:
    TEEN
    Модераторам огромное спасибо. Заметил соседний пост только после размещения своего. И все вопросы отпали :)
     
  8. ensirius

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

    Баллы:
    123
    Пример WorldEdit:
    Код:
        public static WorldEditPlugin getWorldEdit() {
            Plugin worldEdit = Bukkit.getServer().getPluginManager()
                    .getPlugin("WorldEdit");
     
            if (worldEdit == null) {
                log.info("[" + pdfFile.getName()
                        + "] WorldEdit does not appear to be installed.");
            }
     
            if ((worldEdit instanceof WorldEditPlugin)) {
                return (WorldEditPlugin) worldEdit;
            }
     
            log.info("[" + pdfFile.getName()
                    + "] WorldEdit detection failed.");
            return null;
        }
    Код:
     WorldEditPlugin worldEdit = enGuard.getWorldEdit();
    Пример на enMoney (нашей системе денег):
    Код:
        public static enMoney getMoney() {
            Plugin money = Bukkit.getServer().getPluginManager()
                    .getPlugin("enMoney");
     
            if (money == null) {
                log.info("[" + pdfFile.getName()
                        + "] enMoney does not appear to be installed.");
            }
     
            if ((money instanceof enMoney)) {
                return (enMoney) money;
            }
     
            log.info("[" + pdfFile.getName()
                    + "] enMoney detection failed.");
            return null;
        }    
    Код:
    enMoney money = enGuard.getMoney();
     
  9. CrazyJared

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

    Баллы:
    68
    Не знаю куда обратиться с этим вопросом поэтому пишу сюда.
    Такой вопрос : как сделать чтобы действие выполнялось не сразу, а например через 2 сек. в этом коде:
    Код:
        @EventHandler
        public void PlayerInteract(PlayerInteractEvent e)
        {
            Player player = e.getPlayer();
            if((e.getAction() == Action.RIGHT_CLICK_BLOCK) || (e.getAction() == Action.RIGHT_CLICK_AIR))
            {
                if(player.getItemInHand().getType().equals(Material.BOOK))
                {
                    //Действия
                }
            }
        }
     
  10. CrazyJared

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

    Баллы:
    68
    Под действием скрывается это:
    Код:
    player.getInventory().setItemInHand(new ItemStack(0));
    Я так уже пробовал и тут я не могу понять, как достать игрока.
     
  11. CrazyJared

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

    Баллы:
    68
    Причем тут public void removeItem? если надо чтоб задержка была в:
    Код:
        @EventHandler
        public void PlayerInteract(PlayerInteractEvent e)
        {
            Player player = e.getPlayer();
            if((e.getAction() == Action.RIGHT_CLICK_BLOCK) || (e.getAction() == Action.RIGHT_CLICK_AIR))
            {
                if(player.getItemInHand().getType().equals(Material.BOOK))
                {
                    if(player.getItemInHand().getTypeId() == 373 && player.getItemInHand().getDurability() == 0)
                    {
                        // вот это действие нужно задержать на 2 сек - player.getInventory().setItemInHand(new ItemStack(0));                          
                    }
              }
          }
        }
     
    Stalkerdeni971 нравится это.
  12. CrazyJared

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

    Баллы:
    68
    Спс, вопрос исчерпан)
    Но возник другой, как проверить, если player что либо выпил или если player cъел что либо? Какое событие в этом задействовано?
    Это конечно можно обойти, но ресурсоемко.
     
  13. Автор темы
    Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    PlayerInteract / или погляди jd.bukkit.org... Мб есть событие другое.
     

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