1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

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

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

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    Ребята, помогите мне пожалуйста! Вообщем, я столкнулся с такой проблемой, что мне нужно создать новый класс для анимации в ScoreBoard, но я хочу сделать её конфигурируемой, именно в одном конфиге, а не в разных. Как я могу использовать массивы в главном классе с конфига в других классах?
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    В конструктор нового класса передавай экземпляр своего плагина:
    public MyClass (MyPlugin plugin) {
    this.plugin = plugin;
    }
    И при надобности this.plugin.getConfig();
    Но в целом лучше не конфиг хранить, а уже распаршеные значения в нормальном виде - у удобнее, и работает быстрее
     
  3. Автор темы
    _Murlooo_

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    Благодарю, но можно немного поподробнее? Что означает "MyClass" и "MyPlugin" ?
     
  4. alexandrage

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

    Баллы:
    173
    Код:
    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);
        }
    }
     
  5. Nikolai_Faint

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

    Баллы:
    96
    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);
      }

    }
     
  6. alexandrage

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

    Баллы:
    173
    А вот так не делай. Это пример плохого кода.
     
  7. Nikolai_Faint

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

    Баллы:
    96
    Некоторые люди не умеют читать, но возможно стоит отправить скрин:
    upload_2019-7-6_14-0-23.png
     
  8. Автор темы
    _Murlooo_

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    Огромнейшее вам спасибо! Помогли.
     
  9. Автор темы
    _Murlooo_

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    К счастью или к сожалению, - не делал :3
     
  10. Автор темы
    _Murlooo_

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    Отличный форум!
     
  11. alexandrage

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

    Баллы:
    173
    Просто нужно было почитать пару десятков начальных уроков по java. Это почти в самом начале изучается.
     
  12. Автор темы
    _Murlooo_

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    хорошо, а как мне в "objective.setDisplayName" поместить массив, да и чтобы он не сразу весь помещался, а был цикл смены названия боарда на след. с массива, например, каждые 0.5 сек?
     
  13. Nikolai_Faint

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

    Баллы:
    96
    Bukkit Scheduler + forEach
     
  14. Автор темы
    _Murlooo_

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    Каво?
     
  15. Nikolai_Faint

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

    Баллы:
    96
    Bukkit.getScheduler().runTaskTimer(() -> myList.forEach(string -> objective.setDisplayName(string)), 20L, 20L);
     
  16. Автор темы
    _Murlooo_

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    спасыбо :3
     
  17. Автор темы
    _Murlooo_

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    но пример можно?))))))
     
  18. Nikolai_Faint

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

    Баллы:
    96
    Вместо myList подставляешь лист с конфигурации, что не понятного?
     
  19. Автор темы
    _Murlooo_

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    Непонятно куда это скопировать да и откуда мне с конфига лист брать, если оно считается как строка и берётся за путём ("Boards.animation")
     
  20. Автор темы
    _Murlooo_

    _Murlooo_ Новичок Пользователь

    Баллы:
    6
    Имя в Minecraft:
    _Murlooo_
    Ошибку выдаёт:
    "
    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)

    "
     

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