RediSkript/README.md

104 lines
5.0 KiB
Markdown
Raw Normal View History

2021-05-15 23:05:37 +00:00
2022-03-22 10:43:19 +00:00
## RediSkript
Allows you to communicate between your Minecraft servers with use of Redis and Skript, it's very fast and easy to use.
2020-10-24 11:32:48 +00:00
2020-12-16 10:55:19 +00:00
Skript: https://github.com/SkriptLang/Skript
2020-12-16 10:55:43 +00:00
2020-12-16 10:55:19 +00:00
RediSkript spigot page: https://www.spigotmc.org/resources/rediskript-communicate-between-servers-with-ease.85067/
2020-12-26 12:28:13 +00:00
Jedis: https://github.com/redis/jedis
2020-10-24 11:32:48 +00:00
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!
2020-12-14 12:20:17 +00:00
It is developed and maintained by Govindas & the team of Govindas Limework developers.
2020-10-24 11:32:48 +00:00
2022-03-22 10:44:35 +00:00
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.
2022-03-22 10:43:19 +00:00
### Redis Message
2020-10-24 11:32:48 +00:00
```
on redis message:
if redis channel is "world":
broadcast "%redis message% %redis channel% %redis message date%"
2020-10-24 11:32:48 +00:00
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"
```
2022-03-22 10:43:19 +00:00
### Managing variables
2020-11-28 08:12:11 +00:00
```
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
2022-03-22 10:10:17 +00:00
add 100 to variables "test::1" and "test::2" in channel "global"
remove 10 from variable "test::1" in channel "global"
2020-11-28 08:12:11 +00:00
delete variables "test::*" in channel "global"
2020-10-24 11:32:48 +00:00
2020-11-28 08:12:11 +00:00
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%
```
2020-11-28 08:14:19 +00:00
2022-03-22 10:45:51 +00:00
### Configuration
2022-03-22 10:43:19 +00:00
plugins/RediSkript/config.yml
2020-10-24 11:32:48 +00:00
```
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
2020-10-24 11:32:48 +00:00
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
2020-10-24 11:32:48 +00:00
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
2020-10-24 11:32:48 +00:00
#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
2020-10-24 11:32:48 +00:00
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
2022-03-22 10:10:17 +00:00
#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
2020-10-24 11:32:48 +00:00
EncryptMessages: true
#EncryptionKey and MacKey must be different
2022-03-22 10:10:17 +00:00
EncryptionKey: "32CHARACTERS KEY"
MacKey: "32CHARACTERS KEY"
2020-10-24 11:32:48 +00:00
2020-10-24 11:32:48 +00:00
#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
2020-10-24 11:32:48 +00:00
Channels:
- "global"
- "servername"
2020-10-24 11:32:48 +00:00
- "Channel3"
```
2021-05-23 20:44:22 +00:00
## 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](https://www.yourkit.com/java/profiler/), [YourKit .NET Profiler](https://www.yourkit.com/.net/profiler/) and [YourKit YouMonitor](https://www.yourkit.com/youmonitor/).
![YourKit](https://www.yourkit.com/images/yklogo.png)