- Баллы
- 96
- Имя в Minecraft
- DonDays
это я и пофиксилif(updateThread == null || !updateThread.isAlive()) return;
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
это я и пофиксилif(updateThread == null || !updateThread.isAlive()) return;
Да не, ты прост говорил, не может вылезти) Вылезло.это я и пофиксил
видимо вызвалось еще до создания тредаДа не, ты прост говорил, не может вылезти) Вылезло.
Воу...спасибо.Работа с API
С API ProtocolBoard работать очень просто, на данный момент есть два враппера для работы: персональный борд, который удалится после выхода игрока-владельца борда, и обычный.
Начнем с создания обычного борда.
Здесь есть два варианта: создавать его билдером (предпочтительный вариант), и менее удобный - через класс Board. Ну что, начнем.
Создадим борд:Единственный параметр конструктора класса Board - его тайтл, иными словами DisplayName - его первая строчка. Но мы будем рассматривать создания скорборда через билдер. Итак, создаем борд с DisplayName и линиями:Код:Board board = new Board("§e§lМой Scoreboard");
Да, задумываться о повторяющихся линиях не нужно - API сделает это за нас. Но, если мы хотим менять значения линий, нам нужен апдейтер. Как его создать?Код:Board board = Board.getBuilder("§e§lМой Scoreboard") .write(4, "") .write(3, "Линия") .write(2, "") .write(1, "§ewww.mysite.ru") .build();
Этот простой код обновит заглавие нашего борда и третью линию - отобразит время первичного мира в тиках. Что значит 40L? Это интервал обновления в тиках. (20 тиков = 1 секунда).Код:Board board = Board.getBuilder("§e§lМой Scoreboard") .write(4, "") .write(3, "Линия") .write(2, "") .write(1, "§ewww.mysite.ru") .updater(40L, board -> { board.setDisplay("§e§lНовое имя борда"); board.modifyLine(3, "Текущее время: §a" + Bukkit.getWorlds().get(0).getTime()); }) .build();
Наш скорборд готов - теперь мы можем отправить его игрокам:player - переменная игрока. Если вы хотите отправить борд всем игрокам онлайн с помощью цикла/форича переберите всех игроков сервера и отправьте им борд.Код:board.send(player);
Однако, новые игроки его не увидят. Поэтому, выносим board в статичную переменную, и при входе игрока шлем ему борд.
Создание персонального борда идентично этому, просто получайте билдер так:Код:Board.getPersonalBuilder("§e§lМой борд", player)
Надеюсь, все было понятно, хотя, конечно, не очень. Если у вас есть вопросы - задавайте их в теме.
наведи на подчеркнутый текстПосмотреть вложение 48326 Эм, что не так?
Lambda expression's parameter board cannot redeclare another local variable defined in an enclosing scope.наведи на подчеркнутый текст
а, поправлюLambda expression's parameter board cannot redeclare another local variable defined in an enclosing scope.
создаешь переменную scoreboard дальше уже используешь board - опять запутался?Board scoreboard = Board.getBuilder("§e§lМой Scoreboard") .write(4, "") .write(3, "Линия") .write(2, "") .write(1, "§ewww.mysite.ru") .updater(40L, board -> { board.setDisplay("§e§lНовое имя борда"); board.modifyLine(3, "Текущее время: §a" + Bukkit.getWorlds().get(0).getTime()); }) .build();
да, но здесь это не главное, сейчас поправить не могусоздаешь переменную scoreboard дальше уже используешь board - опять запутался?
Переменная scoreboard ещё не объявлена, а ты её уже пытаешься использовать. Красава, скинь ссылку на машину времени которую используешь, прикуплю про запас.создаешь переменную scoreboard дальше уже используешь board - опять запутался?
PersonalBoard? Создай черезВозможно ли как то получить уже готовый боард игрока? Если нет, то добавьте пожалуйста.
Не знаю что он имел ввиду, ответил как понял вопрос))Я думаю он имел ввиду борд прямиком с клиента.
Невозможно без модификаций.
[14:20:20] [Server thread/INFO]: [ProtocolBoard] Disabling ProtocolBoard v1.0
[14:20:20] [BoardUpdater #5/WARN]: java.lang.InterruptedException: sleep interrupted
[14:20:20] [BoardUpdater #5/WARN]: at java.lang.Thread.sleep(Native Method)
[14:20:20] [BoardUpdater #5/WARN]: at ru.dondays.protocolboard.common.TaskManager.lambda$startUpdate$0(TaskManager.java:31)
[14:20:20] [BoardUpdater #5/WARN]: at java.lang.Thread.run(Thread.java:748)
[14:20:20] [Server thread/ERROR]: Error occurred while disabling ProtocolBoard v1.0 (Is it up to date?)
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1442) ~[?:1.8.0_181]
at java.util.HashMap$KeyIterator.next(HashMap.java:1466) ~[?:1.8.0_181]
at java.lang.Iterable.forEach(Iterable.java:74) ~[?:1.8.0_181]
at ru.dondays.protocolboard.ProtocolBoard.onDisable(ProtocolBoard.java:28) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:323) ~[craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:364) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:424) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:417) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at org.bukkit.plugin.SimplePluginManager.clearPlugins(SimplePluginManager.java:458) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:707) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at org.bukkit.Bukkit.reload(Bukkit.java:534) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:640) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:626) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:411) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [craftbukkit.jar:git-Spigot-f94fe8f-2642f9b]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
[14:20:20] [BoardUpdater #1/WARN]: java.lang.NullPointerException
[14:20:20] [BoardUpdater #1/WARN]: at ru.dondays.protocolboard.packetwrapper.AbstractPacket.broadcastPacket(AbstractPacket.java:64)
[14:20:20] [BoardUpdater #1/WARN]: at ru.dondays.protocolboard.api.BoardObjective.update(BoardObjective.java:57)
[14:20:20] [BoardUpdater #1/WARN]: at ru.dondays.protocolboard.api.BoardObjective.setDisplayName(BoardObjective.java:29)
[14:20:20] [BoardUpdater #1/WARN]: at ru.dondays.protocolboard.api.Board.setDisplay(Board.java:31)
[14:20:20] [BoardUpdater #1/WARN]: at me.Grazy.jedicraft.Main.JediScoreBoard.lambda$0(JediScoreBoard.java:258)
[14:20:20] [BoardUpdater #1/WARN]: at ru.dondays.protocolboard.common.TaskManager.lambda$startUpdate$0(TaskManager.java:35)
[14:20:20] [BoardUpdater #1/WARN]: at java.lang.Thread.run(Thread.java:748)
.
updater(11L, board -> {
board.setDisplay(ChatColor.translateAlternateColorCodes((char)'&', "Текст_1")); //258
})