RediSkript - communicate between servers with ease! 1.3.5

Skript addon for Redis communication between servers in Skript

  1. Govindas
    Native Minecraft Version:
    1.13
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    • 1.17
    • 1.18
    Source Code:
    https://git.limework.net/Limework/RediSkript
    RediSkript is a Skript addon made in Java that allows you to communicate between your servers with use of Redis, it's very fast and easy to use.

    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 originally developed only for Govindas Limework project, but I've decided to share it publicly.

    Redis Message:
    Code (Text):
    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:
    Code (Text):
    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

    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:
    Code (Text):
    variable[s] %strings% in [redis] [channel] %string%
    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 VPS for hosting redis server, I personally use VPS from humbleservers.com.
    You can download redis server at: https://redis.io/
    If you do not have where to host redis server, you can use free redis server hosting from https://redislabs.com (should be enough for a network of a few servers)

    Configuration:
    Code (Text):
    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)
      #AES-128 is faster, but less secure (but it is not crackable by today's technology as of 2020, may be crackable by quantum computers)
      #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"

    Support
    You can receive support by creating an issue at the git repository, alternatively you can receive live chat support in my Matrix chatroom.
    Abdelaziz189356, rudde and ccorp2002 like this.

Recent Updates

  1. 1.3.5
  2. 1.3.4 - Small update
  3. 1.3.3 - Major bugfixes

Recent Reviews

  1. AlexMiller
    AlexMiller
    5/5,
    Version: 1.3.4
    A very useful addon! Thank you very much!!!
    =====================================
    1. Govindas
      Author's Response
      you're very welcome, thank you for the review!
  2. Adarsh_A
    Adarsh_A
    5/5,
    Version: 1.3.4
    I don't know how this works actually, but this solved one of my problem so ye good plugin :)
    1. Govindas
      Author's Response
      Thank you for the review, the way it works is very simple and surely you can learn over time
  3. Baezor
    Baezor
    5/5,
    Version: 1.3.4
    This is literally one of my favorite addons ever. It makes server communication super easy. Thank you for making this a thing.
    1. Govindas
      Author's Response
      Thank you for the wonderful review, I'm glad you're enjoying it.
  4. wallxq
    wallxq
    5/5,
    Version: 1.3.3
    The fastest way for sync variables in skript :) Very stable and very fast! Working on paperspigot 1.17.1 :)
    1. Govindas
      Author's Response
      Thank you for the great review, I have added 1.17 to list of tested versions.
  5. rigbotjr
    rigbotjr
    5/5,
    Version: 1.1.2
    This addon is game changing. I've been using it for a bit now and I've had no problems. Super well made and stable too!
    1. Govindas
      Author's Response
      Thank you for the wonderful review! I'm glad you're enjoying it.