[РЕШЕНО] Использование конфига в разных классах плагина.

_Murlooo_

Новичок
Пользователь
Баллы
6
Имя в Minecraft
_Murlooo_
Ребята, помогите мне пожалуйста! Вообщем, я столкнулся с такой проблемой, что мне нужно создать новый класс для анимации в ScoreBoard, но я хочу сделать её конфигурируемой, именно в одном конфиге, а не в разных. Как я могу использовать массивы в главном классе с конфига в других классах?
 
В конструктор нового класса передавай экземпляр своего плагина:
public MyClass (MyPlugin plugin) {
this.plugin = plugin;
}
И при надобности this.plugin.getConfig();
Но в целом лучше не конфиг хранить, а уже распаршеные значения в нормальном виде - у удобнее, и работает быстрее
 
В конструктор нового класса передавай экземпляр своего плагина:
public MyClass (MyPlugin plugin) {
this.plugin = plugin;
}
И при надобности this.plugin.getConfig();
Но в целом лучше не конфиг хранить, а уже распаршеные значения в нормальном виде - у удобнее, и работает быстрее
Благодарю, но можно немного поподробнее? Что означает "MyClass" и "MyPlugin" ?
 
Благодарю, но можно немного поподробнее? Что означает "MyClass" и "MyPlugin" ?
Код:
public class EventListener implements Listener {
    private Plugin plugin;

    public EventListener(Plugin plugin) {
        this.plugin = plugin;
    }

    @EventHandler
    public void on(PlayerJoinEvent e) {
        e.setJoinMessage(this.plugin.getConfig().getString("joinMessage"));
    }
}

Код:
public class Main extends JavaPlugin {
    @Override
    public void onEnable() {
        this.getServer().getPluginManager().registerEvents(new EventListener(this), this);
    }
}
 
PHP:
public class Plugin extends JavaPlugin {

    private static Plugin plugin;

    @Override
    public void onEnable() {
      plugin = this;
      saveDefaultConfig(); // -> Создашь конфиг в ресурсах.
      Bukkit.getPluginManager().registerEvent(new PlayerListener(), this);
    }

   public static YamlConfiguration getConfiguration() {
       return plugin.getDefaultConfig();
   }

}
PHP:
public class MyScoreboard {

  public static Scoreboard createBoard() {
     //Создаешь борд.
   objective.setDisplayName(Plugin.getConfiguration().getString("board-name")); //Добавляешь ChatColor или же просто ставишь знак §.
  }

}
PHP:
public class PlayerListener implements Listener {

  private static Scoreboard scoreboard = MyScoreboard.createBoard();

 @EventHandler
  public static void onJoin(PlayerJoinEvent event) {
     event.getPlayer().setScoreboard(scoreboard);
  }

}
 
PHP:
public class Plugin extends JavaPlugin {

    private static Plugin plugin;

    @Override
    public void onEnable() {
      plugin = this;
      saveDefaultConfig(); // -> Создашь конфиг в ресурсах.
      Bukkit.getPluginManager().registerEvent(new PlayerListener(), this);
    }

   public static YamlConfiguration getConfiguration() {
       return plugin.getDefaultConfig();
   }

}
PHP:
public class MyScoreboard {

  public static Scoreboard createBoard() {
     //Создаешь борд.
   objective.setDisplayName(Plugin.getConfiguration().getString("board-name")); //Добавляешь ChatColor или же просто ставишь знак §.
  }

}
PHP:
public class PlayerListener implements Listener {

  private static Scoreboard scoreboard = MyScoreboard.createBoard();

 @EventHandler
  public static void onJoin(PlayerJoinEvent event) {
     event.getPlayer().setScoreboard(scoreboard);
  }

}
А вот так не делай. Это пример плохого кода.
 
Код:
public class EventListener implements Listener {
    private Plugin plugin;

    public EventListener(Plugin plugin) {
        this.plugin = plugin;
    }

    @EventHandler
    public void on(PlayerJoinEvent e) {
        e.setJoinMessage(this.plugin.getConfig().getString("joinMessage"));
    }
}

Код:
public class Main extends JavaPlugin {
    @Override
    public void onEnable() {
        this.getServer().getPluginManager().registerEvents(new EventListener(this), this);
    }
}
Огромнейшее вам спасибо! Помогли.
 
PHP:
public class Plugin extends JavaPlugin {

    private static Plugin plugin;

    @Override
    public void onEnable() {
      plugin = this;
      saveDefaultConfig(); // -> Создашь конфиг в ресурсах.
      Bukkit.getPluginManager().registerEvent(new PlayerListener(), this);
    }

   public static YamlConfiguration getConfiguration() {
       return plugin.getDefaultConfig();
   }

}
PHP:
public class MyScoreboard {

  public static Scoreboard createBoard() {
     //Создаешь борд.
   objective.setDisplayName(Plugin.getConfiguration().getString("board-name")); //Добавляешь ChatColor или же просто ставишь знак §.
  }

}
PHP:
public class PlayerListener implements Listener {

  private static Scoreboard scoreboard = MyScoreboard.createBoard();

 @EventHandler
  public static void onJoin(PlayerJoinEvent event) {
     event.getPlayer().setScoreboard(scoreboard);
  }

}
хорошо, а как мне в "objective.setDisplayName" поместить массив, да и чтобы он не сразу весь помещался, а был цикл смены названия боарда на след. с массива, например, каждые 0.5 сек?
 
хорошо, а как мне в "objective.setDisplayName" поместить массив, да и чтобы он не сразу весь помещался, а был цикл смены названия боарда на след. с массива, например, каждые 0.5 сек?
Bukkit Scheduler + forEach
 
Вместо myList подставляешь лист с конфигурации, что не понятного?
Непонятно куда это скопировать да и откуда мне с конфига лист брать, если оно считается как строка и берётся за путём ("Boards.animation")
 
Вместо myList подставляешь лист с конфигурации, что не понятного?
Ошибку выдаёт:
"
Multiple markers at this line
- The target type of this expression must be a functional interface
- The method runTaskTimer(Plugin, Runnable, long, long) in the type BukkitScheduler is not applicable for the arguments (() -> {},
long, long)

"
 
Назад
Верх