From 01807d1f0f45dc183409159e588e81b4f34b6576 Mon Sep 17 00:00:00 2001 From: StevenLawson Date: Tue, 24 Sep 2013 10:13:38 -0400 Subject: [PATCH] Added Essentials interface. Moved nick customization commands from Essentials to TFM. --- appinfo.properties | 6 +- buildnumber.properties | 4 +- nbproject/project.properties | 3 +- .../Commands/Command_colorme.java | 58 +++++++++++++ .../Commands/Command_denick.java | 26 ++++++ .../Commands/Command_nicknyan.java | 72 ++++++++++++++++ .../TotalFreedomMod/TFM_EssentialsBridge.java | 82 +++++++++++++++++++ .../TotalFreedomMod/TFM_Util.java | 10 ++- 8 files changed, 253 insertions(+), 8 deletions(-) create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_colorme.java create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_denick.java create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_nicknyan.java create mode 100644 src/me/StevenLawson/TotalFreedomMod/TFM_EssentialsBridge.java diff --git a/appinfo.properties b/appinfo.properties index afb1971d..44106d3e 100644 --- a/appinfo.properties +++ b/appinfo.properties @@ -1,5 +1,5 @@ -#Tue, 24 Sep 2013 07:27:17 -0400 +#Tue, 24 Sep 2013 10:08:38 -0400 program.VERSION=3.2 -program.BUILDNUM=602 -program.BUILDDATE=09/24/2013 07\:27 AM +program.BUILDNUM=604 +program.BUILDDATE=09/24/2013 10\:08 AM diff --git a/buildnumber.properties b/buildnumber.properties index 4e9fd80d..b28d7af3 100644 --- a/buildnumber.properties +++ b/buildnumber.properties @@ -1,3 +1,3 @@ #Build Number for ANT. Do not edit! -#Tue Sep 24 07:27:17 EDT 2013 -build.number=603 +#Tue Sep 24 10:08:38 EDT 2013 +build.number=605 diff --git a/nbproject/project.properties b/nbproject/project.properties index d4983c0e..4199cdb3 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -50,7 +50,8 @@ jar.index=${jnlp.enabled} javac.classpath=\ ${libs.CraftBukkit.classpath}:\ ${libs.WorldEdit.classpath}:\ - ${libs.DisguiseCraft.classpath} + ${libs.DisguiseCraft.classpath}:\ + ${libs.Essentials.classpath} # Space-separated list of extra javac options javac.compilerargs=-Xlint:unchecked -Xlint:deprecation javac.deprecation=false diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_colorme.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_colorme.java new file mode 100644 index 00000000..a09ec90e --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_colorme.java @@ -0,0 +1,58 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +import java.util.Iterator; +import java.util.Map; +import me.StevenLawson.TotalFreedomMod.TFM_EssentialsBridge; +import me.StevenLawson.TotalFreedomMod.TFM_Util; +import org.apache.commons.lang3.StringUtils; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(description = "Essentials Interface Command - Color your current nickname.", usage = "/ ") +public class Command_colorme extends TFM_Command +{ + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if (args.length != 1) + { + return false; + } + + if ("list".equalsIgnoreCase(args[0])) + { + playerMsg("Colors: " + StringUtils.join(TFM_Util.CHAT_COLOR_NAMES.keySet(), ", ")); + return true; + } + + final String needle = args[0].trim().toLowerCase(); + ChatColor color = null; + final Iterator> it = TFM_Util.CHAT_COLOR_NAMES.entrySet().iterator(); + while (it.hasNext()) + { + final Map.Entry entry = it.next(); + if (entry.getKey().contains(needle)) + { + color = entry.getValue(); + break; + } + } + + if (color == null) + { + playerMsg("Invalid color: " + needle + " - Use \"/colorme list\" to list colors."); + return true; + } + + final String newNick = color + ChatColor.stripColor(sender_p.getDisplayName()) + ChatColor.WHITE; + + TFM_EssentialsBridge.getInstance().setNickname(sender.getName(), newNick); + + playerMsg("Your nickname is now: " + newNick); + + return true; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_denick.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_denick.java new file mode 100644 index 00000000..791ced0a --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_denick.java @@ -0,0 +1,26 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +import me.StevenLawson.TotalFreedomMod.TFM_EssentialsBridge; +import me.StevenLawson.TotalFreedomMod.TFM_Util; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) +@CommandParameters(description = "Essentials Interface Command - Remove the nickname of all players on the server.", usage = "/") +public class Command_denick extends TFM_Command +{ + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + TFM_Util.adminAction(sender.getName(), "Removing all nicknames.", false); + + Player[] onlinePlayers = server.getOnlinePlayers(); + for (Player player : onlinePlayers) + { + TFM_EssentialsBridge.getInstance().setNickname(player.getName(), null); + } + + return true; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_nicknyan.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_nicknyan.java new file mode 100644 index 00000000..025370d8 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_nicknyan.java @@ -0,0 +1,72 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +import me.StevenLawson.TotalFreedomMod.TFM_EssentialsBridge; +import me.StevenLawson.TotalFreedomMod.TFM_Util; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME) +@CommandParameters(description = "Essentials Interface Command - Nyanify your nickname.", usage = "/ < | off>") +public class Command_nicknyan extends TFM_Command +{ + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if (args.length != 1) + { + return false; + } + + if (TFM_Util.isStopCommand(args[0])) + { + TFM_EssentialsBridge.getInstance().setNickname(sender.getName(), null); + playerMsg("Nickname cleared."); + return true; + } + + final String nickPlain = ChatColor.stripColor(TFM_Util.colorize(args[0].trim())); + + if (!nickPlain.matches("^[a-zA-Z_0-9\u00a7]+$")) + { + playerMsg("That nickname contains invalid characters."); + return true; + } + else if (nickPlain.length() < 4 || nickPlain.length() > 30) + { + playerMsg("Your nickname must be between 4 and 30 characters long."); + return true; + } + + final Player[] onlinePlayers = server.getOnlinePlayers(); + for (final Player player : onlinePlayers) + { + if (player == sender_p) + { + continue; + } + if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(player.getDisplayName()).equalsIgnoreCase(nickPlain)) + { + playerMsg("That nickname is already in use."); + return true; + } + } + + final StringBuilder newNick = new StringBuilder(); + + final char[] chars = nickPlain.toCharArray(); + for (char c : chars) + { + newNick.append(TFM_Util.randomChatColor()).append(c); + } + + newNick.append(ChatColor.WHITE); + + TFM_EssentialsBridge.getInstance().setNickname(sender.getName(), newNick.toString()); + + playerMsg("Your nickname is now: " + newNick.toString()); + + return true; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_EssentialsBridge.java b/src/me/StevenLawson/TotalFreedomMod/TFM_EssentialsBridge.java new file mode 100644 index 00000000..c5bf8eb7 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_EssentialsBridge.java @@ -0,0 +1,82 @@ +package me.StevenLawson.TotalFreedomMod; + +import com.earth2me.essentials.Essentials; +import com.earth2me.essentials.User; +import org.bukkit.Bukkit; +import org.bukkit.plugin.Plugin; + +public class TFM_EssentialsBridge +{ + private Essentials essentialsPlugin = null; + + private TFM_EssentialsBridge() + { + } + + public Essentials getEssentialsPlugin() + { + if (this.essentialsPlugin == null) + { + try + { + final Plugin essentials = Bukkit.getServer().getPluginManager().getPlugin("Essentials"); + if (essentials != null) + { + if (essentials instanceof Essentials) + { + this.essentialsPlugin = (Essentials) essentials; + } + } + } + catch (Exception ex) + { + TFM_Log.severe(ex); + } + } + return this.essentialsPlugin; + } + + public User getEssentialsUser(String username) + { + try + { + final Essentials essentials = getEssentialsPlugin(); + if (essentials != null) + { + return essentials.getUserMap().getUser(username); + } + } + catch (Exception ex) + { + TFM_Log.severe(ex); + } + return null; + } + + public void setNickname(String username, String nickname) + { + try + { + final User user = getEssentialsUser(username); + if (user != null) + { + user.setNickname(nickname); + user.setDisplayNick(); + } + } + catch (Exception ex) + { + TFM_Log.severe(ex); + } + } + + public static TFM_EssentialsBridge getInstance() + { + return TFM_EssentialsBridgeHolder.INSTANCE; + } + + private static class TFM_EssentialsBridgeHolder + { + private static final TFM_EssentialsBridge INSTANCE = new TFM_EssentialsBridge(); + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java index 45356d39..42095e83 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java @@ -27,7 +27,8 @@ public class TFM_Util public static final List DEVELOPERS = Arrays.asList("Madgeek1450", "DarthSalamon", "AcidicCyanide", "wild1145", "HeXeRei452"); private static final Random RANDOM = new Random(); public static String DATE_STORAGE_FORMAT = "EEE, d MMM yyyy HH:mm:ss Z"; - public static final List COLOR_POOL = Arrays.asList( + public static final Map CHAT_COLOR_NAMES = new HashMap(); + public static final List CHAT_COLOR_POOL = Arrays.asList( ChatColor.DARK_BLUE, ChatColor.DARK_GREEN, ChatColor.DARK_AQUA, @@ -59,6 +60,11 @@ public class TFM_Util { } } + + for (ChatColor chatColor : CHAT_COLOR_POOL) + { + CHAT_COLOR_NAMES.put(chatColor.name().toLowerCase().replace("_", ""), chatColor); + } } private TFM_Util() @@ -804,7 +810,7 @@ public class TFM_Util public static ChatColor randomChatColor() { - return COLOR_POOL.get(RANDOM.nextInt(COLOR_POOL.size())); + return CHAT_COLOR_POOL.get(RANDOM.nextInt(CHAT_COLOR_POOL.size())); } public static String colorize(String string)