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

Lisenochek

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

BungeeCord не предлагайте
 
У меня такая проблема. Мне надо, чтобы плагин в некоторых мирах работал, а в определенных нет. Проще говоря - whitelist миров. Можете мне помочь?

BungeeCord не предлагайте
Ты это в своём плагине хочешь сделать?Если да то получай мир таким образом event.getPlayer().getWorld()
 
Ну в событиях проверяй мир в котором он вызывался. В чем проблема то?
 
Да и как указать, чтобы он работал в определенном мире. Раньше я такого не делал.
 
А что за плагин то?
 
Добавляет частичную реалистичность.
Мне надо, чтобы плагин работал только в определенном одном мире.
А что именно он добавляет? Падающие блоки? Инопланетян? Болезни? Российские дороги?
 
За болезни спасибо.

Улучшенный режим приключения. Переломы и всякая хрень.
Ну вот на каждые "переломы и хрень" в эвентах перед началом выполнения действия проверяем мир. Где ниб храним лист с названиями миров, в которых мы работаем. Если мира, в котором игрок вызвал событие, в нашем листе нет - return;
 
Такс. Еще разок. В начале мы объявляем ArrayList с мирами (worlds) и в каждом ивенте в самом начале пишется условие проверки? Так я понял?
 
Такс. Еще разок. В начале мы объявляем ArrayList с мирами (worlds) и в каждом ивенте в самом начале пишется условие проверки? Так я понял?
Что то вроде. Жевательно заполнять лист из конфига, чтобы потом не компилировать заново плагин ради изменения одной строчки.
 
Что то вроде. Жевательно заполнять лист из конфига, чтобы потом не компилировать заново плагин ради изменения одной строчки.
Конфиги я писать так и не научился... Смотрел много гайдов, но так и не понял
JavaScript:
    @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 перед событиями
 
Конфиги я писать так и не научился... Смотрел много гайдов, но так и не понял
Как будто что то сложное. В IDE создаёшь yaml файл (надеюсь, ты не в Eclipse?) и пишешь
YAML:
worlds:
    - world
   - world_nether
или другие названия миров, в зависимости от твоей настройки сервера. Дальше просто в onEnable() вызываешь this.saveDefaultConfig() и заполняешь лист. Должно в итоге получиться что то вроже этого:
Java:
ArrayList<String> worlds = new ArrayList<>();
public void onEnable() {
    this.saveDefaultConfig();
    this.worlds.addAll(this.getConfig().getStringList("worlds"));
    //....
Java:
    @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 перед событиями
Не. Проверять мир что то вроде этого:
Java:
    @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();
.........
 
JavaScript:
ArrayList<String> worlds = new ArrayList<String>();

Вот сам ArrayList
Проблема в том, что я в eclipse. Я привык к этой среде, а в IDE я не сидел никогда.
JavaScript:
        if(!this.plugin.worlds.contains(e.getPlayer().getWorld().getName())) {
            return;
        }

У меня евенты не в главном классе
 
JavaScript:
ArrayList<String> worlds = new ArrayList<String>();

Вот сам ArrayList
Проблема в том, что я в eclipse. Я привык к этой среде, а в IDE я не сидел никогда.
Eclipse is IDE.
ba-dum-tsss.jpg
У меня евенты не в главном классе
Передавать ссылку на мэйнкласс в класс слушателей - ?
 
Назад
Верх