some refactoring, make classes more well-sorted

This commit is contained in:
Govindass
2020-10-29 10:01:36 +02:00
parent dd6b9b6ee6
commit d4461f09c8
12 changed files with 35 additions and 35 deletions

View File

@@ -0,0 +1,51 @@
package net.limework.rediskript.skript;
import ch.njol.skript.Skript;
import ch.njol.skript.SkriptAddon;
import ch.njol.skript.lang.ExpressionType;
import ch.njol.skript.registrations.EventValues;
import ch.njol.skript.util.Date;
import ch.njol.skript.util.Getter;
import net.limework.rediskript.RediSkript;
import net.limework.rediskript.events.RedisMessageEvent;
import net.limework.rediskript.skript.elements.EvtRedis;
import net.limework.rediskript.skript.elements.ExprChannel;
import net.limework.rediskript.skript.elements.ExprMessage;
import net.limework.rediskript.skript.elements.ExprMessageDate;
import java.io.IOException;
public class SkriptHook {
private SkriptAddon addon;
public SkriptHook(RediSkript plugin) {
addon = Skript.registerAddon(plugin);
try {
addon.loadClasses("net.limework.core.skript", "elements");
Skript.registerEvent("redis message", EvtRedis.class, RedisMessageEvent.class, "redis message");
Skript.registerExpression(ExprChannel.class, String.class, ExpressionType.SIMPLE, "redis channel");
EventValues.registerEventValue(RedisMessageEvent.class, String.class, new Getter<String, RedisMessageEvent>() {
@Override
public String get(RedisMessageEvent e) {
return e.getChannelName();
}
}, 0);
Skript.registerExpression(ExprMessage.class, String.class, ExpressionType.SIMPLE, "redis message");
EventValues.registerEventValue(RedisMessageEvent.class, String.class, new Getter<String, RedisMessageEvent>() {
@Override
public String get(RedisMessageEvent e) {
return e.getMessage();
}
}, 0);
Skript.registerExpression(ExprMessageDate.class, Date.class, ExpressionType.SIMPLE, "redis message date");
EventValues.registerEventValue(RedisMessageEvent.class, Date.class, new Getter<Date, RedisMessageEvent>() {
@Override
public Date get(RedisMessageEvent e) {
return new Date(e.getDate());
}
}, 0);
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,82 @@
package net.limework.rediskript.skript.elements;
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;
import net.limework.rediskript.RediSkript;
import net.limework.rediskript.managers.RedisManager;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.event.Event;
import org.json.JSONObject;
import redis.clients.jedis.BinaryJedis;
import redis.clients.jedis.exceptions.JedisConnectionException;
import java.nio.charset.StandardCharsets;
public class EffSendMessage extends Effect {
static {
Skript.registerEffect(EffSendMessage.class, "send redis message %string% to [channel] %string%");
}
private Expression<String> channel;
private Expression<String> message;
@Override
protected void execute(Event event) {
RediSkript plugin = (RediSkript) Bukkit.getPluginManager().getPlugin("RediSkript");
String message = this.message.getSingle(event);
String channel = this.channel.getSingle(event);
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;
}
assert plugin != null;
JSONObject json = new JSONObject();
json.put("Message", message);
json.put("Type", "Skript");
json.put("Date", System.currentTimeMillis()); //for unique string every time & PING calculations
byte[] msg;
RedisManager manager = plugin.getRm();
if (manager.getEncryption().isEncryptionEnabled()) {
msg = manager.getEncryption().encrypt(json.toString());
} else {
msg = json.toString().getBytes(StandardCharsets.UTF_8);
}
try {
BinaryJedis j = manager.getJedisPool().getResource();
j.publish(channel.getBytes(StandardCharsets.UTF_8), msg);
j.close();
} catch (JedisConnectionException exception) {
exception.printStackTrace();
}
}
@Override
public String toString(Event event, boolean debug) {
return "send redis message " + message.toString(event, debug) + " to channel " + channel.toString(event, debug);
}
@SuppressWarnings("unchecked")
@Override
public boolean init(final Expression<?>[] expressions, final int matchedPattern, final Kleenean isDelayed, final SkriptParser.ParseResult parser) {
this.message = (Expression<String>) expressions[0];
this.channel = (Expression<String>) expressions[1];
return true;
}
}

View File

@@ -0,0 +1,27 @@
package net.limework.rediskript.skript.elements;
import ch.njol.skript.lang.Literal;
import ch.njol.skript.lang.SkriptEvent;
import ch.njol.skript.lang.SkriptParser;
import net.limework.rediskript.events.RedisMessageEvent;
import org.bukkit.event.Event;
public class EvtRedis extends SkriptEvent {
@Override
public boolean init(final Literal<?>[] literals, final int i, final SkriptParser.ParseResult parseResult) {
return true;
}
@Override
public boolean check(Event event) {
if (!(event instanceof RedisMessageEvent)) {
return false;
}
return true;
}
@Override
public String toString(Event event, boolean debug) {
return "redis message";
}
}

View File

@@ -0,0 +1,49 @@
package net.limework.rediskript.skript.elements;
import ch.njol.skript.ScriptLoader;
import ch.njol.skript.Skript;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser;
import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.skript.log.ErrorQuality;
import ch.njol.util.Kleenean;
import net.limework.rediskript.events.RedisMessageEvent;
import org.bukkit.event.Event;
public class ExprChannel extends SimpleExpression<String> {
@Override
public boolean isSingle() {
return true;
}
@Override
public Class<? extends String> getReturnType() {
return String.class;
}
@Override
public String toString(Event event, boolean b) {
return "redis channel";
}
@Override
public boolean init(final Expression<?>[] expressions, final int matchedPattern, final Kleenean isDelayed, final SkriptParser.ParseResult parseResult) {
if (!ScriptLoader.isCurrentEvent(RedisMessageEvent.class)) {
Skript.error("Cannot use 'redis channel' outside of a redis message event", ErrorQuality.SEMANTIC_ERROR);
return false;
}
return true;
}
@Override
protected String[] get(Event e) {
if (e instanceof RedisMessageEvent){
return new String[]{((RedisMessageEvent) e).getChannelName()};
}
return null;
}
}

View File

@@ -0,0 +1,49 @@
package net.limework.rediskript.skript.elements;
import ch.njol.skript.ScriptLoader;
import ch.njol.skript.Skript;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser;
import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.skript.log.ErrorQuality;
import ch.njol.util.Kleenean;
import net.limework.rediskript.events.RedisMessageEvent;
import org.bukkit.event.Event;
public class ExprMessage extends SimpleExpression<String> {
@Override
public boolean isSingle() {
return true;
}
@Override
public Class<? extends String> getReturnType() {
return String.class;
}
@Override
public String toString(Event event, boolean debug) {
return "redis message";
}
@Override
public boolean init(final Expression<?>[] expressions, final int matchedPattern, final Kleenean isDelayed, final SkriptParser.ParseResult parseResult) {
if (!ScriptLoader.isCurrentEvent(RedisMessageEvent.class)) {
Skript.error("Cannot use 'redis message' outside of a redis message event", ErrorQuality.SEMANTIC_ERROR);
return false;
}
return true;
}
@Override
protected String[] get(Event e) {
if (e instanceof RedisMessageEvent){
return new String[]{((RedisMessageEvent) e).getMessage()};
}
return null;
}
}

View File

@@ -0,0 +1,49 @@
package net.limework.rediskript.skript.elements;
import ch.njol.skript.ScriptLoader;
import ch.njol.skript.Skript;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser;
import ch.njol.skript.lang.util.SimpleExpression;
import ch.njol.skript.log.ErrorQuality;
import ch.njol.skript.util.Date;
import ch.njol.util.Kleenean;
import net.limework.rediskript.events.RedisMessageEvent;
import org.bukkit.event.Event;
public class ExprMessageDate extends SimpleExpression<Date> {
@Override
public boolean isSingle() {
return true;
}
@Override
public Class<? extends Date> getReturnType() {
return Date.class;
}
@Override
public String toString(Event event, boolean b) {
return "redis message date";
}
@Override
public boolean init(final Expression<?>[] expressions, final int matchedPattern, final Kleenean isDelayed, final SkriptParser.ParseResult parseResult) {
if (!ScriptLoader.isCurrentEvent(RedisMessageEvent.class)) {
Skript.error("Cannot use 'redis message date' outside of a redis message event", ErrorQuality.SEMANTIC_ERROR);
return false;
}
return true;
}
@Override
protected Date[] get(Event e) {
if (e instanceof RedisMessageEvent){
long date = ((RedisMessageEvent) e).getDate();
return new Date[]{new Date(date)};
}
return null;
}
}