mirror of
https://github.com/proxiodev/RedisBungee.git
synced 2025-04-16 07:47:07 +00:00
## NOTES data system shouldn't effect anybody, unless you do any direct query to Redis query data, you should adapt the changes, by viewing classes `ProxyDataManager` and `PlayerDataManager` # Changes * RedisBungee is compiled with `java 17` now, Due java 11 support is ending at end of September * 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 https://github.com/ProxioDev/RedisBungee/issues/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](https://github.com/aikar/commands) to be platform independent * new command `/rb` or `/redisbungee` with sub commands `help`, `info`, 'clean', 'show'. * 'rb' * '/rb' and '/rb info'  * '/rb show'  * configuration to disable or override each command from legacy to new introduced one `/rb` ```yaml # 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: ```java /** * 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 branch in production * @SrBedrock for providing [Brazilian Portuguese](https://en.wikipedia.org/wiki/Brazilian_Portuguese) translation #87 # issues closes #84 closes #88 closes #92 closes #81 closes #93 --------- Signed-off-by: mohammed jasem alaajel <xrambad@gmail.com> Co-authored-by: ThiagoROX <51332006+SrBedrock@users.noreply.github.com>
143 lines
5.0 KiB
YAML
143 lines
5.0 KiB
YAML
# RedisBungee configuration file.
|
|
# Notice:
|
|
# Redis 7.2.4 is last free and open source Redis version after license change
|
|
# https://download.redis.io/releases/redis-7.2.4.tar.gz which you have to compile yourself,
|
|
# unless your package manager still provide it.
|
|
# Here is The alternatives
|
|
# - 'ValKey' By linux foundation https://valkey.io/download/
|
|
# - 'KeyDB' by Snapchat inc https://docs.keydb.dev/docs/download/
|
|
|
|
|
|
# The 'Redis', 'ValKey', 'KeyDB' server you will use.
|
|
# these settings are ignored when cluster mode is enabled.
|
|
redis-server: 127.0.0.1
|
|
redis-port: 6379
|
|
|
|
# Cluster Mode
|
|
# enabling this option will enable cluster mode.
|
|
cluster-mode-enabled: false
|
|
|
|
# FORMAT:
|
|
# redis-cluster-servers:
|
|
# - host: 127.0.0.1`
|
|
# port: 2020
|
|
# - host: 127.0.0.1
|
|
# port: 2021
|
|
# - host: 127.0.0.1
|
|
# port: 2021
|
|
|
|
# you can set single server and Jedis will automatically discover cluster nodes,
|
|
# but might fail if this single redis node is down when Proxy startup, its recommended put the all the nodes
|
|
redis-cluster-servers:
|
|
- host: 127.0.0.1
|
|
port: 6379
|
|
|
|
# OPTIONAL: if your redis uses acl usernames set the username here. leave empty for no username.
|
|
redis-username: ""
|
|
|
|
# OPTIONAL but recommended: If your Redis server uses AUTH, set the required password.
|
|
redis-password: ""
|
|
|
|
# Maximum connections that will be maintained to the Redis server.
|
|
# The default is 10. This setting should be left as-is unless you have some wildly
|
|
# inefficient plugins or a lot of players.
|
|
max-redis-connections: 10
|
|
|
|
# since redis can support ssl by version 6 you can use SSL/TLS in redis bungee too!
|
|
# but there is more configuration needed to work see https://github.com/ProxioDev/RedisBungee/issues/18
|
|
# Keep note that SSL/TLS connections will decrease redis performance so use it when needed.
|
|
useSSL: false
|
|
|
|
# An identifier for this network, which helps to separate redisbungee instances on same redis instance.
|
|
# You can use environment variable 'REDISBUNGEE_NETWORK_ID' to override
|
|
network-id: "main"
|
|
|
|
# An identifier for this BungeeCord / Velocity instance. Will randomly generate if leaving it blank.
|
|
# You can set Environment variable 'REDISBUNGEE_PROXY_ID' to override
|
|
proxy-id: "proxy-1"
|
|
|
|
# since RedisBungee Internally now uses UnifiedJedis instead of Jedis, JedisPool.
|
|
# which will break compatibility with old plugins that uses RedisBungee JedisPool
|
|
# so to mitigate this issue, RedisBungee will create an JedisPool for compatibility reasons.
|
|
# disabled by default
|
|
# Automatically disabled when cluster mode is enabled
|
|
enable-jedis-pool-compatibility: false
|
|
|
|
# max connections for the compatibility pool
|
|
compatibility-max-connections: 3
|
|
|
|
# restore old login behavior before 0.9.0 update
|
|
# enabled by default
|
|
# when true: when player login and there is old player with same uuid it will get disconnected as result and new player will log in
|
|
# when false: when a player login but login will fail because old player is still connected.
|
|
kick-when-online: true
|
|
|
|
# enabled by default
|
|
# this option tells RedisBungee handle motd and set online count, when motd is requested
|
|
# you can disable this when you want to handle motd yourself, use RedisBungee api to get total players when needed :)
|
|
handle-motd: true
|
|
|
|
# A list of IP addresses for which RedisBungee will not modify the response for, useful for automatic
|
|
# restart scripts.
|
|
# Automatically disabled if handle-motd is disabled.
|
|
exempt-ip-addresses: []
|
|
|
|
# disabled by default
|
|
# RedisBungee will attempt to connect player to last server that was stored.
|
|
reconnect-to-last-server: false
|
|
|
|
# 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
|
|
|
|
# Config version DO NOT CHANGE!!!!
|
|
config-version: 2
|