0.12.0: data system rewrite
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
- networks ids used to group network proxies
-
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.
- 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
-
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 commandshelp
,info
, 'clean', 'show'. -
'rb'
- 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
summoncraft.us
for running this as beta in production- @SrBedrock for providing Brazilian Portuguese translation #87