BungeeHub 4.4

Server grouping /hub and /lobby command

  1. Bing_Yanchi
    Native Minecraft Version:
    1.17
    Tested Minecraft Versions:
    • 1.7
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    • 1.17
    • 1.18
    Source Code:
    https://github.com/BingYanchi/BungeeHub
    Contributors:
    Bing_Yanchi
    Languages Supported:
    Simplified Chinese, English, Custom language
    This plugin is preparing to be rewritten and will resolve some known bugs
    This plugin is stable, 99.6% of the error feedback comes from your configuration file error, please double check whether the indentation is correct and the placeholder is correct!
    Head over to our page to download the latest build: https://www.yistars.net/bungeehub/

    This plug-in only needs to be installed in BungeeCord/Waterfall.

    There is currently no development plan. I currently update the plug-in according to my own needs. Generally, I will update the plug-in once every 1-2 months to ensure that the plug-in is stable. If you have suggestions, please let me know.

    (2021.8.6)I created a Wiki page, and the detailed content can be viewed here.

    If you want to report bugs, provide suggestions, or have any questions, you can contact me through Discord.

    Introduction:
    In the form of grouping, let different sub-servers use the server delivered by /hub and /lobby

    Command:
    /hub - Hub command (Can be set to enable in the configuration file)
    /lobby - Hub command (Can be set to enable in the configuration file)
    /bungeehub help - View Help
    /bungeehub check - Check Update
    /bungeehub reload- Reload Config

    Permission:
    bungeehub.use - Use /hub (Only when NeedPermission is enabled)
    bungeehub.admin - Use /bungeehub reload

    Config:
    Code (YAML):
    # Debug mode
    DebugMode
    : false

    # Update Check
    CheckUpdate
    : true

    # Default server group
    DefaultGroup
    : lobby

    # Need bungeehub.use permission to use /hub
    NeedPermission
    : false

    # Command used to go to the lobby
    Commands
    :
      hub
    : true
      lobby
    : false

    # Server group
    # type: SERVER COMMAND QUEUE
    Group
    :
      lobby
    :
        name
    : "%name%"
        type
    : COMMAND
        command
    :
       - "bungeecommand %player% queue Lobby"
      bw_lobby
    :
        name
    : "&eBedWars Lobby"
        type
    : QUEUE
        server
    :
       - bw_1
        - bw_2
        - bw_3
        - bw_4
        queue
    : Bw_Lobby
      mm_lobby
    :
        name
    : "%name% Lobby"
        type
    : SERVER
        server
    :
       - mm_1
        - mm_2
        - mm_3
        - mm_4
        - mm_5
        - mm_6

    Messages:
    Code (YAML):
    # Plugin
    Enabled
    : "Enabled successfully."
    Loaded
    : "Loaded successfully."
    Disenabled
    : "Disenabled successfully."

    # Set to "" not to send messages
    # Player
    UseHub
    : "&aConnecting %group%&a..."
    NoPermission
    : "&cYou have no permission to do this."

    # Admin
    Reload
    : "&aReload config successfully."
    Console
    : "This command must be executed in the game."

    # Update Check
    Checking
    : "&7Checking for update..."
    NoUpdate
    : "&aThe currently used version is already the latest version."
    Update
    : "&a[BungeeHub] &eNew version &bv%new_version% &edetected, current version: &bv%old_version%"
    UpdatePage
    : "&aPlugin Page: &e%url%"
    UpdateDownload
    : "&aDwonload Link: &e%url%"

    # Help
    HelpTitle
    : "&aBungeeHub v%version% Help:"
    HelpHelp
    : "&a/bungeehub help &8- &7View help"
    HelpCheck
    : "&a/bungeehub check &8- &7CheckUpdate"
    HelpReload
    : "&a/bungeehub reload &8- &7Reload Config"

    API:
    Code (Java):
    import java.util.List;

    import cn.yistars.bungeehub.HubHook;

    public class BungeeHubHook implements HubHook {
     
        public static String getGroupName(String server) {
            return HubHook.getGroupName(server);
        }
     
        public static String getGroupType(String groupname) {
            return HubHook.getGroupType(groupname);
        }
     
        public static String getGroupQueue(String groupname) {
            return HubHook.getGroupQueue(groupname);
        }
     
        public static List<String> getGroupCommand(String groupname) {
            return HubHook.getGroupCommand(groupname);
        }
     
        public static String getDefaultGroup() {
            return HubHook.getDefaultGroup();
        }
    }

    bStats:
    [​IMG]

    Note:

    1. It is strictly forbidden to decompile/modify this plugin without my permission.
    2. If you want to distribute this plug-in, please get my consent first.
    注意:
    1. 未经我的允许,严禁反编译/修改此插件。
    2. 若想分发此插件,请先征得我的同意。
    If you think the plugin is good, please leave your rating, thank you!
    TWME_TW likes this.

