PlayerBalancer icon

PlayerBalancer -----

Distribute your players across multiple servers. Advanced features and very customizable



OrN21kR.png
PlayerBalancer is a BungeeCord plugin for setting up a network with multiple lobbies of different types. You can customize nearly everything in this plugin. You have lots of features, including commands to move across sections, kick handler (kick2lobby), server checking, section servers, target assignation, multiple providers, and RedisBungee support among other things.

Features:
  • Balancer: Balances the load of your players on your sections. When a player connects to a server in other section, the plugin may move the player to another server in that section.
  • Kick Handler: Players that get kicked from a server can get moved to other servers. You can configure it so it only works when they get kicked with a certain message.
  • Fallback Command: Essentially /hub, /lobby. This command allows players to connect to the parent of the section they are currently in, or the principal if not in a section.
  • Server Checking: The plugin makes sure the server the player is going to be connected to is online. You can also make the plugin mark servers as non-accessible when they have a certain motd.
  • Fallback Command: This command allows players to connect to the parent of the section they are connected to currently. You can also pass a number to the command to get connected to a specific server.
  • Section Command: Comparable to Slash Server. This command allows players to connect to a specific section. This section can have one or more servers.
  • Section Server: Creates a fake server on BungeeCord that is used to connect to a section by just connecting to that server, it shows the sum of players of the servers in that section.
  • Spigot Addon: This allows plugins on the spigot servers to access commands from PlayerBalancer (with /spb), it also includes a PlaceholderAPI placeholder (%pb_pc_section%) for a total of all the players connected to servers of a section. This is available as a different resource, download it for free here
  • Permission Router: When using this feature, it moves players when connecting to a certain section while having a certain permission, to another section. This is very helpful if you want to make a special lobby section for players with special permissions.
  • Plugin API for developers to get access to data from the plugin, both from the spigot side and from the bungeecord side. This allows the included addon to work.
  • Very configurable, take a look at the configuration, you will see there are a lot of options for you to configure and more to come.
  • Well optimized and tested on many networks, you can take a look at the statistics for this plugin here (old metrics) or here (new metrics)
Commands:
  • The fallback command, it moves you from your current section to a server of the parent section.
  • The section command, a command you can set to a section and when it is executed you get connected to that section.
  • (/balancer) The plugin command, which allows you to safely reload the plugin and quickly upload the configuration of the plugin to pastebin to quickly get support.
  • (/section) The section management command, which allows you to make a player connect to a section, get info about a section and their servers and a list of sections with click events for enhancing use. This is the shown info when executing /section info.
Screenshot_8.png
Note: The administrative commands require you to have the permission "playerbalancer.admin"​

Configuration:
Code (Text):

# PlayerBalancer Configuration (https://www.spigotmc.org/resources/10788/)
# Read the comments, they are a very important part of the configuration
# To get support send me a private message with a description of the problem and the config file
# To easily paste the config file (and other relevant files) use the command /balancer paste
# If the plugin has issues loading the configuration, try putting quotes around text

general {
  # IMPORTANT! Set this to true after configuring the plugin!
  enabled=false

  # When true, the plugin will reload when you execute /greload
  auto-reload=true

  # When true, this plugin will print less messages when loading
  silent=false

  # When true, spigot plugins will be able to contact with this plugin
  # Do not disable if you are using the addon!
  plugin-messaging=true

  # Do not modify this
  version="${project.version}"
}

# Effectively remove (i.e comment) a message to disable it
# Supported variables are shown in the default messages
messages {
  # connecting-server="&aConnecting to an {section} ({alias}) server" # this message is disabled by default!
  connected-server="&aConnected to {server} (an {alias} server)"
  invalid-input="&cThis is an invalid input type for this command"
  misc-failure="&cCould not find a server to get connected to"
  player-bypass="&cYou have not been moved because you have the playerbalancer.bypass permission"
  player-kicked="&cYou have been kicked from &a{from} &cso you are being moved to &a{to}\n&cReason: &a{reason}"
  same-section="&cYou are already connected to a server on this section!"
  unavailable-server="&cThis command cannot be executed on this server"
  unknown-section="&aCould not find a section with that name"
}

