RediSkript/src/main/java/net/limework/core/Skript/elements/EffSendMessage.java

70 lines
2.5 KiB
Java
Raw Normal View History

2020-06-30 07:45:14 +00:00
package net.limework.core.skript.elements;
2020-05-10 06:52:06 +00:00
import ch.njol.skript.Skript;
import ch.njol.skript.lang.Effect;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser;
import ch.njol.util.Kleenean;
2020-06-30 07:45:14 +00:00
import net.limework.core.LimeworkSpigotCore;
2020-05-10 06:52:06 +00:00
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.event.Event;
import org.json.JSONObject;
2020-06-08 13:53:23 +00:00
import redis.clients.jedis.BinaryJedis;
2020-05-10 06:52:06 +00:00
2020-06-08 13:53:23 +00:00
import java.nio.charset.StandardCharsets;
2020-05-10 06:52:06 +00:00
public class EffSendMessage extends Effect {
2020-06-30 07:45:14 +00:00
//"hi"
2020-05-10 06:52:06 +00:00
static {
Skript.registerEffect(EffSendMessage.class, "send redis message to channel %string% with message %string%");
}
private Expression<String> channel;
private Expression<String> message;
@Override
protected void execute(Event event) {
2020-07-06 18:38:54 +00:00
LimeworkSpigotCore plugin = (LimeworkSpigotCore) Bukkit.getPluginManager().getPlugin("LimeworkSpigotCore");
2020-05-10 06:52:06 +00:00
String message = this.message.getSingle(event);
String channel = this.channel.getSingle(event);
2020-06-30 07:45:14 +00:00
if (message == null) {//checks if message equals null if true does not execute.
2020-05-10 06:52:06 +00:00
Bukkit.getLogger().warning(ChatColor.translateAlternateColorCodes('&', "&2[&aGBot&a] &cMessage Was empty Please check your code."));
return;
}
2020-05-27 11:43:16 +00:00
assert plugin != null;
2020-06-30 07:45:14 +00:00
plugin.getRm().getRedisService().execute(() -> {
BinaryJedis j = plugin.getRm().getJedisPool().getResource();
2020-05-10 06:52:06 +00:00
JSONObject json = new JSONObject();
2020-06-08 13:53:23 +00:00
json.put("Message", message);
json.put("Type", "Skript");
json.put("Date", System.nanoTime()); //for unique string every time & PING calculations
byte[] msg;
2020-06-30 07:45:14 +00:00
if (plugin.getRm().getEncryption().isEncryptionEnabled()) {
msg = plugin.getRm().getEncryption().encrypt(json.toString());
2020-06-08 13:53:23 +00:00
} else {
msg = message.getBytes(StandardCharsets.UTF_8);
}
j.publish(channel.getBytes(), msg);
//System.out.println("SkriptSide sent MESSAGE: ["+ message + "] to channel: " + channel + " and json: \n" + json.toString());
2020-05-10 06:52:06 +00:00
j.close();
});
}
@Override
public String toString(Event event, boolean b) {
return null;
}
2020-06-30 07:45:14 +00:00
2020-05-10 06:52:06 +00:00
@SuppressWarnings("unchecked")
@Override
public boolean init(Expression<?>[] expressions, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parser) {
this.channel = (Expression<String>) expressions[0];
this.message = (Expression<String>) expressions[1];
return true;
}
2020-05-10 19:10:45 +00:00
}