From fc485b0fe083dc158f6f681b3d6a967b43f07a99 Mon Sep 17 00:00:00 2001 From: Pepich Date: Thu, 11 May 2017 20:02:37 +0200 Subject: [PATCH] Added static wrappers for datamanager and socialspy functions --- .../modules/chatgroups/Chatgroups.java | 21 +- .../modules/datamanager/DataManager.java | 184 ++++++++++++++---- .../redstoner/modules/message/Message.java | 6 +- .../modules/socialspy/Socialspy.java | 108 ++++++---- 4 files changed, 226 insertions(+), 93 deletions(-) diff --git a/src/com/redstoner/modules/chatgroups/Chatgroups.java b/src/com/redstoner/modules/chatgroups/Chatgroups.java index 166add0..1a05597 100644 --- a/src/com/redstoner/modules/chatgroups/Chatgroups.java +++ b/src/com/redstoner/modules/chatgroups/Chatgroups.java @@ -29,7 +29,7 @@ import com.redstoner.modules.socialspy.Socialspy; * * @author Pepich */ @AutoRegisterListener -@Version(major = 2, minor = 1, revision = 1, compatible = 2) +@Version(major = 2, minor = 1, revision = 2, compatible = 2) public class Chatgroups implements Module, Listener { private static final char defaultKey = ':'; @@ -367,15 +367,14 @@ public class Chatgroups implements Module, Listener }, '&'); if (ModuleLoader.getModule("Socialspy") != null) { - Socialspy.getSocialspy().spyBroadcast(sender, "§e" + group + " §a(cg)", message, "/cg", - new BroadcastFilter() - { - @Override - public boolean sendTo(CommandSender recipient) - { - return getGroup(recipient) == null || !getGroup(recipient).equals(group); - } - }); + Socialspy.spyBroadcast(sender, "§e" + group + " §a(cg)", message, "/cg", new BroadcastFilter() + { + @Override + public boolean sendTo(CommandSender recipient) + { + return getGroup(recipient) == null || !getGroup(recipient).equals(group); + } + }); } if (getGroup(Bukkit.getConsoleSender()) == null || !getGroup(Bukkit.getConsoleSender()).equals(group)) { @@ -404,7 +403,7 @@ public class Chatgroups implements Module, Listener }); if (ModuleLoader.getModule("Socialspy") != null) { - Socialspy.getSocialspy().spyBroadcast(Bukkit.getConsoleSender(), "§e" + group + " §a(cg)", message, "/cg", + Socialspy.spyBroadcast(Bukkit.getConsoleSender(), "§e" + group + " §a(cg)", message, "/cg", new BroadcastFilter() { @Override diff --git a/src/com/redstoner/modules/datamanager/DataManager.java b/src/com/redstoner/modules/datamanager/DataManager.java index 0821253..fdd2acb 100644 --- a/src/com/redstoner/modules/datamanager/DataManager.java +++ b/src/com/redstoner/modules/datamanager/DataManager.java @@ -2,7 +2,8 @@ package com.redstoner.modules.datamanager; import java.io.File; import java.io.FilenameFilter; -import java.util.UUID; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; @@ -22,7 +23,7 @@ import com.redstoner.misc.Utils; import com.redstoner.modules.CoreModule; @AutoRegisterListener -@Version(major = 3, minor = 0, revision = 7, compatible = 3) +@Version(major = 3, minor = 1, revision = 0, compatible = 3) public final class DataManager implements CoreModule, Listener { private final File dataFolder = new File(Main.plugin.getDataFolder(), "data"); @@ -35,7 +36,7 @@ public final class DataManager implements CoreModule, Listener dataFolder.mkdirs(); for (Player p : Bukkit.getOnlinePlayers()) { - loadData(p.getUniqueId()); + loadData_(p.getUniqueId().toString()); } } @@ -51,7 +52,7 @@ public final class DataManager implements CoreModule, Listener @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { - loadData(event.getPlayer().getUniqueId()); + loadData_(event.getPlayer().getUniqueId().toString()); } @EventHandler @@ -60,33 +61,71 @@ public final class DataManager implements CoreModule, Listener saveAndUnload(event.getPlayer()); } - @SuppressWarnings("unchecked") - public void loadData(UUID id) + public static void loadData(String id) { - JSONObject playerData = JsonManager.getObject(new File(dataFolder, id.toString() + ".json")); + try + { + Method m = DataManager.class.getDeclaredMethod("loadData_", String.class); + m.invoke(ModuleLoader.getModule("DataManager"), id); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + } + + @SuppressWarnings("unchecked") + public void loadData_(String id) + { + JSONObject playerData = JsonManager.getObject(new File(dataFolder, id + ".json")); if (playerData == null) playerData = new JSONObject(); data.put(id.toString(), playerData); } - public Object getOrDefault(CommandSender sender, String key, Object fallback) + public static Object getOrDefault(CommandSender sender, String key, Object fallback) { - Object o = getData(sender, Utils.getCaller("DataManager"), key); + return getOrDefault(sender, Utils.getCaller("DataManager"), key, fallback); + } + + public static Object getOrDefault(CommandSender sender, String module, String key, Object fallback) + { + try + { + Method m = DataManager.class.getDeclaredMethod("getOrDefault_", CommandSender.class, String.class, + String.class, Object.class); + return m.invoke(ModuleLoader.getModule("DataManager"), sender, module, key, fallback); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + return fallback; + } + + public Object getOrDefault_(CommandSender sender, String module, String key, Object fallback) + { + Object o = getData_(sender, module, key); return o == null ? fallback : o; } - public Object getOrDefault(CommandSender sender, String module, String key, Object fallback) - { - Object o = getData(sender, module, key); - return o == null ? fallback : o; - } - - public Object getData(CommandSender sender, String key) + public static Object getData(CommandSender sender, String key) { return getData(sender, Utils.getCaller("DataManager"), key); } - public Object getData(CommandSender sender, String module, String key) + public static Object getData(CommandSender sender, String module, String key) + { + try + { + Method m = DataManager.class.getDeclaredMethod("getData_", CommandSender.class, String.class, String.class); + return m.invoke(ModuleLoader.getModule("DataManager"), sender, module, key); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + return null; + } + + public Object getData_(CommandSender sender, String module, String key) { String id; if (sender instanceof Player) @@ -112,13 +151,26 @@ public final class DataManager implements CoreModule, Listener return ((JSONObject) playerData.get(module)).get(key); } - public void setData(CommandSender sender, String key, Object value) + public static void setData(CommandSender sender, String key, Object value) { setData(sender, Utils.getCaller("DataManager"), key, value); } + public static void setData(CommandSender sender, String module, String key, Object value) + { + try + { + Method m = DataManager.class.getDeclaredMethod("setData_", CommandSender.class, String.class, String.class, + Object.class); + m.invoke(ModuleLoader.getModule("DataManager"), sender, module, key, value); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + } + @SuppressWarnings("unchecked") - public void setData(CommandSender sender, String module, String key, Object value) + public void setData_(CommandSender sender, String module, String key, Object value) { String id; if (sender instanceof Player) @@ -134,7 +186,7 @@ public final class DataManager implements CoreModule, Listener ((JSONObject) data.get(id)).put(module, moduleData); } moduleData.put(key, value); - save(sender); + save_(sender); } else loadAndSet(id, module, key, value); @@ -157,12 +209,25 @@ public final class DataManager implements CoreModule, Listener JsonManager.save(playerData, dataFile); } - public void removeData(CommandSender sender, String key) + public static void removeData(CommandSender sender, String key) { removeData(sender, Utils.getCaller("DataManager"), key); } - public void removeData(CommandSender sender, String module, String key) + public static void removeData(CommandSender sender, String module, String key) + { + try + { + Method m = DataManager.class.getDeclaredMethod("removeData_", CommandSender.class, String.class, + String.class); + m.invoke(ModuleLoader.getModule("DataManager"), sender, module, key); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + } + + public void removeData_(CommandSender sender, String module, String key) { String id; if (sender instanceof Player) @@ -175,7 +240,7 @@ public final class DataManager implements CoreModule, Listener if (moduleData == null) return; moduleData.remove(key); - save(sender); + save_(sender); } else loadAndRemove(id, module, key); @@ -194,12 +259,24 @@ public final class DataManager implements CoreModule, Listener JsonManager.save(playerData, dataFile); } - public void migrateAll(String oldName) + public static void migrateAll(String oldName) { migrateAll(oldName, Utils.getCaller("DataManager")); } - public void migrateAll(String oldName, String newName) + public static void migrateAll(String oldName, String newName) + { + try + { + Method m = DataManager.class.getDeclaredMethod("migrateAll_", String.class, String.class); + m.invoke(ModuleLoader.getModule("DataManager"), oldName, newName); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + } + + public void migrateAll_(String oldName, String newName) { for (String s : dataFolder.list(new FilenameFilter() { @@ -210,23 +287,35 @@ public final class DataManager implements CoreModule, Listener } })) { - migrate(s.replace(".json", ""), oldName, newName); + migrate_(s.replace(".json", ""), oldName, newName); } } - public void migrate(String id, String oldName) + public static void migrate(String id, String oldName) { migrate(id, oldName, Utils.getCaller("DataManager")); } + public static void migrate(String id, String oldName, String newName) + { + try + { + Method m = DataManager.class.getDeclaredMethod("migrate_", String.class, String.class, String.class); + m.invoke(ModuleLoader.getModule("DataManager"), id, oldName, newName); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + } + @SuppressWarnings("unchecked") - public void migrate(String id, String oldName, String newName) + public void migrate_(String id, String oldName, String newName) { if (data.containsKey(id)) { data.put(newName, data.get(oldName)); data.remove(oldName); - save(id); + save_(id); } else loadAndMigrate(id, oldName, newName); @@ -242,17 +331,41 @@ public final class DataManager implements CoreModule, Listener JsonManager.save(data, dataFile); } - public void save(CommandSender sender) + public static void save(CommandSender sender) + { + try + { + Method m = DataManager.class.getDeclaredMethod("save_", CommandSender.class); + m.invoke(ModuleLoader.getModule("DataManager"), sender); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + } + + public void save_(CommandSender sender) { String id; if (sender instanceof Player) id = ((Player) sender).getUniqueId().toString(); else id = "CONSOLE"; - save(id); + save_(id); } - public void save(String id) + public static void save(String id) + { + try + { + Method m = DataManager.class.getDeclaredMethod("save_", String.class); + m.invoke(ModuleLoader.getModule("DataManager"), id); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + } + + public void save_(String id) { Object raw = data.get(id); if (raw == null || ((JSONObject) raw).size() == 0) @@ -272,12 +385,7 @@ public final class DataManager implements CoreModule, Listener private void saveAndUnload(String id) { - save(id); + save_(id); data.remove(id); } - - public static DataManager getDataManager() - { - return (DataManager) ModuleLoader.getModule("DataManager"); - } } diff --git a/src/com/redstoner/modules/message/Message.java b/src/com/redstoner/modules/message/Message.java index e6b76a4..f3d39c8 100644 --- a/src/com/redstoner/modules/message/Message.java +++ b/src/com/redstoner/modules/message/Message.java @@ -17,7 +17,7 @@ import com.redstoner.misc.Utils; import com.redstoner.modules.Module; import com.redstoner.modules.socialspy.Socialspy; -@Version(major = 3, minor = 3, revision = 0, compatible = 3) +@Version(major = 3, minor = 3, revision = 1, compatible = 3) public class Message implements Module { HashMap replyTargets = new HashMap(); @@ -45,7 +45,7 @@ public class Message implements Module { message = Utils.colorify(message, sender); if (ModuleLoader.getModule("Socialspy") != null) - Socialspy.getSocialspy().spyBroadcast(sender, p, message, "/m", new BroadcastFilter() + Socialspy.spyBroadcast(sender, p, message, "/m", new BroadcastFilter() { @Override public boolean sendTo(CommandSender recipient) @@ -74,7 +74,7 @@ public class Message implements Module { message = Utils.colorify(message, sender); if (ModuleLoader.getModule("Socialspy") != null) - Socialspy.getSocialspy().spyBroadcast(sender, target, message, "/m", new BroadcastFilter() + Socialspy.spyBroadcast(sender, target, message, "/m", new BroadcastFilter() { @Override public boolean sendTo(CommandSender recipient) diff --git a/src/com/redstoner/modules/socialspy/Socialspy.java b/src/com/redstoner/modules/socialspy/Socialspy.java index 1e3434d..8c77b75 100644 --- a/src/com/redstoner/modules/socialspy/Socialspy.java +++ b/src/com/redstoner/modules/socialspy/Socialspy.java @@ -1,5 +1,7 @@ package com.redstoner.modules.socialspy; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.Arrays; import org.bukkit.Bukkit; @@ -18,7 +20,7 @@ import com.redstoner.misc.Utils; import com.redstoner.modules.CoreModule; import com.redstoner.modules.datamanager.DataManager; -@Version(major = 3, minor = 1, revision = 1, compatible = 3) +@Version(major = 3, minor = 1, revision = 3, compatible = 3) public class Socialspy implements CoreModule { @Override @@ -37,7 +39,7 @@ public class Socialspy implements CoreModule public boolean prefix(CommandSender sender, String prefix) { Utils.sendMessage(sender, null, "Set your prefix to: " + prefix); - DataManager.getDataManager().setData(sender, "prefix", prefix); + DataManager.setData(sender, "prefix", prefix); return true; } @@ -51,7 +53,7 @@ public class Socialspy implements CoreModule public boolean configFormat(CommandSender sender, String format) { Utils.sendMessage(sender, null, "Set your format to: " + format); - DataManager.getDataManager().setData(sender, "format", format); + DataManager.setData(sender, "format", format); return true; } @@ -59,7 +61,7 @@ public class Socialspy implements CoreModule public boolean stripcolorOn(CommandSender sender) { Utils.sendMessage(sender, null, "Enabled stripping colors!"); - DataManager.getDataManager().setData(sender, "stripcolor", true); + DataManager.setData(sender, "stripcolor", true); return true; } @@ -67,16 +69,16 @@ public class Socialspy implements CoreModule public boolean stripcolorOff(CommandSender sender) { Utils.sendMessage(sender, null, "Disabled stripping colors!"); - DataManager.getDataManager().setData(sender, "stripcolor", false); + DataManager.setData(sender, "stripcolor", false); return true; } @Command(hook = "stripcolor") public boolean stripcolor(CommandSender sender) { - boolean b = (boolean) DataManager.getDataManager().getOrDefault(sender, "stripcolor", true); + boolean b = (boolean) DataManager.getOrDefault(sender, "stripcolor", true); Utils.sendMessage(sender, null, (b ? "Disabled" : "Enabled") + " stripping colors!"); - DataManager.getDataManager().setData(sender, "stripcolor", !b); + DataManager.setData(sender, "stripcolor", !b); return true; } @@ -84,7 +86,7 @@ public class Socialspy implements CoreModule public boolean spyOn(CommandSender sender) { Utils.sendMessage(sender, null, "Enabled socialspy!"); - DataManager.getDataManager().setData(sender, "enabled", true); + DataManager.setData(sender, "enabled", true); return true; } @@ -92,16 +94,16 @@ public class Socialspy implements CoreModule public boolean spyOff(CommandSender sender) { Utils.sendMessage(sender, null, "Disabled socialspy!"); - DataManager.getDataManager().setData(sender, "enabled", false); + DataManager.setData(sender, "enabled", false); return true; } @Command(hook = "toggle") public boolean spyToggle(CommandSender sender) { - boolean b = (boolean) DataManager.getDataManager().getOrDefault(sender, "enabled", false); + boolean b = (boolean) DataManager.getOrDefault(sender, "enabled", false); Utils.sendMessage(sender, null, (b ? "Disabled" : "Enabled") + " socialspy!"); - DataManager.getDataManager().setData(sender, "enabled", !b); + DataManager.setData(sender, "enabled", !b); return true; } @@ -125,8 +127,7 @@ public class Socialspy implements CoreModule public boolean commands_list(CommandSender sender) { Utils.sendModuleHeader(sender); - JSONArray commands = (JSONArray) DataManager.getDataManager().getOrDefault(sender, "commands", - getDefaultCommandList()); + JSONArray commands = (JSONArray) DataManager.getOrDefault(sender, "commands", getDefaultCommandList()); if (commands == null || commands.size() == 0) Utils.sendErrorMessage(sender, "", "You are not listening to any commands!"); else @@ -151,10 +152,9 @@ public class Socialspy implements CoreModule @Command(hook = "commands_add") public boolean commands_add(CommandSender sender, String command) { - JSONArray commands = (JSONArray) DataManager.getDataManager().getOrDefault(sender, "commands", - getDefaultCommandList()); + JSONArray commands = (JSONArray) DataManager.getOrDefault(sender, "commands", getDefaultCommandList()); commands.add(command); - DataManager.getDataManager().setData(sender, "commands", commands); + DataManager.setData(sender, "commands", commands); Utils.sendMessage(sender, null, "You are now spying on &e" + command, '&'); return true; } @@ -162,52 +162,83 @@ public class Socialspy implements CoreModule @Command(hook = "commands_del") public boolean commands_del(CommandSender sender, String command) { - JSONArray commands = (JSONArray) DataManager.getDataManager().getOrDefault(sender, "commands", - getDefaultCommandList()); + JSONArray commands = (JSONArray) DataManager.getOrDefault(sender, "commands", getDefaultCommandList()); commands.remove(command); - DataManager.getDataManager().setData(sender, "commands", commands); + DataManager.setData(sender, "commands", commands); Utils.sendMessage(sender, null, "You are no longer spying on &e" + command, '&'); return true; } - public void spyBroadcast(CommandSender sender, CommandSender target, String message, String command, + public static void spyBroadcast(CommandSender sender, CommandSender target, String message, String command, + BroadcastFilter filter) + { + try + { + Method m = Socialspy.class.getDeclaredMethod("spyBroadcast_", CommandSender.class, CommandSender.class, + String.class, String.class, BroadcastFilter.class); + m.invoke(ModuleLoader.getModule("Socialspy"), sender, target, message, command, filter); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + } + + public void spyBroadcast_(CommandSender sender, CommandSender target, String message, String command, BroadcastFilter filter) { for (Player p : Bukkit.getOnlinePlayers()) { - if ((boolean) DataManager.getDataManager().getOrDefault(p, "enabled", false)) + if ((boolean) DataManager.getOrDefault(p, "enabled", false)) if (p.hasPermission("utils.socialspy")) { - if (filter == null || filter.sendTo(p)) - Utils.sendMessage(p, "", formatMessage(p, sender, target, message, command)); + if (((JSONArray) DataManager.getOrDefault(p, "commands", getDefaultCommandList())) + .contains(command)) + if (filter == null || filter.sendTo(p)) + Utils.sendMessage(p, "", formatMessage(p, sender, target, message, command)); } else - DataManager.getDataManager().setData(sender, "enabled", false); + DataManager.setData(sender, "enabled", false); } } - public void spyBroadcast(CommandSender sender, String target, String message, String command, + public static void spyBroadcast(CommandSender sender, String target, String message, String command, + BroadcastFilter filter) + { + try + { + Method m = Socialspy.class.getDeclaredMethod("spyBroadcast_", CommandSender.class, String.class, + String.class, String.class, BroadcastFilter.class); + m.invoke(ModuleLoader.getModule("Socialspy"), sender, target, message, command, filter); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + } + + public void spyBroadcast_(CommandSender sender, String target, String message, String command, BroadcastFilter filter) { for (Player p : Bukkit.getOnlinePlayers()) { - if ((boolean) DataManager.getDataManager().getOrDefault(p, "enabled", false)) + if ((boolean) DataManager.getOrDefault(p, "enabled", false)) if (p.hasPermission("utils.socialspy")) { - if (filter == null || filter.sendTo(p)) - Utils.sendMessage(p, "", formatMessage(p, sender, target, message, command)); + if (((JSONArray) DataManager.getOrDefault(p, "commands", getDefaultCommandList())) + .contains(command)) + if (filter == null || filter.sendTo(p)) + Utils.sendMessage(p, "", formatMessage(p, sender, target, message, command)); } else - DataManager.getDataManager().setData(sender, "enabled", false); + DataManager.setData(sender, "enabled", false); } } private String formatMessage(CommandSender formatHolder, CommandSender sender, CommandSender target, String message, String command) { - if ((boolean) DataManager.getDataManager().getOrDefault(formatHolder, "stripcolor", false)) + if ((boolean) DataManager.getOrDefault(formatHolder, "stripcolor", false)) message = ChatColor.stripColor(message); - String format = (String) DataManager.getDataManager().getOrDefault(formatHolder, "format", getDefaultFormat()); + String format = (String) DataManager.getOrDefault(formatHolder, "format", getDefaultFormat()); // Replace escaped % with placeholder format = format.replace("%%", "§§"); // Sender name @@ -217,7 +248,7 @@ public class Socialspy implements CoreModule format = format.replace("%t", Utils.getName(target)); format = format.replace("%T", target.getName()); // Prefix - String prefix = (String) DataManager.getDataManager().getOrDefault(formatHolder, "prefix", getDefaultPrefix()); + String prefix = (String) DataManager.getOrDefault(formatHolder, "prefix", getDefaultPrefix()); format = format.replace("%p", prefix); // Apply colors to halfway replaced String format = ChatColor.translateAlternateColorCodes('&', format); @@ -232,9 +263,9 @@ public class Socialspy implements CoreModule private String formatMessage(CommandSender formatHolder, CommandSender sender, String target, String message, String command) { - if ((boolean) DataManager.getDataManager().getOrDefault(formatHolder, "stripcolor", false)) + if ((boolean) DataManager.getOrDefault(formatHolder, "stripcolor", false)) message = ChatColor.stripColor(message); - String format = (String) DataManager.getDataManager().getOrDefault(formatHolder, "format", getDefaultFormat()); + String format = (String) DataManager.getOrDefault(formatHolder, "format", getDefaultFormat()); // Replace escaped % with placeholder format = format.replace("%%", "§§"); // Sender name @@ -244,7 +275,7 @@ public class Socialspy implements CoreModule format = format.replace("%t", target); format = format.replace("%T", target); // Prefix - String prefix = (String) DataManager.getDataManager().getOrDefault(formatHolder, "prefix", getDefaultPrefix()); + String prefix = (String) DataManager.getOrDefault(formatHolder, "prefix", getDefaultPrefix()); format = format.replace("%p", prefix); // Apply colors to halfway replaced String format = ChatColor.translateAlternateColorCodes('&', format); @@ -269,12 +300,7 @@ public class Socialspy implements CoreModule @Command(hook = "migrate") public boolean migrate(CommandSender sender) { - DataManager.getDataManager().migrateAll("Message"); + DataManager.migrateAll("Message"); return true; } - - public static Socialspy getSocialspy() - { - return (Socialspy) ModuleLoader.getModule("Socialspy"); - } }