features {
  balancer {
    # Here you have an example of what you can do with the sections
    # The best way to understand this is to play around with it
    # You can have as many sections as you want, there is no limit here
    # If a section does not have a provider it will try to inherit it from the parent
    # When connecting to a server on a section while not being on it already, you get distributed
    # You can use regex to match a set of servers instead of adding each server individually

    # Providers you can use: (you can request more!)
    # NONE:                    Returns no server (no one will be able to connect to this section)
    # RANDOM:                  Returns a random server, generated by SecureRandom
    # RANDOM_LOWEST:           Returns a random server between the ones with the least players online
    # RANDOM_FILLER:           Returns a random server between the ones with the most players online that is not full
    # PROGRESSIVE:             Returns the first server that is not full
    # PROGRESSIVE_LOWEST:      Returns the first server with the least players online
    # PROGRESSIVE_FILLER:      Returns the first server with the most players online that is not full
    # EXTERNAL:                Returns the server calculated by a provider created by other plugin

    sections {
      auth-lobbies {
        provider=RANDOM
        servers=[
          "Auth1",
          "Auth2",
          "Auth3"
        ]
      }

      general-lobbies {
        parent="auth-lobbies"
        alias="General Lobbies"
        servers=[
          "Lobby[1-3]"
        ]
      }

      skywars-lobbies {
        parent="general-lobbies"
        provider=PROGRESSIVE_LOWEST
        servers=[
          "SWLobby1",
          "SWLobby2",
          "SWLobby3"
        ]
      }

      skywars-games {
        parent="skywars-lobbies"
        provider=RANDOM_FILLER
        servers=["SW_A[1-5]", "SW_B[1-5]"]
        section-server=playskywars
        section-command {
          name=skywars
          permission=""
          aliases=[]
        }
      }
    }

    # The principal section is very important for other features
    # Normally set this to the section that has your main lobbies
    principal-section="general-lobbies"

    # When a player is not in any section, the player will go to the principal section
    # This affects both the fallback command and kick handler features
    default-principal=true

    # Dummy sections can have servers from other non-dummy sections
    # When a player connects to a dummy section, nothing will happen
    dummy-sections=[]

    # Reiterative sections remember the server the player connected to previously
    # The plugin will keep connecting the player to that server repeatedly
    reiterative-sections=[]

    # When true, section servers will show the sum of the players on all servers on that section
    # Important: This will make some plugins think that your bungeecord has more players than it really does
    show-players=true
  }

  # Pings servers to see if they are online or not and if they are accessible
  server-checker {
    enabled=true

    # Use either CUSTOM or GENERIC, the first one generally works the best
    tactic=CUSTOM

    # The attempts before giving up on getting a server for a player
    attempts=5

    # The interval between every round of checks (in milliseconds)
    interval=10000

    # The timeout of a ping, only applied to the CUSTOM tactic
    timeout=7000

    # When true, the plugin will print useful info when a server gets checked
    debug-info=false

    # When the description of a server matches these, it will be set as non accessible
    # Be aware of colors, it is recommended to use the "contains" rule below or some others
    marker-descs=[
      "(?i).*maintenance*", # match if contains (regex)
      "Game in progress" # match if exactly equal
    ]
  }

  # Connects a player to the parent of current section the player is connected to
  fallback-command {
    enabled=true

    # Leave permission empty for no permission
    command {
      name=fallback
      permission=""
      aliases=[
        lobby,
        hub,
        back
      ]
    }

    # Add sections here where you do not want this feature to work
    excluded-sections=[]

    # When true, players will not be able to get connected to sections that are parents of the principal section
    restrictive=true

    # When true, players will not be able get connected within servers of the same section
    # This does not affect the parametized variant of the command (/command [number])
    # This also affects section commands
    prevent-same-section=true

    # You can override the behavior with rules, overriding the parent section
    # This will set the section to go when you come from the section specified
    rules {
      section-from=section-to
    }
  }

  # Connects a player to other section when kicked
  kick-handler {
    enabled=true

    # When true, the reasons will work as a blacklist instead of a whitelist
    # Blacklist: A player must be kicked with a reason that is NOT in the reasons
    # Whitelist: A player must be kicked with a reason that is in the reasons
    inverted=true

    # The reasons that determine if a player is reconnected or not, supports regex
    reasons=[]

    # When true, players that are kicked while connecting to the proxy will be forced to reconnect to the principal section
    force-principal=false

    # Add sections here where you do not want this feature to work
    excluded-sections=[]

    # When true, players will not be able to get connected to sections that are parents of the principal section
    restrictive=true

    # When true, the plugin will print useful info when a player gets kicked
    debug-info=false

    # You can override the behavior with rules, overriding the parent section
    # When you get kicked from the section on the left, you go to the one on the right
    rules {
      section-from=section-to
    }
  }

  # Periodically adds servers that weren't there before the plugin loaded
  server-refresh {
    enabled=false

    # The delay to the first refresh (in milliseconds)
    delay=2000

    # The interval between every refresh (in milliseconds)
    interval=5000
  }

  # Redirect players when connecting to a section in case they have a permission, useful for special lobbies
  # Players will not get redirected if they are connected to a server where they were previously redirected to
  permission-router {
    enabled=false

    rules {
      general-lobbies {
        "special.permission"=other-lobby-section
      }
    }
  }
}
 
Video


Developer API:
https://playerbalancer.bghddevelopment.com/developer-api

Statistics:
This plugin queries information about your server for statistical purposes, all the data is anonymous and you can opt-out by modifying the bStats config, learn more about this here
You can take a look at the statistics for this plugin here.
Resource Information
Author:
----------
Total Downloads: 5,263
First Release: Mar 28, 2018
Last Update: Jul 9, 2024
Category: ---------------
All-Time Rating:
17 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings