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

Помогите Как сделать переменную глобальной?

Discussion in 'Разработка плагинов для новичков' started by fswr33, Aug 17, 2015.

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

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

    Trophy Points:
    21
    Нужно сделать переменную OnlineCount глобальной чтобы она читалась в счедулере. Добавить public к строке
    long onlineCount = Bukkit.getOnlinePlayers().length; не получается
    Code:
    public final class Main extends JavaPlugin implements Listener{
        public void onEnable()
        {
            getServer().getPluginManager().registerEvents(this, this);
            BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
          
            ScoreboardManager sbManager = Bukkit.getScoreboardManager();
            final Scoreboard sBoard = sbManager.getNewScoreboard();
          
            long onlineCount = Bukkit.getOnlinePlayers().length;
          
            Team online = sBoard.registerNewTeam("online");
            online.setSuffix(onlineCount);
            online.addPlayer(Bukkit.getOfflinePlayer("Онлайн: "));
          
            Objective obj = sBoard.registerNewObjective("MineChest", "dummy");
            obj.setDisplaySlot(DisplaySlot.SIDEBAR);
            obj.setDisplayName(ChatColor.GRAY + "" + ChatColor.BOLD + "Mine" + ChatColor.GOLD + ChatColor.BOLD + "Chest");
          
            Score score = obj.getScore(Bukkit.getOfflinePlayer("Онлайн: "));
            score.setScore(1);
          
            scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
                @Override
                public void run() {
                    long onlineCount = Bukkit.getOnlinePlayers().length;
                    for (Player player : Bukkit.getOnlinePlayers()){
                        player.setScoreboard(sBoard);
                    }
                }
            }, 0L, 100L);
        }
    }
    
     
  2. Хостинг MineCraft
    <
  3. Plasticable

    Plasticable Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    final добавь
     
  4. Автор темы
    fswr33

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

    Trophy Points:
    21
    final тоже не помогает
     
  5. Plasticable

    Plasticable Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    Что за ошибку пишет?
     
  6. Автор темы
    fswr33

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

    Trophy Points:
    21
    Нет ошибок, просто в счедулере не видит переменную так же как и без final
     
  7. Plasticable

    Plasticable Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    С чего ты взял, что не видит?
     
  8. Автор темы
    fswr33

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

    Trophy Points:
    21
    The value of the local variable onlineCount is not used
     
  9. Plasticable

    Plasticable Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    Если не знаешь английский, хотя бы переводчиком пользуйся
     
  10. leonmark061

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

    Trophy Points:
    76
    Зачем вы в Runnable создаете еще одну переменную onlineCount? Добавьте той переменной, которая вне Runnable модификатор final и удалите ту, что в Runnable. Хотя можете и наоборот - удалить ту, что вне Runnable.
     
  11. Автор темы
    fswr33

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

    Trophy Points:
    21
    Я наверно запутал, я имел в виду переменная которая находится в счедулере не используется в
    online.setSuffix(onlineCount);[DOUBLEPOST=1439841482,1439841413][/DOUBLEPOST]
    Мне нужно обновлять переменную каждые 5 секунд
     
  12. leonmark061

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

    Trophy Points:
    76
    Боже. Так обновляйте ее в самом счедулере, вместе со скорбордом.
     
  13. Автор темы
    fswr33

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

    Trophy Points:
    21
    А что это тогда?
    Code:
                @Override
                public void run() {
                    long onlineCount = Bukkit.getOnlinePlayers().length;
                    for (Player player : Bukkit.getOnlinePlayers()){
                        player.setScoreboard(sBoard);
                    }
                }
            }, 0L, 100L);
    
     
  14. leonmark061

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

    Trophy Points:
    76
    Я бы назвал это "код, который ничего не делает".
     
  15. Автор темы
    fswr33

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

    Trophy Points:
    21
    А как тогда обновить переменную
     
  16. leonmark061

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

    Trophy Points:
    76
    1)
    Code:
    final Team online = sBoard.registerNewTeam("online");
    2)
    Code:
                @Override
                public void run() {
                    long onlineCount = Bukkit.getOnlinePlayers().length;
                    online.setSuffix(onlineCount);
                    for (Player player : Bukkit.getOnlinePlayers()){
                        player.setScoreboard(sBoard);
                    }
                }
    [DOUBLEPOST=1439842696,1439842157][/DOUBLEPOST]Кстати, постоянно применять к игроку одну и туже Scoreboard, для того, чтобы обновить ее, не обязательно(возможно, ошибаюсь).
     
  17. Автор темы
    fswr33

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

    Trophy Points:
    21
    Спасибо, работает[DOUBLEPOST=1439842956][/DOUBLEPOST]
    Ее надо создать для игрока, это или использовать PlayerJoinEvent или так
     
  18. craftist

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

    Trophy Points:
    76
    Имя в Minecraft:
    SavaSivkov
    Может:
    PHP:
    global $yourVar#Может так?
     
  19. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Trophy Points:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    [​IMG] со своим "похапэ".
     
  20. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    чет завоняло(
     
  21. MrTrojan

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

    Trophy Points:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Тут Java, а не пыхыпы :rolleyes:
     

Share This Page