diff --git a/src/com/redstoner/exceptions/PlayerNotFoundException.java b/src/com/redstoner/exceptions/PlayerNotFoundException.java deleted file mode 100644 index e1ac8f9..0000000 --- a/src/com/redstoner/exceptions/PlayerNotFoundException.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.redstoner.exceptions; - -public class PlayerNotFoundException extends Exception -{ - private static final long serialVersionUID = -7517266613348837760L; - - public PlayerNotFoundException() - { - super("That player could not be found!"); - } -} diff --git a/src/com/redstoner/modules/abot/Abot.java b/src/com/redstoner/modules/abot/Abot.java index 97688e8..b81651e 100644 --- a/src/com/redstoner/modules/abot/Abot.java +++ b/src/com/redstoner/modules/abot/Abot.java @@ -12,14 +12,16 @@ import org.json.simple.JSONObject; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 1, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Abot implements Module, Listener { private File answerFile = new File(Main.plugin.getDataFolder(), "abot.json"); @@ -40,7 +42,7 @@ public class Abot implements Module, Listener if (hideperm == null || !event.getPlayer().hasPermission((String) hideperm)) { event.setCancelled(true); - Utils.sendMessage(event.getPlayer(), null, (String) entry.get("message"), '&'); + getLogger().message(event.getPlayer(), (String) entry.get("message")); return; } } @@ -54,7 +56,7 @@ public class Abot implements Module, Listener answers = JsonManager.getArray(answerFile); if (answers == null) answers = new JSONArray(); - Utils.sendMessage(sender, null, "Loaded the abot.json file!"); + getLogger().message(sender, "Loaded the abot.json file!"); } @Override @@ -70,7 +72,7 @@ public class Abot implements Module, Listener { return "command abot {\n" + " reload {" + - " help Reloads answes from the .json file.;\n" + + " help Reloads answers from the .json file.;\n" + " run abot_reload;\n" + " perm utils.abot.reload;" + " }\n" + diff --git a/src/com/redstoner/modules/adminchat/Adminchat.java b/src/com/redstoner/modules/adminchat/Adminchat.java index 1887f5c..ea93103 100644 --- a/src/com/redstoner/modules/adminchat/Adminchat.java +++ b/src/com/redstoner/modules/adminchat/Adminchat.java @@ -3,6 +3,7 @@ package com.redstoner.modules.adminchat; import java.io.File; import java.util.ArrayList; import java.util.UUID; +import java.util.regex.Pattern; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -13,8 +14,10 @@ import org.json.simple.JSONObject; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.misc.BroadcastFilter; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; import com.redstoner.misc.Utils; @@ -23,8 +26,9 @@ import com.redstoner.modules.Module; /** AdminChat module. Allows staff to chat to other staff using /ac \ as well as a one char prefix or a toggle. * * @author Pepich */ +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 2, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Adminchat implements Module, Listener { private static final char defaultKey = ','; @@ -109,7 +113,7 @@ public class Adminchat implements Module, Listener { return recipient.hasPermission("utils.ac"); } - }, '&'); + }); return true; } @@ -123,7 +127,7 @@ public class Adminchat implements Module, Listener { return recipient.hasPermission("utils.ac"); } - }, '&'); + }); return true; } @@ -138,12 +142,12 @@ public class Adminchat implements Module, Listener if (actoggled.contains(((Player) sender).getUniqueId())) { actoggled.remove(((Player) sender).getUniqueId()); - Utils.sendMessage(sender, null, "ACT now §cdisabled"); + getLogger().message(sender, "ACT now §cdisabled"); } else { actoggled.add(((Player) sender).getUniqueId()); - Utils.sendMessage(sender, null, "ACT now §aenabled"); + getLogger().message(sender, "ACT now §aenabled"); } return true; } @@ -158,10 +162,10 @@ public class Adminchat implements Module, Listener if (!actoggled.contains(((Player) sender).getUniqueId())) { actoggled.add(((Player) sender).getUniqueId()); - Utils.sendMessage(sender, null, "ACT now §aenabled"); + getLogger().message(sender, "ACT now §aenabled"); } else - Utils.sendMessage(sender, null, "ACT was already enabled"); + getLogger().message(sender, "ACT was already enabled"); return true; } @@ -175,11 +179,11 @@ public class Adminchat implements Module, Listener if (actoggled.contains(((Player) sender).getUniqueId())) { actoggled.remove(((Player) sender).getUniqueId()); - Utils.sendMessage(sender, null, "ACT now §cdisabled"); + getLogger().message(sender, "ACT now §cdisabled"); } else { - Utils.sendMessage(sender, null, "ACT was already disabled"); + getLogger().message(sender, "ACT was already disabled"); } return true; } @@ -196,7 +200,7 @@ public class Adminchat implements Module, Listener if (event.getMessage().startsWith(getKey(player))) { event.setCancelled(true); - acSay(event.getPlayer(), event.getMessage().replaceFirst(getKey(player), "")); + acSay(event.getPlayer(), event.getMessage().replaceFirst(Pattern.quote(getKey(player)), "")); } else if (actoggled.contains(event.getPlayer().getUniqueId())) { @@ -216,7 +220,7 @@ public class Adminchat implements Module, Listener { if (key.length() > 1) { - Utils.sendErrorMessage(sender, null, + getLogger().message(sender, true, "Could not set your key to §6" + key + " §7, it can be at most one char."); return true; } @@ -225,7 +229,7 @@ public class Adminchat implements Module, Listener getAcKey(sender); return true; } - Utils.sendMessage(sender, null, "Set your key to §6" + key); + getLogger().message(sender, "Set your key to §6" + key); keys.put(((Player) sender).getUniqueId().toString(), key + ""); saveKeys(); return true; @@ -246,7 +250,7 @@ public class Adminchat implements Module, Listener * @param sender the issuer of the command. */ public void getAcKey(CommandSender sender) { - Utils.sendMessage(sender, null, "Your current ackey is §6" + getKey((Player) sender)); + getLogger().message(sender, "Your current ackey is §6" + getKey((Player) sender)); } /** Saves the keys. */ diff --git a/src/com/redstoner/modules/adminnotes/AdminNotes.java b/src/com/redstoner/modules/adminnotes/AdminNotes.java index 7877735..8676182 100644 --- a/src/com/redstoner/modules/adminnotes/AdminNotes.java +++ b/src/com/redstoner/modules/adminnotes/AdminNotes.java @@ -2,24 +2,38 @@ package com.redstoner.modules.adminnotes; import java.io.File; import java.text.SimpleDateFormat; +import java.util.Arrays; import org.bukkit.ChatColor; +import org.bukkit.Material; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.inventory.ClickType; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import org.json.simple.JSONArray; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +import de.pepich.chestapi.CallbackHandler; +import de.pepich.chestapi.ClickableInventory; +import de.pepich.chestapi.DefaultSize; +import net.nemez.chatapi.click.ClickCallback; +import net.nemez.chatapi.click.Message; + +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 0, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class AdminNotes implements Module, Listener { JSONArray notes; @@ -38,12 +52,13 @@ public class AdminNotes implements Module, Listener public void onJoin(PlayerJoinEvent e) { if (e.getPlayer().hasPermission("utils.adminnotes")) - { if (notes.size() > 0) { - Utils.sendMessage(e.getPlayer(), null, "§cThere are " + notes.size() + " open notes!"); + Message m = new Message(e.getPlayer(), null); + m.appendSendChat(getLogger().getPrefix(), "/an list"); + m.appendSendChat("&cThere are " + notes.size() + " open notes!", "/an list"); + m.send(); } - } } @Override @@ -61,7 +76,7 @@ public class AdminNotes implements Module, Listener temp.add(note); temp.add((double) System.currentTimeMillis() / 1000); notes.add(temp); - Utils.sendMessage(sender, null, "§aNote added!"); + getLogger().message(sender, "&aNote added!"); saveNotes(); } @@ -71,19 +86,20 @@ public class AdminNotes implements Module, Listener if (id < notes.size() && id >= 0 && notes.get(id) != null) { notes.remove(id); - Utils.sendMessage(sender, null, "§aNote " + id + " has been removed!"); + getLogger().message(sender, "&aNote " + id + " has been removed!"); saveNotes(); } else { - Utils.sendMessage(sender, null, "§cThat note does not exist!"); + getLogger().message(sender, "&cThat note does not exist!"); } } @Command(hook = "an_list") public void list(CommandSender sender) { - Utils.sendModuleHeader(sender); + Message m = new Message(sender, null); + m.appendText(getLogger().getHeader()); for (Object note : notes) { String string = ChatColor.YELLOW + "" + notes.indexOf(note) + ": "; @@ -91,8 +107,79 @@ public class AdminNotes implements Module, Listener string += "\n§e - " + ((JSONArray) note).get(0) + ", §6"; SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy HH:mm"); string += format.format((double) ((JSONArray) note).get(2) * 1000); - Utils.sendMessage(sender, "", string); + m.appendCallbackHover(string, new ClickCallback(true, true, null) + { + @Override + public void run(CommandSender sender) + { + if (notes.contains(note)) + showMenu((Player) sender, notes.indexOf(note)); + else + getLogger().message(sender, true, "That note no longer exists!"); + } + }, "Click to show note options."); + m.appendText("\n"); } + m.send(); + } + + public void showMenu(Player player, int index) + { + String note_text = ((String) ((JSONArray) notes.get(index)).get(1)); + if (note_text.length() > 15) + note_text = note_text.substring(0, 15) + "..."; + ClickableInventory inv = new ClickableInventory("Note " + index + ": " + note_text, DefaultSize.FINAL_FIXED(9)); + + ItemStack addItem = new ItemStack(Material.BOOK_AND_QUILL); + ItemMeta addMeta = addItem.getItemMeta(); + addMeta.setDisplayName("§aAdd note!"); + addItem.setItemMeta(addMeta); + inv.set(1, addItem, new CallbackHandler() + { + @Override + public void run(Player player, ClickType type) + { + Message m = new Message(player, null); + m.appendSuggest(getLogger().getPrefix(), "/an add "); + m.appendSuggest("Click me to add a note!", "/an add "); + m.send(); + player.closeInventory(); + } + }); + + ItemStack deleteItem = new ItemStack(Material.WOOL, 1, (short) 14); + ItemMeta deleteMeta = deleteItem.getItemMeta(); + deleteMeta.setDisplayName("§cDelete note!"); + deleteMeta.setLore(Arrays.asList(new String[] {"Shift click to execute!"})); + deleteItem.setItemMeta(deleteMeta); + inv.set(3, deleteItem, new CallbackHandler() + { + @Override + public void run(Player player, ClickType type) + { + if (type == ClickType.SHIFT_LEFT) + { + delNote(player, index); + player.closeInventory(); + } + else + getLogger().message(player, true, "You need to shift click to execute this!"); + } + }); + + ItemStack closeItem = new ItemStack(Material.BARRIER); + ItemMeta closeMeta = closeItem.getItemMeta(); + closeMeta.setDisplayName("§eClose menu"); + closeItem.setItemMeta(closeMeta); + inv.set(9, closeItem, new CallbackHandler() + { + @Override + public void run(Player player, ClickType type) + { + player.closeInventory(); + } + }); + inv.show(player); } public void saveNotes() @@ -105,10 +192,8 @@ public class AdminNotes implements Module, Listener public String getCommandString() { return "command an {\n" + - " perm utils.adminnotes;\n" + " \n" + " add [string:note...] {\n" + - " type player;\n" + " help Creates a new admin note;\n" + " run an_create note;\n" + " perm utils.an;" + diff --git a/src/com/redstoner/modules/blockplacemods/BlockPlaceMods.java b/src/com/redstoner/modules/blockplacemods/BlockPlaceMods.java index 2b001b2..eeff1b9 100644 --- a/src/com/redstoner/modules/blockplacemods/BlockPlaceMods.java +++ b/src/com/redstoner/modules/blockplacemods/BlockPlaceMods.java @@ -14,9 +14,10 @@ import org.bukkit.event.Listener; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.modules.Module; import com.redstoner.modules.blockplacemods.mods.Mod; import com.redstoner.modules.blockplacemods.mods.ModAbstract; @@ -24,17 +25,15 @@ import com.redstoner.modules.blockplacemods.mods.ModToggledAbstract; import com.redstoner.utils.CommandException; import com.redstoner.utils.CommandMap; +@Commands(CommandHolderType.None) @AutoRegisterListener -@Version(major = 3, minor = 2, revision = 9, compatible = 3) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public final class BlockPlaceMods implements Module, Listener { - public static String PREFIX = ChatColor.GRAY + "[" + ChatColor.DARK_GREEN + "BPM" + ChatColor.GRAY + "]" - + ChatColor.GREEN; - @Override public boolean onEnable() { - ModAbstract.registerAll(); + ModAbstract.registerAll(getLogger()); for (Mod mod : new ArrayList<>(ModAbstract.getMods().values())) { mod.registerListeners(); @@ -50,11 +49,18 @@ public final class BlockPlaceMods implements Module, Listener } catch (ReflectiveOperationException ex) { + ex.printStackTrace(); return false; } return true; } + @Override + public void postEnable() + { + setPrefix("BPM"); + } + @Override public void onDisable() { @@ -100,7 +106,7 @@ public final class BlockPlaceMods implements Module, Listener { String[] args = new ArrayList<>(Arrays.asList(input.split(" "))).stream() .filter(x -> x != null && !x.trim().isEmpty()).toArray(String[]::new); - String prefix = PREFIX; + String prefix = ""; String message; try { @@ -109,7 +115,7 @@ public final class BlockPlaceMods implements Module, Listener Mod target = ModAbstract.getMod(args[0].toLowerCase()); if (target != null) { - prefix += "&7[&2" + capitalize(target.getName()) + "&7]&a"; + prefix += "&7[&2" + capitalize(target.getName()) + "&7]:&a "; if (!(sender instanceof Player)) { message = "&cYou must be a player to use any block place mod"; @@ -142,7 +148,7 @@ public final class BlockPlaceMods implements Module, Listener message = " &cAn unexpected error occurred while executing this command."; t.printStackTrace(); } - Utils.sendMessage(sender, prefix, message, '&'); + getLogger().message(sender, prefix + message); } private String commandHelp(CommandSender sender, String[] args) diff --git a/src/com/redstoner/modules/blockplacemods/mods/ModAbstract.java b/src/com/redstoner/modules/blockplacemods/mods/ModAbstract.java index 4184ffe..2ef97fc 100644 --- a/src/com/redstoner/modules/blockplacemods/mods/ModAbstract.java +++ b/src/com/redstoner/modules/blockplacemods/mods/ModAbstract.java @@ -1,21 +1,28 @@ package com.redstoner.modules.blockplacemods.mods; -import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; -import com.redstoner.modules.datamanager.DataManager; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryType; -import java.util.*; +import com.redstoner.misc.Main; +import com.redstoner.modules.ModuleLogger; +import com.redstoner.modules.datamanager.DataManager; public abstract class ModAbstract implements Mod, Listener { private static final Map mods = new HashMap<>(); private final String name; private final Set aliases; + private static ModuleLogger logger; public static Map getMods() { @@ -27,15 +34,18 @@ public abstract class ModAbstract implements Mod, Listener return mods.get(name); } - public static void registerMod(Mod mod) { + public static void registerMod(Mod mod) + { mods.put(mod.getName(), mod); - for (String alias : mod.getAliases()) { + for (String alias : mod.getAliases()) + { mods.putIfAbsent(alias, mod); } } - public static void registerAll() + public static void registerAll(final ModuleLogger logger) { + ModAbstract.logger = logger; registerMod(new ModToggledCauldron()); registerMod(new ModToggledPiston()); registerMod(new ModToggledStep()); @@ -49,11 +59,12 @@ public abstract class ModAbstract implements Mod, Listener { this.name = Objects.requireNonNull(name); this.aliases = new HashSet<>(2); - Utils.info("Loaded mod " + name); + logger.info("Loaded mod " + name); } @Override - public String getName() { + public String getName() + { return name; } diff --git a/src/com/redstoner/modules/blockplacemods/mods/ModToggledCauldron.java b/src/com/redstoner/modules/blockplacemods/mods/ModToggledCauldron.java index 61e34c6..669f093 100644 --- a/src/com/redstoner/modules/blockplacemods/mods/ModToggledCauldron.java +++ b/src/com/redstoner/modules/blockplacemods/mods/ModToggledCauldron.java @@ -1,5 +1,6 @@ package com.redstoner.modules.blockplacemods.mods; +import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.event.EventHandler; @@ -26,7 +27,9 @@ public class ModToggledCauldron extends ModToggledAbstract public void onPlayerInteract(PlayerInteractEvent event) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK && !event.getPlayer().isSneaking() - && event.getClickedBlock().getType() == Material.CAULDRON && hasEnabled(event.getPlayer())) + && event.getClickedBlock().getType() == Material.CAULDRON && hasEnabled(event.getPlayer()) + && (event.getPlayer().getGameMode() == GameMode.CREATIVE) + && (event.getPlayer().getInventory().getItemInMainHand().getType() == Material.AIR)) { Block block = event.getClickedBlock(); block.setData((byte) ((block.getData() - 1) & 0x3)); @@ -38,7 +41,7 @@ public class ModToggledCauldron extends ModToggledAbstract public void onBlockPlace(BlockPlaceEvent event) { if (event.getBlock().getType() == Material.CAULDRON && !event.getPlayer().isSneaking() - && hasEnabled(event.getPlayer())) + && hasEnabled(event.getPlayer()) && (event.getPlayer().getGameMode() == GameMode.CREATIVE)) { event.getBlock().setData((byte) 3); } diff --git a/src/com/redstoner/modules/buildchat/BuildChat.java b/src/com/redstoner/modules/buildchat/BuildChat.java index 77d90ac..8e74bf7 100644 --- a/src/com/redstoner/modules/buildchat/BuildChat.java +++ b/src/com/redstoner/modules/buildchat/BuildChat.java @@ -3,6 +3,7 @@ package com.redstoner.modules.buildchat; import java.io.File; import java.util.ArrayList; import java.util.UUID; +import java.util.regex.Pattern; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -13,8 +14,10 @@ import org.json.simple.JSONObject; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.misc.BroadcastFilter; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; import com.redstoner.misc.Utils; @@ -23,8 +26,9 @@ import com.redstoner.modules.Module; /** BuildTeamChat module. Allows the build team to chat privately using /bc \ as well as a one char prefix or a toggle. * * @author Pepich */ +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 1, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class BuildChat implements Module, Listener { private static final char defaultKey = ';'; @@ -109,7 +113,7 @@ public class BuildChat implements Module, Listener { return recipient.hasPermission("utils.bc"); } - }, '&'); + }); return true; } @@ -123,7 +127,7 @@ public class BuildChat implements Module, Listener { return recipient.hasPermission("utils.bc"); } - }, '&'); + }); return true; } @@ -138,12 +142,12 @@ public class BuildChat implements Module, Listener if (bctoggled.contains(((Player) sender).getUniqueId())) { bctoggled.remove(((Player) sender).getUniqueId()); - Utils.sendMessage(sender, null, "BCT now §cdisabled"); + getLogger().message(sender, "BCT now §cdisabled"); } else { bctoggled.add(((Player) sender).getUniqueId()); - Utils.sendMessage(sender, null, "BCT now §aenabled"); + getLogger().message(sender, "BCT now §aenabled"); } return true; } @@ -158,10 +162,10 @@ public class BuildChat implements Module, Listener if (!bctoggled.contains(((Player) sender).getUniqueId())) { bctoggled.add(((Player) sender).getUniqueId()); - Utils.sendMessage(sender, null, "BCT now §aenabled"); + getLogger().message(sender, "BCT now §aenabled"); } else - Utils.sendMessage(sender, null, "BCT was already enabled"); + getLogger().message(sender, "BCT was already enabled"); return true; } @@ -173,9 +177,9 @@ public class BuildChat implements Module, Listener public boolean bcToggleOffCommand(CommandSender sender) { if (bctoggled.remove(((Player) sender).getUniqueId().toString())) - Utils.sendMessage(sender, null, "BCT now §cdisabled"); + getLogger().message(sender, "BCT now §cdisabled"); else - Utils.sendMessage(sender, null, "BCT was already disabled"); + getLogger().message(sender, "BCT was already disabled"); return true; } @@ -191,7 +195,7 @@ public class BuildChat implements Module, Listener if (event.getMessage().startsWith(getKey(player))) { event.setCancelled(true); - bcSay(event.getPlayer(), event.getMessage().replaceFirst(getKey(player), "")); + bcSay(event.getPlayer(), event.getMessage().replaceFirst(Pattern.quote(getKey(player)), "")); } else if (bctoggled.contains(event.getPlayer().getUniqueId())) { @@ -211,7 +215,7 @@ public class BuildChat implements Module, Listener { if (key.length() > 1) { - Utils.sendErrorMessage(sender, null, + getLogger().message(sender, true, "Could not set your key to §6" + key + " §7, it can be at most one char."); return true; } @@ -220,7 +224,7 @@ public class BuildChat implements Module, Listener getBcKey(sender); return true; } - Utils.sendMessage(sender, null, "Set your key to §6" + key); + getLogger().message(sender, "Set your key to §6" + key); keys.put(((Player) sender).getUniqueId().toString(), key + ""); saveKeys(); return true; @@ -241,7 +245,7 @@ public class BuildChat implements Module, Listener * @param sender the issuer of the command. */ public void getBcKey(CommandSender sender) { - Utils.sendMessage(sender, null, "Your current bckey is §6" + getKey((Player) sender)); + getLogger().message(sender, "Your current bckey is §6" + getKey((Player) sender)); } /** Saves the keys. */ diff --git a/src/com/redstoner/modules/buildteam/BuildTeam.java b/src/com/redstoner/modules/buildteam/BuildTeam.java index ce1d088..986b41c 100644 --- a/src/com/redstoner/modules/buildteam/BuildTeam.java +++ b/src/com/redstoner/modules/buildteam/BuildTeam.java @@ -5,21 +5,15 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.nemez.cmdmgr.Command; -import com.nemez.cmdmgr.CommandManager; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; -@Version(major = 3, minor = 0, revision = 0, compatible = 3) +@Commands(CommandHolderType.File) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class BuildTeam implements Module { - @Override - public void postEnable() - { - CommandManager.registerCommand(getClass().getResourceAsStream("BuildTeam.cmd"), this, Main.plugin); - } - @Command(hook = "teleport") public boolean teleport(CommandSender sender, String target_name) { @@ -32,7 +26,7 @@ public class BuildTeam implements Module return true; } player.teleport(target); - Utils.sendMessage(sender, null, "Teleported you to &e" + target.getDisplayName() + "&7!", '&'); + getLogger().message(sender, "Teleported you to &e" + target.getDisplayName() + "&7!"); return true; } @@ -41,7 +35,7 @@ public class BuildTeam implements Module { if (!target_name.matches("^\\w{2,16}$")) { - Utils.sendErrorMessage(sender, null, "This doesn't look like a valid playername!"); + getLogger().message(sender, true, "This doesn't look like a valid playername!"); return true; } Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "pex user " + target_name + " group add +buildteam"); @@ -53,7 +47,7 @@ public class BuildTeam implements Module { if (!target_name.matches("^\\w{2,16}$")) { - Utils.sendErrorMessage(sender, null, "This doesn't look like a valid playername!"); + getLogger().message(sender, true, "This doesn't look like a valid playername!"); return true; } Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "pex user " + target_name + " group remove +buildteam"); diff --git a/src/com/redstoner/modules/challenge/Challenge.java b/src/com/redstoner/modules/challenge/Challenge.java deleted file mode 100644 index 0d020a8..0000000 --- a/src/com/redstoner/modules/challenge/Challenge.java +++ /dev/null @@ -1,284 +0,0 @@ -package com.redstoner.modules.challenge; - -import java.io.File; -import java.util.Random; - -import org.bukkit.command.CommandSender; -import org.json.simple.JSONArray; - -import com.nemez.cmdmgr.Command; -import com.redstoner.annotations.Version; -import com.redstoner.misc.JsonManager; -import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; -import com.redstoner.modules.Module; - -@Version(major = 2, minor = 0, revision = 1, compatible = 2) -public class Challenge implements Module -{ - private File challengeLocation = new File(Main.plugin.getDataFolder(), "challenges.json"); - private JSONArray challenges; - - @Override - public boolean onEnable() - { - challenges = JsonManager.getArray(challengeLocation); - if (challenges == null) - challenges = new JSONArray(); - return true; - } - - @Override - public void onDisable() - { - saveChallenges(); - } - - @SuppressWarnings("unchecked") - @Command(hook = "addchallenge") - public boolean addChallenge(CommandSender sender, String text) - { - if (challenges.contains(text)) - Utils.sendErrorMessage(sender, null, "That challenge already exists!"); - else - { - Utils.sendMessage(sender, null, "Successfully added a new challenge!"); - challenges.add(text); - saveChallenges(); - } - return true; - } - - @Command(hook = "delchallenge") - public boolean delChallenge(CommandSender sender, int id) - { - if (challenges.size() == 0) - { - Utils.sendErrorMessage(sender, null, "There are no challenges yet!"); - return true; - } - if (id < 0 || id >= challenges.size()) - { - Utils.sendErrorMessage(sender, null, "The ID must be at least 0 and at most " + (challenges.size() - 1)); - return true; - } - Utils.sendMessage(sender, null, "Successfully deleted the challenge: " + challenges.remove(id), '&'); - saveChallenges(); - return true; - } - - @SuppressWarnings("unchecked") - @Command(hook = "setchallenge") - public boolean setChallenge(CommandSender sender, int id, String text) - { - if (challenges.size() == 0) - { - Utils.sendErrorMessage(sender, null, "There are no challenges yet!"); - return true; - } - if (id < 0 || id >= challenges.size()) - { - Utils.sendErrorMessage(sender, null, "The ID must be at least 0 and at most " + (challenges.size() - 1)); - return true; - } - Utils.sendMessage(sender, null, - "Successfully changed the challenge: &a" + challenges.get(id) + " &7to: &e" + text, '&'); - challenges.set(id, text); - saveChallenges(); - return true; - } - - @Command(hook = "challengeid") - public boolean challengeId(CommandSender sender, int id) - { - if (challenges.size() == 0) - { - Utils.sendErrorMessage(sender, null, "There are no challenges yet!"); - return true; - } - if (id < 0 || id >= challenges.size()) - { - Utils.sendErrorMessage(sender, null, "The ID must be at least 0 and at most " + (challenges.size() - 1)); - return true; - } - Utils.sendMessage(sender, null, "&a" + challenges.get(id), '&'); - return true; - } - - @Command(hook = "challenge") - public boolean challenge(CommandSender sender) - { - if (challenges.size() == 0) - { - Utils.sendErrorMessage(sender, null, "There are no challenges yet!"); - return true; - } - int id = (new Random()).nextInt(challenges.size()); - Utils.sendMessage(sender, null, "&a" + challenges.get(id), '&'); - return true; - } - - @Command(hook = "listchallenges") - public boolean listChallenges(CommandSender sender, int page) - { - if (challenges.size() == 0) - { - Utils.sendErrorMessage(sender, null, "There are no challenges yet!"); - return true; - } - page = page - 1; - int start = page * 10; - int end = start + 10; - int pages = (int) Math.ceil(challenges.size() / 10d); - if (start < 0) - { - Utils.sendErrorMessage(sender, null, "Page number too small, must be at least 0!"); - return true; - } - if (start > challenges.size()) - { - Utils.sendErrorMessage(sender, null, "Page number too big, must be at most " + pages + "!"); - return true; - } - Utils.sendModuleHeader(sender); - Utils.sendMessage(sender, "", "&ePage " + (page + 1) + "/" + pages + ":", '&'); - for (int i = start; i < end && i < challenges.size(); i++) - Utils.sendMessage(sender, "", "&a" + i + "&8: &e" + challenges.get(i), '&'); - return true; - } - - @Command(hook = "listchallengesdef") - public boolean listChallengesDefault(CommandSender sender) - { - return listChallenges(sender, 1); - } - - @Command(hook = "searchchallenge") - public boolean search(CommandSender sender, boolean insensitive, String text) - { - Utils.sendModuleHeader(sender); - boolean found = false; - if (insensitive) - { - text = text.toLowerCase(); - for (int i = 0; i < challenges.size(); i++) - { - if (((String) challenges.get(i)).toLowerCase().contains(text)) - { - Utils.sendMessage(sender, "", "&a" + i + "&8: &e" + challenges.get(i), '&'); - found = true; - } - } - } - else - { - for (int i = 0; i < challenges.size(); i++) - { - if (((String) challenges.get(i)).contains(text)) - { - Utils.sendMessage(sender, "", "&a" + i + "&8: &e" + challenges.get(i), '&'); - found = true; - } - } - } - if (!found) - { - Utils.sendMessage(sender, "", "&cCouldn't find any matching challenges.", '&'); - } - return true; - } - - @Command(hook = "matchchallenge") - public boolean match(CommandSender sender, boolean insensitive, String regex) - { - Utils.sendModuleHeader(sender); - boolean found = false; - if (insensitive) - { - regex = regex.toLowerCase(); - for (int i = 0; i < challenges.size(); i++) - { - if (((String) challenges.get(i)).toLowerCase().matches(regex)) - { - Utils.sendMessage(sender, "", "&a" + i + ": " + challenges.get(i), '&'); - found = true; - } - } - } - else - { - for (int i = 0; i < challenges.size(); i++) - { - if (((String) challenges.get(i)).matches(regex)) - { - Utils.sendMessage(sender, "", "&a" + i + ": " + challenges.get(i), '&'); - found = true; - } - } - } - if (!found) - { - Utils.sendMessage(sender, "", "&cCouldn't find any matching challenges.", '&'); - } - return true; - } - - public void saveChallenges() - { - JsonManager.save(challenges, challengeLocation); - } - - // @noformat - @Override - public String getCommandString() - { - return "command challenge {\n" + - " add [string:text...] {\n" + - " help Adds a challenge.;\n" + - " run addchallenge text;\n" + - " perm utils.challenge.add;\n" + - " }\n" + - " del [int:id] {\n" + - " help Removes a challenge.;\n" + - " run delchallenge id;\n" + - " perm utils.challenge.admin;\n" + - " }\n" + - " set [int:id] [string:text...] {\n" + - " help Sets a challenge.;\n" + - " run setchallenge id text;\n" + - " perm utils.challenge.admin;\n" + - " }\n" + - " id [int:id] {\n" + - " help Get a paticular challenge.;\n" + - " run challengeid id;\n" + - " perm utils.challenge.id;\n" + - " }\n" + - " list [int:page] {\n" + - " help Shows challenges.;\n" + - " run listchallenges page;\n" + - " perm utils.challenge.list;\n" + - " }\n" + - " list {\n" + - " help Shows challenges.;\n" + - " run listchallengesdef;\n" + - " perm utils.challenge.list;\n" + - " }\n" + - " search [flag:-i] [string:text...] {\n" + - " help Search challenges.;\n" + - " run searchchallenge -i text;\n" + - " perm utils.challenge.search;\n" + - " }\n" + - " match [flag:-i] [string:regex...] {\n" + - " help Search challenges. But better.;\n" + - " run matchchallenge -i regex;\n" + - " perm utils.challenge.match;\n" + - " }\n" + - " [empty] {\n" + - " help Gives a challenge.;\n" + - " run challenge;\n" + - " perm utils.challenge;\n" + - " }\n" + - "}"; - } - // @format -} diff --git a/src/com/redstoner/modules/chatalias/Chatalias.java b/src/com/redstoner/modules/chatalias/Chatalias.java index f1175ba..f87005c 100644 --- a/src/com/redstoner/modules/chatalias/Chatalias.java +++ b/src/com/redstoner/modules/chatalias/Chatalias.java @@ -1,6 +1,7 @@ package com.redstoner.modules.chatalias; import java.io.File; +import java.util.ArrayList; import java.util.Set; import java.util.UUID; import java.util.regex.Pattern; @@ -20,21 +21,22 @@ import org.json.simple.JSONObject; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +import net.nemez.chatapi.ChatAPI; + +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 6, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Chatalias implements Module, Listener { - // to export chatalias data to json: - // pyeval [save_json_file("aliases/" + uuid, shared['modules']['chatalias'].data[uuid]) for uuid in shared['modules']['chatalias'].data] - // HANDLE WITH CARE! This will create an array of null entries the size of len(data)! - private final String[] commands = new String[] {"e?r", "e?m .+? ", "e?t", "e?w", "e?msg .+? ", "e?message .+? ", - "e?whisper .+? ", "e?me", "cg say", "ac"}; + private final String[] commands = new String[] {"e?r", "e?m .+?", "e?t", "e?w", "e?msg .+?", "e?message .+?", + "e?whisper .+?", "e?me", "cgsay", "ac", "bc"}; private JSONObject aliases = new JSONObject(); @Override @@ -114,12 +116,12 @@ public class Chatalias implements Module, Listener } if (event.getMessage().length() > maxLength) { - Utils.sendErrorMessage(player, null, "The generated message is too long!"); + getLogger().message(player, true, "The generated message is too long!"); event.setCancelled(true); return; } } - event.setMessage(Utils.colorify(event.getMessage(), player)); + event.setMessage(ChatAPI.colorify(null, event.getMessage())); if (changed) saveAliases(uuid); } @@ -130,11 +132,11 @@ public class Chatalias implements Module, Listener if (event.isCancelled()) return; boolean listening = false; - String regex = ""; + String command = ""; for (String s : commands) { - regex = "^\\/(.*:)?" + s + ".*"; - if (event.getMessage().matches(regex)) + command = "^\\/(.*:)?" + s + " "; + if (event.getMessage().matches(command + ".*")) { listening = true; break; @@ -145,9 +147,9 @@ public class Chatalias implements Module, Listener Player player = event.getPlayer(); UUID uuid = player.getUniqueId(); JSONObject playerAliases = (JSONObject) aliases.get(uuid.toString()); - String command = event.getMessage().replaceFirst(regex.replaceAll("\\.\\*$", ""), ""); - command = event.getMessage().replace(command, ""); - event.setMessage(event.getMessage().replaceFirst(Pattern.quote(command), "§§")); + String temp = event.getMessage().replaceAll(command, ""); + command = event.getMessage().replaceAll(Pattern.quote(temp) + "$", ""); + event.setMessage(event.getMessage().replaceFirst(Pattern.quote(command), "")); for (Object key : playerAliases.keySet()) { String keyword = (String) key; @@ -174,12 +176,12 @@ public class Chatalias implements Module, Listener } if (event.getMessage().length() > maxLength) { - Utils.sendErrorMessage(player, null, "The generated message is too long!"); + getLogger().message(player, true, "The generated message is too long!"); event.setCancelled(true); return; } } - event.setMessage(command + event.getMessage().substring(2)); + event.setMessage(command + event.getMessage()); } @SuppressWarnings("unchecked") @@ -188,7 +190,7 @@ public class Chatalias implements Module, Listener { if (regex && keyword.equals(".*")) { - Utils.sendErrorMessage(sender, null, "You may not define the wildcard regex as an alias."); + getLogger().message(sender, true, "You may not define the wildcard regex as an alias."); return true; } Player player = (Player) sender; @@ -208,16 +210,16 @@ public class Chatalias implements Module, Listener } if (data.size() == maxAmount) { - Utils.sendErrorMessage(sender, null, "You already reached your maximum of aliases!"); + getLogger().message(sender, true, "You already reached your maximum of aliases!"); return true; } } data.put(keyword, replacement); if (sender.hasPermission("essentials.chat.color")) - Utils.sendMessage(sender, null, - "Successfully created alias " + keyword.substring(3) + " §7-> " + replacement + " §7for you.", '&'); + getLogger().message(sender, + "Successfully created alias " + keyword.substring(3) + " §7-> " + replacement + " §7for you."); else - Utils.sendMessage(sender, null, + getLogger().message(sender, "Successfully created alias " + keyword.substring(3) + " §7-> " + replacement + " §7for you."); saveAliases(uuid); return true; @@ -232,14 +234,13 @@ public class Chatalias implements Module, Listener keyword = (regex ? "R: " : "N: ") + keyword; if (data.remove(keyword) != null) { - Utils.sendMessage(sender, null, "Successfully removed the alias!"); + getLogger().message(sender, "Successfully removed the alias!"); saveAliases(uuid); return true; } else { - Utils.sendErrorMessage(sender, null, - "That alias doesn't exist! Hint: regex/no regex does matter for this."); + getLogger().message(sender, true, "That alias doesn't exist! Hint: regex/no regex does matter for this."); return true; } } @@ -247,17 +248,13 @@ public class Chatalias implements Module, Listener @Command(hook = "listaliases") public boolean listAliases(CommandSender sender) { - Utils.sendModuleHeader(sender); + ArrayList message = new ArrayList(); Player player = (Player) sender; UUID uuid = player.getUniqueId(); JSONObject data = (JSONObject) aliases.get(uuid.toString()); for (Object key : data.keySet()) - { - if (sender.hasPermission("essentials.chat.color")) - Utils.sendMessage(sender, "", (String) key + " §7-> " + data.get(key), '&'); - else - Utils.sendMessage(sender, "", (String) key + " §7-> " + data.get(key)); - } + message.add((String) key + " §7-> " + data.get(key)); + getLogger().message(sender, message.toArray(new String[] {})); return true; } @@ -303,7 +300,7 @@ public class Chatalias implements Module, Listener aliases.put(uuid.toString(), playerAliases.get("data")); else { - Utils.error("Unknown data format for alias set of player " + uuid.toString()); + getLogger().error("Unknown data format for alias set of player " + uuid.toString()); aliases.put(uuid.toString(), ((JSONObject) defaults.get("data")).clone()); saveAliases(uuid); } diff --git a/src/com/redstoner/modules/chatgroups/Chatgroups.java b/src/com/redstoner/modules/chatgroups/Chatgroups.java index 1a05597..8afc652 100644 --- a/src/com/redstoner/modules/chatgroups/Chatgroups.java +++ b/src/com/redstoner/modules/chatgroups/Chatgroups.java @@ -16,9 +16,11 @@ import org.json.simple.JSONObject; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.BroadcastFilter; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; import com.redstoner.misc.Utils; @@ -28,8 +30,9 @@ import com.redstoner.modules.socialspy.Socialspy; /** The ChatGroups module. Allows people to have private sub-chats that can be accessed via a single char prefix or a toggle. * * @author Pepich */ +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 1, revision = 2, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Chatgroups implements Module, Listener { private static final char defaultKey = ':'; @@ -116,11 +119,11 @@ public class Chatgroups implements Module, Listener { String group = getGroup(sender); if (group == null) - Utils.sendErrorMessage(sender, null, "You are not in a chatgroup!"); + getLogger().message(sender, true, "You are not in a chatgroup!"); else { - Utils.sendModuleHeader(sender); - Utils.sendMessage(sender, "", "Your current chatgroup is: §6" + group); + ArrayList message = new ArrayList(); + message.add("§7Your current chatgroup is: §6" + group); ArrayList players = new ArrayList(); Iterator iter = groups.keySet().iterator(); while (iter.hasNext()) @@ -148,7 +151,8 @@ public class Chatgroups implements Module, Listener sb.append("&7, &9"); } sb.delete(sb.length() - 2, sb.length()); - Utils.sendMessage(sender, "", sb.toString(), '&'); + message.add(sb.toString()); + getLogger().message(sender, message.toArray(new String[] {})); } return true; } @@ -158,7 +162,7 @@ public class Chatgroups implements Module, Listener * @param sender the issuer of the command. */ public void getCgKey(CommandSender sender) { - Utils.sendMessage(sender, null, "Your current cgkey is §6" + getKey((Player) sender)); + getLogger().message(sender, "Your current cgkey is §6" + getKey((Player) sender)); } /** Sets the cgkey of a Player. @@ -172,7 +176,7 @@ public class Chatgroups implements Module, Listener { if (key.length() > 1) { - Utils.sendErrorMessage(sender, null, + getLogger().message(sender, true, "Could not set your key to §6" + key + " §7, it can be at most one char."); return true; } @@ -181,7 +185,7 @@ public class Chatgroups implements Module, Listener getCgKey(sender); return true; } - Utils.sendMessage(sender, null, "Set your key to §6" + key); + getLogger().message(sender, "Set your key to §6" + key); keys.put(((Player) sender).getUniqueId().toString(), key + ""); saveKeys(); return true; @@ -198,15 +202,15 @@ public class Chatgroups implements Module, Listener if (cgtoggled.contains(((Player) sender).getUniqueId())) { cgtoggled.remove(((Player) sender).getUniqueId()); - Utils.sendMessage(sender, null, "CGT now §cdisabled"); + getLogger().message(sender, "CGT now §cdisabled"); } else { cgtoggled.add(((Player) sender).getUniqueId()); - Utils.sendMessage(sender, null, "CGT now §aenabled"); + getLogger().message(sender, "CGT now §aenabled"); } else - Utils.sendErrorMessage(sender, null, "You are not in a chatgroup!"); + getLogger().message(sender, true, "You are not in a chatgroup!"); return true; } @@ -220,12 +224,12 @@ public class Chatgroups implements Module, Listener String group = removeGroup(sender); if (group == null) { - Utils.sendErrorMessage(sender, null, "You were not in a chatgroup!"); + getLogger().message(sender, true, "You were not in a chatgroup!"); return true; } String name = Utils.getName(sender); sendToGroup(group, "&9" + name + " &7left the group!"); - Utils.sendMessage(sender, null, "Successfully removed you from your group!"); + getLogger().message(sender, "Successfully removed you from your group!"); if (sender instanceof Player) cgtoggled.remove(((Player) sender).getUniqueId()); return true; @@ -242,7 +246,7 @@ public class Chatgroups implements Module, Listener String pname = Utils.getName(sender); String group = getGroup(sender); if (group != null && group.equals(name)) - Utils.sendErrorMessage(sender, null, "You were already in group §6" + name); + getLogger().message(sender, true, "You were already in group §6" + name); else { setGroup(sender, null); @@ -250,7 +254,7 @@ public class Chatgroups implements Module, Listener sendToGroup(group, "&9" + pname + " &7left the group!"); sendToGroup(name, "&9" + pname + " &7joined the group!"); setGroup(sender, name); - Utils.sendMessage(sender, null, "Successfully joined group §6" + name); + getLogger().message(sender, "Successfully joined group §6" + name); } return true; } @@ -267,7 +271,7 @@ public class Chatgroups implements Module, Listener if (group != null) sendToGroup(sender, message); else - Utils.sendErrorMessage(sender, null, "You are not in a chatgroup right now!"); + getLogger().message(sender, true, "You are not in a chatgroup right now!"); return true; } @@ -350,7 +354,6 @@ public class Chatgroups implements Module, Listener * @param message the message to be sent. */ private void sendToGroup(CommandSender sender, String message) { - message = Utils.colorify(message, sender); String name = Utils.getName(sender); String group = getGroup(sender); Utils.broadcast("§8[§bCG§8] §9", name + "§8: §6" + message, new BroadcastFilter() @@ -364,7 +367,7 @@ public class Chatgroups implements Module, Listener else return false; } - }, '&'); + }); if (ModuleLoader.getModule("Socialspy") != null) { Socialspy.spyBroadcast(sender, "§e" + group + " §a(cg)", message, "/cg", new BroadcastFilter() @@ -378,7 +381,7 @@ public class Chatgroups implements Module, Listener } if (getGroup(Bukkit.getConsoleSender()) == null || !getGroup(Bukkit.getConsoleSender()).equals(group)) { - Utils.info(name + " in " + group + ": " + message + " §8(hidden)"); + getLogger().info(name + " in " + group + ": " + message + " §8(hidden)"); } } @@ -415,7 +418,7 @@ public class Chatgroups implements Module, Listener } if (getGroup(Bukkit.getConsoleSender()) == null || !getGroup(Bukkit.getConsoleSender()).equals(group)) { - Utils.info("In " + group + ": " + message + " §8(hidden)"); + getLogger().info("In " + group + ": " + message + " §8(hidden)"); } } diff --git a/src/com/redstoner/modules/chatonly/ChatOnly.java b/src/com/redstoner/modules/chatonly/ChatOnly.java deleted file mode 100644 index dd41de6..0000000 --- a/src/com/redstoner/modules/chatonly/ChatOnly.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.redstoner.modules.chatonly; - -import com.redstoner.annotations.Version; -import com.redstoner.modules.Module; - -@Version(major = 3, minor = 0, revision = 0, compatible = 3) -public class ChatOnly implements Module -{} diff --git a/src/com/redstoner/modules/check/Check.java b/src/com/redstoner/modules/check/Check.java index 8fa522a..9163a4c 100644 --- a/src/com/redstoner/modules/check/Check.java +++ b/src/com/redstoner/modules/check/Check.java @@ -25,7 +25,6 @@ import com.nemez.cmdmgr.CommandManager; import com.redstoner.annotations.Version; import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.misc.mysql.JSONManager; import com.redstoner.misc.mysql.MysqlHandler; import com.redstoner.misc.mysql.elements.ConstraintOperator; @@ -34,7 +33,7 @@ import com.redstoner.misc.mysql.elements.MysqlDatabase; import com.redstoner.misc.mysql.elements.MysqlTable; import com.redstoner.modules.Module; -@Version(major = 3, minor = 0, revision = 3, compatible = 3) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Check implements Module, Listener { MysqlTable table; @@ -45,7 +44,7 @@ public class Check implements Module, Listener Map config = JSONManager.getConfiguration("check.json"); if (config == null || !config.containsKey("database") || !config.containsKey("table")) { - Utils.error("Could not load the Check config file, disabling!"); + getLogger().error("Could not load the Check config file, disabling!"); return false; } try @@ -56,7 +55,7 @@ public class Check implements Module, Listener } catch (NullPointerException e) { - Utils.error("Could not use the Check config, disabling!"); + getLogger().error("Could not use the Check config, disabling!"); return false; } return true; @@ -72,14 +71,13 @@ public class Check implements Module, Listener @Command(hook = "checkCommand", async = AsyncType.ALWAYS) public void checkCommand(final CommandSender sender, final String player) { - Utils.sendModuleHeader(sender); - Utils.sendMessage(sender, "", "&7Please note that the data may not be fully accurate!", '&'); + getLogger().message(sender, "&7Please note that the data may not be fully accurate!"); OfflinePlayer oPlayer; oPlayer = Bukkit.getPlayer(player); if (oPlayer == null) oPlayer = Bukkit.getServer().getOfflinePlayer(player); sendData(sender, oPlayer); - if (ModuleLoader.getModule("Tag") != null) + if (ModuleLoader.exists("Tag")) Bukkit.dispatchCommand(sender, "tag check " + player); } @@ -215,7 +213,7 @@ public class Check implements Module, Listener String firstJoin = getFirstJoin(player); String lastSeen = getLastSeen(player); firstJoin = (firstJoin.equals("1970-01-01 01:00")) ? "&eNever" : "&7(yyyy-MM-dd hh:mm:ss) &e" + firstJoin; - lastSeen = (lastSeen.equals("1970-1-1 1:0")) ? "&eNever" : "&7(yyyy-MM-dd hh:mm:ss) &e" + lastSeen; + lastSeen = (lastSeen.equals("1970-1-1 01:00")) ? "&eNever" : "&7(yyyy-MM-dd hh:mm:ss) &e" + lastSeen; Object[] websiteData = getWebsiteData(player); String websiteUrl = (websiteData[0] == null) ? "None" : (String) websiteData[0]; String email = (websiteData[0] == null) ? "Unknown" : (String) websiteData[1]; @@ -225,23 +223,26 @@ public class Check implements Module, Listener if (namesUsed == null) namesUsed = "None"; // messages - Utils.sendMessage(sender, "", "&7Data provided by Redstoner:", '&'); - Utils.sendMessage(sender, "", "&6> UUID: &e" + player.getUniqueId(), '&'); - Utils.sendMessage(sender, "", "&6> First joined: " + firstJoin, '&'); - Utils.sendMessage(sender, "", "&6> Last seen: " + lastSeen, '&'); - Utils.sendMessage(sender, "", "&6> Website account: &e" + websiteUrl, '&'); - Utils.sendMessage(sender, "", "&6> email: &e" + email, '&'); - if (emailNotConfirmed) - Utils.sendMessage(sender, "", "&6> &4Email NOT Confirmed!", '&'); - Utils.sendMessage(sender, "", "&7Data provided by ipinfo:", '&'); - Utils.sendMessage(sender, "", "&6> Country: &e" + country, '&'); - Utils.sendMessage(sender, "", "&7Data provided by Mojang:", '&'); - Utils.sendMessage(sender, "", "&6> All ingame names used so far: &e" + namesUsed, '&'); + // @noformat + String[] message = new String[] { + "&7Data provided by Redstoner:", + "&6> UUID: &e" + player.getUniqueId(), + "&6> First joined: " + firstJoin, + "&6> Last seen: " + lastSeen, + "&6> Website account: &e" + websiteUrl, + "&6> email: &e" + (emailNotConfirmed ? "&6> &4Email NOT Confirmed!" : email), + "&7Data provided by ipinfo:", + "&6> Country: &e" + country, + "&7Data provided by Mojang:", + "&6> All ingame names used so far: &e" + namesUsed + }; + //@format + getLogger().message(sender, message); } catch (Exception e) { e.printStackTrace(); - Utils.sendErrorMessage(sender, null, "&cSorry, something went wrong while fetching data", '&'); + getLogger().message(sender, true, "Sorry, something went wrong while fetching data"); } } @@ -250,7 +251,7 @@ public class Check implements Module, Listener public String getCommandString() { return "command check {\n" + - " perm utils.check;\n" + + " perm getLogger().check;\n" + " \n" + " [string:player] {\n" + " run checkCommand player;\n" + diff --git a/src/com/redstoner/modules/clear/Clear.java b/src/com/redstoner/modules/clear/Clear.java index e50844c..528fa8a 100644 --- a/src/com/redstoner/modules/clear/Clear.java +++ b/src/com/redstoner/modules/clear/Clear.java @@ -1,17 +1,20 @@ package com.redstoner.modules.clear; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; -@Version(major = 2, minor = 0, revision = 1, compatible = 2) +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Clear implements Module -{ +{ @Command(hook = "clear") public boolean clearInventory(CommandSender sender) { @@ -19,7 +22,23 @@ public class Clear implements Module Inventory inv = player.getInventory(); for (int i = 0; i < 36; i++) inv.clear(i); - Utils.sendMessage(sender, null, "Cleared your inventory!"); + getLogger().message(sender, "Cleared your inventory!"); + return true; + } + + @Command(hook = "clearother") + public boolean clearOtherInventory(CommandSender sender, String name) + { + Player player = Bukkit.getPlayer(name); + if (player == null) + getLogger().message(sender, true, "That player couldn't be found!"); + else + { + Inventory inv = player.getInventory(); + for (int i = 0; i < 36; i++) + inv.clear(i); + getLogger().message(sender, "Cleared " + player.getDisplayName() + "&7's inventory!"); + } return true; } @@ -29,11 +48,16 @@ public class Clear implements Module { return "command clear{\n" + " [empty] {\n" + - " help clears your inventory;\n" + + " help Clears your inventory;\n" + " type player;\n" + " perm utils.clear;\n" + " run clear;\n" + " }\n" + + " [string:player] {\n" + + " help Clears someone elses inventory;\n" + + " perm utils.admin.clear;\n" + + " run clearother player;\n" + + " }\n" + "}"; } // @format diff --git a/src/com/redstoner/modules/clearonjoin/ClearOnJoin.java b/src/com/redstoner/modules/clearonjoin/ClearOnJoin.java deleted file mode 100644 index b818563..0000000 --- a/src/com/redstoner/modules/clearonjoin/ClearOnJoin.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.redstoner.modules.clearonjoin; - -import java.io.File; - -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; -import org.json.simple.JSONArray; - -import com.nemez.cmdmgr.Command; -import com.redstoner.annotations.Version; -import com.redstoner.misc.JsonManager; -import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; -import com.redstoner.modules.Module; - -@Version(major = 2, minor = 1, revision = 0, compatible = 2) -public class ClearOnJoin implements Module, Listener -{ - private File listLocation = new File(Main.plugin.getDataFolder(), "clearonjoins.json"); - private JSONArray list; - - @SuppressWarnings({ "unchecked", "deprecation" }) - @Command(hook = "clearonjoin") - public void clearOnJoin(CommandSender sender, String player) - { - list.add("!" + Bukkit.getServer().getOfflinePlayer(player).getUniqueId().toString()); - saveList(); - Utils.sendMessage(sender, null, player + "'s inventory will be cleared next time they join."); - } - - @SuppressWarnings("unchecked") - @Command(hook = "clearonjoinself") - public void clearOnJoinSelf(CommandSender sender) - { - String name = ((Player)sender).getUniqueId().toString(); - if (list.contains(name)) - { - list.remove(name); - Utils.sendMessage(sender, null, "Your inventory will no longer be cleared upon joining."); - saveList(); - return; - } - list.add(name); - saveList(); - Utils.sendMessage(sender, null, "Your inventory will now be cleared upon joining."); - } - - @EventHandler - public void uponJoin(PlayerJoinEvent e) - { - Player player = e.getPlayer(); - String playerUUID = player.getUniqueId().toString(); - String playerName = player.getName(); - if (list.contains(playerName) || list.contains(playerUUID)) - { - e.getPlayer().getInventory().clear(); - Utils.sendMessage(player, null, "Inventory cleared."); - } - else if (list.contains("!" + playerName)) - { - player.getInventory().clear(); - list.remove("!" + playerName); - saveList(); - Utils.sendMessage(player, null, "Inventory cleared."); - } - } - - public void saveList() - { - JsonManager.save(list, listLocation); - } - - @Override - public boolean onEnable() - { - list = JsonManager.getArray(listLocation); - if (list == null) - list = new JSONArray(); - Bukkit.getServer().getPluginManager().registerEvents(this, Main.plugin); - return true; - } - - // @noformat - @Override - public String getCommandString() - { - return "command clearonjoin {\n" + - " [string:name] {\n" + - " help Clears that player's inventory the next time they join.;\n" + - " run clearonjoin name;\n" + - " perm utils.clearonjoin.other;\n" + - " }\n" + - " [empty] {\n" + - " help Clears your inventory every time you join.;\n" + - " run clearonjoinself;\n" + - " perm utils.clearonjoin.self;\n" + - " }\n" + - "}"; - } - // @format -} diff --git a/src/com/redstoner/modules/cycle/Cycle.java b/src/com/redstoner/modules/cycle/Cycle.java index 5f6d2a7..fbcdc8f 100644 --- a/src/com/redstoner/modules/cycle/Cycle.java +++ b/src/com/redstoner/modules/cycle/Cycle.java @@ -15,14 +15,16 @@ import org.json.simple.JSONArray; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 0, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Cycle implements Module, Listener { private File cycleFile = new File(Main.plugin.getDataFolder(), "cycle.json"); @@ -54,11 +56,11 @@ public class Cycle implements Module, Listener UUID uid = ((Player) sender).getUniqueId(); if (no_cyclers.remove(uid.toString())) { - Utils.sendMessage(sender, null, "Cycle enabled!"); + getLogger().message(sender, "Cycle enabled!"); saveCyclers(); } else - Utils.sendMessage(sender, null, "Cycle was already enabled!"); + getLogger().message(sender, "Cycle was already enabled!"); return true; } @@ -69,12 +71,12 @@ public class Cycle implements Module, Listener UUID uid = ((Player) sender).getUniqueId(); if (!no_cyclers.contains(uid.toString())) { - Utils.sendMessage(sender, null, "Cycle disabled!"); + getLogger().message(sender, "Cycle disabled!"); no_cyclers.add(uid.toString()); saveCyclers(); } else - Utils.sendMessage(sender, null, "Cycle was already disabled!"); + getLogger().message(sender, "Cycle was already disabled!"); return true; } @@ -89,9 +91,9 @@ public class Cycle implements Module, Listener int prev_slot = event.getPreviousSlot(); int new_slot = event.getNewSlot(); if (prev_slot == 0 && new_slot == 8) - shift(player, true); - else if (prev_slot == 8 && new_slot == 0) shift(player, false); + else if (prev_slot == 8 && new_slot == 0) + shift(player, true); } private void shift(Player player, boolean down) diff --git a/src/com/redstoner/modules/damnspam/DamnSpam.java b/src/com/redstoner/modules/damnspam/DamnSpam.java index 8b9d0fa..d7f12fc 100644 --- a/src/com/redstoner/modules/damnspam/DamnSpam.java +++ b/src/com/redstoner/modules/damnspam/DamnSpam.java @@ -31,13 +31,15 @@ import org.json.simple.parser.ParseException; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 1, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class DamnSpam implements Module, Listener { File configFile = new File(Main.plugin.getDataFolder(), "DamnSpam.json"); @@ -47,7 +49,7 @@ public class DamnSpam implements Module, Listener HashMap attachedBlocks; HashMap players; int maxTimeout = 240; - String timeoutErrorString = "&cThe timeout must be -1 or within 0 and " + maxTimeout; + String timeoutErrorString = "The timeout must be -1 or within 0 and " + maxTimeout; @Override public boolean onEnable() @@ -141,10 +143,10 @@ public class DamnSpam implements Module, Listener destroyingInput = true; else if (!isAcceptableTimeout(seconds)) { - Utils.sendMessage(sender, null, "&cThe timeout must be -1 or within 0 and " + maxTimeout, '&'); + getLogger().message(sender, true, "The timeout must be -1 or within 0 and " + maxTimeout); return; } - Utils.sendMessage(sender, null, "&aPlease click the input you would like to set.", '&'); + getLogger().message(sender, "Please click the input you would like to set."); setPlayer((Player) sender, destroyingInput, seconds, seconds); } @@ -160,10 +162,10 @@ public class DamnSpam implements Module, Listener } else if (!(isAcceptableTimeout(secondsOn) && isAcceptableTimeout(secondsOff))) { - Utils.sendMessage(sender, null, "&cThe timeout must be -1 or within 0 and " + maxTimeout, '&'); + getLogger().message(sender, true, "The timeout must be -1 or within 0 and " + maxTimeout); return; } - Utils.sendMessage(sender, null, "&aPlease click the input you would like to set.", '&'); + getLogger().message(sender, "Please click the input you would like to set."); setPlayer((Player) sender, destroyingInput, secondsOff, secondsOn); } @@ -183,7 +185,7 @@ public class DamnSpam implements Module, Listener { if (!acceptedInputs.contains(block.getType())) { - Utils.sendMessage(player, null, "&cThat block is not an acceptable input!", '&'); + getLogger().message(player, true, "That block is not an acceptable input!"); return true; } String typeStr = block.getType().toString().toLowerCase().replace("_", " "); @@ -193,8 +195,9 @@ public class DamnSpam implements Module, Listener changingInput = false; if (!buildCheck) { - Utils.sendMessage(player, null, - "&cThere is no timeout to remove on this " + typeStr + "(by setting the timeout to 0)", '&'); + getLogger().message(player, true, + "Something went wrong trying to change the timeout on this " + typeStr + "!"); + event.setCancelled(true); return true; } SpamInput input = players.get(player); @@ -202,18 +205,18 @@ public class DamnSpam implements Module, Listener { if (!inputs.containsKey(locationStr)) { - Utils.sendMessage(player, null, - "&cThere is no timeout to remove on this " + typeStr + "(by setting the timeout to 0)", - '&'); + getLogger().message(player, true, + "Something went wrong trying to change the timeout on this " + typeStr + "!"); + event.setCancelled(true); return true; } inputs.remove(locationStr); - Utils.sendMessage(player, null, "&aSuccessfully removed the timeout for this " + typeStr, '&'); + getLogger().message(player, "Successfully removed the timeout for this " + typeStr); } else { inputs.put(locationStr, players.get(player)); - Utils.sendMessage(player, null, "&aSuccessfully set a timeout for this " + typeStr, '&'); + getLogger().message(player, "Successfully set a timeout for this " + typeStr); } event.setCancelled(true); players.remove(player); @@ -237,9 +240,8 @@ public class DamnSpam implements Module, Listener : "the " + typeStr + " attached to that block"); if (!sender.isSneaking()) { - Utils.sendMessage(sender, null, "&cYou cannot destroy " + inputStr, '&'); - Utils.sendMessage(sender, "", "&c&nSneak&c and break or set the timeout to 0 if you want to remove it.", - '&'); + getLogger().message(sender, true, "You cannot destroy " + inputStr); + getLogger().message(sender, true, "Sneak and break or set the timeout to 0 if you want to remove it."); event.setCancelled(true); return; } @@ -247,11 +249,11 @@ public class DamnSpam implements Module, Listener { inputs.remove(posStr); saveInputs(); - Utils.sendMessage(sender, null, "&aSuccesfully removed " + inputStr, '&'); + getLogger().message(sender, "Succesfully removed " + inputStr); } else { - Utils.sendMessage(sender, null, "&cYou are not allowed to remove " + inputStr, '&'); + getLogger().message(sender, true, "You are not allowed to remove " + inputStr); event.setCancelled(true); } } @@ -305,6 +307,8 @@ public class DamnSpam implements Module, Listener @EventHandler(priority = EventPriority.HIGHEST) public void onInteract(PlayerInteractEvent event) { + if (event.getClickedBlock() == null) + return; boolean register = attemptInputRegister(event.getPlayer(), event.getClickedBlock(), event); if (!register && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && !event.isCancelled()) { @@ -326,13 +330,13 @@ public class DamnSpam implements Module, Listener if (checktime == -1) { event.setCancelled(true); - Utils.sendMessage(sender, null, "&cThis " + btype + " is locked permanently by /damnspam.", '&'); + getLogger().message(sender, "This " + btype + " is locked permanently by /damnspam."); } else if (timeLeft > 0) { event.setCancelled(true); - Utils.sendMessage(sender, null, "&cThis " + btype + " has a damnspam timeout of " + checktime - + ", with " + timeLeft + " left.", '&'); + getLogger().message(sender, "This " + btype + " has a damnspam timeout of " + checktime + ", with " + + timeLeft + " left."); } else { diff --git a/src/com/redstoner/modules/datamanager/DataManager.java b/src/com/redstoner/modules/datamanager/DataManager.java index f6de858..0a34eee 100644 --- a/src/com/redstoner/modules/datamanager/DataManager.java +++ b/src/com/redstoner/modules/datamanager/DataManager.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FilenameFilter; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.HashMap; import java.util.UUID; import org.bukkit.Bukkit; @@ -18,20 +19,24 @@ import org.json.simple.JSONObject; import com.nemez.cmdmgr.Command; import com.nemez.cmdmgr.CommandManager; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.coremods.moduleLoader.ModuleLoader; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; import com.redstoner.misc.Utils; import com.redstoner.modules.CoreModule; import com.redstoner.modules.Module; +@Commands(CommandHolderType.Stream) @AutoRegisterListener -@Version(major = 3, minor = 2, revision = 2, compatible = 3) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public final class DataManager implements CoreModule, Listener { protected final File dataFolder = new File(Main.plugin.getDataFolder(), "data"); protected JSONObject data = new JSONObject(); + protected HashMap> states = new HashMap>(); @Override public void postEnable() @@ -42,6 +47,7 @@ public final class DataManager implements CoreModule, Listener { loadData_(p.getUniqueId().toString()); } + states.put(getID(Bukkit.getConsoleSender()), new HashMap()); CommandManager.registerCommand(getClass().getResourceAsStream("DataManager.cmd"), this, Main.plugin); } @@ -64,7 +70,7 @@ public final class DataManager implements CoreModule, Listener } catch (Exception e) { - Utils.sendErrorMessage(sender, null, "Could not import data!"); + getLogger().error("Could not import data!"); } return true; } @@ -107,6 +113,7 @@ public final class DataManager implements CoreModule, Listener if (playerData == null) playerData = new JSONObject(); data.put(id.toString(), playerData); + states.put(id.toString(), new HashMap()); } public static Object getOrDefault(CommandSender sender, String key, Object fallback) @@ -511,6 +518,7 @@ public final class DataManager implements CoreModule, Listener protected void saveAndUnload(CommandSender sender) { saveAndUnload(getID(sender)); + states.remove(getID(sender)); } protected void saveAndUnload(String id) @@ -528,4 +536,50 @@ public final class DataManager implements CoreModule, Listener id = "CONSOLE"; return id; } + + public static void setState(CommandSender sender, String key, boolean value) + { + try + { + Module mod = ModuleLoader.getModule("DataManager"); + Method m = mod.getClass().getDeclaredMethod("setState_", CommandSender.class, String.class, boolean.class); + m.setAccessible(true); + m.invoke(mod, sender, key); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + } + + protected void setState_(CommandSender sender, String key, boolean value) + { + String id = getID(sender); + HashMap lstates = states.get(id); + lstates.put(key, value); + states.put(id, lstates); + } + + public static boolean getState(CommandSender sender, String key) + { + try + { + Module mod = ModuleLoader.getModule("DataManager"); + Method m = mod.getClass().getDeclaredMethod("getState_", CommandSender.class, String.class); + m.setAccessible(true); + return (boolean) m.invoke(mod, sender, key); + } + catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException + | InvocationTargetException e) + {} + return false; + } + + protected boolean getState_(CommandSender sender, String key) + { + String id = getID(sender); + HashMap lstates = states.get(id); + if (lstates == null) + return false; + return lstates.containsKey(key) ? lstates.get(key) : false; + } } diff --git a/src/com/redstoner/modules/eastereggs/Eastereggs.cmd b/src/com/redstoner/modules/eastereggs/Eastereggs.cmd new file mode 100644 index 0000000..bc58dff --- /dev/null +++ b/src/com/redstoner/modules/eastereggs/Eastereggs.cmd @@ -0,0 +1,45 @@ +command rekmedaddy { + [empty] { + run rekmedaddy; + help Rek me harder; + } +} +command shear { + [empty] { + run shear; + help Sets your shear item to the item in your hand.; + } + clear { + run shear_clear; + help Resets your shear item; + } + perm utils.eastereggs.shear; + type player; +} +command stick { + [empty] { + run stick; + help Does stuff.; + type player; + } +} +command hidden { + [empty] { + run hidden; + help Does stuff.; + } +} + +command remindmedaddy { + [empty] { + run remind; + help Does stuff.; + } +} + +command deadbush { + [empty] { + run bush; + help Does stuff.; + } +} \ No newline at end of file diff --git a/src/com/redstoner/modules/eastereggs/Eastereggs.java b/src/com/redstoner/modules/eastereggs/Eastereggs.java new file mode 100644 index 0000000..281b247 --- /dev/null +++ b/src/com/redstoner/modules/eastereggs/Eastereggs.java @@ -0,0 +1,359 @@ +package com.redstoner.modules.eastereggs; + +import java.io.File; +import java.util.HashMap; +import java.util.Map.Entry; +import java.util.Random; + +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.command.CommandSender; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractAtEntityEvent; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; + +import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; +import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; +import com.redstoner.misc.JsonManager; +import com.redstoner.misc.Main; +import com.redstoner.modules.Module; +import com.redstoner.modules.datamanager.DataManager; +import com.redstoner.utils.ItemProperties; + +import net.nemez.chatapi.click.Message; + +@Commands(CommandHolderType.File) +@AutoRegisterListener +@Version(major = 4, minor = 0, revision = 0, compatible = 4) +public class Eastereggs implements Module, Listener +{ + final File prefixFile = new File(Main.plugin.getDataFolder(), "eastereggs/prefix.json"), + itemFile = new File(Main.plugin.getDataFolder(), "eastereggs/item.json"), + modifierFile = new File(Main.plugin.getDataFolder(), "eastereggs/modifier.json"), + suffixFile = new File(Main.plugin.getDataFolder(), "eastereggs/suffix.json"); + JSONArray prefix, item, modifier, suffix; + + @Override + public boolean onEnable() + { + prefix = JsonManager.getArray(prefixFile); + item = JsonManager.getArray(itemFile); + modifier = JsonManager.getArray(modifierFile); + suffix = JsonManager.getArray(suffixFile); + return true; + } + + @Command(hook = "rekmedaddy") + public boolean rekmedaddy(CommandSender sender) + { + Message m = new Message(sender, null); + m.appendTextHover("§c#BlameNyx", "§5No really. Blame Nyx."); + m.send(); + return true; + } + + @Command(hook = "remind") + public boolean remindmedaddy(CommandSender sender) + { + Message m = new Message(sender, null); + m.appendText("§cls = list"); + m.send(); + return true; + } + + @Command(hook = "hidden") + public boolean hidden(CommandSender sender) + { + Message m = new Message(sender, null); + m.appendText("§dI am going to put cute stickers on your rotting corpse. <3"); + m.send(); + return true; + } + + @Command(hook = "shear") + public boolean shear(CommandSender sender) + { + Player p = (Player) sender; + ItemStack item = p.getInventory().getItemInMainHand(); + if (item == null) + return shear_clear(sender); + ItemProperties itemProps = new ItemProperties(item); + DataManager.setData(sender, "item", itemProps.toJSONObject()); + setPrefix("Shear"); + getLogger().message(sender, "Set ya shear item to whatever you have in ya hand m8!"); + return true; + } + + @Command(hook = "shear_clear") + public boolean shear_clear(CommandSender sender) + { + DataManager.removeData(sender, "item"); + getLogger().message(sender, "Cleared ya shear!"); + return true; + } + + @EventHandler + public void onPlayerShear(PlayerInteractAtEntityEvent event) + { + if (event.getHand() == EquipmentSlot.OFF_HAND) + return; + Entity e = event.getRightClicked(); + if (!(e instanceof Player)) + return; + if (event.getPlayer().getInventory().getItemInMainHand().getType() != Material.SHEARS) + return; + Player target = (Player) e; + if (!target.hasPermission("utils.eastereggs.shear")) + return; + Player player = event.getPlayer(); + if (!(player.getGameMode() == GameMode.CREATIVE)) + return; + ItemProperties itemProps = new ItemProperties(); + Object o = DataManager.getData(target, "item"); + ItemStack item; + if (o == null) + item = new ItemStack(Material.REDSTONE); + else + item = itemProps.loadFrom((JSONObject) o).toItemStack(); + player.playSound(player.getLocation(), Sound.ENTITY_SHEEP_SHEAR, 1f, 1f); + player.getInventory().addItem(item); + } + + @Command(hook = "stick") + public boolean stick(CommandSender sender) + { + setPrefix("Stick"); + Player player = (Player) sender; + if (player.getGameMode() != GameMode.CREATIVE) + { + getLogger().message(sender, true, "§4The gods are angry with you, as you tried to cheat the system..."); + return true; + } + Random random = new Random(); + JSONObject prefx = (JSONObject) prefix.get(random.nextInt(prefix.size())); + JSONObject itm = (JSONObject) item.get(random.nextInt(item.size())); + JSONObject mod = (JSONObject) modifier.get(random.nextInt(modifier.size())); + JSONObject sufx = (JSONObject) suffix.get(random.nextInt(suffix.size())); + + StringBuilder sb = new StringBuilder("§r"); + sb.append(prefx.get("name")); + sb.append(" "); + sb.append(itm.get("name")); + sb.append(" of "); + sb.append(mod.get("name")); + sb.append(" "); + sb.append(sufx.get("name")); + + String itemName = sb.toString().replace(" ", " "); + + Object rawMaterialName; + if ((rawMaterialName = sufx.get("item")) == null) + if ((rawMaterialName = mod.get("item")) == null) + if ((rawMaterialName = itm.get("item")) == null) + if ((rawMaterialName = prefx.get("item")) == null) + rawMaterialName = "minecraft:stick"; + + Material material = Material.valueOf(((String) rawMaterialName).toUpperCase().replaceFirst(".+?:", "")); + if (material == null) + material = Material.STICK; + + ItemStack resultingItem = new ItemStack(material); + ItemMeta meta = resultingItem.getItemMeta(); + if (meta == null) + meta = Bukkit.getServer().getItemFactory().getItemMeta(material); + if (meta != null) + { + meta.setDisplayName(itemName); + + // Enchantments + + boolean override = false; + int overrideLvl = 0; + int totalMod = 0; + + Object rawMod; + if ((rawMod = sufx.get("mod")) != null) + { + String stringMod = (String) rawMod; + if (stringMod.startsWith("=")) + { + overrideLvl = Integer.parseInt(stringMod.replaceFirst("=", "")); + override = true; + } + else + { + totalMod += parseInt(stringMod); + } + } + if ((rawMod = mod.get("mod")) != null) + { + String stringMod = (String) rawMod; + if (stringMod.startsWith("=")) + { + overrideLvl = Integer.parseInt(stringMod.replaceFirst("=", "")); + override = true; + } + else + { + totalMod += parseInt(stringMod); + } + } + if ((rawMod = itm.get("mod")) != null) + { + String stringMod = (String) rawMod; + if (stringMod.startsWith("=")) + { + overrideLvl = Integer.parseInt(stringMod.replaceFirst("=", "")); + override = true; + } + else + { + totalMod += parseInt(stringMod); + } + } + if ((rawMod = prefx.get("mod")) != null) + { + String stringMod = (String) rawMod; + if (stringMod.startsWith("=")) + { + overrideLvl = Integer.parseInt(stringMod.replaceFirst("=", "")); + override = true; + } + else + { + totalMod += parseInt(stringMod); + } + } + + HashMap enchants = parseEnchants(prefx, itm, mod, sufx); + if (enchants != null) + for (Entry entry : enchants.entrySet()) + { + Integer lvl = entry.getValue(); + if (lvl == null) + lvl = 1; + meta.addEnchant(entry.getKey() == null ? getRandomValue(Enchantment.values()) : entry.getKey(), + override ? overrideLvl : (lvl + totalMod), true); + } + + resultingItem.setItemMeta(meta); + } + + getLogger().message(player, "§8You have received a gift from the gods!"); + try + { + player.getInventory().addItem(resultingItem); + } + catch (Exception e) + { + e.printStackTrace(); + } + + return true; + } + + public HashMap parseEnchants(JSONObject prefx, JSONObject itm, JSONObject mod, + JSONObject sufx) + { + HashMap result = new HashMap(); + Object raw; + if ((raw = sufx.get("ench")) != null) + { + if (raw instanceof String) + return null; + JSONArray rawArray = (JSONArray) raw; + for (Object o : rawArray) + { + JSONObject rawEnchant = (JSONObject) o; + result.put(Enchantment.getByName((String) rawEnchant.get("id")), + parseInt((String) rawEnchant.get("lvl"))); + } + } + + if ((raw = mod.get("ench")) != null) + { + if (raw instanceof String) + return null; + JSONArray rawArray = (JSONArray) raw; + for (Object o : rawArray) + { + JSONObject rawEnchant = (JSONObject) o; + result.put(Enchantment.getByName((String) rawEnchant.get("id")), + parseInt((String) rawEnchant.get("lvl"))); + } + } + + if ((raw = itm.get("ench")) != null) + { + if (raw instanceof String) + return null; + JSONArray rawArray = (JSONArray) raw; + for (Object o : rawArray) + { + JSONObject rawEnchant = (JSONObject) o; + result.put(Enchantment.getByName((String) rawEnchant.get("id")), + parseInt((String) rawEnchant.get("lvl"))); + } + } + + if ((raw = prefx.get("ench")) != null) + { + if (raw instanceof String) + return null; + JSONArray rawArray = (JSONArray) raw; + for (Object o : rawArray) + { + JSONObject rawEnchant = (JSONObject) o; + result.put(Enchantment.getByName((String) rawEnchant.get("id")), + parseInt((String) rawEnchant.get("lvl"))); + } + } + return result; + } + + @Command(hook = "bush") + public boolean bush(CommandSender sender) + { + Message m = new Message(sender, null); + m.appendText("§8There is no /deadbush"); + m.send(); + return true; + } + + private static Integer parseInt(String raw) + { + if (raw == null) + return null; + else if (raw.startsWith("[")) + { + String[] rawArray = raw.replace("[", "").replace("]", "").split(";"); + if (rawArray.length != 2) + return null; + int lower = Integer.parseInt(rawArray[0]); + int upper = Integer.parseInt(rawArray[1]); + Random random = new Random(); + return random.nextInt(upper - lower) + lower; + } + else + return Integer.valueOf(raw); + } + + private static T getRandomValue(T[] array) + { + Random random = new Random(); + return array[random.nextInt(array.length)]; + } +} diff --git a/src/com/redstoner/modules/firstseen/FirstSeen.java b/src/com/redstoner/modules/firstseen/FirstSeen.java index 2d4702f..5005e1a 100644 --- a/src/com/redstoner/modules/firstseen/FirstSeen.java +++ b/src/com/redstoner/modules/firstseen/FirstSeen.java @@ -10,18 +10,19 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; -@Version(major = 2, minor = 0, revision = 7, compatible = 2) +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class FirstSeen implements Module { @SuppressWarnings("deprecation") @Command(hook = "firstseenP") public void firstseen(CommandSender sender, String person) { - Utils.sendMessage(sender, "", "&7Please note that the data may not be fully accurate!", '&'); OfflinePlayer oPlayer = Bukkit.getPlayer(person); if (oPlayer == null) oPlayer = Bukkit.getServer().getOfflinePlayer(person); @@ -30,11 +31,11 @@ public class FirstSeen implements Module String disDate = format.format(new Date(firstJoin)); if (disDate.equals("1969-12-31 19:00")) { - Utils.sendMessage(sender, null, "&3" + oPlayer.getName() + "&c has never joined.", '&'); + getLogger().message(sender, true, "&3" + oPlayer.getName() + "&c has never joined."); } else { - Utils.sendMessage(sender, null, "&3" + oPlayer.getName() + " &efirst joined&a " + disDate + "&e.", '&'); + getLogger().message(sender, "&3" + oPlayer.getName() + " &efirst joined&a " + disDate + "&e."); } } @@ -58,7 +59,7 @@ public class FirstSeen implements Module Player player = Bukkit.getPlayer(name); if (player == null) { - Utils.sendErrorMessage(sender, null, + getLogger().message(sender, true, "That player couldn't be found! Hint: Currently, you can only check statistics of players that are online!"); return true; } @@ -66,13 +67,12 @@ public class FirstSeen implements Module int days = ticks_lived / 1728000; int hours = (ticks_lived % 1728000) / 72000; int minutes = (ticks_lived % 72000) / 1200; - Utils.sendMessage(sender, null, - "The player &e" + name + " &7has been on for " + getLogger().message(sender, + "The player &e" + name + " &7has been online for " + (days == 0 && hours == 0 && minutes == 0 ? "less than a minute." : ("a total of: &e" + (days != 0 ? (days + "d ") : "") + ((hours != 0 || days != 0) ? (hours + "h ") : "") - + ((minutes != 0 || hours != 0 || days != 0) ? (minutes + "m") : ""))), - '&'); + + ((minutes != 0 || hours != 0 || days != 0) ? (minutes + "m") : "")))); return true; } diff --git a/src/com/redstoner/modules/illumination/Illumination.java b/src/com/redstoner/modules/illumination/Illumination.java index b18276c..a6f1337 100644 --- a/src/com/redstoner/modules/illumination/Illumination.java +++ b/src/com/redstoner/modules/illumination/Illumination.java @@ -6,11 +6,13 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; -@Version(major = 2, minor = 0, revision = 1, compatible = 2) +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Illumination implements Module { PotionEffect effect = new PotionEffect(PotionEffectType.NIGHT_VISION, Integer.MAX_VALUE, 0, false, false); @@ -22,12 +24,12 @@ public class Illumination implements Module if (player.hasPotionEffect(PotionEffectType.NIGHT_VISION)) { player.removePotionEffect(PotionEffectType.NIGHT_VISION); - Utils.sendMessage(sender, null, "Night Vision Disabled."); + getLogger().message(sender, "Night Vision Disabled."); } else { player.addPotionEffect(effect, true); - Utils.sendMessage(sender, null, "Night Vision Enabled."); + getLogger().message(sender, "Night Vision Enabled."); } } diff --git a/src/com/redstoner/modules/imout/Imout.java b/src/com/redstoner/modules/imout/Imout.java index 463800f..f7001fe 100644 --- a/src/com/redstoner/modules/imout/Imout.java +++ b/src/com/redstoner/modules/imout/Imout.java @@ -7,11 +7,14 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; -@Version(major = 2, minor = 0, revision = 1, compatible = 2) +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Imout implements Module { List imout_toggle_list = new ArrayList(); @@ -25,8 +28,7 @@ public class Imout implements Module if (imout_toggle_list.contains(name)) { symbol = "§a§l+"; - Utils.sendModuleHeader(sender); - Utils.sendMessage(sender, "", "§eWelcome back! You are no longer hidden"); + getLogger().message(sender, "§eWelcome back! You are no longer hidden", ""); s.performCommand("vanish off"); s.performCommand("act off"); imout_toggle_list.remove(name); @@ -34,7 +36,7 @@ public class Imout implements Module else { symbol = "§c§l-"; - sender.sendMessage("§eYou just left... Or didn't you?"); + getLogger().message(sender, "§e§oPoof!§e You are now gone!", ""); s.performCommand("vanish on"); s.performCommand("act on"); imout_toggle_list.add(name); diff --git a/src/com/redstoner/modules/iplock/IPLock.java b/src/com/redstoner/modules/iplock/IPLock.java deleted file mode 100644 index 671f878..0000000 --- a/src/com/redstoner/modules/iplock/IPLock.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.redstoner.modules.iplock; - -import org.bukkit.event.Listener; -import org.bukkit.event.player.AsyncPlayerPreLoginEvent; -import org.bukkit.event.player.AsyncPlayerPreLoginEvent.Result; -import org.json.simple.JSONObject; - -import com.redstoner.annotations.Version; -import com.redstoner.modules.Module; - -@Version(major = 3, minor = 0, revision = 0, compatible = 3) -public class IPLock implements Module, Listener -{ - JSONObject iplocks; - - @Override - public void postEnable() - {} - - public void onPlayerJoin(AsyncPlayerPreLoginEvent event) - { - event.getAddress().getHostAddress().toString(); - event.setKickMessage(""); - event.setLoginResult(Result.KICK_OTHER); - } -} diff --git a/src/com/redstoner/modules/lagchunks/LagChunks.java b/src/com/redstoner/modules/lagchunks/LagChunks.java index abbf048..0db6da4 100644 --- a/src/com/redstoner/modules/lagchunks/LagChunks.java +++ b/src/com/redstoner/modules/lagchunks/LagChunks.java @@ -12,11 +12,13 @@ import org.bukkit.entity.Player; import com.nemez.cmdmgr.Command; import com.nemez.cmdmgr.Command.AsyncType; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; -@Version(major = 2, minor = 0, revision = 1, compatible = 2) +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class LagChunks implements Module { private List laggyChunks = new ArrayList(); @@ -43,16 +45,17 @@ public class LagChunks implements Module { if (laggyChunks.size() > 0) { - Utils.sendModuleHeader(sender); + ArrayList message = new ArrayList(); for (LaggyChunk lc : laggyChunks) { - Utils.sendMessage(sender, "", "§b[§a" + laggyChunks.indexOf(lc) + "§b]: §a" + lc.x + "§7, §a" + lc.y - + "§7, §a" + lc.z + " §7(" + lc.world.getName() + ") §a- §b" + lc.amount + " entities"); + message.add("§b[§a" + laggyChunks.indexOf(lc) + "§b]: §a" + lc.x + "§7, §a" + lc.y + "§7, §a" + lc.z + + " §7(" + lc.world.getName() + ") §a- §b" + lc.amount + " entities"); } - Utils.sendMessage(sender, "", "§2-------------------"); + message.add("§2-------------------"); + getLogger().message(sender, message.toArray(new String[] {})); } else - Utils.sendMessage(sender, null, "Couldn't find any chunks with that many entities."); + getLogger().message(sender, true, "Couldn't find any chunks with that many entities."); } @Command(hook = "scan_cmd", async = AsyncType.ALWAYS) @@ -69,11 +72,11 @@ public class LagChunks implements Module if (number < laggyChunks.size()) { player.teleport(laggyChunks.get(number).getLocation()); - Utils.sendMessage(player, null, "§aTeleported to chunk " + number + "!"); + getLogger().message(player, "§aTeleported to chunk " + number + "!"); } else { - Utils.sendErrorMessage(sender, null, "§4Invalid chunk number! Use §e/lc list §4to show laggy chunks!"); + getLogger().message(sender, true, "§4Invalid chunk number! Use §e/lc list §4to show laggy chunks!"); } } diff --git a/src/com/redstoner/modules/list/List.java b/src/com/redstoner/modules/list/List.java index 0398fd7..60d2d2d 100644 --- a/src/com/redstoner/modules/list/List.java +++ b/src/com/redstoner/modules/list/List.java @@ -8,13 +8,16 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.nemez.cmdmgr.Command; -import com.nemez.cmdmgr.CommandManager; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Main; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; -@Version(major = 3, minor = 0, revision = 2, compatible = 3) +import net.nemez.chatapi.click.Message; + +@Commands(CommandHolderType.File) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class List implements Module { private HashMap onConsole; @@ -23,7 +26,6 @@ public class List implements Module public void postEnable() { onConsole = new HashMap(); - CommandManager.registerCommand(getClass().getResourceAsStream("List.cmd"), this, Main.plugin); } @Command(hook = "console_join") @@ -40,7 +42,10 @@ public class List implements Module public boolean console_leave(CommandSender sender, String name) { if (onConsole.containsKey(name)) - onConsole.put(name, onConsole.get(name) - 1); + if (onConsole.get(name) == 1) + onConsole.remove(name); + else + onConsole.put(name, onConsole.get(name) - 1); return true; } @@ -59,11 +64,9 @@ public class List implements Module @Command(hook = "list_rank") public boolean listRank(CommandSender sender, String rank) { - Utils.sendModuleHeader(sender); - int onlinePlayers = Bukkit.getOnlinePlayers().size(); - Utils.sendMessage(sender, "", "&7There are &e" + onlinePlayers + "&7 out of maximum &e" + Bukkit.getMaxPlayers() - + "&7 players online.", '&'); + getLogger().message(sender, "", "&7There are &e" + onlinePlayers + "&7 out of maximum &e" + + Bukkit.getMaxPlayers() + "&7 players online."); rank = rank.toLowerCase(); boolean all = rank.equals("all"); @@ -112,20 +115,18 @@ public class List implements Module { if (!all) { - Utils.sendErrorMessage(sender, null, "You do not have permissions to see who's on console!"); + getLogger().message(sender, true, "You do not have permissions to see who's on console!"); shownAnything = true; } } } if (!shownAnything) { - Utils.sendErrorMessage(sender, "", - "Looks like I couldn't figure out what you meant. Try again with different parameters maybe?", '&'); - Utils.sendMessage(sender, "", - "Possible parameters are: &eAll&7, &eStaff&7, &eVisitor&7, &eMember&7, &eBuilder&7, &eTrusted&7, &eMit&7, &eMod&7, &eAdmin&7 and &eLead", - '&'); - Utils.sendMessage(sender, "", "You can also combine any of the parameters, like this: &eMember, Staff", - '&'); + getLogger().message(sender, + new String[] { + "Looks like I couldn't figure out what you meant. Try again with different parameters maybe?", + "Possible parameters are: &eAll&7, &eStaff&7, &eVisitor&7, &eMember&7, &eBuilder&7, &eTrusted&7, &eMit&7, &eMod&7, &eAdmin&7 and &eLead", + "You can also combine any of the parameters, like this: &eMember, Staff"}); } return true; } @@ -148,7 +149,9 @@ public class List implements Module } if (players != null) { - Utils.sendMessage(sender, "", "&8[" + rank + "&8]&7: " + players, '&'); + Message m = new Message(sender, null); + m.appendText("&8[" + rank + "&8]&7: " + players); + m.send(); return true; } return false; diff --git a/src/com/redstoner/modules/loginsecurity/LoginSecurity.java b/src/com/redstoner/modules/loginsecurity/LoginSecurity.java index 38129c5..ef002ea 100644 --- a/src/com/redstoner/modules/loginsecurity/LoginSecurity.java +++ b/src/com/redstoner/modules/loginsecurity/LoginSecurity.java @@ -20,9 +20,10 @@ import org.bukkit.scheduler.BukkitScheduler; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.misc.mysql.JSONManager; import com.redstoner.misc.mysql.MysqlHandler; import com.redstoner.misc.mysql.elements.ConstraintOperator; @@ -33,8 +34,9 @@ import com.redstoner.misc.mysql.elements.MysqlTable; import com.redstoner.misc.mysql.types.text.VarChar; import com.redstoner.modules.Module; +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 1, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class LoginSecurity implements Module, Listener { protected static Map loggingIn; @@ -46,7 +48,7 @@ public class LoginSecurity implements Module, Listener Map config = JSONManager.getConfiguration("loginsecurity.json"); if (config == null || !config.containsKey("database") || !config.containsKey("table")) { - Utils.sendErrorMessage(Bukkit.getConsoleSender(), null, + getLogger().message(Bukkit.getConsoleSender(), true, "Could not load the LoginSecurity config file, disabling!"); return false; } @@ -60,8 +62,7 @@ public class LoginSecurity implements Module, Listener } catch (NullPointerException e) { - Utils.sendErrorMessage(Bukkit.getConsoleSender(), null, - "Could not use the LoginSecurity config, disabling!"); + getLogger().message(Bukkit.getConsoleSender(), true, "Could not use the LoginSecurity config, disabling!"); return false; } loggingIn = new HashMap<>(); @@ -212,7 +213,7 @@ public class LoginSecurity implements Module, Listener { return; } - Utils.sendMessage(player, null, "You'll have to log in within 60s or you'll be kicked!"); + getLogger().message(player, "You'll have to log in within 60s or you'll be kicked!"); loggingIn.put(player.getUniqueId(), player.getLocation()); BukkitScheduler scheduler = Bukkit.getScheduler(); RepeatingLoginRunnable repeatingRunnable = new RepeatingLoginRunnable(this, player); diff --git a/src/com/redstoner/modules/mentio/Mentio.java b/src/com/redstoner/modules/mentio/Mentio.java index ea2598d..6a610aa 100644 --- a/src/com/redstoner/modules/mentio/Mentio.java +++ b/src/com/redstoner/modules/mentio/Mentio.java @@ -1,6 +1,7 @@ package com.redstoner.modules.mentio; import java.io.File; +import java.util.ArrayList; import java.util.UUID; import java.util.regex.Pattern; @@ -16,14 +17,18 @@ import org.json.simple.JSONObject; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +import net.nemez.chatapi.click.Message; + +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 2, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Mentio implements Module, Listener { private File mentioLocation = new File(Main.plugin.getDataFolder(), "mentio.json"); @@ -56,11 +61,11 @@ public class Mentio implements Module, Listener playerMentios.add(player.getDisplayName().split(" ")[0].replaceAll("§[0-9a-fk-o]", "")); } if (playerMentios.contains(trigger)) - Utils.sendErrorMessage(sender, null, "You already had that as a mentio!"); + getLogger().message(sender, true, "You already had that as a mentio!"); else { playerMentios.add(trigger); - Utils.sendMessage(sender, null, "Successfully added the trigger §e" + trigger + " §7for you!"); + getLogger().message(sender, "Successfully added the trigger §e" + trigger + " §7for you!"); mentios.put(uuid.toString(), playerMentios); saveMentios(); } @@ -81,10 +86,10 @@ public class Mentio implements Module, Listener playerMentios.add(player.getDisplayName().split(" ")[0].replaceAll("§[0-9a-fk-o]", "")); } if (!playerMentios.remove(trigger)) - Utils.sendErrorMessage(sender, null, "You didn't have that as a mentio!"); + getLogger().message(sender, true, "You didn't have that as a mentio!"); else { - Utils.sendMessage(sender, null, "Successfully removed the trigger §e" + trigger + " §7for you!"); + getLogger().message(sender, "Successfully removed the trigger §e" + trigger + " §7for you!"); mentios.put(uuid.toString(), playerMentios); saveMentios(); } @@ -95,7 +100,7 @@ public class Mentio implements Module, Listener @Command(hook = "listmentios") public boolean listMentios(CommandSender sender) { - Utils.sendModuleHeader(sender); + ArrayList message = new ArrayList(); Player player = (Player) sender; UUID uuid = player.getUniqueId(); JSONArray playerMentios = (JSONArray) mentios.get(uuid.toString()); @@ -108,8 +113,9 @@ public class Mentio implements Module, Listener for (Object raw : playerMentios) { String mentio = (String) raw; - Utils.sendMessage(sender, "&2 -> &e", mentio, '&'); + message.add("&2 -> &e" + mentio); } + getLogger().message(sender, message.toArray(new String[] {})); return true; } @@ -144,10 +150,11 @@ public class Mentio implements Module, Listener lastColorCodes += "§" + c; lastChar = c; } - Utils.sendMessage(player, "", - event.getFormat().replace("%1$s", event.getPlayer().getDisplayName()).replace("%2$s", - event.getMessage().replaceFirst("(?i)(" + Pattern.quote(mentio) + ")([^ ]*)", - "§a§o$1$2" + lastColorCodes))); + Message m = new Message(player, null); + m.appendText(event.getFormat().replace("%1$s", event.getPlayer().getDisplayName()).replace("%2$s", + event.getMessage().replaceFirst("(?i)(" + Pattern.quote(mentio) + ")([^ ]*)", + "§a§o$1$2" + lastColorCodes))); + m.send(); player.playSound(player.getLocation(), Sound.ENTITY_CHICKEN_EGG, 1, 1); return; } diff --git a/src/com/redstoner/modules/message/Message.java b/src/com/redstoner/modules/message/Message.java index e0d6d86..f3d725c 100644 --- a/src/com/redstoner/modules/message/Message.java +++ b/src/com/redstoner/modules/message/Message.java @@ -8,26 +8,23 @@ import org.bukkit.command.CommandSender; import com.nemez.cmdmgr.Command; import com.nemez.cmdmgr.Command.AsyncType; -import com.nemez.cmdmgr.CommandManager; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.BroadcastFilter; -import com.redstoner.misc.Main; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; import com.redstoner.modules.socialspy.Socialspy; -@Version(major = 3, minor = 3, revision = 4, compatible = 3) +import net.nemez.chatapi.ChatAPI; + +@Commands(CommandHolderType.File) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Message implements Module { HashMap replyTargets = new HashMap(); - @Override - public void postEnable() - { - CommandManager.registerCommand(getClass().getResourceAsStream("Message.cmd"), this, Main.plugin); - } - @Command(hook = "message", async = AsyncType.ALWAYS) public boolean message(CommandSender sender, String target, String message) { @@ -38,12 +35,12 @@ public class Message implements Module p = Bukkit.getPlayer(target); if (p == null) { - Utils.sendErrorMessage(sender, null, "That player couldn't be found!"); + getLogger().message(sender, true, "That player couldn't be found!"); return true; } else { - message = Utils.colorify(message, sender); + message = ChatAPI.colorify(sender, message); if (ModuleLoader.getModule("Socialspy") != null) Socialspy.spyBroadcast(sender, p, message, "/m", new BroadcastFilter() { @@ -53,8 +50,15 @@ public class Message implements Module return !(recipient.equals(sender) || recipient.equals(p)); } }); - Utils.sendMessage(sender, "&6[&cme &6-> " + Utils.getName(p) + "&6] ", "§f" + message, '&'); - Utils.sendMessage(p, "&6[" + Utils.getName(sender) + " &6-> &cme&6] ", "§f" + message, '&'); + + net.nemez.chatapi.click.Message m = new net.nemez.chatapi.click.Message(sender, null); + m.appendText("&6[&cme &6-> " + Utils.getName(p) + "&6] " + "§f" + message); + m.send(); + + net.nemez.chatapi.click.Message m2 = new net.nemez.chatapi.click.Message(p, null); + m2.appendText("&6[" + Utils.getName(sender) + " &6-> &cme&6] " + "§f" + message); + m2.send(); + replyTargets.put(sender, p); replyTargets.put(p, sender); } @@ -67,12 +71,12 @@ public class Message implements Module CommandSender target = replyTargets.get(sender); if (target == null || ((target instanceof OfflinePlayer) && !((OfflinePlayer) target).isOnline())) { - Utils.sendErrorMessage(sender, null, "You don't have anyone to reply to!"); + getLogger().message(sender, true, "You don't have anyone to reply to!"); return true; } else { - message = Utils.colorify(message, sender); + message = ChatAPI.colorify(sender, message); if (ModuleLoader.getModule("Socialspy") != null) Socialspy.spyBroadcast(sender, target, message, "/r", new BroadcastFilter() { @@ -82,8 +86,14 @@ public class Message implements Module return !(recipient.equals(sender) || recipient.equals(target)); } }); - Utils.sendMessage(sender, "&6[&cme &6-> " + Utils.getName(target) + "&6] ", "§f" + message, '&'); - Utils.sendMessage(target, "&6[" + Utils.getName(sender) + " &6-> &cme&6] ", "§f" + message, '&'); + + net.nemez.chatapi.click.Message m = new net.nemez.chatapi.click.Message(sender, null); + m.appendText("&6[&cme &6-> " + Utils.getName(target) + "&6] " + "§f" + message); + m.send(); + + net.nemez.chatapi.click.Message m2 = new net.nemez.chatapi.click.Message(target, null); + m2.appendText("&6[" + Utils.getName(sender) + " &6-> &cme&6] " + "§f" + message); + m2.send(); } replyTargets.put(sender, target); replyTargets.put(target, sender); diff --git a/src/com/redstoner/modules/misc/Misc.java b/src/com/redstoner/modules/misc/Misc.java index f5f11c3..615591f 100644 --- a/src/com/redstoner/modules/misc/Misc.java +++ b/src/com/redstoner/modules/misc/Misc.java @@ -8,6 +8,7 @@ import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockFromToEvent; @@ -19,16 +20,23 @@ import org.json.simple.JSONObject; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +import net.nemez.chatapi.ChatAPI; +import net.nemez.chatapi.click.Message; + +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 22, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Misc implements Module, Listener { - private final String[] sudoBlacklist = new String[] {".?+:?esudo", ".?+:?sudo", ".?+:?script.*", ".?+:?stop", - ".?+:?modules"}; + private final String[] sudoBlacklist = new String[] {"(.*:)?e?sudo", "(.*:)?script.*", "(.*:)?stop", + "(.*:)?modules", "(.*:)?sayn", "(.*:)?pex", "(.*:)?console_.*", "(.*:)?op", "(.*:)?login", "(.*:)?register", + "(.*:)?.*pass"}; JSONObject config; JSONArray unprotectedRegions; @@ -38,34 +46,31 @@ public class Misc implements Module, Listener Player player = event.getPlayer(); if (!player.hasPlayedBefore()) { - Utils.broadcast("", "\n&a&lPlease welcome &f" + player.getDisplayName() + " &a<o Redstoner!\n", null, - '&'); - Utils.sendMessage(player, "", " \n \n \n \n \n \n \n \n \n \n \n \n ", '&'); - Utils.sendMessage(player, "", " &4Welcome to the Redstoner Server!", '&'); - Utils.sendMessage(player, "", " &6Before you ask us things, take a quick", '&'); - Utils.sendMessage(player, "", " &6look at &a&nredstoner.com/info", '&'); - Utils.sendMessage(player, "", " \n&6thank you and happy playing ;)", '&'); - Utils.sendMessage(player, "", " \n \n", '&'); + Utils.broadcast("", "\n§a§lPlease welcome §f" + player.getDisplayName() + " §a§lto Redstoner!\n", null); + String[] message = new String[] {" \n \n \n \n \n \n \n \n \n \n \n \n ", + " &4Welcome to the Redstoner Server!", " &6Before you ask us things, take a quick", + " &6look at &a&nredstoner.com/info", " \n&6thank you and happy playing ;)", " \n \n"}; + getLogger().message(player, message); } Material spawnBlock = player.getLocation().getBlock().getType(); if (spawnBlock == Material.PORTAL || spawnBlock == Material.ENDER_PORTAL) { - Utils.sendMessage(player, "", "&4Looks like you spawned in a portal... Let me help you out", '&'); - Utils.sendMessage(player, "", "&6You can use /back if you &nreally&6 want to go back", '&'); + getLogger().message(player, "&4Looks like you spawned in a portal... Let me help you out"); + getLogger().message(player, "&6You can use /back if you &nreally&6 want to go back"); player.teleport(player.getWorld().getSpawnLocation()); } } // Disables spectator teleportation - @EventHandler - public void onSpectatorTeleort(PlayerTeleportEvent event) + // Fixes MV end portal crashing + @EventHandler(priority = EventPriority.LOWEST) + public void onTeleport(PlayerTeleportEvent event) { Player player = event.getPlayer(); - if (!event.isCancelled() && event.getCause() == TeleportCause.SPECTATE - && !player.hasPermission("utils.tp.spectate")) + if (!event.isCancelled() && event.getCause() == TeleportCause.SPECTATE && !player.hasPermission("utils.tp")) { event.setCancelled(true); - Utils.sendErrorMessage(event.getPlayer(), null, "Spectator teleportation is disabled!"); + getLogger().message(event.getPlayer(), true, "Spectator teleportation is disabled!"); } } @@ -107,18 +112,18 @@ public class Misc implements Module, Listener } catch (NumberFormatException e) { - Utils.sendErrorMessage(sender, null, "That is not a valid number!"); + getLogger().message(sender, true, "That is not a valid number!"); return true; } Bukkit.dispatchCommand(sender, "pex user " + user + " group add " + group + " * " + duration); - Utils.sendMessage(sender, null, "Added to group " + group + "for " + duration + " seconds."); + getLogger().message(sender, "Added to group " + group + "for " + duration + " seconds."); return true; } @Command(hook = "echo") public boolean echo(CommandSender sender, String text) { - Utils.sendMessage(sender, "", "&f" + text, '&'); + sender.sendMessage(text); return true; } @@ -130,29 +135,24 @@ public class Misc implements Module, Listener name = ((Player) sender).getDisplayName(); else name = "§9" + sender.getName(); - if (sender.hasPermission("essentials.chat.color")) - Utils.broadcast(" §7- " + name + " §7⇦ ", text, null, '&'); - else - Utils.broadcast(" §7- " + name + " §7⇦ ", text, null); + text = ChatAPI.colorify(sender, text); + Utils.broadcast(" §7- " + name + " §7⇦ ", text, null); return true; } @Command(hook = "say") public boolean say(CommandSender sender, String message) { - String name; - if (sender instanceof Player) - name = ((Player) sender).getDisplayName(); - else - name = sender.getName(); - Utils.broadcast(" &7[&9" + name.replaceAll("[^0-9a-zA-Z§&\\[\\]]", "") + "&7]: ", "&r" + message, null, '&'); + String name = Utils.getName(sender); + Utils.broadcast(" §7[§9" + name.replaceAll("[^0-9a-zA-Z§&\\[\\]]", "") + "§7]: ", + "§r" + ChatAPI.colorify(null, message), null); return true; } @Command(hook = "sayn") public boolean say(CommandSender sender, String name, String message) { - Utils.broadcast(" &7[&9" + name.replaceAll("[^0-9a-zA-Z§&\\[\\]]", "") + "&7]: ", "&r" + message, null, '&'); + Utils.broadcast(" §7[§9" + name + "§7]: ", "§r" + ChatAPI.colorify(null, message), null); return true; } @@ -168,7 +168,7 @@ public class Misc implements Module, Listener target = Bukkit.getPlayer(name); if (target == null) { - Utils.sendErrorMessage(sender, null, "That player couldn't be found!"); + getLogger().message(sender, false, "That player couldn't be found!"); return true; } if (command.startsWith("/") || target.equals(Bukkit.getConsoleSender())) @@ -176,19 +176,19 @@ public class Misc implements Module, Listener String[] args = command.split(" "); for (String regex : sudoBlacklist) { - if (args[0].matches(regex)) + if (args[0].matches("\\/" + regex)) { - Utils.sendErrorMessage(sender, null, "You can't sudo anyone into using that command!"); + getLogger().message(sender, true, "You can't sudo anyone into using that command!"); return true; } } Bukkit.dispatchCommand(target, command.replaceFirst("/", "")); - Utils.sendMessage(sender, null, "Sudoed " + name + " into running " + command); + getLogger().message(sender, "Sudoed " + Utils.getName(target) + "&7 into running " + command); } else { ((Player) target).chat(command); - Utils.sendMessage(sender, null, "Sudoed " + name + " into saying " + command); + getLogger().message(sender, "Sudoed " + Utils.getName(target) + "&7 into saying " + command); } return true; } @@ -204,19 +204,40 @@ public class Misc implements Module, Listener } catch (Exception e) { - Utils.sendErrorMessage(sender, noformat ? "" : null, - noformat ? "&rERR: Invalid UUID" : "&rThat UUID is not valid!!", '&'); + if (noformat) + sender.sendMessage("ERR: Invalid UUID"); + else + getLogger().message(sender, "That UUID is not valid!"); return true; } else p = Bukkit.getPlayer(name); if (p == null) { - Utils.sendErrorMessage(sender, noformat ? "" : null, - noformat ? "&rERR: Invalid player" : "&rThat player couldn't be found!", '&'); + if (noformat) + { + Message m = new Message(sender, null); + m.appendText("ERR: Invalid player"); + m.send(); + } + else + { + getLogger().message(sender, "That player couldn't be found!"); + } return true; } - Utils.sendMessage(sender, noformat ? "" : null, "&r" + p.hasPermission(node), '&'); + + if (noformat) + { + Message m = new Message(sender, null); + m.appendText("" + p.hasPermission(node)); + m.send(); + } + else + { + getLogger().message(sender, "" + p.hasPermission(node)); + } + return true; } diff --git a/src/com/redstoner/modules/motd/Motd.java b/src/com/redstoner/modules/motd/Motd.java index 478ae52..e7af422 100644 --- a/src/com/redstoner/modules/motd/Motd.java +++ b/src/com/redstoner/modules/motd/Motd.java @@ -7,45 +7,53 @@ import org.bukkit.event.Listener; import org.bukkit.event.server.ServerListPingEvent; import com.nemez.cmdmgr.Command; +import com.nemez.cmdmgr.Command.AsyncType; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 4, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Motd implements Module, Listener { private String default_motd, motd; - @Command(hook = "setmotd") + @Command(hook = "setmotd", async = AsyncType.ALWAYS) public boolean setMotd(CommandSender sender, String motd) { if (motd.equals("--reset")) this.motd = default_motd; else this.motd = motd; - Utils.sendMessage(sender, null, "The new motd is:\n" + this.motd, '&'); + getLogger().message(sender, "The new motd is:\n" + this.motd); return true; } - @Command(hook = "getmotd") + @Command(hook = "getmotd", async = AsyncType.ALWAYS) public boolean getMotd(CommandSender sender) { - Utils.sendMessage(sender, null, motd == null ? default_motd : motd, '&'); + getLogger().message(sender, motd == null ? default_motd : motd); return true; } @EventHandler public void onServerPing(ServerListPingEvent event) { - event.setMotd(motd == null ? default_motd : motd); + event.setMotd(motd); } @Override public boolean onEnable() { default_motd = Bukkit.getMotd(); + if (default_motd == null) + { + default_motd = "§6Sample text\n§4FIX YOUR SERVER!"; + } + motd = default_motd; return true; } diff --git a/src/com/redstoner/modules/nametags/Nametags.java b/src/com/redstoner/modules/nametags/Nametags.java index c1c1c9f..2bd3b58 100644 --- a/src/com/redstoner/modules/nametags/Nametags.java +++ b/src/com/redstoner/modules/nametags/Nametags.java @@ -13,13 +13,15 @@ import org.bukkit.event.server.ServerCommandEvent; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 3, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Nametags implements Module, Listener { @EventHandler @@ -85,7 +87,7 @@ public class Nametags implements Module, Listener { for (Player p : Bukkit.getOnlinePlayers()) sortSpecific(p); - Utils.sendMessage(sender, null, "Sorted tab for ya!"); + getLogger().message(sender, "Sorted tab for ya!"); return true; } @@ -95,12 +97,12 @@ public class Nametags implements Module, Listener Player p = Bukkit.getPlayer(player); if (p == null) { - Utils.sendErrorMessage(sender, null, "That player couldn't be found!"); + getLogger().message(sender, true, "That player couldn't be found!"); return true; } else sortSpecific(p); - Utils.sendMessage(sender, null, "Sorted §e" + player + " §7for ya!"); + getLogger().message(sender, "Sorted §e" + player + " §7for ya!"); return true; } diff --git a/src/com/redstoner/modules/naming/Naming.java b/src/com/redstoner/modules/naming/Naming.java index db5b15f..b47da0c 100644 --- a/src/com/redstoner/modules/naming/Naming.java +++ b/src/com/redstoner/modules/naming/Naming.java @@ -12,14 +12,15 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; import net.md_5.bungee.api.ChatColor; -@Version(major = 2, minor = 1, revision = 3, compatible = 2) - +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Naming implements Module { @Command(hook = "anvil") @@ -38,12 +39,13 @@ public class Naming implements Module ItemMeta meta = item.getItemMeta(); if (meta == null) { - Utils.sendErrorMessage(sender, null, "You can not rename that item!"); + getLogger().message(sender, true, "You can not rename that item!"); return; } meta.setDisplayName(name); item.setItemMeta(meta); - Utils.sendMessage(sender, null, "Name set to " + name); + getLogger().message(sender, "Name set to " + name); + ((Player) sender).updateInventory(); } @Command(hook = "lore") @@ -53,7 +55,7 @@ public class Naming implements Module ItemMeta meta = item.getItemMeta(); if (meta == null) { - Utils.sendErrorMessage(sender, null, "You can not change the lore of that item!"); + getLogger().message(sender, true, "You can not change the lore of that item!"); return; } List currentLore; @@ -67,7 +69,8 @@ public class Naming implements Module currentLore.add(lore); meta.setLore(currentLore); item.setItemMeta(meta); - Utils.sendMessage(sender, null, "Lore set to " + lore); + getLogger().message(sender, "Lore set to " + lore); + ((Player) sender).updateInventory(); } // @noformat diff --git a/src/com/redstoner/modules/onlineplayers/OnlinePlayers.java b/src/com/redstoner/modules/onlineplayers/OnlinePlayers.java index eca260c..5e9d31c 100644 --- a/src/com/redstoner/modules/onlineplayers/OnlinePlayers.java +++ b/src/com/redstoner/modules/onlineplayers/OnlinePlayers.java @@ -19,7 +19,7 @@ import com.redstoner.misc.Main; import com.redstoner.modules.Module; @AutoRegisterListener -@Version(major = 3, minor = 0, revision = 1, compatible = 3) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) @SuppressWarnings("unchecked") public class OnlinePlayers implements Module, Listener { diff --git a/src/com/redstoner/modules/pmtoggle/Pmtoggle.java b/src/com/redstoner/modules/pmtoggle/Pmtoggle.java index c5df720..3657288 100644 --- a/src/com/redstoner/modules/pmtoggle/Pmtoggle.java +++ b/src/com/redstoner/modules/pmtoggle/Pmtoggle.java @@ -14,12 +14,14 @@ import org.bukkit.event.player.PlayerQuitEvent; import com.nemez.cmdmgr.Command; import com.nemez.cmdmgr.Command.AsyncType; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 1, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Pmtoggle implements Module, Listener { HashMap toggles = new HashMap(); @@ -29,9 +31,9 @@ public class Pmtoggle implements Module, Listener { Player player = (Player) sender; if (toggles.remove(player) != null) - Utils.sendMessage(player, null, "Your pmtoggle was removed!"); + getLogger().message(player, "Your pmtoggle was removed!"); else - Utils.sendMessage(player, null, "You didn't have pmtoggle enabled! Use /pmtoggle to enabled it."); + getLogger().message(player, "You didn't have pmtoggle enabled! Use /pmtoggle to enabled it."); return true; } @@ -41,11 +43,11 @@ public class Pmtoggle implements Module, Listener Player p = Bukkit.getPlayer(player); if (p == null && !player.equals("CONSOLE")) { - Utils.sendMessage(sender, null, "§cThat player couldn't be found!"); + getLogger().message(sender, "§cThat player couldn't be found!"); return true; } toggles.put((Player) sender, player); - Utils.sendMessage(sender, null, "Locked your pmtoggle onto §6" + player + "§7."); + getLogger().message(sender, "Locked your pmtoggle onto §6" + player + "§7."); return true; } @@ -72,8 +74,8 @@ public class Pmtoggle implements Module, Listener if (entry.getValue().equals(player)) { toggles.remove(player); - Utils.sendMessage(entry.getKey(), null, - "We removed your pmtoggle for &6" + player + "&7, as they left the game.", '&'); + getLogger().message(entry.getKey(), + "We removed your pmtoggle for &6" + player + "&7, as they left the game."); } } } diff --git a/src/com/redstoner/modules/reports/Reports.java b/src/com/redstoner/modules/reports/Reports.java index cb1022e..d9effc8 100644 --- a/src/com/redstoner/modules/reports/Reports.java +++ b/src/com/redstoner/modules/reports/Reports.java @@ -13,7 +13,9 @@ import org.json.simple.JSONArray; import org.json.simple.JSONObject; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; import com.redstoner.modules.Module; @@ -23,7 +25,8 @@ import net.md_5.bungee.api.ChatColor; /** Report module. Allows reports to be created and handled by staff * * @author Redempt */ -@Version(major = 2, minor = 0, revision = 0, compatible = 2) +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Reports implements Module { private int task = 0; diff --git a/src/com/redstoner/modules/saylol/Saylol.java b/src/com/redstoner/modules/saylol/Saylol.java index a259ac3..07f2acf 100644 --- a/src/com/redstoner/modules/saylol/Saylol.java +++ b/src/com/redstoner/modules/saylol/Saylol.java @@ -3,38 +3,60 @@ package com.redstoner.modules.saylol; import java.io.File; import java.util.Random; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.json.simple.JSONArray; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.misc.BroadcastFilter; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; -@Version(major = 2, minor = 0, revision = 0, compatible = 2) +import net.nemez.chatapi.click.ClickCallback; +import net.nemez.chatapi.click.Message; + +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Saylol implements Module { private long lastLol = 0; private File lolLocation = new File(Main.plugin.getDataFolder(), "lol.json"); - private JSONArray lols; + private JSONArray lols, handlers; + private final String LOL_PREFIX = "§8[§blol§8] "; + @SuppressWarnings("unchecked") @Override public boolean onEnable() { lols = JsonManager.getArray(lolLocation); if (lols == null) lols = new JSONArray(); + handlers = new JSONArray(); + for (int i = 0; i < lols.size(); i++) + handlers.add(new ClickCallback(true, true, "") + { + @Override + public void run(CommandSender sender) + { + if (handlers.contains(this)) + clickAction((Player) sender, handlers.indexOf(this)); + else + getLogger().message(sender, true, "That lol no longer exists!"); + } + }); return true; } @Override public void onDisable() { - saveLols(); + saveLolsSync(); } @SuppressWarnings("unchecked") @@ -42,11 +64,22 @@ public class Saylol implements Module public boolean addLol(CommandSender sender, String text) { if (lols.contains(text)) - Utils.sendErrorMessage(sender, null, "This lol already exists!"); + getLogger().message(sender, true, "This lol already exists!"); else { - Utils.sendMessage(sender, null, "Successfully added a new lol!"); + getLogger().message(sender, "Successfully added a new lol!"); lols.add("&e" + text); + handlers.add(new ClickCallback(true, true, "") + { + @Override + public void run(CommandSender sender) + { + if (handlers.contains(this)) + clickAction((Player) sender, handlers.indexOf(this)); + else + getLogger().message(sender, true, "That lol no longer exists!"); + } + }); saveLols(); } return true; @@ -57,15 +90,16 @@ public class Saylol implements Module { if (lols.size() == 0) { - Utils.sendErrorMessage(sender, null, "There are no lols yet!"); + getLogger().message(sender, true, "There are no lols yet!"); return true; } if (id < 0 || id >= lols.size()) { - Utils.sendErrorMessage(sender, null, "The ID must be at least 0 and at most " + (lols.size() - 1)); + getLogger().message(sender, true, "The ID must be at least 0 and at most " + (lols.size() - 1)); return true; } - Utils.sendMessage(sender, null, "Successfully deleted the lol: " + lols.remove(id), '&'); + getLogger().message(sender, "Successfully deleted the lol: " + lols.remove(id)); + handlers.remove(id); saveLols(); return true; } @@ -76,15 +110,15 @@ public class Saylol implements Module { if (lols.size() == 0) { - Utils.sendErrorMessage(sender, null, "There are no lols yet!"); + getLogger().message(sender, true, "There are no lols yet!"); return true; } if (id < 0 || id >= lols.size()) { - Utils.sendErrorMessage(sender, null, "The ID must be at least 0 and at most " + (lols.size() - 1)); + getLogger().message(sender, true, "The ID must be at least 0 and at most " + (lols.size() - 1)); return true; } - Utils.sendMessage(sender, null, "Successfully changed the lol: &e" + lols.get(id) + " &7to: &e" + text, '&'); + getLogger().message(sender, "Successfully changed the lol: &e" + lols.get(id) + " &7to: &e" + text); lols.set(id, text); saveLols(); return true; @@ -95,19 +129,19 @@ public class Saylol implements Module { if (lols.size() == 0) { - Utils.sendErrorMessage(sender, null, "There are no lols yet!"); + getLogger().message(sender, true, "There are no lols yet!"); return true; } long time = System.currentTimeMillis(); if (time - lastLol < 15000) { - Utils.sendErrorMessage(sender, null, + getLogger().message(sender, true, "You can't use saylol for another " + (14 - (int) Math.ceil((time - lastLol) / 1000)) + "s."); return true; } if (id < 0 || id >= lols.size()) { - Utils.sendErrorMessage(sender, null, "The ID must be at least 0 and at most " + (lols.size() - 1)); + getLogger().message(sender, true, "The ID must be at least 0 and at most " + (lols.size() - 1)); return true; } String name; @@ -115,14 +149,14 @@ public class Saylol implements Module name = ((Player) sender).getDisplayName(); else name = "&9" + sender.getName(); - Utils.broadcast("&8[&blol&8] ", name + "&8: &e" + lols.get(id), new BroadcastFilter() + Utils.broadcast(LOL_PREFIX, name + "&8: &e" + lols.get(id), new BroadcastFilter() { @Override public boolean sendTo(CommandSender recipient) { return recipient.hasPermission("utils.lol.see"); } - }, '&'); + }); lastLol = time; return true; } @@ -132,13 +166,13 @@ public class Saylol implements Module { if (lols.size() == 0) { - Utils.sendErrorMessage(sender, null, "There are no lols yet!"); + getLogger().message(sender, true, "There are no lols yet!"); return true; } long time = System.currentTimeMillis(); if (time - lastLol < 15000) { - Utils.sendErrorMessage(sender, null, + getLogger().message(sender, true, "You can't use saylol for another " + (14 - (int) Math.ceil((time - lastLol) / 1000)) + "s."); return true; } @@ -149,14 +183,14 @@ public class Saylol implements Module name = "&9" + sender.getName(); Random random = new Random(); int id = random.nextInt(lols.size()); - Utils.broadcast("&8[&blol&8] ", name + "&8: &e" + lols.get(id), new BroadcastFilter() + Utils.broadcast(LOL_PREFIX, name + "&8: &e" + lols.get(id), new BroadcastFilter() { @Override public boolean sendTo(CommandSender recipient) { return recipient.hasPermission("utils.lol.see"); } - }, '&'); + }); lastLol = time; return true; } @@ -166,7 +200,7 @@ public class Saylol implements Module { if (lols.size() == 0) { - Utils.sendErrorMessage(sender, null, "There are no lols yet!"); + getLogger().message(sender, true, "There are no lols yet!"); return true; } page = page - 1; @@ -175,18 +209,20 @@ public class Saylol implements Module int pages = (int) Math.ceil(lols.size() / 10d); if (start < 0) { - Utils.sendErrorMessage(sender, null, "Page number too small, must be at least 0!"); + getLogger().message(sender, true, "Page number too small, must be at least 0!"); return true; } if (start > lols.size()) { - Utils.sendErrorMessage(sender, null, "Page number too big, must be at most " + pages + "!"); + getLogger().message(sender, true, "Page number too big, must be at most " + pages + "!"); return true; } - Utils.sendModuleHeader(sender); - Utils.sendMessage(sender, "", "&ePage " + (page + 1) + "/" + pages + ":", '&'); + Message m = new Message(sender, null); + m.appendText(getLogger().getHeader().replace("\n", "")); + m.appendText("&ePage " + (page + 1) + "/" + pages + ":"); for (int i = start; i < end && i < lols.size(); i++) - Utils.sendMessage(sender, "", "&a" + i + "&8: &e" + lols.get(i), '&'); + m.appendCallback("\n&a" + i + "&8: &e" + lols.get(i), getCallback(i)); + m.send(); return true; } @@ -197,72 +233,50 @@ public class Saylol implements Module } @Command(hook = "searchlol") - public boolean search(CommandSender sender, boolean insensitive, String text) + public boolean search(CommandSender sender, boolean sensitive, String text) { - Utils.sendModuleHeader(sender); + Message m = new Message(sender, null); + m.appendText(getLogger().getHeader().replace("\n", "")); boolean found = false; - if (insensitive) - { + if (!sensitive) text = text.toLowerCase(); - for (int i = 0; i < lols.size(); i++) - { - if (((String) lols.get(i)).toLowerCase().contains(text)) - { - Utils.sendMessage(sender, "", "&a" + i + "&8: &e" + lols.get(i), '&'); - found = true; - } - } - } - else + for (int i = 0; i < lols.size(); i++) { - for (int i = 0; i < lols.size(); i++) + String lol = (String) lols.get(i); + if ((sensitive ? lol : lol.toLowerCase()).contains(text)) { - if (((String) lols.get(i)).contains(text)) - { - Utils.sendMessage(sender, "", "&a" + i + "&8: &e" + lols.get(i), '&'); - found = true; - } + m.appendCallback("\n&a" + i + "&8: &e" + lol, getCallback(i)); + found = true; } } if (!found) - { - Utils.sendMessage(sender, "", "&cCouldn't find any matching lols.", '&'); - } + getLogger().message(sender, "&cCouldn't find any matching lols."); + else + m.send(); return true; } @Command(hook = "matchlol") - public boolean match(CommandSender sender, boolean insensitive, String regex) + public boolean match(CommandSender sender, boolean sensitive, String regex) { - Utils.sendModuleHeader(sender); + Message m = new Message(sender, null); + m.appendText(getLogger().getHeader().replace("\n", "")); boolean found = false; - if (insensitive) - { + if (!sensitive) regex = regex.toLowerCase(); - for (int i = 0; i < lols.size(); i++) - { - if (((String) lols.get(i)).toLowerCase().matches(regex)) - { - Utils.sendMessage(sender, "", "&a" + i + ": " + lols.get(i), '&'); - found = true; - } - } - } - else + for (int i = 0; i < lols.size(); i++) { - for (int i = 0; i < lols.size(); i++) + String lol = (String) lols.get(i); + if ((sensitive ? lol : lol.toLowerCase()).matches(regex)) { - if (((String) lols.get(i)).matches(regex)) - { - Utils.sendMessage(sender, "", "&a" + i + ": " + lols.get(i), '&'); - found = true; - } + m.appendCallback("\n&a" + i + "&8: &e" + lol, getCallback(i)); + found = true; } } if (!found) - { - Utils.sendMessage(sender, "", "&cCouldn't find any matching lols.", '&'); - } + getLogger().message(sender, "&cCouldn't find any matching lols."); + else + m.send(); return true; } @@ -271,6 +285,22 @@ public class Saylol implements Module JsonManager.save(lols, lolLocation); } + public void saveLolsSync() + { + JsonManager.saveSync(lols, lolLocation); + } + + public ClickCallback getCallback(int index) + { + return (ClickCallback) handlers.get(index); + } + + public void clickAction(Player player, int index) + { + if (player.hasPermission("utils.lol.id")) + Bukkit.dispatchCommand(player, "lol id " + index); + } + // @noformat @Override public String getCommandString() diff --git a/src/com/redstoner/modules/scriptutils/Scriptutils.java b/src/com/redstoner/modules/scriptutils/Scriptutils.java index 9818817..539fd58 100644 --- a/src/com/redstoner/modules/scriptutils/Scriptutils.java +++ b/src/com/redstoner/modules/scriptutils/Scriptutils.java @@ -4,11 +4,14 @@ import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; -@Version(major = 2, minor = 0, revision = 1, compatible = 2) +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Scriptutils implements Module { /** Prints Bukkit restart message diff --git a/src/com/redstoner/modules/signalstrength/SignalStrength.java b/src/com/redstoner/modules/signalstrength/SignalStrength.java index bca8f49..39decac 100644 --- a/src/com/redstoner/modules/signalstrength/SignalStrength.java +++ b/src/com/redstoner/modules/signalstrength/SignalStrength.java @@ -16,20 +16,15 @@ import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; import com.nemez.cmdmgr.Command; -import com.nemez.cmdmgr.CommandManager; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; -@Version(major = 3, minor = 0, revision = 0, compatible = 3) +@Commands(CommandHolderType.File) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class SignalStrength implements Module { - @Override - public void postEnable() - { - CommandManager.registerCommand(this.getClass().getResourceAsStream("SignalStrength.cmd"), this, Main.plugin); - } @Command(hook = "ss") public boolean ss(CommandSender sender, int strength) @@ -45,13 +40,13 @@ public class SignalStrength implements Module Block target_block = player.getTargetBlock(new HashSet(), 5); if (target_block == null) { - Utils.sendErrorMessage(sender, null, "That command can only be used if a container is targeted!"); + getLogger().message(sender, true, "That command can only be used if a container is targeted!"); return true; } Inventory inventory = getInventory(target_block); if (inventory == null) { - Utils.sendErrorMessage(sender, null, "That command can only be used if a container is targeted!"); + getLogger().message(sender, true, "That command can only be used if a container is targeted!"); return true; } // --------Get the stack size and required amount of items to achieve the desired signal strength--------- @@ -60,7 +55,7 @@ public class SignalStrength implements Module int item_count = required_item_count(strength, stack_size, slot_count); if (item_count == -1) { - Utils.sendErrorMessage(sender, null, + getLogger().message(sender, true, "The desired signal strength could not be achieved with the requested item type"); return true; } @@ -70,7 +65,7 @@ public class SignalStrength implements Module { if (!canBuild(player, b)) { - Utils.sendErrorMessage(sender, "", "You can not build here!"); + getLogger().message(sender, true, "You can not build here!"); return true; } } @@ -86,7 +81,7 @@ public class SignalStrength implements Module if (remaining > 0) inv.setItem(full_stack_count, new ItemStack(item_type, remaining)); } - Utils.sendMessage(sender, null, + getLogger().message(sender, "Comparators attached to this Inventory will now put out a signal strength of" + strength); return true; } diff --git a/src/com/redstoner/modules/skullclick/SkullClick.java b/src/com/redstoner/modules/skullclick/SkullClick.java index d4bddb2..d581d19 100644 --- a/src/com/redstoner/modules/skullclick/SkullClick.java +++ b/src/com/redstoner/modules/skullclick/SkullClick.java @@ -8,11 +8,13 @@ import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; -@Version(major = 1, minor = 0, revision = 1, compatible = 1) +@Commands(CommandHolderType.None) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) @AutoRegisterListener public class SkullClick implements Module, Listener { @@ -22,7 +24,7 @@ public class SkullClick implements Module, Listener @EventHandler public void onClick(PlayerInteractEvent e) { - // For some reason the event gets fired twice, this fixes it. Lol. + // The event gets fired twice, once for mainhand and once for offhand. This fixes that. if (seen) { seen = false; @@ -38,11 +40,11 @@ public class SkullClick implements Module, Listener String owner = skull.getOwner(); if (owner == null || owner.equals("")) { - Utils.sendMessage(e.getPlayer(), null, "§eThat skull has no owner."); + getLogger().message(e.getPlayer(), true, "That skull has no owner."); } else { - Utils.sendMessage(e.getPlayer(), null, "§eThat's " + owner + "."); + getLogger().message(e.getPlayer(), "That's " + owner + "."); } if (!e.getPlayer().isSneaking()) { @@ -51,10 +53,4 @@ public class SkullClick implements Module, Listener } } } - - @Override - public String getCommandString() - { - return null; - } } diff --git a/src/com/redstoner/modules/socialspy/Socialspy.cmd b/src/com/redstoner/modules/socialspy/Socialspy.cmd index bb72058..f69aa19 100644 --- a/src/com/redstoner/modules/socialspy/Socialspy.cmd +++ b/src/com/redstoner/modules/socialspy/Socialspy.cmd @@ -58,8 +58,4 @@ command socialspy { run migrate; type console; } - test { - run test; - type console; - } } \ No newline at end of file diff --git a/src/com/redstoner/modules/socialspy/Socialspy.java b/src/com/redstoner/modules/socialspy/Socialspy.java index a446357..b5a8fb3 100644 --- a/src/com/redstoner/modules/socialspy/Socialspy.java +++ b/src/com/redstoner/modules/socialspy/Socialspy.java @@ -2,6 +2,7 @@ package com.redstoner.modules.socialspy; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.Arrays; import org.bukkit.Bukkit; @@ -11,25 +12,22 @@ import org.bukkit.entity.Player; import org.json.simple.JSONArray; import com.nemez.cmdmgr.Command; -import com.nemez.cmdmgr.CommandManager; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.BroadcastFilter; -import com.redstoner.misc.Main; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.CoreModule; import com.redstoner.modules.Module; import com.redstoner.modules.datamanager.DataManager; -@Version(major = 3, minor = 1, revision = 8, compatible = 3) +import net.nemez.chatapi.click.Message; + +@Commands(CommandHolderType.File) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Socialspy implements CoreModule { - @Override - public void postEnable() - { - CommandManager.registerCommand(this.getClass().getResourceAsStream("Socialspy.cmd"), this, Main.plugin); - } - @Command(hook = "config_prefix_default") public boolean prefixDefault(CommandSender sender) { @@ -39,7 +37,7 @@ public class Socialspy implements CoreModule @Command(hook = "config_prefix") public boolean prefix(CommandSender sender, String prefix) { - Utils.sendMessage(sender, null, "Set your prefix to: " + prefix); + getLogger().message(sender, "Set your prefix to: " + prefix); DataManager.setData(sender, "prefix", prefix); return true; } @@ -53,7 +51,7 @@ public class Socialspy implements CoreModule @Command(hook = "config_format") public boolean configFormat(CommandSender sender, String format) { - Utils.sendMessage(sender, null, "Set your format to: " + format); + getLogger().message(sender, "Set your format to: " + format); DataManager.setData(sender, "format", format); return true; } @@ -61,7 +59,7 @@ public class Socialspy implements CoreModule @Command(hook = "stripcolor_on") public boolean stripcolorOn(CommandSender sender) { - Utils.sendMessage(sender, null, "Enabled stripping colors!"); + getLogger().message(sender, "Enabled stripping colors!"); DataManager.setData(sender, "stripcolor", "on"); return true; } @@ -69,7 +67,7 @@ public class Socialspy implements CoreModule @Command(hook = "stripcolor_off") public boolean stripcolorOff(CommandSender sender) { - Utils.sendMessage(sender, null, "Disabled stripping colors!"); + getLogger().message(sender, "Disabled stripping colors!"); DataManager.setData(sender, "stripcolor", "off"); return true; } @@ -77,7 +75,7 @@ public class Socialspy implements CoreModule @Command(hook = "stripcolor_partial") public boolean stripcolor_partial(CommandSender sender) { - Utils.sendMessage(sender, null, "Disabled stripping colors!"); + getLogger().message(sender, "Disabled stripping colors!"); DataManager.setData(sender, "stripcolor", "partial"); return true; } @@ -86,7 +84,7 @@ public class Socialspy implements CoreModule public boolean stripcolor(CommandSender sender) { boolean b = DataManager.getOrDefault(sender, "stripcolor", "on").equals("on"); - Utils.sendMessage(sender, null, (b ? "Disabled" : "Enabled") + " stripping colors!"); + getLogger().message(sender, (b ? "Disabled" : "Enabled") + " stripping colors!"); DataManager.setData(sender, "stripcolor", !b); return true; } @@ -94,7 +92,7 @@ public class Socialspy implements CoreModule @Command(hook = "on") public boolean spyOn(CommandSender sender) { - Utils.sendMessage(sender, null, "Enabled socialspy!"); + getLogger().message(sender, "Enabled socialspy!"); DataManager.setData(sender, "enabled", true); return true; } @@ -102,7 +100,7 @@ public class Socialspy implements CoreModule @Command(hook = "off") public boolean spyOff(CommandSender sender) { - Utils.sendMessage(sender, null, "Disabled socialspy!"); + getLogger().message(sender, "Disabled socialspy!"); DataManager.setData(sender, "enabled", false); return true; } @@ -111,7 +109,7 @@ public class Socialspy implements CoreModule public boolean spyToggle(CommandSender sender) { boolean b = (boolean) DataManager.getOrDefault(sender, "enabled", false); - Utils.sendMessage(sender, null, (b ? "Disabled" : "Enabled") + " socialspy!"); + getLogger().message(sender, (b ? "Disabled" : "Enabled") + " socialspy!"); DataManager.setData(sender, "enabled", !b); return true; } @@ -119,32 +117,30 @@ public class Socialspy implements CoreModule @Command(hook = "format_help") public boolean formatInfo(CommandSender sender) { - Utils.sendModuleHeader(sender); - Utils.sendMessage(sender, "", " Format placeholders:"); - Utils.sendMessage(sender, "", " &c%s&eender &7(display name) | &c%S&eender &7(real name)", '&'); - Utils.sendMessage(sender, "", " &c%t&earget &7(display name) | &c%T&earget &7(real name)", '&'); - Utils.sendMessage(sender, "", " &c%p&erefix &7(see prefix option)", '&'); - Utils.sendMessage(sender, "", " &c%m&eessage", '&'); - Utils.sendMessage(sender, "", " &c%c&eommand", '&'); - Utils.sendMessage(sender, "", " Any other text will be put as literal text. Use %% to escape any %.", '&'); - Utils.sendMessage(sender, "", " The default format is: §e" + getDefaultFormat()); - Utils.sendMessage(sender, "", " The default prefix is: §e" + getDefaultPrefix()); + getLogger().message(sender, + new String[] {" Format placeholders:", " &c%s&eender &7(display name) | &c%S&eender &7(real name)", + " &c%t&earget &7(display name) | &c%T&earget &7(real name)", + " &c%p&erefix &7(see prefix option)", " &c%m&eessage", " &c%c&eommand", + " Any other text will be put as literal text. Use %% to escape any %.", + " The default format is: §e" + getDefaultFormat(), + " The default prefix is: §e" + getDefaultPrefix()}); return true; } @Command(hook = "commands_list") public boolean commands_list(CommandSender sender) { - Utils.sendModuleHeader(sender); + ArrayList message = new ArrayList(); JSONArray commands = (JSONArray) DataManager.getOrDefault(sender, "commands", getDefaultCommandList()); if (commands == null || commands.size() == 0) - Utils.sendErrorMessage(sender, "", "You are not listening to any commands!"); + message.add("You are not listening to any commands!"); else { - Utils.sendMessage(sender, "", "You are listening to the following " + commands.size() + " commands:"); - Utils.sendMessage(sender, "", Arrays.toString(commands.toArray()).replace(", /", "&7, &e/") - .replace("[", "[&e").replace("]", "&7]"), '&'); + message.add("You are listening to the following " + commands.size() + " commands:"); + message.add(Arrays.toString(commands.toArray()).replace(", /", "&7, &e/").replace("[", "[&e").replace("]", + "&7]")); } + getLogger().message(sender, message.toArray(new String[] {})); return true; } @@ -164,7 +160,7 @@ public class Socialspy implements CoreModule JSONArray commands = (JSONArray) DataManager.getOrDefault(sender, "commands", getDefaultCommandList()); commands.add(command); DataManager.setData(sender, "commands", commands); - Utils.sendMessage(sender, null, "You are now spying on &e" + command, '&'); + getLogger().message(sender, "You are now spying on &e" + command); return true; } @@ -174,7 +170,7 @@ public class Socialspy implements CoreModule JSONArray commands = (JSONArray) DataManager.getOrDefault(sender, "commands", getDefaultCommandList()); commands.remove(command); DataManager.setData(sender, "commands", commands); - Utils.sendMessage(sender, null, "You are no longer spying on &e" + command, '&'); + getLogger().message(sender, "You are no longer spying on &e" + command); return true; } @@ -204,7 +200,11 @@ public class Socialspy implements CoreModule if (((JSONArray) DataManager.getOrDefault(p, "commands", getDefaultCommandList())) .contains(command)) if (filter == null || filter.sendTo(p)) - Utils.sendMessage(p, "", formatMessage(p, sender, target, message, command)); + { + Message m = new Message(p, null); + m.appendText(formatMessage(p, sender, target, message, command)); + m.send(); + } } else DataManager.setData(sender, "enabled", false); @@ -237,7 +237,11 @@ public class Socialspy implements CoreModule if (((JSONArray) DataManager.getOrDefault(p, "commands", getDefaultCommandList())) .contains(command)) if (filter == null || filter.sendTo(p)) - Utils.sendMessage(p, "", formatMessage(p, sender, target, message, command)); + { + Message m = new Message(p, null); + m.appendText(formatMessage(p, sender, target, message, command)); + m.send(); + } } else DataManager.setData(sender, "enabled", false); @@ -340,24 +344,4 @@ public class Socialspy implements CoreModule DataManager.migrateAll("Message"); return true; } - - @Command(hook = "test") - public boolean test(CommandSender sender) throws InterruptedException - { - DataManager.setData(sender, "test", "&aTest1"); - Thread.sleep(1); - Utils.sendMessage(sender, null, - "Wrote \"Test1\", got " + DataManager.getOrDefault(sender, "test", "&4fallback"), '&'); - DataManager.setData(sender, "test", "&aTest2"); - Thread.sleep(1); - Utils.sendMessage(sender, null, - "Wrote \"Test2\", got " + DataManager.getOrDefault(sender, "test", "&4fallback"), '&'); - DataManager.setData(sender, "test", "&4DATA"); - Thread.sleep(1); - DataManager.removeData(sender, "test"); - Thread.sleep(1); - Utils.sendMessage(sender, null, "Removed data, got " + DataManager.getOrDefault(sender, "test", "&anothing"), - '&'); - return true; - } } diff --git a/src/com/redstoner/modules/tag/Tag.java b/src/com/redstoner/modules/tag/Tag.java index 9685bf5..95e4883 100644 --- a/src/com/redstoner/modules/tag/Tag.java +++ b/src/com/redstoner/modules/tag/Tag.java @@ -1,6 +1,7 @@ package com.redstoner.modules.tag; import java.io.File; +import java.util.ArrayList; import java.util.UUID; import org.bukkit.Bukkit; @@ -11,13 +12,15 @@ import org.json.simple.JSONObject; import com.nemez.cmdmgr.Command; import com.nemez.cmdmgr.Command.AsyncType; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.modules.Module; -@Version(major = 2, minor = 0, revision = 0, compatible = 2) +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Tag implements Module { private File tagLocation = new File(Main.plugin.getDataFolder(), "tag.json"); @@ -45,10 +48,9 @@ public class Tag implements Module OfflinePlayer player = Bukkit.getOfflinePlayer(name); if (player == null) { - Utils.sendErrorMessage(sender, null, "That player doesn't exist!"); + getLogger().message(sender, true, "That player doesn't exist!"); return true; } - Utils.sendModuleHeader(sender); UUID uuid = player.getUniqueId(); JSONArray tagArray; if (tags.containsKey(uuid.toString())) @@ -58,7 +60,7 @@ public class Tag implements Module tagArray.add(tag); if (!tags.containsKey(uuid.toString())) tags.put(uuid.toString(), tagArray); - Utils.sendMessage(sender, null, "Successfully added note &e" + tag + " &7to player &e" + name + "&7!", '&'); + getLogger().message(sender, "Successfully added note &e" + tag + " &7to player &e" + name + "&7!"); saveTags(); return true; } @@ -69,36 +71,36 @@ public class Tag implements Module { if (id < 1) { - Utils.sendErrorMessage(sender, null, "The ID you entered is too small, it must be at least 1!"); + getLogger().message(sender, true, "The ID you entered is too small, it must be at least 1!"); return true; } OfflinePlayer player = Bukkit.getOfflinePlayer(name); if (player == null) { - Utils.sendErrorMessage(sender, null, "That player doesn't exist!"); + getLogger().message(sender, true, "That player doesn't exist!"); return true; } UUID uuid = player.getUniqueId(); if (!tags.containsKey(uuid.toString())) { - Utils.sendMessage(sender, null, "&eThere are no notes about that player.", '&'); + getLogger().message(sender, true, "There are no notes about that player."); return true; } JSONArray tagArray = (JSONArray) tags.get(uuid.toString()); int size = tagArray.size(); if (size == 0) { - Utils.sendErrorMessage(sender, null, - "Empty entry found! You might consider running a database cleanup, contact an admin to do this."); - Utils.log("Found empty tag entry. Database cleanup is recommended."); + getLogger().message(sender, true, "There are no notes about that player."); + tags.remove(uuid.toString()); + saveTags(); return true; } if (id > size) { - Utils.sendErrorMessage(sender, null, "The number you entered is too big! It must be at most " + size + "!"); + getLogger().message(sender, true, "The number you entered is too big! It must be at most " + size + "!"); return true; } - Utils.sendMessage(sender, null, "Successfully removed note: &e" + tagArray.remove(id - 1), '&'); + getLogger().message(sender, "Successfully removed note: &e" + tagArray.remove(id - 1)); if (tagArray.size() == 0) tags.remove(uuid.toString()); saveTags(); @@ -112,27 +114,28 @@ public class Tag implements Module OfflinePlayer player = Bukkit.getOfflinePlayer(name); if (player == null) { - Utils.sendErrorMessage(sender, null, "That player doesn't exist!"); + getLogger().message(sender, true, "That player doesn't exist!"); return true; } - Utils.sendModuleHeader(sender); UUID uuid = player.getUniqueId(); if (!tags.containsKey(uuid.toString())) { - Utils.sendMessage(sender, "", "&eThere are no notes about that player.", '&'); + getLogger().message(sender, "There are no notes about that player."); return true; } JSONArray tagArray = (JSONArray) tags.get(uuid.toString()); int size = tagArray.size(); - Utils.sendMessage(sender, "", "There are " + size + " notes about this player:"); if (size == 0) { tags.remove(uuid.toString()); saveTags(); return true; } + ArrayList message = new ArrayList(); + message.add("There are &e" + size + "&7 notes about this player:"); for (int i = 0; i < size; i++) - Utils.sendMessage(sender, "", "&a" + (i + 1) + "&8: &e" + tagArray.get(i), '&'); + message.add("&a" + (i + 1) + "&8: &e" + tagArray.get(i)); + getLogger().message(sender, message.toArray(new String[] {})); return true; } diff --git a/src/com/redstoner/modules/vanish/Vanish.java b/src/com/redstoner/modules/vanish/Vanish.java index d7eb372..0d865ef 100644 --- a/src/com/redstoner/modules/vanish/Vanish.java +++ b/src/com/redstoner/modules/vanish/Vanish.java @@ -16,12 +16,14 @@ import org.bukkit.event.player.PlayerQuitEvent; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; +@Commands(CommandHolderType.String) @AutoRegisterListener -@Version(major = 2, minor = 0, revision = 3, compatible = 2) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Vanish implements Module, Listener { private ArrayList vanished = new ArrayList(); @@ -34,13 +36,13 @@ public class Vanish implements Module, Listener if (vanished.contains(uid)) { vanished.remove(uid); - Utils.sendMessage(sender, null, "You are no longer vanished!"); + getLogger().message(sender, "You are no longer vanished!"); unvanishPlayer((Player) sender); } else { vanished.add(uid); - Utils.sendMessage(sender, null, "You are now vanished!"); + getLogger().message(sender, "You are now vanished!"); vanishPlayer((Player) sender); } return true; @@ -51,12 +53,12 @@ public class Vanish implements Module, Listener { UUID uid = ((Player) sender).getUniqueId(); if (vanished.contains(uid)) - Utils.sendMessage(sender, null, + getLogger().message(sender, "You were already vanished, however we refreshed the vanish for you just to be sure!"); else { vanished.add(uid); - Utils.sendMessage(sender, null, "You are now vanished!"); + getLogger().message(sender, "You are now vanished!"); } vanishPlayer((Player) sender); return true; @@ -67,12 +69,12 @@ public class Vanish implements Module, Listener { UUID uid = ((Player) sender).getUniqueId(); if (!vanished.contains(uid)) - Utils.sendMessage(sender, null, + getLogger().message(sender, "You were not vanished, however we refreshed the vanish for you just to be sure!"); else { vanished.remove(uid); - Utils.sendMessage(sender, null, "You are no longer vanished!"); + getLogger().message(sender, "You are no longer vanished!"); } unvanishPlayer((Player) sender); return true; @@ -84,7 +86,7 @@ public class Vanish implements Module, Listener Player player = Bukkit.getPlayer(name); if (player == null) { - Utils.sendMessage(sender, null, "&cPlayer &6" + name + " &ccould not be found!", '&'); + getLogger().message(sender, "&cPlayer &6" + name + " &ccould not be found!"); return true; } UUID uid = player.getUniqueId(); @@ -93,14 +95,14 @@ public class Vanish implements Module, Listener if (vanished.contains(uid)) { vanished.remove(uid); - Utils.sendMessage(sender, null, "Successfully unvanished player &6" + name, '&'); - Utils.sendMessage(player, null, "You are no longer vanished!"); + getLogger().message(sender, "Successfully unvanished &e" + player.getDisplayName()); + getLogger().message(player, "You are no longer vanished!"); } else { vanished.add(uid); - Utils.sendMessage(sender, null, "Successfully vanished player &6" + name, '&'); - Utils.sendMessage(player, null, "You are now vanished!"); + getLogger().message(sender, "Successfully vanished &e" + player.getDisplayName()); + getLogger().message(player, "You are now vanished!"); } return true; } @@ -109,8 +111,8 @@ public class Vanish implements Module, Listener if (entry.getValue().contains(uid)) { entry.getValue().remove(uid); - Utils.sendMessage(sender, null, "Successfully unvanished player &6" + name, '&'); - Utils.sendMessage(player, null, "You are no longer vanished!"); + getLogger().message(sender, "Successfully unvanished &e" + player.getDisplayName()); + getLogger().message(player, "You are no longer vanished!"); if (entry.getValue().size() == 0) vanishOthers.remove(entry.getKey()); return true; @@ -122,8 +124,8 @@ public class Vanish implements Module, Listener toAddTo = new ArrayList(); toAddTo.add(uid); vanishOthers.put(uuid, toAddTo); - Utils.sendMessage(sender, null, "Successfully vanished player &6" + name, '&'); - Utils.sendMessage(player, null, "You are now vanished!"); + getLogger().message(sender, "Successfully vanished &e" + player.getDisplayName()); + getLogger().message(player, "You are now vanished!"); return true; } diff --git a/src/com/redstoner/modules/warn/Warn.java b/src/com/redstoner/modules/warn/Warn.java index 205f638..d6ca2d5 100644 --- a/src/com/redstoner/modules/warn/Warn.java +++ b/src/com/redstoner/modules/warn/Warn.java @@ -4,11 +4,14 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; -@Version(major = 2, minor = 0, revision = 2, compatible = 2) +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class Warn implements Module { @Command(hook = "warn") diff --git a/src/com/redstoner/modules/webtoken/WebToken.java b/src/com/redstoner/modules/webtoken/WebToken.java index ca6e06c..661c007 100644 --- a/src/com/redstoner/modules/webtoken/WebToken.java +++ b/src/com/redstoner/modules/webtoken/WebToken.java @@ -6,14 +6,15 @@ import java.util.UUID; import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.json.simple.parser.ParseException; import com.nemez.cmdmgr.Command; +import com.nemez.cmdmgr.Command.AsyncType; +import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.misc.Utils; +import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.mysql.Config; import com.redstoner.misc.mysql.MysqlHandler; import com.redstoner.misc.mysql.elements.ConstraintOperator; @@ -22,7 +23,8 @@ import com.redstoner.misc.mysql.elements.MysqlDatabase; import com.redstoner.misc.mysql.elements.MysqlTable; import com.redstoner.modules.Module; -@Version(major = 2, minor = 0, revision = 4, compatible = 2) +@Commands(CommandHolderType.String) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) public class WebToken implements Module { private static final int TOKEN_LENGTH = 6; @@ -45,7 +47,7 @@ public class WebToken implements Module } if (config == null || !config.containsKey("database") || !config.containsKey("table")) { - Utils.error("Could not load the WebToken config file, disabling!"); + getLogger().error("Could not load the WebToken config file, disabling!"); config.put("database", "redstoner"); config.put("table", "webtoken"); return false; @@ -57,7 +59,7 @@ public class WebToken implements Module } catch (NullPointerException e) { - Utils.error("Could not use the WebToken config, disabling!"); + getLogger().error("Could not use the WebToken config, aborting!"); return false; } return true; @@ -116,11 +118,9 @@ public class WebToken implements Module private void printToken(Player player, String email, String token) { - Utils.sendModuleHeader(player); - Utils.sendMessage(player, "", "§aEmail: " + email); - Utils.sendMessage(player, "", "§aToken: " + token); - Utils.sendMessage(player, "", "§cIMPORTANT: never share the token with anyone!"); - Utils.sendMessage(player, "", "§cIt could be used to claim your website account!"); + String[] message = new String[] {"&aEmail: " + email, "&aToken: " + token, + "&cIMPORTANT: never share the token with anyone!", "&cIt could be used to claim your website account!"}; + getLogger().message(player, message); } private String generateToken() @@ -142,7 +142,7 @@ public class WebToken implements Module return token; } - @Command(hook = "token") + @Command(hook = "token", async = AsyncType.ALWAYS) public void token(CommandSender sender) { Player player = (Player) sender; @@ -152,8 +152,7 @@ public class WebToken implements Module String token = query("token", uuid); if (token == null) { - Utils.sendErrorMessage(player, null, "§cYou don't have a token yet! Use " + ChatColor.YELLOW - + "/gettoken " + ChatColor.RED + " to get one."); + getLogger().message(player, true, "You don't have a token yet! Use &e/gettoken &7 to get one."); } else { @@ -163,12 +162,30 @@ public class WebToken implements Module } catch (Exception e) { - Utils.sendErrorMessage(player, null, "Error getting your token, please contact an admin!"); - e.printStackTrace(); + try + { + Thread.sleep(100); + String token = query("token", uuid); + if (token == null) + { + getLogger().message(player, true, + "You don't have a token yet! Use &e/gettoken &7 to get one."); + } + else + { + String email = query("email", uuid); + printToken(player, email, token); + } + } + catch (Exception e2) + { + getLogger().message(player, true, "Error getting your token, please contact an admin!"); + e2.printStackTrace(); + } } } - @Command(hook = "gettoken") + @Command(hook = "gettoken", async = AsyncType.ALWAYS) public void token(CommandSender sender, String email) { Player player = (Player) sender; @@ -181,29 +198,28 @@ public class WebToken implements Module String id = getNextId(); table.delete(new MysqlConstraint("uuid", ConstraintOperator.EQUAL, uuid)); table.insert(id, uuid, token, email); - player.sendMessage(ChatColor.GREEN + "Token generated!"); printToken(player, email, token); } catch (Exception e) { try { + Thread.sleep(100); String id = getNextId(); table.delete(new MysqlConstraint("uuid", ConstraintOperator.EQUAL, uuid)); table.insert(id, uuid, token, email); - player.sendMessage(ChatColor.GREEN + "Token generated!"); printToken(player, email, token); } catch (Exception e2) { - Utils.sendErrorMessage(player, null, "Error getting your token, please contact an admin!"); + getLogger().message(player, true, "Error getting your token, please contact an admin!"); e.printStackTrace(); } } } else { - Utils.sendErrorMessage(player, null, "Hmm... That doesn't look like a valid email!"); + getLogger().message(player, true, "Hmm... That doesn't look like a valid email!"); } }