Recent Reviews

  1. boshui
    boshui
    5/5,
    Version: 4.4
    If I want the hub to return to a random lobby, how should I set it up?
    That's all, I hope you understand
    1. Bing_Yanchi
  2. TheWTLong
    TheWTLong
    4/5,
    Version: 4.4
    请问可以添加个命令加入某个组吗?
    ServerQueue有报错而且它似乎并不能实现这个

    [WARN]: Could not load plugin from file plugins\ServerQueue.jar
    org.yaml.snakeyaml.constructor.ConstructorException: Cannot create property=author for JavaBean=PluginDescription(name=ServerQueue, main=net.rfpixel.queue.main.Main, version=1.1, author=null, depends=[], softDepends=[], file=null, description=null, libraries=[])
    in 'reader', line 1, column 1:
    name: ServerQueue
    ^
    No suitable constructor with 2 arguments found for class java.lang.String
    in 'reader', line 4, column 9:
    author: [redstone_fun, Bing_Yanchi]
    ^

    at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:291) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:172) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:332) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:230) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:220) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:174) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:158) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:491) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.Yaml.loadAs(Yaml.java:484) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at net.md_5.bungee.api.plugin.PluginManager.detectPlugins(PluginManager.java:438) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at net.md_5.bungee.BungeeCord.start(BungeeCord.java:276) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:67) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    Caused by: org.yaml.snakeyaml.error.YAMLException: No suitable constructor with 2 arguments found for class java.lang.String
    at org.yaml.snakeyaml.constructor.Constructor$ConstructSequence.construct(Constructor.java:609) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:230) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:220) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:268) ~[waterfall-1.18-475.jar:git:Waterfall-Bootstrap:1.18-R0.1-SNAPSHOT:21e4c1d:475]
    ... 12 more
    1. Bing_Yanchi
      Author's Response
  3. _v_Max_v_
    _v_Max_v_
    1/5,
    Version: 4.4
    00:15:59 [WARNING] Error in dispatching command
    java.lang.NullPointerException: info
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:787)
    at net.md_5.bungee.UserConnection.connect(UserConnection.java:247)
    at net.md_5.bungee.UserConnection.connect(UserConnection.java:201)
    at cn.yistars.hub.command.HubEvent.ConnectServer(HubEvent.java:76)
    at cn.yistars.hub.command.HubEvent.GoHub(HubEvent.java:33)
    at cn.yistars.hub.command.HubCommand.execute(HubCommand.java:31)
    at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:187)
    at net.md_5.bungee.api.plugin.PluginManager.dispatchCommand(PluginManager.java:146)
    at net.md_5.bungee.connection.UpstreamBridge.handle(UpstreamBridge.java:173)
    at net.md_5.bungee.protocol.packet.Chat.handle(Chat.java:61)
    at net.md_5.bungee.netty.HandlerBoss.channelRead(HandlerBoss.java:107)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795)
    at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:480)
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
    at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
    at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
    at java.base/java.lang.Thread.run(Thread.java:829)
    1. Bing_Yanchi
      Author's Response
      Please add the circumstances under which this problem occurred, otherwise I cannot solve your problem
  4. IBrakeFoxI
    IBrakeFoxI
    5/5,
    Version: 4.3
    Excellent plugin, and 10/10 support I recommend , there was an error but I solve it quickly thanks for the support blessings
    1. Bing_Yanchi
      Author's Response
      thank you for your support!
  5. IBrakeFoxI
    IBrakeFoxI
    4/5,
    Version: 4.2
    no se hablar ingles , pero esta muy bueno el plugin aun que en esta actualizacion me salio un error y ahora no me deja entrar a la network , pero exelente.

    como puedo contactar con usted para pedirle ayuda por el error que me aparece?
    1. Bing_Yanchi
      Author's Response
      Hello, you can contact me through Discord. I am in Nanjing, China. I am currently facing an epidemic and may not respond in time, but I will try my best.

      Discord: 冰砚炽#5607
      Email: [email protected]
  6. BoolyStudy
    BoolyStudy
    5/5,
    Version: 4.0
    Basic, simple, effective complement, good developer to make simple and uncomplicated plugins, but I would like you to put the / lobby command, since there are people who are also used to putting that command and not often the / hub 10/10
    1. Bing_Yanchi
      Author's Response
      Thank! I will update this feature in the next version, and it will be set in the configuration file.