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

Помогите Как можно обратится к velocity чтобы он перекинул игрока на другой сервер Плагином

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    MySoR
    Вот про Bungee я знаю как а вот про velocity нет, Пытался лазить в его доках но так и не нашел. Нужно чтобы это можно было сделать плагином который находится в на лобби
     
  2. _Orphen_

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

    Баллы:
    76
    никогда не имел дело с velocity но а если вариант сделать 2 плагина, для клиента, принимает команды и velocity второй, управляем уже непосредственно им.
     
  3. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Если ты про отправку игрока на другой сервер через plugin messages - Velocity должен и так поддерживать это, буквально без изменений.
     
  4. Автор темы
    MySoR

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

    Баллы:
    76
    Имя в Minecraft:
    MySoR
    Пытаюсь сделать так:
    Код:
    public class VelocityHook {
    
        private Plugin plugin;
    
        public VelocityHook(Plugin plugin) {
            this.plugin = plugin;
            Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "velocity:main");
        }
    
        public void teleportToServer(Player player, VelocityServer velocityServer){
            ByteArrayDataOutput out = ByteStreams.newDataOutput();
            out.writeUTF("Connect");
            out.writeUTF(velocityServer.serverName);
            player.sendPluginMessage(plugin, "velocity:main", out.toByteArray());
        }
    
    
        public void disable(){
            Bukkit.getServer().getMessenger().unregisterOutgoingPluginChannel(plugin);
        }
    
    
        public enum VelocityServer{
            LOBBY("lobby"), ANARCHY("anarchy"), SURVIVAL("surv");
    
            private String serverName;
    
            VelocityServer(String serverName) {
                this.serverName = serverName;
            }
        }
    }
    Ошибок нет и вообще в консоли ничего нет
    И понятное дело что не работает
     
  5. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Пробуй вписать bungeecord вместо velocity.
     
  6. Автор темы
    MySoR

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

    Баллы:
    76
    Имя в Minecraft:
    MySoR
    так велосити же прокси стоит?
     
  7. Автор темы
    MySoR

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

    Баллы:
    76
    Имя в Minecraft:
    MySoR
    поменял на bungeecord:main не заработало
     
  8. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Как я уже сказал, ради совместимости Velocity поддерживает plugin messaging по каналу BungeeCord - иначе были бы проблемы с теми же плагинами на межсерверными порталами.
    Здесь тоже выставил?
    Если да, то вместо "bungeecord:main" можно ещё попробовать просто "BungeeCord". Также стоит убедиться, что в этот момент соединение с игроком уже установлено, и метод в принципе вызывается.
    Если и тогда не работает - убедись, что эта схема работает с самим BungeeCord. Если нет - делаешь что-то не так. Если да - стоит обратиться на форум или в дискорд Paper.

    На крайний случай можно, конечно, как написал @_Orphen_ - добавить на сам прокси плагин-помощник.
     
  9. Автор темы
    MySoR

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

    Баллы:
    76
    Имя в Minecraft:
    MySoR
    Да заменил везде. Просто BungeeCord попробую.
     
  10. Автор темы
    MySoR

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

    Баллы:
    76
    Имя в Minecraft:
    MySoR
    Спасибо, это сработало
     
  11. erger

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

    Баллы:
    66
    Имя в Minecraft:
    FeatureTeam
    Здравствуйте, мне кажется уже всё перетыкал но никак не могу перекинуть игрока.
    для теста кидаю после авторизации
    Код:
    null
    org.bukkit.command.CommandException: Unhandled exception executing command 'l' in plugin Auth v1.0
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Paper-1427]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) ~[spigot.jar:git-Paper-1427]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:685) ~[spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1472) ~[spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1277) ~[spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) ~[spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) ~[spigot.jar:git-Paper-1427]
            at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]
            at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
            at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:843) [spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:427) [spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:767) [spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) [spigot.jar:git-Paper-1427]
            at java.lang.Thread.run(Unknown Source) [?:?]
    Caused by: java.lang.IllegalArgumentException: Plugin source cannot be null
            at org.bukkit.plugin.messaging.StandardMessenger.validatePluginMessage(StandardMessenger.java:473) ~[spigot.jar:git-Paper-1427]
            at org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer.sendPluginMessage(CraftPlayer.java:1310) ~[spigot.jar:git-Paper-1427]
            at hc.Auth.VelocityHook.teleportToServer(VelocityHook.java:21) ~[?:?]
            at hc.Auth.commands.login.onCommand(login.java:50) ~[?:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Paper-1427]
            ... 15 more
     
  12. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну так ты передай в качестве плагина нормальный объект, а не нулл
     
  13. erger

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

    Баллы:
    66
    Имя в Minecraft:
    FeatureTeam
    в качестве плагина нужно передавать текущий ? если да то я так и делаю
     
  14. erger

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

    Баллы:
    66
    Имя в Minecraft:
    FeatureTeam
    Независимо от того что я пробую
    (BungeeCord bungeecord:main velocity:main)

    Код:
    Error occurred while enabling Auth v1.0 (Is it up to date?)
    org.bukkit.plugin.messaging.ChannelNotRegisteredException: Attempted to send a plugin message through the unregistered channel `velocity:main'.
            at org.bukkit.plugin.messaging.StandardMessenger.validatePluginMessage(StandardMessenger.java:482) ~[spigot.jar:git-Paper-1427]
            at org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer.sendPluginMessage(CraftPlayer.java:1310) ~[spigot.jar:git-Paper-1427]
            at hc.Auth.VelocityHook.teleportToServer(VelocityHook.java:20) ~[?:?]
            at hc.Auth.main.onEnable(main.java:71) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot.jar:git-Paper-1427]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316) [spigot.jar:git-Paper-1427]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Paper-1427]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:395) [spigot.jar:git-Paper-1427]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:344) [spigot.jar:git-Paper-1427]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:808) [spigot.jar:git-Paper-1427]
            at org.bukkit.Bukkit.reload(Bukkit.java:559) [spigot.jar:git-Paper-1427]
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:55) [spigot.jar:git-Paper-1427]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) [spigot.jar:git-Paper-1427]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:685) [spigot.jar:git-Paper-1427]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:648) [spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:465) [spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:428) [spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:767) [spigot.jar:git-Paper-1427]
            at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) [spigot.jar:git-Paper-1427]
            at java.lang.Thread.run(Unknown Source) [?:?]
     
  15. BetterLex

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

    Баллы:
    76
    Скинь код
     
  16. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Пытаешься отправить данные по каналу, который не зарегистрирован
     
  17. erger

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

    Баллы:
    66
    Имя в Minecraft:
    FeatureTeam
    Код:
    public class VelocityHook {
    
    
        public VelocityHook() {
            Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(main.pl, "velocity:main");
        }
    
        public static void teleportToServer(Player player, VelocityServer velocityServer){
            ByteArrayDataOutput out = ByteStreams.newDataOutput();
            out.writeUTF("Connect");
            out.writeUTF(velocityServer.serverName);
            player.sendPluginMessage( main.pl, "velocity:main", out.toByteArray());
        }
        public enum VelocityServer{
            SURVIVAL("survival");
    
            private String serverName;
    
            VelocityServer(String serverName) {
                this.serverName = serverName;
            }
        }
    }
    Код:
    public void onEnable() {
            pl = Bukkit.getPluginManager().getPlugin(getDescription().getName());
            Player p = Bukkit.getPlayer("FeatureTeam");
            VelocityHook.teleportToServer(p, VelocityHook.VelocityServer.SURVIVAL);
    }
     
  18. mirrerror

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

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    ты нигде не вызываешь конструктор класса, и у тебя статический метод выполняется, когда канал еще не зарегистрирован
     
  19. erger

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

    Баллы:
    66
    Имя в Minecraft:
    FeatureTeam
    чёрт, как можно было так затупить.

    всем спасибо
     

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