forked from Limework/RediSkript
New /reloadredis fully restarts the plugin with reloaded configuration & some code improvements
This commit is contained in:
parent
94f90efcf1
commit
3992ff508e
@ -1,37 +1,39 @@
|
|||||||
package net.limework.core;
|
package net.limework.core;
|
||||||
|
import net.limework.core.commands.ReloadRedis;
|
||||||
import net.limework.core.hooks.SkriptHook;
|
import net.limework.core.hooks.SkriptHook;
|
||||||
import net.limework.core.managers.RedisManager;
|
import net.limework.core.managers.RedisManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class RediSkript extends JavaPlugin {
|
public class RediSkript extends JavaPlugin {
|
||||||
|
|
||||||
//Redis manager
|
//Redis manager
|
||||||
private RedisManager rm;
|
private RedisManager rm;
|
||||||
|
|
||||||
|
public void startRedis(boolean reloadConfig) {
|
||||||
|
if (reloadConfig) {
|
||||||
|
reloadConfig();
|
||||||
|
}
|
||||||
|
rm = new RedisManager(this);
|
||||||
|
rm.start();
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
saveDefaultConfig();
|
saveDefaultConfig();
|
||||||
rm = new RedisManager(this);
|
|
||||||
Objects.requireNonNull(getServer().getPluginCommand("reloadredis")).setExecutor(rm);
|
|
||||||
if (getServer().getPluginManager().getPlugin("Skript") != null) {
|
if (getServer().getPluginManager().getPlugin("Skript") != null) {
|
||||||
|
startRedis(false);
|
||||||
|
getServer().getPluginCommand("reloadredis").setExecutor(new ReloadRedis(this));
|
||||||
new SkriptHook(this);
|
new SkriptHook(this);
|
||||||
} else {
|
} else {
|
||||||
getLogger().info("Skript wasn't found.");
|
getLogger().info("Skript wasn't found.");
|
||||||
}
|
}
|
||||||
rm.start();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
|
if (rm != null) {
|
||||||
rm.shutdown();
|
rm.shutdown();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public RedisManager getRm() {
|
public RedisManager getRm() {
|
||||||
|
28
src/main/java/net/limework/core/commands/ReloadRedis.java
Normal file
28
src/main/java/net/limework/core/commands/ReloadRedis.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package net.limework.core.commands;
|
||||||
|
|
||||||
|
import net.limework.core.RediSkript;
|
||||||
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class ReloadRedis implements CommandExecutor {
|
||||||
|
private RediSkript plugin;
|
||||||
|
public ReloadRedis(RediSkript plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
|
||||||
|
if (sender instanceof Player) {
|
||||||
|
sender.sendMessage(TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&'
|
||||||
|
, "&cYou cannot execute this command.")));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
plugin.getRm().reloadRedis();
|
||||||
|
sender.sendMessage(TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&'
|
||||||
|
, "&eRediSkript has been reloaded!")));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -1,16 +1,11 @@
|
|||||||
package net.limework.core.managers;
|
package net.limework.core.managers;
|
||||||
|
|
||||||
import net.limework.core.RediSkript;
|
import net.limework.core.RediSkript;
|
||||||
import net.limework.data.Encryption;
|
|
||||||
import net.limework.core.events.RedisMessageEvent;
|
import net.limework.core.events.RedisMessageEvent;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.limework.data.Encryption;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.configuration.Configuration;
|
import org.bukkit.configuration.Configuration;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.cryptomator.siv.UnauthenticCiphertextException;
|
import org.cryptomator.siv.UnauthenticCiphertextException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import redis.clients.jedis.BinaryJedis;
|
import redis.clients.jedis.BinaryJedis;
|
||||||
@ -25,7 +20,7 @@ import java.util.concurrent.ExecutorService;
|
|||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
public class RedisManager extends BinaryJedisPubSub implements Runnable, CommandExecutor {
|
public class RedisManager extends BinaryJedisPubSub implements Runnable {
|
||||||
|
|
||||||
private RediSkript plugin;
|
private RediSkript plugin;
|
||||||
|
|
||||||
@ -39,7 +34,7 @@ public class RedisManager extends BinaryJedisPubSub implements Runnable, Command
|
|||||||
private BinaryJedis subscribeJedis;
|
private BinaryJedis subscribeJedis;
|
||||||
private List<String> channels;
|
private List<String> channels;
|
||||||
private AtomicBoolean isShuttingDown = new AtomicBoolean(false);
|
private AtomicBoolean isShuttingDown = new AtomicBoolean(false);
|
||||||
private AtomicBoolean isRedisOnline = new AtomicBoolean();
|
private AtomicBoolean isOnline = new AtomicBoolean();
|
||||||
private Encryption encryption;
|
private Encryption encryption;
|
||||||
|
|
||||||
|
|
||||||
@ -76,10 +71,9 @@ public class RedisManager extends BinaryJedisPubSub implements Runnable, Command
|
|||||||
while (!isShuttingDown.get()) {
|
while (!isShuttingDown.get()) {
|
||||||
isKilled.set(false);
|
isKilled.set(false);
|
||||||
try {
|
try {
|
||||||
message("&e[Jedis] &cConnecting to redis...........");
|
message("&2[&aRediSkript&a] &cConnecting to redis...");
|
||||||
if (!this.subscribeJedis.isConnected()) this.subscribeJedis = this.jedisPool.getResource();
|
if (!this.subscribeJedis.isConnected()) this.subscribeJedis = this.jedisPool.getResource();
|
||||||
isRedisOnline.set(true);
|
message("&2[&aRediSkript&a] &aRedis connected!");
|
||||||
message("&e[Jedis] &aRedis Connected");
|
|
||||||
int byteArr2dSize = 1;
|
int byteArr2dSize = 1;
|
||||||
byte[][] channelsInByte = new byte[channels.size()][byteArr2dSize];
|
byte[][] channelsInByte = new byte[channels.size()][byteArr2dSize];
|
||||||
boolean reInitializeByteArray;
|
boolean reInitializeByteArray;
|
||||||
@ -102,11 +96,10 @@ public class RedisManager extends BinaryJedisPubSub implements Runnable, Command
|
|||||||
this.subscribeJedis.subscribe(this, channelsInByte);
|
this.subscribeJedis.subscribe(this, channelsInByte);
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
message("&e[Jedis] &cConnection to redis has failed! &ereconnecting...");
|
message("&2[&aRediSkript&a] &cConnection to redis has failed! &ereconnecting...");
|
||||||
if (this.subscribeJedis != null) {
|
if (this.subscribeJedis != null) {
|
||||||
this.subscribeJedis.close();
|
this.subscribeJedis.close();
|
||||||
}
|
}
|
||||||
isRedisOnline.set(false);
|
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
@ -162,10 +155,6 @@ public class RedisManager extends BinaryJedisPubSub implements Runnable, Command
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean IsRedisOnline() {
|
|
||||||
return isRedisOnline.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
public JedisPool getJedisPool() {
|
public JedisPool getJedisPool() {
|
||||||
return jedisPool;
|
return jedisPool;
|
||||||
}
|
}
|
||||||
@ -174,27 +163,12 @@ public class RedisManager extends BinaryJedisPubSub implements Runnable, Command
|
|||||||
return RedisService;
|
return RedisService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AtomicBoolean getIsShuttingDown() {
|
public AtomicBoolean isShuttingDown() {
|
||||||
return isShuttingDown;
|
return isShuttingDown;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AtomicBoolean getIsRedisOnline() {
|
public void reloadRedis() {
|
||||||
return isRedisOnline;
|
this.isKilled.set(true);
|
||||||
}
|
|
||||||
|
|
||||||
public Encryption getEncryption() {
|
|
||||||
return encryption;
|
|
||||||
}
|
|
||||||
|
|
||||||
// the /reloadredis command
|
|
||||||
@Override
|
|
||||||
public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args) {
|
|
||||||
if (sender instanceof Player) {
|
|
||||||
sender.sendMessage(TextComponent.fromLegacyText(ChatColor.translateAlternateColorCodes('&'
|
|
||||||
, "&cYou cannot execute this command.")));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
isKilled.set(true);
|
|
||||||
try {
|
try {
|
||||||
if (this.subscribeJedis != null) {
|
if (this.subscribeJedis != null) {
|
||||||
this.unsubscribe();
|
this.unsubscribe();
|
||||||
@ -203,7 +177,13 @@ public class RedisManager extends BinaryJedisPubSub implements Runnable, Command
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
start();
|
this.shutdown();
|
||||||
return false;
|
plugin.startRedis(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public Encryption getEncryption() {
|
||||||
|
return encryption;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import ch.njol.skript.lang.Expression;
|
|||||||
import ch.njol.skript.lang.SkriptParser;
|
import ch.njol.skript.lang.SkriptParser;
|
||||||
import ch.njol.util.Kleenean;
|
import ch.njol.util.Kleenean;
|
||||||
import net.limework.core.RediSkript;
|
import net.limework.core.RediSkript;
|
||||||
|
import net.limework.core.managers.RedisManager;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
@ -16,7 +17,7 @@ import java.nio.charset.StandardCharsets;
|
|||||||
|
|
||||||
public class EffSendMessage extends Effect {
|
public class EffSendMessage extends Effect {
|
||||||
static {
|
static {
|
||||||
Skript.registerEffect(EffSendMessage.class, "send redis message to channel %string% with message %string%");
|
Skript.registerEffect(EffSendMessage.class, "send redis message to channel %string% with [message] %string%", "send redis message %string% to [channel] %string%");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -26,23 +27,31 @@ public class EffSendMessage extends Effect {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void execute(Event event) {
|
protected void execute(Event event) {
|
||||||
|
|
||||||
RediSkript plugin = (RediSkript) Bukkit.getPluginManager().getPlugin("RediSkript");
|
RediSkript plugin = (RediSkript) Bukkit.getPluginManager().getPlugin("RediSkript");
|
||||||
|
|
||||||
String message = this.message.getSingle(event);
|
String message = this.message.getSingle(event);
|
||||||
String channel = this.channel.getSingle(event);
|
String channel = this.channel.getSingle(event);
|
||||||
if (message == null) {//checks if message equals null if true does not execute.
|
|
||||||
Bukkit.getLogger().warning(ChatColor.translateAlternateColorCodes('&', "&2[&aGBot&a] &cMessage Was empty Please check your code."));
|
if (message == null) {
|
||||||
|
Bukkit.getLogger().warning(ChatColor.translateAlternateColorCodes('&', "&2[&aRediSkript&a] &cRedis message was empty. Please check your code."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (channel == null) {
|
||||||
|
Bukkit.getLogger().warning(ChatColor.translateAlternateColorCodes('&', "&2[&aRediSkript&a] &cChannel was empty. Please check your code."));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
assert plugin != null;
|
assert plugin != null;
|
||||||
plugin.getRm().getRedisService().execute(() -> {
|
RedisManager manager = plugin.getRm();
|
||||||
BinaryJedis j = plugin.getRm().getJedisPool().getResource();
|
manager.getRedisService().execute(() -> {
|
||||||
|
BinaryJedis j = manager.getJedisPool().getResource();
|
||||||
JSONObject json = new JSONObject();
|
JSONObject json = new JSONObject();
|
||||||
json.put("Message", message);
|
json.put("Message", message);
|
||||||
json.put("Type", "Skript");
|
json.put("Type", "Skript");
|
||||||
json.put("Date", System.currentTimeMillis()); //for unique string every time & PING calculations
|
json.put("Date", System.currentTimeMillis()); //for unique string every time & PING calculations
|
||||||
byte[] msg;
|
byte[] msg;
|
||||||
if (plugin.getRm().getEncryption().isEncryptionEnabled()) {
|
if (manager.getEncryption().isEncryptionEnabled()) {
|
||||||
msg = plugin.getRm().getEncryption().encrypt(json.toString());
|
msg = manager.getEncryption().encrypt(json.toString());
|
||||||
} else {
|
} else {
|
||||||
msg = json.toString().getBytes(StandardCharsets.UTF_8);
|
msg = json.toString().getBytes(StandardCharsets.UTF_8);
|
||||||
}
|
}
|
||||||
@ -60,8 +69,13 @@ public class EffSendMessage extends Effect {
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public boolean init(Expression<?>[] expressions, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parser) {
|
public boolean init(Expression<?>[] expressions, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parser) {
|
||||||
|
if (matchedPattern == 0) {
|
||||||
this.channel = (Expression<String>) expressions[0];
|
this.channel = (Expression<String>) expressions[0];
|
||||||
this.message = (Expression<String>) expressions[1];
|
this.message = (Expression<String>) expressions[1];
|
||||||
|
} else {
|
||||||
|
this.channel = (Expression<String>) expressions[1];
|
||||||
|
this.message = (Expression<String>) expressions[0];
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ name: RediSkript
|
|||||||
version: ${project.version}
|
version: ${project.version}
|
||||||
authors: [Govindas, ham1255, DaemonicKing]
|
authors: [Govindas, ham1255, DaemonicKing]
|
||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
softdepend:
|
depend:
|
||||||
- Skript
|
- Skript
|
||||||
commands:
|
commands:
|
||||||
reloadredis:
|
reloadredis:
|
||||||
|
Loading…
Reference in New Issue
Block a user