Skip to content

Instantly share code, notes, and snippets.

@missionarydev
Created February 12, 2018 23:39
Show Gist options
  • Save missionarydev/b19a0689c3810f0124393f3213f95266 to your computer and use it in GitHub Desktop.
Save missionarydev/b19a0689c3810f0124393f3213f95266 to your computer and use it in GitHub Desktop.
public class JedisSubscriberImpl extends JedisPubSub {
private static final JsonParser JSON_PARSER = new JsonParser();
private static final String STAFF_PERMISSION = "staff";
private final ModMode plugin;
public JedisSubscriberImpl(ModMode plugin) {
this.plugin = plugin;
}
@Override
public void onMessage(String channel, String message) {
JsonObject object = JSON_PARSER.parse(message).getAsJsonObject();
Actions action = Actions.valueOf(object.get("action").getAsString());
if (action == Actions.STAFFCHAT) {
JsonObject payload = object.get("payload").getAsJsonObject();
String msg = payload.get("message").getAsString();
String sender = payload.get("sender").getAsString();
String server = payload.get("server").getAsString();
Runnable runnable = () -> plugin.getServer().getOnlinePlayers().stream().filter(o -> o.hasPermission(STAFF_PERMISSION)).forEach(o -> o.sendMessage(plugin.getConfigurationHandler().getStaffChatMessage().replace("%server%", server).replace("%message%", msg).replace("%sender%", sender)));
plugin.getServer().getScheduler().runTask(plugin, runnable);
} else if (action == Actions.REPORT) {
JsonObject payload = object.get("payload").getAsJsonObject();
String sender = payload.get("sender").getAsString();
String reportmessage = payload.get("message").getAsString();
String reported = payload.get("reported").getAsString();
String server = payload.get("server").getAsString();
Runnable runnable = () -> plugin.getServer().getOnlinePlayers().stream().filter(o -> o.hasPermission(STAFF_PERMISSION)).forEach(o -> o.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c[Report] " + reported + "&e has been reported by &3" + sender + "&e for &c" + reportmessage + "&e on &3" + server + "&e.")));
plugin.getServer().getScheduler().runTask(plugin, runnable);
} else if (action == Actions.REQUEST) {
JsonObject payload = object.get("payload").getAsJsonObject();
String sender = payload.get("sender").getAsString();
String reqmsg = payload.get("message").getAsString();
String server = payload.get("server").getAsString();
Runnable runnable = () -> plugin.getServer().getOnlinePlayers().stream().filter(o -> o.hasPermission(STAFF_PERMISSION)).forEach(o -> o.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3[Request] &c" + sender + "&e has requested &c" + reqmsg + "&e on &3" + server + "&e.")));
plugin.getServer().getScheduler().runTask(plugin, runnable);
} else if (action == Actions.STAFF_JOIN) {
JsonObject payload = object.get("payload").getAsJsonObject();
String player = payload.get("player").getAsString();
String server = payload.get("server").getAsString();
Runnable runnable = () -> plugin.getServer().getOnlinePlayers().stream().filter(o -> o.hasPermission(STAFF_PERMISSION)).forEach(o -> o.sendMessage(plugin.getConfigurationHandler().getJoinMessage().replace("%player%", player).replace("%server%", server)));
plugin.getServer().getScheduler().runTask(plugin, runnable);
} else if (action == Actions.DISABLE_HELP) {
JsonObject payload = object.get("payload").getAsJsonObject();
boolean status = payload.get("status").getAsBoolean();
Actions.DisableHelpActions actions = Actions.DisableHelpActions.valueOf(payload.get("type").getAsString());
Runnable runnable = () -> {
switch (actions) {
case REPORTS: {
plugin.getActionManager().getIsRequests().set(status);
break;
}
case REQUESTS: {
plugin.getActionManager().getIsRequests().set(status);
break;
}
}
};
plugin.getServer().getScheduler().runTask(plugin, runnable);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment