Sueta

⭐mBalancer - Powerful Network player balancer⭐

alpha-1

✯TITLE || FALLBACK || MULTIPLE LOBBY SERVERS✯

·Plugin

шапка.png
Small demonstration of what the plugin does
(You can do this and many more fully configurable things inside the config.yml)

preview

[MEDIA = YouTube] nJyGzMrb_5A [/ MEDIA]

.FALLBACK.

.TITLE.


Для описания spigot.png


FEATURE

  • Providers: Balances the load of your players on your sections. When a player connects to the server in another section, the plugin can move the player to another server in this section.
  • Kick Handler : Players who are kicked out of the server can be moved to other servers in this section. You can configure it to work only when they receive a specific message.
  • Fallback Command: You can create your own command and this command allow players to connect to the parent of the section they are currently in, or the principal if not in a section.
  • The Title: You can make your own header message when the player connected to the server
  • 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: 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.
  • Permission acces: If you want to make a special lobby section for players with special permissions its helpful you!

    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.
    If You have more ideas you can suggest me it!

Types of Providers:

  • BALANCED ➭ Returns a server between the ones with the least players online

  • EXTERNAL➭ Returns the server determined by a provider created by other plugin

  • FILLER➭ Returns the server with the most players online that is not full

  • PROGRESSIVE➭ Returns the first server found that is not full

  • LOWEST➭ Returns the first server found with the least players
    online

  • RANDOM ➭ Returns a server selected by a RNG algorithm
    (random)

Commands:

  • /balancer ➭ The plugin command, which allows you to get more info of plugin commands
  • /balancer info {section} ➭ Get more info for this section
  • /balancer list ➭ List of sections with click events for enchancing use
  • /balancer connect {section} [player Not necessary]➭ The plugin command, which allows you to get more info of plugin commands

Note: The administrative commands require you to have the permission "balancer.admin"

Default config:

TITLE:
  # When true, plugin use title message
  enabled: true
  # Message on connected
  connected:
    onChat: true
    title: '&eYou are connected'
    subTitle: '&eto &c&o{server}'
    fadein: 15
    stay: 60
    fadeout: 15



# use #n vice \n
MESSAGE:
  prefix: '&9mBalancer &8>&f'
  connecting_server: "&aConnecting to: {section}.."
  connected_server: "&aYou're connected to &a{server}"
  invalid_input: "&cThis is an invalid input type for this command"
  server_nf: "&cCould not find a server to get connected to"
  player_bypass: "&cYou have not been moved because you have the. (permission: balancer.bypass)"
  player_kicked: "&6You have been kicked from: &c{from}#n&6Reconnecting you to &a{to}#n&6Reason: &c{reason}"
  already_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"
  not_permission: '&cnope :('

  ping_task: 'Launch the server verification system at intervals of {interval} sec'
  ping_task_update: '&e[Update]:&9 {server}&8: &a{online}&8/&c{max}&8 |&f Available: {answer} &8| &fMOTD: {motd}'

  startup_npe: 'Startup error occurred: '

  hover_message: '&fGet more info &8(&e&lLMB&8)'
  answer_yes: 'Yes'
  answer_no: 'No'
  empty: 'Empty'
  section: 'Section'
  basic: 'Basic'
  dummy: 'Dummy'
  parent: 'Parent'
  borrowed: 'Borrowed'
  position: 'Position'
  provider: 'Provider'
  inherited: 'Inherited'
  main_server: 'Basic Server'
  address: 'Address'
  players: 'Players'

  command: 'Command'
  permission: 'Permission'
  aliases: 'Aliases'

  available_servers: '&8>&9 Available Servers &8<'
  inaccessible_servers: '&8>&9 Inaccessible Servers &8<'
  main_info: '&8>&9 Basic Info &8<'
  available_sections: '&8>&9 Available Sections &8<'

  section_info_1: 'Starting automatic server ping'
  section_info_2: '&9{size}&9 sections were loaded for &a{time}ms'
  section_info_3: '&9Sections cleansing due to plugin shutdown'
  section_info_4: '&9Register {server} for {section} section'
  section_info_5: '&9Added {size} servers for a {section} section'
  section_info_6: '&9Server {server} removed for {section} section!'

  section_error_1: 'Basic section not found!'
  section_error_2: '&cThe sections &a{1}&c & &a{2}&c are parents of each other'
  section_error_3: '&cServer {server} already on {section} section'

  not_console: 'Console, go back? ;D'
  player_nf: 'The requested player was not found.'
  command_error_first: 'Error executing plugin restart'
  command_nf: '&cCommand not found!#n&fusage &8-&9 /balancer'
  reload_successfully: '&aThe plugin has successfully reloaded!'

  usage_connect: '/balancer connect [*section] [player]'
  usage_info: '/balancer info [*section]'

 
