Skip to content

0.12.0: data system rewrite

Compare
Choose a tag to compare
@ham1255 ham1255 released this 28 Apr 11:47
0.12.0
1593c2d

NOTES

WARNING: this release resets the the config with backup stored inside plugin folder.
If you find any bugs after updating due new system please report it ASAP!

data system changes shouldn't effect anybody, unless you do any direct query to Redis, you should adapt the changes, by viewing classes ProxyDataManager and PlayerDataManager

Changes

  • RedisBungee is compiled with java 17 now, Due java 11 support ended at end of September/2023
  • config version is now 2 which will reset your config if older version
  • Adventure API is included inside RedisBungee API
  • new Language infrastructure for RedisBungee built-in messages #85 commands not included yet
  • New data system which replaces Redis PubSub with Redis Streams see below
  • Ability to connect player to last server they where on using an config option #84
  • new environment variable REDISBUNGEE_PROXY_ID which can be set before launch
  • new environment variable REDISBUNGEE_NETWORK_ID which can be set before launch
  • RedisBungee requires redis version 6.2 or above #88
  • Better command system #93

New data system

Due limitation of Redis PubSub in Cluster environment, Internals of RedisBungee were changed to support Redis Streams

  • Network Ids

    • networks ids used to group network proxies
      • example having 'test' network and 'main' network
    • Networks in the same redis server / cluster share the same UUID cache
  • Heartbeat system:

    • RedisBungee old heartbeat system used hastset on redisbungee to store the current unix time of the proxy to check what every proxy died or not, now instead we publish the heartbeat using unix time, and online count to proxy which proxy store it in their memory, which allow the get number of online players to be faster than pooling whole list in old data system.
  • PubSub

    • since redisbungee was initially designed with pubsub in mind, registration no longer required now for event to fire, see the api changes below.

Commands System

  • rewritten using acf lib to be platform independent

  • new command /rb or /redisbungee with sub commands help, info, 'clean', 'show'.

  • 'rb'

    • '/rb' and '/rb info'
      image

    • '/rb show'

image

  • configuration to disable or override each command from legacy to new introduced one /rb
# For redis bungee legacy commands
# either can be run using '/rbl glist' for example
# or if 'install' is set to true '/glist' can be used.
# 'install' also overrides the proxy installed commands
#
# In legacy commands each command got it own permissions since they had it own permission pre new command system,
# so it's also applied to subcommands in '/rbl'.
commands:
  # Permission redisbungee.legacy.use
  redisbungee-legacy:
    enabled: false
    subcommands:
        # Permission redisbungee.command.glist
        glist:
          enabled: false
          install: false
        # Permission redisbungee.command.find
        find:
          enabled: false
          install: false
        # Permission redisbungee.command.lastseen
        lastseen:
          enabled: false
          install: false
        # Permission redisbungee.command.ip
        ip:
          enabled: false
          install: false
        # Permission redisbungee.command.pproxy
        pproxy:
          enabled: false
          install: false
        # Permission redisbungee.command.sendtoall
        sendtoall:
          enabled: false
          install: false
        # Permission redisbungee.command.serverid
        serverid:
          enabled: false
          install: false
        # Permission redisbungee.command.serverids
        serverids:
          enabled: false
          install: false
       # Permission redisbungee.command.plist
        plist:
          enabled: false
          install: false
  # Permission redisbungee.command.use
  redisbungee:
    enabled: true

API changes

  • Kick api Deprecated:

    • kickPlayer(String playerName, String message)
    • kickPlayer(UUID playerUUID, String message)
  • newer where added using adventure api:

    • kickPlayer(String playerName, Component message)
    • kickPlayer(UUID playerUUID, Component message)
  • PubSub registration api Deprecated:

/**
     * Register (a) PubSub channel(s), so that you may handle PubSubMessageEvent for it.
     *
     * @param channels the channels to register
     * @since 0.3
     * @deprecated No longer required
     */
    @Deprecated
    public final void registerPubSubChannels(String... channels) {
    }

    /**
     * Unregister (a) PubSub channel(s).
     *
     * @param channels the channels to unregister
     * @since 0.3
     * @deprecated No longer required
     */
    @Deprecated
    public final void unregisterPubSubChannels(String... channels) {
    }

Contributors