Skript addon for Redis communication between servers.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mohammed jasem alaajel ac6fe6cb99 1.3.6-SNAPSHOT && updated deps && moved jedis to the parent && due removal of JedisBinary, Jedis has method of that class now so its easy drop replacement && fixed jedis wont connect if password is not empty? && adding default values if config somehow is empty or field not there 2 months ago
.github/workflows Proxy addition phase 1 9 months ago
.mvn/wrapper added maven to since it will get rewritten soon. 2 years ago
RediSkript-bukkit 1.3.6-SNAPSHOT && updated deps && moved jedis to the parent && due removal of JedisBinary, Jedis has method of that class now so its easy drop replacement && fixed jedis wont connect if password is not empty? && adding default values if config somehow is empty or field not there 2 months ago
RediSkript-core 1.3.6-SNAPSHOT && updated deps && moved jedis to the parent && due removal of JedisBinary, Jedis has method of that class now so its easy drop replacement && fixed jedis wont connect if password is not empty? && adding default values if config somehow is empty or field not there 2 months ago
.gitignore fixed maven build problem 9 months ago
LICENSE Create LICENSE 9 months ago
README.md Update 'README.md' 4 months ago
compile.bat added maven to since it will get rewritten soon. 2 years ago
install.bat cleaned idea / removed typo in groupID 9 months ago
mvnw added maven to since it will get rewritten soon. 2 years ago
mvnw.cmd added maven to since it will get rewritten soon. 2 years ago
pom.xml 1.3.6-SNAPSHOT && updated deps && moved jedis to the parent && due removal of JedisBinary, Jedis has method of that class now so its easy drop replacement && fixed jedis wont connect if password is not empty? && adding default values if config somehow is empty or field not there 2 months ago

README.md

RediSkript

Allows you to communicate between your Minecraft servers with use of Redis and Skript, it's very fast and easy to use.

Skript: https://github.com/SkriptLang/Skript

RediSkript spigot page: https://www.spigotmc.org/resources/rediskript-communicate-between-servers-with-ease.85067/

Jedis: https://github.com/redis/jedis

You can transfer any data in the form of text between your servers, you can program it to execute a set of instructions on the server depending on the redis message, etc. This can be used for making scripts that sync data between all servers and much more!

It is developed and maintained by Govindas & the team of Govindas Limework developers.

There is only one command: /reloadredis it fully reloads the configuration, you can reload IP, password, channels and everything else.

You only need to have matching configuration in every server for communication and a Redis server to connect to. I recommend using a VPS for hosting redis server, but there also are free redis hosting options available.

Redis Message

on redis message:
  if redis channel is "world":
    broadcast "%redis message% %redis channel% %redis message date%"

command /sendredis <text> <text>:
  usage: /sendredis <message> <channel>
  trigger:
    send redis message arg 1 to channel arg 2
    send redis message "hello world!" to channel "world"

Managing variables

set variables "test::1", "test::2", "test::3" in channel "global" to 100
#then use this in any server that listens to "global" redis channel and was online when the above line was executed:
send "%{test::*}%" #outputs 100, 100 and 100

add 100 to variables "test::1" and "test::2" in channel "global"
remove 10 from variable "test::1" in channel "global"
delete variables "test::*" in channel "global"

set variable "test::%uuid of player%" in channel "playerdata" to tool of player
#then you can in any server that is listening to "playerdata" channel and was online when the above line was executed:
give {test::%uuid of player%} to player

Syntax:

variable[s] %strings% in [redis] [channel] %string%

Configuration

plugins/RediSkript/config.yml

Redis:
  #a secure password that cannot be cracked, please change it!
  #it is also recommended to firewall your redis server with iptables so it can only be accessed by specific IP addresses
  Password: "yHy0d2zdBlRmaSPj3CiBwEv5V3XxBTLTrCsGW7ntBnzhfxPxXJS6Q1aTtR6DSfAtCZr2VxWnsungXHTcF94a4bsWEpGAvjL9XMU"
  #hostname of your redis server, you can use free redis hosting (search for it online) if you do not have the ability to host your own redis server
  #redis server is very lightweight, takes under 30 MB of RAM usually
  Host: "127.0.0.1"
  #must be 2 or higher, if you set to lower, the addon will automatically use 2 as a minimum
  #do not edit MaxConnections if you do not know what you're doing
  #it is only useful to increase this number to account for PING between distant servers and when you are sending a lot of messages constantly
  MaxConnections: 2
  #the default Redis port
  Port: 6379
  #time out in milliseconds, how long it should take before it decides that it is unable to connect when sending a message
  #9000 = 9 seconds
  TimeOut: 9000
  #also known as SSL, only use this if you're running Redis 6.0.6 or higher, older versions will not work correctly
  #it encrypts your traffic and makes data exchange between distant servers secure
  useTLS: false
  #EncryptMessages may be useful if you cannot use TLS due to use of older version of Redis or if you're paranoid about privacy and want to double encrypt your messages
  #however this will not encrypt the initial authentication password, only the messages sent (use TLS for initial authentication password encryption)

  #the encryption configuration must be the same across all servers in order to communicate

  #use 16 characters long key for AES-128 encryption
  #32 characters long key for AES-256 encryption (recommended)
  #the AES implementation used in RediSkript uses SIV mode, which makes the same key resistant to cracking for a big count of messages without the need of changing the key very often
  EncryptMessages: true
  #EncryptionKey and MacKey must be different
  EncryptionKey: "32CHARACTERS KEY"
  MacKey: "32CHARACTERS KEY"


#the channels from which this server can receive messages
#you can always send messages to all channels!
#you can add as many channels as you wish!

#ideal setup is having one global channel and having one channel that represents server name, so you know who to send messages to
#then a few other utility channels up to your needs
Channels:
  - "global"
  - "servername"
  - "Channel3"

YourKit

YourKit supports open source projects with innovative and intelligent tools for monitoring and profiling Java and .NET applications. YourKit is the creator of YourKit Java Profiler, YourKit .NET Profiler and YourKit YouMonitor.

YourKit