SECTION:
  # Sorry for my English :)
  # Here you have an example of what you can do with sections.
  # Even if you configure something wrong, the plugin will report it.
  # If you do not have a section, then it will be inherited from parents (parent)
  # The best way to figure this out is to play around with it.
  # You can use regular expressions to match a set of servers instead of adding each server (BB_S-[1-5])
  # You can have as many partitions as you want, there are no restrictions.
  #
  # Available providers:
  # NONE: Returns no server (no one will be able to connect to this section)
  # BALANCED: Returns a server between the ones with the least players online
  # LOWEST: Returns the first server found with the least players online
  # RANDOM: Returns a server selected by a RNG algorithm (random)
  # PROGRESSIVE: Returns the first server found that is not full
  # FILLER: Returns the server with the most players online that is not full
  # EXTERNAL: Returns the server determined by a provider created by other plugin
  types:
    lobbys:
      provider: RANDOM
      servers:
        - 'lobby-1'
    bb-lobbys:
      parent: 'lobbys'
      provider: LOWEST
      servers:
        - 'bblobby-1'
    bbgame:
      parent: 'lobbys'
      provider: FILLER
      section_server: buildbattle
      servers:
        - 'BB_S-[1-5]'
        - 'BB_T-[1-5]'
      command:
        name: gobuildbattle
        permission: ''
        aliases:
          - 'gobb'
          - 'bbplay'

  # The principal section is very important for other features
  # Normally set this to the section that has your main lobbies
  principal_section: 'lobbys'

  # 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

  # When true, the section server will be displayed in the list of players on all servers in this section.
  # IMPORTANT! This will make some plugins think that your bungeecord has more players than it really does
  show_player: true

  # Dummy sections can have servers from other non-dummy sections
  # When a player connects to a dummy section, nothing will happen
  dummy_section:
    - 'lobbys'

  # Reiterative sections remember the server the player connected to previously
  # The plugin will keep connecting the player to that server until a change occurs
  reiterative_sections:
    - 'lobbys'

CHECKER:
  # When true, the plugin will ping the servers
  enable: 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
  attemps: 5
  # The interval between every round of checks
  # In seconds
  interval: 5

  # When true, the plugin will print useful info when a server gets checked
  info: true

  # The descriptions that mark a server as non accessible
  non_acces:
    - 'Сервер оффлайн'
    - 'Игра на сервере уже началась'

FALLBACK:
  # When true, plugin will connects a player to the parent of current section the player is connected to
  enable: true
  # Usage commands
  # Leave permission empty for no permission
  command:
    name: fallback
    permission: ''
    aliases:
      - 'hub'
      - 'lobby'
      - 'leave'
  
  # Add sections here where you do not want this feature to work
  excluded_sections:
    - 'lobbys'

  # When true, players will not be able to get connected to sections that are parents of the principal section
  restrictive: 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
  # An example of use is shown below, but if you make the rules not through : it won't work
  rules:
    - 'bbgame:bb-lobbys'

KICK:
  # When true, the plugin will transfer the player to the parent section
  enable: true

  # true - the player must be kicked out for a reason
  # false - the player must be kicked out for a reason that is in the reasons
  inverted: true

  # 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
  # principal_section settings
  force_principal: false

  excluded_sections: []
  restrictive: false
  rules: []

REFRESH:
  # When true, the plugin will periodically adds servers that weren't there before the plugin loaded
  enable: ture

  # The delay to the first refresh
  # In seconds
  delay: 5

  # The interval between every refresh
  # In seconds
  interval: 300

Similar projects

Plugin →