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

Помогите Отключение работы плагина в некоторых мирах

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    У меня такая проблема. Мне надо, чтобы плагин в некоторых мирах работал, а в определенных нет. Проще говоря - whitelist миров. Можете мне помочь?

    BungeeCord не предлагайте
     
  2. Хостинг MineCraft
    <
  3. Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Ты это в своём плагине хочешь сделать?Если да то получай мир таким образом event.getPlayer().getWorld()
     
  4. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    ДА , на своем, название мира тоже надо указывать?
     
  5. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ну в событиях проверяй мир в котором он вызывался. В чем проблема то?
     
  6. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Да и как указать, чтобы он работал в определенном мире. Раньше я такого не делал.
     
  7. Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    event.getPlayer().getWorld().getName().equals("название мира")
     
  8. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    А какой ивент юзать? Искал я тут https://jd.bukkit.org/ и нашел WorldInitEvent . Он нужен?
     
  9. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    А что за плагин то?
     
  10. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Добавляет частичную реалистичность.
    Мне надо, чтобы плагин работал только в определенном одном мире.
     
  11. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    А что именно он добавляет? Падающие блоки? Инопланетян? Болезни? Российские дороги?
     
  12. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    За болезни спасибо.

    Улучшенный режим приключения. Переломы и всякая хрень.
     
  13. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ну вот на каждые "переломы и хрень" в эвентах перед началом выполнения действия проверяем мир. Где ниб храним лист с названиями миров, в которых мы работаем. Если мира, в котором игрок вызвал событие, в нашем листе нет - return;
     
  14. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Такс. Еще разок. В начале мы объявляем ArrayList с мирами (worlds) и в каждом ивенте в самом начале пишется условие проверки? Так я понял?
     
  15. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Что то вроде. Жевательно заполнять лист из конфига, чтобы потом не компилировать заново плагин ради изменения одной строчки.
     
  16. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Конфиги я писать так и не научился... Смотрел много гайдов, но так и не понял[DOUBLEPOST=1466930062,1466929775][/DOUBLEPOST]
    Код:
        @EventHandler
        public void onBlockBreak(BlockBreakEvent e) {
           
            if(e.getPlayer().getWorld().getName().equals("Test_World")) {
                return;
            }
           
            HashMap b = com.realistic.list.list.blocks;
            HashMap t = com.realistic.list.list.tools;
            Player p = e.getPlayer();
            Material itemInHand = p.getItemInHand().getType();
            Material blockDestroy = e.getBlock().getType();
    .........
    Вот так? Я записал это в самом начале. ArrayList перед событиями
     
  17. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Как будто что то сложное. В IDE создаёшь yaml файл (надеюсь, ты не в Eclipse?) и пишешь
    Код:
    worlds:
        - world
       - world_nether
    или другие названия миров, в зависимости от твоей настройки сервера. Дальше просто в onEnable() вызываешь this.saveDefaultConfig() и заполняешь лист. Должно в итоге получиться что то вроже этого:
    Код:
    ArrayList<String> worlds = new ArrayList<>();
    public void onEnable() {
        this.saveDefaultConfig();
        this.worlds.addAll(this.getConfig().getStringList("worlds"));
        //....
    Не. Проверять мир что то вроде этого:
    Код:
        @EventHandler
        public void onBlockBreak(BlockBreakEvent e) {
       
            if(!this.plugin.worlds.contains(e.getPlayer().getWorld().getName())) {
                return;
            }
       
            HashMap b = com.realistic.list.list.blocks;
            HashMap t = com.realistic.list.list.tools;
            Player p = e.getPlayer();
            Material itemInHand = p.getItemInHand().getType();
            Material blockDestroy = e.getBlock().getType();
    .........
     
  18. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Код:
    ArrayList<String> worlds = new ArrayList<String>();
    Вот сам ArrayList[DOUBLEPOST=1466930431,1466930387][/DOUBLEPOST]Проблема в том, что я в eclipse. Я привык к этой среде, а в IDE я не сидел никогда.[DOUBLEPOST=1466930494][/DOUBLEPOST]
    Код:
            if(!this.plugin.worlds.contains(e.getPlayer().getWorld().getName())) {
                return;
            }
    У меня евенты не в главном классе
     
  19. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Eclipse is IDE.
    ba-dum-tsss.jpg[DOUBLEPOST=1466930547][/DOUBLEPOST]
    Передавать ссылку на мэйнкласс в класс слушателей - ?
     
  20. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Щас вот пытался, никак не могу.
     
  21. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Listeners listener = new Listeners(this);
     

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