diff --git a/.gitignore b/.gitignore
index 201cb06..e13f2c4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,171 @@
+
+# Created by https://www.gitignore.io/api/java,linux,macos,windows,intellij
+
+*.bat
/target/
-/bin/
-.settings/*
.classpath
+.settings/**
.project
+.idea
+*.iml
+
+### Intellij ###
+# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
+# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+
+# User-specific stuff
+.idea/**/workspace.xml
+.idea/**/tasks.xml
+.idea/**/usage.statistics.xml
+.idea/**/dictionaries
+.idea/**/shelf
+
+# Sensitive or high-churn files
+.idea/**/dataSources/
+.idea/**/dataSources.ids
+.idea/**/dataSources.local.xml
+.idea/**/sqlDataSources.xml
+.idea/**/dynamic.xml
+.idea/**/uiDesigner.xml
+.idea/**/dbnavigator.xml
+
+# Gradle
+.idea/**/gradle.xml
+.idea/**/libraries
+
+# CMake
+cmake-build-*/
+
+# Mongo Explorer plugin
+.idea/**/mongoSettings.xml
+
+# File-based project format
+*.iws
+
+# IntelliJ
+out/
+
+# mpeltonen/sbt-idea plugin
+.idea_modules/
+
+# JIRA plugin
+atlassian-ide-plugin.xml
+
+# Cursive Clojure plugin
+.idea/replstate.xml
+
+# Crashlytics plugin (for Android Studio and IntelliJ)
+com_crashlytics_export_strings.xml
+crashlytics.properties
+crashlytics-build.properties
+fabric.properties
+
+# Editor-based Rest Client
+.idea/httpRequests
+
+### Intellij Patch ###
+# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
+
+# *.iml
+# modules.xml
+# .idea/misc.xml
+# *.ipr
+
+# Sonarlint plugin
+.idea/sonarlint
+
+### Java ###
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+### Linux ###
+*~
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+
+### macOS ###
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+### Windows ###
+# Windows thumbnail cache files
+Thumbs.db
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+
+# End of https://www.gitignore.io/api/java,linux,macos,windows,intellij
\ No newline at end of file
diff --git a/plugin.yml b/plugin.yml
deleted file mode 100644
index 4c7ba16..0000000
--- a/plugin.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-name: ${project.name}
-main: vg.civcraft.mc.civchat2.CivChat2
-version: ${project.version}
-author: jjj5311
-depend: [NameLayer, CivModCore]
-softdepend: [Mercury, BetterShards]
-description: CivChat2 limits the chat radius to 1000 blocks. However Private Messaging and Group Chat works above the 1000 block chat radius.
-commands:
- tell:
- aliases: [message, msg, m, pm]
- afk:
- reply:
- aliases: [r]
- ignore:
- aliases: [i]
- ignoregroup:
- aliases: [ig, igroup, ignoreg]
- groupc:
- aliases: [groupchat, gchat, gc, g]
- ignorelist:
- exit:
- aliases: [e]
-permissions:
- CivChat2.*:
- description: Gives access to /sayall
- default: op
diff --git a/pom.xml b/pom.xml
index 6298e81..5a911c6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,11 +1,12 @@
-
4.0.0
vg.civcraft.mc.civchat2
CivChat2
jar
- 1.6.0
+ 1.7.0
CivChat2
https://github.com/DevotedMC/CivChat2
@@ -17,17 +18,22 @@
- ${basedir}/src
${basedir}
- *.yml
License.txt
true
+
+ ${basedir}/src/main/resources
+
+ *.yml
+
+ true
+
@@ -35,24 +41,24 @@
org.spigotmc
spigot-api
- 1.12-R0.1-SNAPSHOT
+ 1.13.2-R0.1-SNAPSHOT
provided
vg.civcraft.mc.namelayer
NameLayer
- 2.11.0
+ 2.12.0
provided
vg.civcraft.mc.civmodcore
CivModCore
- 1.6.0
+ 1.7.4
provided
- org.apache.logging.log4j
- log4j-core
+ org.apache.logging.log4j
+ log4j-core
2.7
@@ -62,8 +68,8 @@
https://hub.spigotmc.org/nexus/content/groups/public/
- devoted-repo
- https://build.devotedmc.com/plugin/repository/everything/
+ civ-jenkins
+ http://build.devotedmc.com/plugin/repository/everything/
diff --git a/src/vg/civcraft/mc/civchat2/ChatStrings.java b/src/main/java/vg/civcraft/mc/civchat2/ChatStrings.java
similarity index 97%
rename from src/vg/civcraft/mc/civchat2/ChatStrings.java
rename to src/main/java/vg/civcraft/mc/civchat2/ChatStrings.java
index 423196c..e98ce77 100644
--- a/src/vg/civcraft/mc/civchat2/ChatStrings.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/ChatStrings.java
@@ -2,6 +2,8 @@
public class ChatStrings {
+ public final static String localChatFormat = "<%1$s> %2$s";
+
public final static String chatPlayerIsOffline = "That player is offline.";
public final static String chatNoOneToReplyTo = "You have no one to reply to.";
diff --git a/src/main/java/vg/civcraft/mc/civchat2/CivChat2.java b/src/main/java/vg/civcraft/mc/civchat2/CivChat2.java
new file mode 100644
index 0000000..9335ac8
--- /dev/null
+++ b/src/main/java/vg/civcraft/mc/civchat2/CivChat2.java
@@ -0,0 +1,99 @@
+package vg.civcraft.mc.civchat2;
+
+import java.util.LinkedList;
+
+import vg.civcraft.mc.civchat2.database.CivChatDAO;
+import vg.civcraft.mc.civchat2.listeners.CivChat2Listener;
+import vg.civcraft.mc.civchat2.utility.CivChat2Config;
+import vg.civcraft.mc.civchat2.utility.CivChat2FileLogger;
+import vg.civcraft.mc.civchat2.utility.CivChat2Log;
+import vg.civcraft.mc.civmodcore.ACivMod;
+import vg.civcraft.mc.namelayer.GroupManager.PlayerType;
+import vg.civcraft.mc.namelayer.permission.PermissionType;
+
+/**
+ * @author jjj5311
+ *
+ */
+public class CivChat2 extends ACivMod {
+
+ private static CivChat2 instance;
+
+ private CivChat2Log log;
+ private CivChat2Config config;
+ private CivChat2Manager chatMan;
+ private CivChat2Listener chatListener;
+ private CivChat2FileLogger fileLog;
+ private CivChatDAO databaseManager;
+
+ @Override
+ public void onEnable() {
+ super.onEnable();
+ instance = this;
+ saveDefaultConfig();
+ reloadConfig();
+ config = new CivChat2Config(getConfig());
+ log = new CivChat2Log();
+ log.initializeLogger(instance);
+ fileLog = new CivChat2FileLogger();
+ databaseManager = new CivChatDAO();
+ chatMan = new CivChat2Manager(instance);
+ log.debug("Debug Enabled");
+ chatListener = new CivChat2Listener(chatMan);
+ registerNameLayerPermissions();
+ registerCivChatEvents();
+ }
+
+ @Override
+ public void onDisable() {
+ }
+
+ public CivChat2Manager getCivChat2Manager() {
+ return chatMan;
+ }
+
+ public boolean debugEnabled() {
+ return config.getDebug();
+ }
+
+ public CivChat2Log getCivChat2Log() {
+ return log;
+ }
+
+ private void registerCivChatEvents() {
+ getServer().getPluginManager().registerEvents(chatListener, this);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void registerNameLayerPermissions() {
+
+ LinkedList memberAndAbove = new LinkedList();
+ memberAndAbove.add(PlayerType.MEMBERS);
+ memberAndAbove.add(PlayerType.MODS);
+ memberAndAbove.add(PlayerType.ADMINS);
+ memberAndAbove.add(PlayerType.OWNER);
+ PermissionType.registerPermission("READ_CHAT", (LinkedList) memberAndAbove.clone());
+ PermissionType.registerPermission("WRITE_CHAT", (LinkedList) memberAndAbove.clone());
+ }
+
+ public static CivChat2 getInstance() {
+ return instance;
+ }
+
+ public CivChat2Config getPluginConfig() {
+ return config;
+ }
+
+ public CivChat2FileLogger getCivChat2FileLogger() {
+ return fileLog;
+ }
+
+ public CivChatDAO getDatabaseManager() {
+ return this.databaseManager;
+ }
+
+ @Override
+ protected String getPluginName() {
+ return "CivChat2";
+ }
+}
diff --git a/src/vg/civcraft/mc/civchat2/CivChat2Manager.java b/src/main/java/vg/civcraft/mc/civchat2/CivChat2Manager.java
similarity index 73%
rename from src/vg/civcraft/mc/civchat2/CivChat2Manager.java
rename to src/main/java/vg/civcraft/mc/civchat2/CivChat2Manager.java
index ebd314f..d8a9a7a 100644
--- a/src/vg/civcraft/mc/civchat2/CivChat2Manager.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/CivChat2Manager.java
@@ -4,6 +4,7 @@
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.UUID;
@@ -12,7 +13,7 @@
import org.bukkit.Location;
import org.bukkit.entity.Player;
-import vg.civcraft.mc.civchat2.database.DatabaseManager;
+import vg.civcraft.mc.civchat2.database.CivChatDAO;
import vg.civcraft.mc.civchat2.event.GlobalChatEvent;
import vg.civcraft.mc.civchat2.event.GroupChatEvent;
import vg.civcraft.mc.civchat2.event.PrivateMessageEvent;
@@ -33,7 +34,7 @@ public class CivChat2Manager {
private CivChat2 instance;
- private DatabaseManager DBM;
+ private CivChatDAO DBM;
// chatChannels in hashmap with (Player 1 name, player 2 name)
private HashMap chatChannels;
@@ -50,6 +51,8 @@ public class CivChat2Manager {
private String defaultColor;
+ private static Map customNames = new HashMap<>();
+
public CivChat2Manager(CivChat2 pluginInstance) {
instance = pluginInstance;
@@ -57,17 +60,17 @@ public CivChat2Manager(CivChat2 pluginInstance) {
chatLog = instance.getCivChat2FileLogger();
DBM = instance.getDatabaseManager();
defaultColor = config.getDefaultColor();
- chatChannels = new HashMap();
- groupChatChannels = new HashMap();
- replyList = new HashMap();
- afkPlayers = new HashSet();
+ chatChannels = new HashMap<>();
+ groupChatChannels = new HashMap<>();
+ replyList = new HashMap<>();
+ afkPlayers = new HashSet<>();
}
-
/**
* Gets the channel for player to player chat
- * @param name Player name of the channel
- * @return Returns a String of channel name, null if doesn't exist
+ *
+ * @param name Player name of the channel
+ * @return Returns a String of channel name, null if doesn't exist
*/
public UUID getChannel(Player player) {
@@ -78,7 +81,8 @@ public UUID getChannel(Player player) {
/**
* Removes the channel from the channel storage
- * @param name Player Name of the channel
+ *
+ * @param name Player Name of the channel
*
*/
public void removeChannel(Player player) {
@@ -89,10 +93,11 @@ public void removeChannel(Player player) {
}
/**
- * Adds a channel for player to player chat, if player1 is
- * currently in a chatChannel this will overwrite it
- * @param player1 Sender's name
- * @param player2 Receiver's name
+ * Adds a channel for player to player chat, if player1 is currently in a
+ * chatChannel this will overwrite it
+ *
+ * @param player1 Sender's name
+ * @param player2 Receiver's name
*/
public void addChatChannel(Player player1, Player player2) {
@@ -101,17 +106,16 @@ public void addChatChannel(Player player1, Player player2) {
if (getChannel(player1) != null) {
chatChannels.put(player1.getUniqueId(), player2.getUniqueId());
- CivChat2.debugmessage("addChatChannel adding channel for P1: " + player1 + " P2: " + player2);
} else {
chatChannels.put(player1.getUniqueId(), player2.getUniqueId());
- CivChat2.debugmessage("addChatChannel adding channel for P1: " + player1 + " P2: " + player2);
}
}
/**
* Method to Send private message between to players
- * @param sender Player sending the message
- * @param receiver Player Receiving the message
+ *
+ * @param sender Player sending the message
+ * @param receiver Player Receiving the message
* @param chatMessage Message to send from sender to receive
*/
public void sendPrivateMsg(Player sender, Player receiver, String chatMessage) {
@@ -122,50 +126,30 @@ public void sendPrivateMsg(Player sender, Player receiver, String chatMessage) {
if (event.isCancelled()) {
return;
}
-
StringBuilder sb = new StringBuilder();
+ String senderName = customNames.containsKey(sender.getUniqueId()) ? customNames.get(sender.getUniqueId())
+ : sender.getDisplayName();
+ String receiverName = customNames.containsKey(receiver.getUniqueId()) ? customNames.get(receiver.getUniqueId())
+ : receiver.getDisplayName();
- String senderName = sender.getName();
- String receiverName = receiver.getName();
-
- String senderMessage = sb.append(ChatColor.LIGHT_PURPLE)
- .append("To ")
- .append(receiverName)
- .append(": ")
- .append(chatMessage)
- .toString();
- sb.delete(0, sb.length());
-
- String receiverMessage = sb.append(ChatColor.LIGHT_PURPLE)
- .append("From ")
- .append(senderName)
- .append(": ")
- .append(chatMessage)
- .toString();
- sb.delete(0, sb.length());
-
- CivChat2.debugmessage(sb.append("ChatManager.sendPrivateMsg Sender: " )
- .append( senderName)
- .append(" receiver: ")
- .append( receiverName)
- .append( " Message: ")
- .append(chatMessage)
- .toString());
- sb.delete(0, sb.length());
+ String senderMessage = sb.append(ChatColor.LIGHT_PURPLE).append("To ").append(receiverName)
+ .append(ChatColor.LIGHT_PURPLE).append(": ").append(chatMessage).toString();
+ sb = new StringBuilder();
+ String receiverMessage = sb.append(ChatColor.LIGHT_PURPLE).append("From ").append(senderName)
+ .append(ChatColor.LIGHT_PURPLE).append(": ").append(chatMessage).toString();
if (isPlayerAfk(receiver)) {
receiver.sendMessage(receiverMessage);
sender.sendMessage(parse(ChatStrings.chatPlayerAfk));
return;
- // Player is ignoring the sender
- } else if (DBM.isIgnoringPlayer(receiverName, senderName)) {
+ // Player is ignoring the sender
+ } else if (DBM.isIgnoringPlayer(receiver.getUniqueId(), sender.getUniqueId())) {
sender.sendMessage(parse(ChatStrings.chatPlayerIgnoringYou));
return;
- } else if (DBM.isIgnoringPlayer(senderName, receiverName)) {
+ } else if (DBM.isIgnoringPlayer(sender.getUniqueId(), receiver.getUniqueId())) {
sender.sendMessage(parse(ChatStrings.chatNeedToUnignore, receiverName));
return;
}
- CivChat2.debugmessage("Sending private chat message");
chatLog.logPrivateMessage(sender, chatMessage, receiver.getName());
replyList.put(receiver.getUniqueId(), sender.getUniqueId());
replyList.put(sender.getUniqueId(), receiver.getUniqueId());
@@ -175,9 +159,10 @@ public void sendPrivateMsg(Player sender, Player receiver, String chatMessage) {
/**
* Method to broadcast a message in global chat
- * @param sender Player who sent the message
+ *
+ * @param sender Player who sent the message
* @param chatMessage Message to send
- * @param recipients Players in range to receive the message
+ * @param recipients Players in range to receive the message
*/
public void broadcastMessage(Player sender, String chatMessage, String messageFormat, Set recipients) {
@@ -204,20 +189,15 @@ public void broadcastMessage(Player sender, String chatMessage, String messageFo
// Do height check
// Player is above chat increase range
if (y > height) {
- CivChat2.debugmessage("Player is above Y chat increase range");
int above = y - height;
int newRange = (int) (range + (range * (scale * above)));
range = newRange;
- CivChat2.debugmessage(sb.append("New chatrange = [" )
- .append(range)
- .append("]")
- .toString());
sb.delete(0, sb.length());
}
ChatColor color = ChatColor.valueOf(defaultColor);
- Set receivers = new HashSet();
+ Set receivers = new HashSet<>();
// Loop through players and send to those that are close enough
for (Player receiver : recipients) {
if (!DBM.isIgnoringPlayer(receiver.getUniqueId(), sender.getUniqueId())) {
@@ -226,8 +206,13 @@ public void broadcastMessage(Player sender, String chatMessage, String messageFo
if (receiverDistance <= range) {
ChatColor newColor = ChatColor.valueOf(config.getColorAtDistance(receiverDistance));
newColor = newColor != null ? newColor : color;
- receiver.sendMessage(String.format(messageFormat, newColor + NameAPI.getCurrentName(sender.getUniqueId()),
- newColor + chatMessage));
+
+ String senderName = customNames.containsKey(sender.getUniqueId())
+ ? customNames.get(sender.getUniqueId())
+ : sender.getDisplayName();
+
+ receiver.sendMessage(
+ String.format(messageFormat, newColor + senderName, newColor + chatMessage));
}
}
receivers.add(receiver.getName());
@@ -239,23 +224,22 @@ public void broadcastMessage(Player sender, String chatMessage, String messageFo
/**
* Gets whether a player is AFK
+ *
* @param player The player to check
* @return true if the player is AFK
*/
public boolean isPlayerAfk(Player player) {
-
Guard.ArgumentNotNull(player, "player");
-
return afkPlayers.contains(player.getUniqueId());
}
/**
* Sets the AFK status of a player
+ *
* @param player The player to change
* @return The player AFK status
*/
public boolean setPlayerAfk(Player player, boolean afkStatus) {
-
Guard.ArgumentNotNull(player, "player");
if (afkStatus) {
@@ -266,21 +250,37 @@ public boolean setPlayerAfk(Player player, boolean afkStatus) {
return afkStatus;
}
+ /**
+ * Toggles the AFK status of a player
+ *
+ * @param player Player to toggle state for
+ * @return Whether afk is turned on afterwards
+ */
+ public boolean togglePlayerAfk(Player player) {
+ Guard.ArgumentNotNull(player, "player");
+ if (afkPlayers.contains(player.getUniqueId())) {
+ afkPlayers.remove(player.getUniqueId());
+ return false;
+ }
+ afkPlayers.add(player.getUniqueId());
+ return true;
+ }
+
/**
* Gets the player to send reply to
+ *
* @param sender the person sending reply command
* @return the UUID of the person to reply to, null if none
*/
public UUID getPlayerReply(Player sender) {
-
Guard.ArgumentNotNull(sender, "sender");
-
return replyList.get(sender.getUniqueId());
}
/**
* Add a player to the replyList
- * @param player The player using the reply command.
+ *
+ * @param player The player using the reply command.
* @param replyPlayer The the player that will receive the reply
*/
public void addPlayerReply(Player player, Player replyPlayer) {
@@ -293,7 +293,8 @@ public void addPlayerReply(Player player, Player replyPlayer) {
/**
* Method to add a group chat channel
- * @param name Player sending the message
+ *
+ * @param name Player sending the message
* @param group Group sending the message to
*/
public void addGroupChat(Player player, Group group) {
@@ -306,8 +307,9 @@ public void addGroupChat(Player player, Group group) {
/**
* Method to send a message to a group
- * @param name sender sending the message
- * @param group Group to send the message too
+ *
+ * @param name sender sending the message
+ * @param group Group to send the message too
* @param groupMsg Message to send to the group
*/
public void sendGroupMsg(Player sender, Group group, String message) {
@@ -323,31 +325,32 @@ public void sendGroupMsg(Player sender, Group group, String message) {
return;
}
- List members = new ArrayList();
+ List members = new ArrayList<>();
List membersUUID = group.getAllMembers();
for (UUID uuid : membersUUID) {
// Only add online players to members
Player toAdd = Bukkit.getPlayer(uuid);
- if (toAdd != null && toAdd.isOnline() && NameAPI.getGroupManager().hasAccess(
- group, toAdd.getUniqueId(), PermissionType.getPermission("READ_CHAT"))) {
+ if (toAdd != null && toAdd.isOnline() && NameAPI.getGroupManager().hasAccess(group, toAdd.getUniqueId(),
+ PermissionType.getPermission("READ_CHAT"))) {
members.add(toAdd);
}
}
- String formatted = parse(ChatStrings.chatGroupMessage, group.getName(), sender.getName(), message);
- String senderName = NameAPI.getCurrentName(sender.getUniqueId());
+ String senderName = customNames.containsKey(sender.getUniqueId()) ? customNames.get(sender.getUniqueId())
+ : sender.getDisplayName();
+ String formatted = parse(ChatStrings.chatGroupMessage, group.getName(), senderName, message);
for (Player receiver : members) {
if (DBM.isIgnoringGroup(receiver.getUniqueId(), group.getName())) {
continue;
}
- if (DBM.isIgnoringPlayer(receiver.getName(), senderName)) {
+ if (DBM.isIgnoringPlayer(receiver.getUniqueId(), sender.getUniqueId())) {
continue;
}
receiver.sendMessage(formatted);
}
- Set players = new HashSet();
+ Set players = new HashSet<>();
for (UUID uuid : membersUUID) {
players.add(NameAPI.getCurrentName(uuid));
}
@@ -357,6 +360,7 @@ public void sendGroupMsg(Player sender, Group group, String message) {
/**
* Method to remove player from a group chat
+ *
* @param player The player to remove from chat
*/
public void removeGroupChat(Player player) {
@@ -368,6 +372,7 @@ public void removeGroupChat(Player player) {
/**
* Method to get the group player is currently chatting in
+ *
* @param name Players name
* @return Group they are currently chatting in
*/
diff --git a/src/main/java/vg/civcraft/mc/civchat2/commands/Afk.java b/src/main/java/vg/civcraft/mc/civchat2/commands/Afk.java
new file mode 100644
index 0000000..2f4818f
--- /dev/null
+++ b/src/main/java/vg/civcraft/mc/civchat2/commands/Afk.java
@@ -0,0 +1,33 @@
+package vg.civcraft.mc.civchat2.commands;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import vg.civcraft.mc.civchat2.ChatStrings;
+import vg.civcraft.mc.civchat2.CivChat2;
+import vg.civcraft.mc.civmodcore.command.CivCommand;
+import vg.civcraft.mc.civmodcore.command.StandaloneCommand;
+
+@CivCommand(id = "afk")
+public class Afk extends StandaloneCommand {
+
+ @Override
+ public boolean execute(CommandSender sender, String[] args) {
+ Player player = (Player) sender;
+ boolean isAfk = CivChat2.getInstance().getCivChat2Manager().togglePlayerAfk(player);
+ if (isAfk) {
+ player.sendMessage(ChatStrings.chatAfk);
+ } else {
+ player.sendMessage(ChatStrings.chatNotAfk);
+ }
+ return true;
+ }
+
+ @Override
+ public List tabComplete(CommandSender sender, String[] args) {
+ return new LinkedList<>();
+ }
+}
diff --git a/src/main/java/vg/civcraft/mc/civchat2/commands/Exit.java b/src/main/java/vg/civcraft/mc/civchat2/commands/Exit.java
new file mode 100644
index 0000000..c3f5d8a
--- /dev/null
+++ b/src/main/java/vg/civcraft/mc/civchat2/commands/Exit.java
@@ -0,0 +1,46 @@
+package vg.civcraft.mc.civchat2.commands;
+
+import static vg.civcraft.mc.civchat2.ChatStrings.localChatFormat;
+
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import vg.civcraft.mc.civchat2.ChatStrings;
+import vg.civcraft.mc.civchat2.CivChat2;
+import vg.civcraft.mc.civchat2.CivChat2Manager;
+import vg.civcraft.mc.civmodcore.command.CivCommand;
+import vg.civcraft.mc.civmodcore.command.StandaloneCommand;
+
+@CivCommand(id = "exit")
+public class Exit extends StandaloneCommand {
+
+ @Override
+ public boolean execute(CommandSender sender, String[] args) {
+ CivChat2Manager chatMan = CivChat2.getInstance().getCivChat2Manager();
+ Player player = (Player) sender;
+ if (args.length == 0) {
+ chatMan.removeChannel(player);
+ chatMan.removeGroupChat(player);
+ player.sendMessage(ChatStrings.chatMovedToGlobal);
+ return true;
+ }
+ StringBuilder chatMsg = new StringBuilder();
+ for (int i = 0; i < args.length; i++) {
+ chatMsg.append(args[i]);
+ chatMsg.append(" ");
+ }
+ Set players = new HashSet<>(CivChat2.getInstance().getServer().getOnlinePlayers());
+ chatMan.broadcastMessage(player, chatMsg.toString(), localChatFormat, players);
+ return true;
+ }
+
+ @Override
+ public List tabComplete(CommandSender sender, String[] args) {
+ return new LinkedList<>();
+ }
+}
diff --git a/src/main/java/vg/civcraft/mc/civchat2/commands/GroupChat.java b/src/main/java/vg/civcraft/mc/civchat2/commands/GroupChat.java
new file mode 100644
index 0000000..4155a55
--- /dev/null
+++ b/src/main/java/vg/civcraft/mc/civchat2/commands/GroupChat.java
@@ -0,0 +1,119 @@
+package vg.civcraft.mc.civchat2.commands;
+
+import java.util.List;
+
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import vg.civcraft.mc.civchat2.ChatStrings;
+import vg.civcraft.mc.civchat2.CivChat2;
+import vg.civcraft.mc.civchat2.CivChat2Manager;
+import vg.civcraft.mc.civmodcore.command.CivCommand;
+import vg.civcraft.mc.civmodcore.command.StandaloneCommand;
+import vg.civcraft.mc.namelayer.GroupManager;
+import vg.civcraft.mc.namelayer.NameAPI;
+import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter;
+import vg.civcraft.mc.namelayer.group.Group;
+import vg.civcraft.mc.namelayer.permission.PermissionType;
+
+@CivCommand(id = "groupc")
+public class GroupChat extends StandaloneCommand {
+
+ @Override
+ public boolean execute(CommandSender sender, String[] args) {
+ CivChat2Manager chatMan = CivChat2.getInstance().getCivChat2Manager();
+ Player player = (Player) sender;
+ GroupManager gm = NameAPI.getGroupManager();
+ boolean isGroupChatting = true;
+ if (chatMan.getGroupChatting(player) == null) {
+ isGroupChatting = false;
+ }
+ Group group;
+ boolean defGroup = false;
+ if (args.length < 1) {
+ // Check if player is in groupchat and move them to normal chat
+ if (isGroupChatting) {
+ player.sendMessage(ChatStrings.chatMovedToGlobal);
+ chatMan.removeGroupChat(player);
+ return true;
+ } else {
+ String grpName = gm.getDefaultGroup(player.getUniqueId());
+ if (grpName != null) {
+ group = GroupManager.getGroup(grpName);
+ defGroup = true;
+ } else {
+ return false;
+ }
+ }
+ } else {
+ group = GroupManager.getGroup(args[0]);
+ }
+ if (group == null) {
+ player.sendMessage(ChatStrings.chatGroupNotFound);
+ return true;
+ }
+ if (!NameAPI.getGroupManager().hasAccess(group, player.getUniqueId(),
+ PermissionType.getPermission("WRITE_CHAT"))) {
+ player.sendMessage(ChatStrings.chatGroupNoPerms);
+ return true;
+ }
+ if (CivChat2.getInstance().getDatabaseManager().isIgnoringGroup(player.getUniqueId(), group.getName())) {
+ player.sendMessage(String.format(ChatStrings.chatNeedToUnignore, group.getName()));
+ return true;
+ }
+ if (args.length == 1) {
+ if (isGroupChatting) {
+ // Player already groupchatting check if it's this group
+ Group curGroup = chatMan.getGroupChatting(player);
+ if (curGroup == group) {
+ player.sendMessage(ChatStrings.chatGroupAlreadyChatting);
+ return true;
+ } else {
+ player.sendMessage(String.format(ChatStrings.chatGroupNowChattingIn, group.getName()));
+ chatMan.removeGroupChat(player);
+ chatMan.addGroupChat(player, group);
+ return true;
+ }
+ } else {
+ player.sendMessage(String.format(ChatStrings.chatGroupNowChattingIn, group.getName()));
+ if (chatMan.getChannel(player) != null) {
+ chatMan.removeChannel(player);
+ }
+ chatMan.addGroupChat(player, group);
+ return true;
+ }
+ } else if (args.length > 1) {
+ StringBuilder chatMsg = new StringBuilder();
+ for (int i = defGroup ? 0 : 1; i < args.length; i++) {
+ chatMsg.append(args[i]);
+ chatMsg.append(" ");
+ }
+ if (isGroupChatting) {
+ // Player already groupchatting check if it's this group
+ Group curGroup = chatMan.getGroupChatting(player);
+ if (curGroup == group) {
+ chatMan.sendGroupMsg(player, group, chatMsg.toString());
+ return true;
+ } else {
+ chatMan.sendGroupMsg(player, group, chatMsg.toString());
+ return true;
+ }
+ } else {
+ if (chatMan.getChannel(player) != null) {
+ chatMan.removeChannel(player);
+ }
+ chatMan.sendGroupMsg(player, group, chatMsg.toString());
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public List tabComplete(CommandSender sender, String[] args) {
+ if (args.length == 0) {
+ return GroupTabCompleter.complete(null, PermissionType.getPermission("WRITE_CHAT"), (Player) sender);
+ }
+ return GroupTabCompleter.complete(args[0], PermissionType.getPermission("WRITE_CHAT"), (Player) sender);
+ }
+}
diff --git a/src/main/java/vg/civcraft/mc/civchat2/commands/Ignore.java b/src/main/java/vg/civcraft/mc/civchat2/commands/Ignore.java
new file mode 100644
index 0000000..f2a4b44
--- /dev/null
+++ b/src/main/java/vg/civcraft/mc/civchat2/commands/Ignore.java
@@ -0,0 +1,48 @@
+package vg.civcraft.mc.civchat2.commands;
+
+import java.util.List;
+
+import org.bukkit.Bukkit;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import vg.civcraft.mc.civchat2.ChatStrings;
+import vg.civcraft.mc.civchat2.CivChat2;
+import vg.civcraft.mc.civchat2.database.CivChatDAO;
+import vg.civcraft.mc.civmodcore.command.CivCommand;
+import vg.civcraft.mc.civmodcore.command.StandaloneCommand;
+
+@CivCommand(id = "ignore")
+public class Ignore extends StandaloneCommand {
+
+ @Override
+ public boolean execute(CommandSender sender, String[] args) {
+ Player player = (Player) sender;
+ Player ignoredPlayer = Bukkit.getServer().getPlayer(args [0]);
+ if (ignoredPlayer == null) {
+ player.sendMessage(ChatStrings.chatPlayerNotFound);
+ return true;
+ }
+ if (player == ignoredPlayer) {
+ player.sendMessage(ChatStrings.chatCantIgnoreSelf);
+ return true;
+ }
+ CivChatDAO db = CivChat2.getInstance().getDatabaseManager();
+ if (!db.isIgnoringPlayer(player.getUniqueId(), ignoredPlayer.getUniqueId())) {
+ // Player added to the list
+ db.addIgnoredPlayer(player.getUniqueId(), ignoredPlayer.getUniqueId());
+ player.sendMessage(String.format(ChatStrings.chatNowIgnoring, ignoredPlayer.getDisplayName()));
+ return true;
+ } else {
+ // Player removed from the list
+ db.removeIgnoredPlayer(player.getUniqueId(), ignoredPlayer.getUniqueId());
+ player.sendMessage(String.format(ChatStrings.chatStoppedIgnoring, ignoredPlayer.getDisplayName()));
+ return true;
+ }
+ }
+
+ @Override
+ public List tabComplete(CommandSender sender, String[] args) {
+ return null;
+ }
+}
diff --git a/src/main/java/vg/civcraft/mc/civchat2/commands/IgnoreGroup.java b/src/main/java/vg/civcraft/mc/civchat2/commands/IgnoreGroup.java
new file mode 100644
index 0000000..77ce017
--- /dev/null
+++ b/src/main/java/vg/civcraft/mc/civchat2/commands/IgnoreGroup.java
@@ -0,0 +1,55 @@
+package vg.civcraft.mc.civchat2.commands;
+
+import java.util.List;
+
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import vg.civcraft.mc.civchat2.ChatStrings;
+import vg.civcraft.mc.civchat2.CivChat2;
+import vg.civcraft.mc.civchat2.CivChat2Manager;
+import vg.civcraft.mc.civchat2.database.CivChatDAO;
+import vg.civcraft.mc.civmodcore.command.CivCommand;
+import vg.civcraft.mc.civmodcore.command.StandaloneCommand;
+import vg.civcraft.mc.namelayer.GroupManager;
+import vg.civcraft.mc.namelayer.command.TabCompleters.GroupTabCompleter;
+import vg.civcraft.mc.namelayer.group.Group;
+import vg.civcraft.mc.namelayer.permission.PermissionType;
+
+@CivCommand(id = "ignore")
+public class IgnoreGroup extends StandaloneCommand {
+
+ @Override
+ public boolean execute(CommandSender sender, String[] args) {
+ Group group = GroupManager.getGroup(args [0]);
+ Player player = (Player) sender;
+ if (group == null) {
+ player.sendMessage(ChatStrings.chatGroupNotFound);
+ return true;
+ }
+ String ignore = group.getName();
+ CivChatDAO db = CivChat2.getInstance().getDatabaseManager();
+ if (!db.isIgnoringGroup(player.getUniqueId(), ignore)) {
+ db.addIgnoredGroup(player.getUniqueId(), ignore);
+ CivChat2Manager chatMan = CivChat2.getInstance().getCivChat2Manager();
+ player.sendMessage(String.format(ChatStrings.chatNowIgnoring, ignore));
+ if (group.equals(chatMan.getGroupChatting(player))) {
+ chatMan.removeGroupChat(player);
+ player.sendMessage(ChatStrings.chatMovedToGlobal);
+ }
+ return true;
+ } else {
+ db.removeIgnoredGroup(player.getUniqueId(), ignore);
+ player.sendMessage(String.format(ChatStrings.chatStoppedIgnoring, ignore));
+ return true;
+ }
+ }
+
+ @Override
+ public List tabComplete(CommandSender sender, String[] args) {
+ if (args.length == 0) {
+ return GroupTabCompleter.complete(null, PermissionType.getPermission("READ_CHAT"), (Player) sender);
+ }
+ return GroupTabCompleter.complete(args [0], PermissionType.getPermission("READ_CHAT"), (Player) sender);
+ }
+}
diff --git a/src/vg/civcraft/mc/civchat2/command/commands/IgnoreList.java b/src/main/java/vg/civcraft/mc/civchat2/commands/IgnoreList.java
similarity index 50%
rename from src/vg/civcraft/mc/civchat2/command/commands/IgnoreList.java
rename to src/main/java/vg/civcraft/mc/civchat2/commands/IgnoreList.java
index 3a34481..278f475 100644
--- a/src/vg/civcraft/mc/civchat2/command/commands/IgnoreList.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/commands/IgnoreList.java
@@ -1,36 +1,32 @@
-package vg.civcraft.mc.civchat2.command.commands;
+package vg.civcraft.mc.civchat2.commands;
+import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
import vg.civcraft.mc.civchat2.ChatStrings;
-import vg.civcraft.mc.civchat2.command.ChatCommand;
+import vg.civcraft.mc.civchat2.CivChat2;
+import vg.civcraft.mc.civchat2.database.CivChatDAO;
+import vg.civcraft.mc.civmodcore.command.CivCommand;
+import vg.civcraft.mc.civmodcore.command.StandaloneCommand;
import vg.civcraft.mc.namelayer.NameAPI;
-public class IgnoreList extends ChatCommand {
-
- public IgnoreList(String name) {
-
- super(name);
- setIdentifier("ignorelist");
- setDescription("Lists the players & groups you are ignoring");
- setUsage("/ignorelist");
- setArguments(0, 0);
- setSenderMustBePlayer(true);
- setErrorOnTooManyArgs(false);
- }
+@CivCommand(id = "ignorelist")
+public class IgnoreList extends StandaloneCommand {
@Override
public boolean execute(CommandSender sender, String[] args) {
-
- List players = DBM.getIgnoredPlayers(player().getUniqueId());
- List groups = DBM.getIgnoredGroups(player().getUniqueId());
+ Player player = (Player) sender;
+ CivChatDAO db = CivChat2.getInstance().getDatabaseManager();
+ List players = db.getIgnoredPlayers(player.getUniqueId());
+ List groups = db.getIgnoredGroups(player.getUniqueId());
// No players ignored
- if (players == null || players.size() == 0) {
- msg(ChatStrings.chatNotIgnoringAnyPlayers);
+ if (players == null || players.isEmpty()) {
+ player.sendMessage(ChatStrings.chatNotIgnoringAnyPlayers);
} else {
StringBuilder sb = new StringBuilder();
sb.append("Ignored Players: \n");
@@ -45,12 +41,12 @@ public boolean execute(CommandSender sender, String[] args) {
if (msg.endsWith(", ")) {
msg = msg.substring(0, msg.length() - 2);
}
- msg(msg);
+ player.sendMessage(msg);
}
// No groups ignored
- if (groups == null || groups.size() == 0) {
- msg(ChatStrings.chatNotIgnoringAnyGroups);
+ if (groups == null || groups.isEmpty()) {
+ player.sendMessage(ChatStrings.chatNotIgnoringAnyGroups);
return true;
} else {
StringBuilder sb = new StringBuilder();
@@ -63,8 +59,13 @@ public boolean execute(CommandSender sender, String[] args) {
if (msg.endsWith(", ")) {
msg = msg.substring(0, msg.length() - 2);
}
- msg(msg);
+ player.sendMessage(msg);
return true;
}
}
+
+ @Override
+ public List tabComplete(CommandSender sender, String[] args) {
+ return new LinkedList<>();
+ }
}
diff --git a/src/main/java/vg/civcraft/mc/civchat2/commands/Reply.java b/src/main/java/vg/civcraft/mc/civchat2/commands/Reply.java
new file mode 100644
index 0000000..ff53f77
--- /dev/null
+++ b/src/main/java/vg/civcraft/mc/civchat2/commands/Reply.java
@@ -0,0 +1,60 @@
+package vg.civcraft.mc.civchat2.commands;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.bukkit.Bukkit;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import vg.civcraft.mc.civchat2.ChatStrings;
+import vg.civcraft.mc.civchat2.CivChat2;
+import vg.civcraft.mc.civchat2.CivChat2Manager;
+import vg.civcraft.mc.civmodcore.command.CivCommand;
+import vg.civcraft.mc.civmodcore.command.StandaloneCommand;
+
+@CivCommand(id = "reply")
+public class Reply extends StandaloneCommand {
+
+ @Override
+ public boolean execute(CommandSender sender, String[] args) {
+ Player player = (Player) sender;
+ CivChat2Manager chatMan = CivChat2.getInstance().getCivChat2Manager();
+ UUID receiverUUID = chatMan.getPlayerReply(player);
+
+ Player receiver = Bukkit.getPlayer(receiverUUID);
+ if (receiver == null) {
+ player.sendMessage(ChatStrings.chatNoOneToReplyTo);
+ return true;
+ }
+
+ if (!(receiver.isOnline())) {
+ player.sendMessage(ChatStrings.chatPlayerIsOffline);
+ return true;
+ }
+
+ if (player.getUniqueId().equals(receiver.getUniqueId())) {
+ player.sendMessage(ChatStrings.chatCantMessageSelf);
+ return true;
+ }
+
+ if (args.length > 0) {
+ StringBuilder sb = new StringBuilder();
+ for (String s : args) {
+ sb.append(s + " ");
+ }
+ chatMan.sendPrivateMsg(player, receiver, sb.toString());
+ return true;
+ }
+ // Player to chat with reply user
+ chatMan.removeChannel(player);
+ chatMan.addChatChannel(player, receiver);
+ player.sendMessage(String.format(ChatStrings.chatNowChattingWith, receiver.getName()));
+ return true;
+ }
+
+ @Override
+ public List tabComplete(CommandSender sender, String[] args) {
+ return null;
+ }
+}
diff --git a/src/main/java/vg/civcraft/mc/civchat2/commands/Tell.java b/src/main/java/vg/civcraft/mc/civchat2/commands/Tell.java
new file mode 100644
index 0000000..fb3b988
--- /dev/null
+++ b/src/main/java/vg/civcraft/mc/civchat2/commands/Tell.java
@@ -0,0 +1,82 @@
+package vg.civcraft.mc.civchat2.commands;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.bukkit.Bukkit;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import vg.civcraft.mc.civchat2.ChatStrings;
+import vg.civcraft.mc.civchat2.CivChat2;
+import vg.civcraft.mc.civchat2.CivChat2Manager;
+import vg.civcraft.mc.civchat2.database.CivChatDAO;
+import vg.civcraft.mc.civmodcore.command.CivCommand;
+import vg.civcraft.mc.civmodcore.command.StandaloneCommand;
+
+@CivCommand(id = "tell")
+public class Tell extends StandaloneCommand {
+
+ @Override
+ public boolean execute(CommandSender sender, String[] args) {
+ CivChat2Manager chatMan = CivChat2.getInstance().getCivChat2Manager();
+ Player player = (Player) sender;
+ if (args.length == 0) {
+ UUID chattingWith = chatMan.getChannel(player);
+ if (chattingWith != null) {
+ chatMan.removeChannel(player);
+ player.sendMessage(ChatStrings.chatRemovedFromChat);
+ } else {
+ player.sendMessage(ChatStrings.chatNotInPrivateChat);
+ }
+ return true;
+ }
+
+ Player receiver = Bukkit.getPlayer(args [0]);
+ if (receiver == null) {
+ player.sendMessage(ChatStrings.chatPlayerNotFound);
+ return true;
+ }
+
+ if (!(receiver.isOnline())) {
+ player.sendMessage(ChatStrings.chatPlayerIsOffline);
+ return true;
+ }
+
+ if (player == receiver) {
+ player.sendMessage(ChatStrings.chatCantMessageSelf);
+ return true;
+ }
+
+ if (args.length >= 2) {
+ // Player and message
+ StringBuilder builder = new StringBuilder();
+ for (int x = 1; x < args.length; x++) {
+ builder.append(args[x] + " ");
+ }
+
+ chatMan.sendPrivateMsg(player, receiver, builder.toString());
+ return true;
+ } else if (args.length == 1) {
+ CivChatDAO db = CivChat2.getInstance().getDatabaseManager();
+ if (db.isIgnoringPlayer(player.getUniqueId(), receiver.getUniqueId())) {
+ player.sendMessage(String.format(ChatStrings.chatNeedToUnignore, receiver.getDisplayName()));
+ return true;
+ }
+
+ if (db.isIgnoringPlayer(receiver.getUniqueId(), player.getUniqueId())) {
+ player.sendMessage(ChatStrings.chatPlayerIgnoringYou);
+ return true;
+ }
+ chatMan.addChatChannel(player, receiver);
+ player.sendMessage(String.format(ChatStrings.chatNowChattingWith, receiver.getDisplayName()));
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public List tabComplete(CommandSender sender, String[] args) {
+ return null;
+ }
+}
diff --git a/src/vg/civcraft/mc/civchat2/database/DatabaseManager.java b/src/main/java/vg/civcraft/mc/civchat2/database/CivChatDAO.java
similarity index 74%
rename from src/vg/civcraft/mc/civchat2/database/DatabaseManager.java
rename to src/main/java/vg/civcraft/mc/civchat2/database/CivChatDAO.java
index df2eb7b..7892076 100644
--- a/src/vg/civcraft/mc/civchat2/database/DatabaseManager.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/database/CivChatDAO.java
@@ -11,22 +11,18 @@
import vg.civcraft.mc.civchat2.CivChat2;
import vg.civcraft.mc.civchat2.utility.CivChat2Config;
-import vg.civcraft.mc.civchat2.utility.CivChat2Log;
-import vg.civcraft.mc.namelayer.NameAPI;
-public class DatabaseManager {
+public class CivChatDAO {
private CivChat2 plugin = CivChat2.getInstance();
private CivChat2Config config = plugin.getPluginConfig();
- private CivChat2Log logger = CivChat2.getCivChat2Log();
-
private Database db;
- private HashMap> ignoredPlayers = new HashMap>();
+ private HashMap> ignoredPlayers = new HashMap<>();
- private HashMap> ignoredGroups = new HashMap>();
+ private HashMap> ignoredGroups = new HashMap<>();
private String addIgnoredPlayer;
@@ -44,7 +40,7 @@ public class DatabaseManager {
private String loadIgnoredGroupsList;
- public DatabaseManager() {
+ public CivChatDAO() {
if (!isValidConnection()) {
return;
@@ -68,11 +64,9 @@ public boolean isValidConnection() {
private void executeDatabaseStatements() {
- db.execute("create table if not exists PlayersIgnoreList("
- + "player varchar(36) not null,"
+ db.execute("create table if not exists PlayersIgnoreList(" + "player varchar(36) not null,"
+ "ignoredPlayer varchar(36) not null);");
- db.execute("create table if not exists GroupsIgnoreList("
- + "player varchar(36) not null,"
+ db.execute("create table if not exists GroupsIgnoreList(" + "player varchar(36) not null,"
+ "ignoredGroup varchar(255) not null);");
}
@@ -103,7 +97,7 @@ private boolean addIgnoredPlayerToMap(UUID playerUUID, UUID ignoredPlayerUUID) {
}
ignoredPlayers.get(playerUUID).add(ignoredPlayerUUID);
} else {
- List ignoredPlayersList = new ArrayList();
+ List ignoredPlayersList = new ArrayList<>();
ignoredPlayersList.add(ignoredPlayerUUID);
ignoredPlayers.put(playerUUID, ignoredPlayersList);
}
@@ -128,7 +122,8 @@ public void loadIgnoredPlayersList() {
try {
ResultSet rs = loadIgnoredPlayersList.executeQuery();
while (rs.next()) {
- addIgnoredPlayerToMap(UUID.fromString(rs.getString("player")), UUID.fromString(rs.getString("ignoredPlayer")));
+ addIgnoredPlayerToMap(UUID.fromString(rs.getString("player")),
+ UUID.fromString(rs.getString("ignoredPlayer")));
}
} catch (SQLException e) {
e.printStackTrace();
@@ -191,22 +186,12 @@ public boolean addIgnoredPlayer(UUID playerUUID, UUID ignoredPlayerUUID) {
return true;
}
- public boolean addIgnoredPlayer(String player, String ignoredPlayer) {
-
- try {
- return addIgnoredPlayer(NameAPI.getUUID(player), NameAPI.getUUID(ignoredPlayer));
- } catch (NullPointerException e) {
- logger.warning("Error while trying to ignore a player: Player does not exist.");
- return false;
- }
- }
-
public List getIgnoredPlayers(UUID playerUUID) {
if (ignoredPlayers.containsKey(playerUUID)) {
return ignoredPlayers.get(playerUUID);
}
- List ignoredPlayersList = new LinkedList();
+ List ignoredPlayersList = new LinkedList<>();
PreparedStatement getIgnoredPlayers = db.prepareStatement(this.getIgnoredPlayers);
try {
getIgnoredPlayers.setString(1, playerUUID.toString());
@@ -237,17 +222,7 @@ public boolean removeIgnoredPlayer(UUID playerUUID, UUID ignoredPlayerUUID) {
}
return true;
}
-
- public boolean removeIgnoredPlayer(String player, String ignoredPlayer) {
-
- try {
- return removeIgnoredPlayer(NameAPI.getUUID(player), NameAPI.getUUID(ignoredPlayer));
- } catch (NullPointerException e) {
- logger.warning("Error while trying to unignore a player: Player does not exist.");
- return false;
- }
- }
-
+
public boolean addIgnoredGroup(UUID playerUUID, String group) {
if (!addIgnoredGroupToMap(playerUUID, group)) {
@@ -264,16 +239,6 @@ public boolean addIgnoredGroup(UUID playerUUID, String group) {
return true;
}
- public boolean addIgnoredGroup(String player, String group) {
-
- try {
- return addIgnoredGroup(NameAPI.getUUID(player), group);
- } catch (NullPointerException e) {
- logger.warning("Error while trying to ignore a group: Playeror group does not exist.");
- return false;
- }
- }
-
public List getIgnoredGroups(UUID playerUUID) {
if (ignoredGroups.containsKey(playerUUID)) {
@@ -311,50 +276,13 @@ public boolean removeIgnoredGroup(UUID playerUUID, String group) {
return true;
}
- public boolean removeIgnoredGroup(String player, String group) {
-
- try {
- return removeIgnoredGroup(NameAPI.getUUID(player), group);
- } catch (NullPointerException e) {
- logger.warning("Error while trying to unignore a group: Playeror group does not exist.");
- return false;
- }
- }
-
public boolean isIgnoringPlayer(UUID playerUUID, UUID ignoredPlayerUUID) {
return getIgnoredPlayers(playerUUID).contains(ignoredPlayerUUID);
}
- public boolean isIgnoringPlayer(String player, String ignoredPlayer) {
-
- return isIgnoringPlayer(NameAPI.getUUID(player), NameAPI.getUUID(ignoredPlayer));
- }
-
public boolean isIgnoringGroup(UUID playerUUID, String group) {
return getIgnoredGroups(playerUUID).contains(group);
}
-
- public boolean isIgnoringGroup(String player, String group) {
-
- return isIgnoringGroup(NameAPI.getUUID(player), group);
- }
-
- public void processMercuryInfo(String[] message) {
-
- if (message[0].equalsIgnoreCase("ignore")) {
- if (message[1].equalsIgnoreCase("player")) {
- addIgnoredPlayerToMap(UUID.fromString(message[2]), UUID.fromString(message[3]));
- } else {
- addIgnoredGroupToMap(UUID.fromString(message[2]), message[3]);
- }
- } else if (message[0].equalsIgnoreCase("unignore")) {
- if (message[1].equalsIgnoreCase("player")) {
- removeIgnoredPlayerFromMap(UUID.fromString(message[2]), UUID.fromString(message[3]));
- } else {
- removeIgnoredGroupFromMap(UUID.fromString(message[2]), message[3]);
- }
- }
- }
}
diff --git a/src/vg/civcraft/mc/civchat2/database/Database.java b/src/main/java/vg/civcraft/mc/civchat2/database/Database.java
similarity index 100%
rename from src/vg/civcraft/mc/civchat2/database/Database.java
rename to src/main/java/vg/civcraft/mc/civchat2/database/Database.java
diff --git a/src/vg/civcraft/mc/civchat2/event/GlobalChatEvent.java b/src/main/java/vg/civcraft/mc/civchat2/event/GlobalChatEvent.java
similarity index 90%
rename from src/vg/civcraft/mc/civchat2/event/GlobalChatEvent.java
rename to src/main/java/vg/civcraft/mc/civchat2/event/GlobalChatEvent.java
index 7c4e56d..a2d02a5 100644
--- a/src/vg/civcraft/mc/civchat2/event/GlobalChatEvent.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/event/GlobalChatEvent.java
@@ -26,6 +26,7 @@ public GlobalChatEvent(final Player player, final String message, final String f
/**
* Gets the chat message
+ *
* @return The chat message
*/
public String getMessage() {
@@ -36,12 +37,12 @@ public String getMessage() {
@Override
public HandlerList getHandlers() {
- return handlers;
+ return handlers;
}
public static HandlerList getHandlerList() {
- return handlers;
+ return handlers;
}
@Override
@@ -58,6 +59,7 @@ public void setCancelled(boolean cancelled) {
/**
* Gets the format to use to display this chat message.
+ *
* @return The message format
*/
public String getFormat() {
diff --git a/src/vg/civcraft/mc/civchat2/event/GroupChatEvent.java b/src/main/java/vg/civcraft/mc/civchat2/event/GroupChatEvent.java
similarity index 90%
rename from src/vg/civcraft/mc/civchat2/event/GroupChatEvent.java
rename to src/main/java/vg/civcraft/mc/civchat2/event/GroupChatEvent.java
index 0f12c00..d62657d 100644
--- a/src/vg/civcraft/mc/civchat2/event/GroupChatEvent.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/event/GroupChatEvent.java
@@ -25,6 +25,7 @@ public GroupChatEvent(final Player player, final String groupName, final String
/**
* Gets the group name
+ *
* @return The group name
*/
public String getGroup() {
@@ -34,6 +35,7 @@ public String getGroup() {
/**
* Gets the chat message
+ *
* @return The chat message
*/
public String getMessage() {
@@ -44,12 +46,12 @@ public String getMessage() {
@Override
public HandlerList getHandlers() {
- return handlers;
+ return handlers;
}
public static HandlerList getHandlerList() {
- return handlers;
+ return handlers;
}
@Override
diff --git a/src/vg/civcraft/mc/civchat2/event/PrivateMessageEvent.java b/src/main/java/vg/civcraft/mc/civchat2/event/PrivateMessageEvent.java
similarity index 90%
rename from src/vg/civcraft/mc/civchat2/event/PrivateMessageEvent.java
rename to src/main/java/vg/civcraft/mc/civchat2/event/PrivateMessageEvent.java
index bf7b683..1722463 100644
--- a/src/vg/civcraft/mc/civchat2/event/PrivateMessageEvent.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/event/PrivateMessageEvent.java
@@ -25,6 +25,7 @@ public PrivateMessageEvent(final Player player, final Player receiver, final Str
/**
* Gets the message receiver
+ *
* @return The message receiver
*/
public Player getReceiver() {
@@ -34,6 +35,7 @@ public Player getReceiver() {
/**
* Gets the chat message
+ *
* @return The chat message
*/
public String getMessage() {
@@ -44,12 +46,12 @@ public String getMessage() {
@Override
public HandlerList getHandlers() {
- return handlers;
+ return handlers;
}
public static HandlerList getHandlerList() {
- return handlers;
+ return handlers;
}
@Override
diff --git a/src/vg/civcraft/mc/civchat2/listeners/CivChat2Listener.java b/src/main/java/vg/civcraft/mc/civchat2/listeners/CivChat2Listener.java
similarity index 71%
rename from src/vg/civcraft/mc/civchat2/listeners/CivChat2Listener.java
rename to src/main/java/vg/civcraft/mc/civchat2/listeners/CivChat2Listener.java
index ddb6ff1..3c03956 100644
--- a/src/vg/civcraft/mc/civchat2/listeners/CivChat2Listener.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/listeners/CivChat2Listener.java
@@ -36,22 +36,16 @@ public CivChat2Listener(CivChat2Manager instance) {
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerDeath(PlayerDeathEvent playerDeathEvent) {
-
- CivChat2.debugmessage("PlayerDeathEvent occured");
playerDeathEvent.setDeathMessage(null);
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerQuit(PlayerQuitEvent playerQuitEvent) {
-
- CivChat2.debugmessage("playerQuitEvent occured");
playerQuitEvent.setQuitMessage(null);
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerJoin(PlayerJoinEvent playerJoinEvent) {
-
- CivChat2.debugmessage("playerJoinEvent occured");
if (!CivChat2.getInstance().getPluginConfig().getLoginAnnounce()) {
playerJoinEvent.setJoinMessage(null);
}
@@ -59,39 +53,36 @@ public void onPlayerJoin(PlayerJoinEvent playerJoinEvent) {
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerKick(PlayerKickEvent playerKickEvent) {
-
- CivChat2.debugmessage("playerKickEvent occured");
playerKickEvent.setLeaveMessage(null);
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
- public void PlayerChatEvent(final AsyncPlayerChatEvent asyncPlayerChatEvent) {
+ public void onPlayerChatEvent(final AsyncPlayerChatEvent asyncPlayerChatEvent) {
asyncPlayerChatEvent.setCancelled(true);
- // This needs to be done sync to avoid a rare deadlock due to minecraft internals
+ // This needs to be done sync to avoid a rare deadlock due to minecraft
+ // internals
new BukkitRunnable() {
- @Override
- public void run() {
+ @Override
+ public void run() {
String chatMessage = asyncPlayerChatEvent.getMessage();
Player sender = asyncPlayerChatEvent.getPlayer();
UUID chatChannel = chatman.getChannel(sender);
Group groupChat = chatman.getGroupChatting(sender);
- CivChat2.debugmessage(String.format("ChatEvent properties: chatMessage =[ %s ], sender = [ %s ], chatChannel = [ %s ], groupchatting = [ %s ];", chatMessage, sender.getName(), chatChannel, groupChat));
if (chatChannel != null) {
StringBuilder sb = new StringBuilder();
Player receiver = Bukkit.getPlayer(chatChannel);
- CivChat2.debugmessage("player chat event receive = [" + receiver + "]");
if (receiver != null) {
chatman.sendPrivateMsg(sender, receiver, chatMessage);
return;
} else {
chatman.removeChannel(sender);
String offlineMessage = sb.append(ChatColor.GOLD)
- .append( "The player you were chatting with has gone offline,")
- .append(" you have been moved to regular chat").toString();
+ .append("The player you were chatting with has gone offline,")
+ .append(" you have been moved to regular chat").toString();
sb.delete(0, sb.length());
sender.sendMessage(offlineMessage);
return;
@@ -99,18 +90,20 @@ public void run() {
}
if (groupChat != null) {
// Player is group chatting
- if (NameAPI.getGroupManager().hasAccess(groupChat, sender.getUniqueId(), PermissionType.getPermission("WRITE_CHAT"))) {
+ if (NameAPI.getGroupManager().hasAccess(groupChat, sender.getUniqueId(),
+ PermissionType.getPermission("WRITE_CHAT"))) {
chatman.sendGroupMsg(sender, groupChat, chatMessage);
return;
- // Player lost perm to write in the chat
+ // Player lost perm to write in the chat
} else {
chatman.removeGroupChat(sender);
- sender.sendMessage(ChatColor.RED + "You have been removed from groupchat because you were removed from the group or lost the permission required to groupchat");
+ sender.sendMessage(ChatColor.RED
+ + "You have been removed from groupchat because you were removed from the group or lost the permission required to groupchat");
}
}
- CivChat2.debugmessage("PlayerChatEvent calling chatman.broadcastMessage()");
- chatman.broadcastMessage(sender, chatMessage, asyncPlayerChatEvent.getFormat(), asyncPlayerChatEvent.getRecipients());
- }
+ chatman.broadcastMessage(sender, chatMessage, asyncPlayerChatEvent.getFormat(),
+ asyncPlayerChatEvent.getRecipients());
+ }
}.runTask(CivChat2.getInstance());
}
}
diff --git a/src/vg/civcraft/mc/civchat2/utility/CivChat2Config.java b/src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2Config.java
similarity index 91%
rename from src/vg/civcraft/mc/civchat2/utility/CivChat2Config.java
rename to src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2Config.java
index cf9199e..334d310 100644
--- a/src/vg/civcraft/mc/civchat2/utility/CivChat2Config.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2Config.java
@@ -1,95 +1,80 @@
package vg.civcraft.mc.civchat2.utility;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.ConfigurationSection;
import java.util.Map;
import java.util.TreeMap;
-public class CivChat2Config {
+import org.bukkit.configuration.ConfigurationSection;
+import org.bukkit.configuration.file.FileConfiguration;
- private static FileConfiguration config;
+public class CivChat2Config {
- public void setConfigOptions(FileConfiguration config) {
+ private FileConfiguration config;
+ private TreeMap chatColor = null;
- CivChat2Config.config = config;
+ public CivChat2Config(FileConfiguration config) {
+ this.config = config;
}
public boolean getGroupsEnabled() {
-
return config.getBoolean("info.groups");
}
public boolean getDebug() {
-
return config.getBoolean("info.debug");
}
public String getAfkMessage() {
-
return config.getString("info.afkmessage");
}
public boolean getLoginAnnounce() {
-
return config.getBoolean("info.loginAnnounce", false);
}
public int getChatRange() {
-
return config.getInt("chat.globalChatRange");
}
public String getDefaultColor() {
-
return config.getString("chat.defaultChatColor");
}
public String getOpChatColor() {
-
return config.getString("chat.opChatColor");
}
public int getYInc() {
-
return config.getInt("chat.yIncreaseDist");
}
public double getYScale() {
-
return config.getDouble("chat.yIncreaseScale");
}
public String getMysqlUsername() {
-
return config.getString("mysql.username");
}
public String getMysqlHost() {
-
return config.getString("mysql.host");
}
public int getMysqlPort() {
-
return config.getInt("mysql.port");
}
public String getMysqlPassword() {
-
return config.getString("mysql.password");
}
public String getMysqlDBname() {
-
return config.getString("mysql.dbname");
}
- private TreeMap chatColor = null;
-
public synchronized String getColorAtDistance(double distance) {
if (chatColor == null) {
- chatColor = new TreeMap();
+ chatColor = new TreeMap<>();
chatColor.put(0.0, getDefaultColor());
if (config.contains("chat.colors")) {
ConfigurationSection section = config.getConfigurationSection("chat.colors");
diff --git a/src/vg/civcraft/mc/civchat2/utility/CivChat2Executor.java b/src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2Executor.java
similarity index 98%
rename from src/vg/civcraft/mc/civchat2/utility/CivChat2Executor.java
rename to src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2Executor.java
index c1337f9..ff3af0c 100644
--- a/src/vg/civcraft/mc/civchat2/utility/CivChat2Executor.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2Executor.java
@@ -21,9 +21,10 @@ public CivChat2Executor(CivChat2 instance) {
this.plugin = instance;
this.config = plugin.getPluginConfig();
- this.logger = CivChat2.getCivChat2Log();
+ this.logger = plugin.getCivChat2Log();
}
+ @Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
ChatColor sayChat = ChatColor.valueOf(config.getOpChatColor());
diff --git a/src/vg/civcraft/mc/civchat2/utility/CivChat2FileLogger.java b/src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2FileLogger.java
similarity index 66%
rename from src/vg/civcraft/mc/civchat2/utility/CivChat2FileLogger.java
rename to src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2FileLogger.java
index 6b3d3fd..1687f87 100644
--- a/src/vg/civcraft/mc/civchat2/utility/CivChat2FileLogger.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2FileLogger.java
@@ -21,9 +21,9 @@ public void logGlobalMessage(Player sender, String message, Set recivers
String reciversNames = getPlayersNames(recivers);
Location playerLocation = sender.getLocation();
String messageToLog = String.format(
- "Sender: [%s], Message: [%s], Location: [%d, %d, %d], Channel: [GLOBAL], Recivers: [%s]",
- sender.getName(), message, playerLocation.getBlockX(), playerLocation.getBlockY(),
- playerLocation.getBlockZ(), reciversNames);
+ "Sender: [%s], Message: [%s], Location: [%d, %d, %d], Channel: [GLOBAL], Recivers: [%s]",
+ sender.getName(), message, playerLocation.getBlockX(), playerLocation.getBlockY(),
+ playerLocation.getBlockZ(), reciversNames);
logger.info(messageToLog);
}
@@ -31,9 +31,9 @@ public void logPrivateMessage(Player sender, String message, String reciverName)
Location playerLocation = sender.getLocation();
String messageToLog = String.format(
- "Sender: [%s], Message: [%s], Location: [%d, %d, %d], Channel: [PRIVATE], Reciver: [%s]",
- sender.getName(), message, playerLocation.getBlockX(), playerLocation.getBlockY(),
- playerLocation.getBlockZ(), reciverName);
+ "Sender: [%s], Message: [%s], Location: [%d, %d, %d], Channel: [PRIVATE], Reciver: [%s]",
+ sender.getName(), message, playerLocation.getBlockX(), playerLocation.getBlockY(),
+ playerLocation.getBlockZ(), reciverName);
logger.info(messageToLog);
}
@@ -42,9 +42,9 @@ public void logGroupMessage(Player sender, String message, String groupName, Set
String reciversNames = getPlayersNames(recivers);
Location playerLocation = sender.getLocation();
String messageToLog = String.format(
- "Sender: [%s], Message: [%s], Location: [%d, %d, %d], Channel: [GROUP], GroupName: [%s], Recivers: [%s]",
- sender.getName(), message, playerLocation.getBlockX(), playerLocation.getBlockY(),
- playerLocation.getBlockZ(), groupName, reciversNames);
+ "Sender: [%s], Message: [%s], Location: [%d, %d, %d], Channel: [GROUP], GroupName: [%s], Recivers: [%s]",
+ sender.getName(), message, playerLocation.getBlockX(), playerLocation.getBlockY(),
+ playerLocation.getBlockZ(), groupName, reciversNames);
logger.info(messageToLog);
}
diff --git a/src/vg/civcraft/mc/civchat2/utility/CivChat2Log.java b/src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2Log.java
similarity index 91%
rename from src/vg/civcraft/mc/civchat2/utility/CivChat2Log.java
rename to src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2Log.java
index 04abf0b..3e3fdd4 100644
--- a/src/vg/civcraft/mc/civchat2/utility/CivChat2Log.java
+++ b/src/main/java/vg/civcraft/mc/civchat2/utility/CivChat2Log.java
@@ -30,8 +30,7 @@ public void severe(String msg) {
}
public void debug(String msg) {
-
- if (CivChat2.debugEnabled()) {
+ if (CivChat2.getInstance().debugEnabled()) {
log.info("[Debug] " + msg);
}
}
diff --git a/config.yml b/src/main/resources/config.yml
similarity index 100%
rename from config.yml
rename to src/main/resources/config.yml
diff --git a/log4j2.xml b/src/main/resources/log4j2.xml
similarity index 100%
rename from log4j2.xml
rename to src/main/resources/log4j2.xml
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
new file mode 100644
index 0000000..6c86100
--- /dev/null
+++ b/src/main/resources/plugin.yml
@@ -0,0 +1,85 @@
+name: ${project.name}
+main: vg.civcraft.mc.civchat2.CivChat2
+version: ${project.version}
+authors:
+- jjj5311
+- Maxopoly
+depend:
+- NameLayer
+- CivModCore
+description: CivChat2 limits the chat radius to 1000 blocks. However Private Messaging and Group Chat works above the 1000
+ block chat radius.
+commands:
+ tell:
+ aliases:
+ - message
+ - msg
+ - m
+ - pm
+ usage: /tell [message]
+ description: Sends a private message to someone or enters a private chat with them
+ min-args: 1
+ max-args: 500
+ player-only: true
+ afk:
+ usage: /afk
+ description: Toggle afk status
+ min-args: 0
+ max-args: 0
+ player-only: true
+ reply:
+ aliases:
+ - r
+ usage: /reply
+ description: Replies to the last person you sent a message to or received one from
+ min-args: 1
+ max-args: 500
+ player-only: true
+ ignore:
+ aliases:
+ - i
+ usage: /ignore
+ description: Toggles ignoring a player
+ min-args: 1
+ max-args: 1
+ player-only: true
+ ignoregroup:
+ aliases:
+ - ig
+ - igroup
+ - ignoreg
+ usage: /ignoregroup
+ description: Toggles ignoring a group
+ min-args: 1
+ max-args: 1
+ player-only: true
+ groupc:
+ aliases:
+ - groupchat
+ - gchat
+ - gc
+ - g
+ usage: /gchat [message]
+ description: Enters a group chat or sends a message to a group chat
+ min-args: 1
+ max-args: 2
+ player-only: true
+ ignorelist:
+ usage: /ignorelist
+ description: Lists the players and groups you are ignoring
+ min-args: 0
+ max-args: 0
+ player-only: true
+ exit:
+ aliases:
+ - e
+ - local
+ usage: /exit
+ description: Exit private or group chats
+ min-args: 0
+ max-args: 0
+ player-only: true
+permissions:
+ CivChat2.*:
+ description: Gives access to /sayall
+ default: op
\ No newline at end of file
diff --git a/src/vg/civcraft/mc/civchat2/CivChat2.java b/src/vg/civcraft/mc/civchat2/CivChat2.java
deleted file mode 100644
index 5febc58..0000000
--- a/src/vg/civcraft/mc/civchat2/CivChat2.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package vg.civcraft.mc.civchat2;
-
-import java.io.File;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.bukkit.command.Command;
-import org.bukkit.command.CommandSender;
-
-import vg.civcraft.mc.civchat2.command.CivChat2CommandHandler;
-import vg.civcraft.mc.civchat2.database.DatabaseManager;
-import vg.civcraft.mc.civchat2.listeners.CivChat2Listener;
-import vg.civcraft.mc.civchat2.utility.CivChat2Config;
-import vg.civcraft.mc.civchat2.utility.CivChat2FileLogger;
-import vg.civcraft.mc.civchat2.utility.CivChat2Log;
-import vg.civcraft.mc.civchat2.CivChat2Manager;
-import vg.civcraft.mc.civmodcore.ACivMod;
-import vg.civcraft.mc.civmodcore.command.CommandHandler;
-import vg.civcraft.mc.namelayer.GroupManager.PlayerType;
-import vg.civcraft.mc.namelayer.permission.PermissionType;
-
-/**
- * @author jjj5311
- *
- */
-public class CivChat2 extends ACivMod {
-
- private static CivChat2 instance;
-
- private static CivChat2Log log_;
-
- private static boolean groupsEnabled;
-
- private static CivChat2Config config_;
-
- private static CivChat2Manager chatMan;
-
- private CivChat2Listener chatListener;
-
- private CivChat2FileLogger fileLog;
-
- private DatabaseManager DBM;
-
- public void onEnable() {
-
- // onEnable stuff
- StringBuilder sb = new StringBuilder();
- instance = this;
- config_ = new CivChat2Config();
- config_.setConfigOptions(getConfig());
- if (!new File(sb.append(this.getDataFolder()).append("config.yml").toString()).exists()) {
- // config.yml does not exist, save the default
- this.saveDefaultConfig();
- }
- sb.delete(0, sb.length());
- config_.getDebug();
- log_ = new CivChat2Log();
- log_.initializeLogger(instance);
- fileLog = new CivChat2FileLogger();
- DBM = new DatabaseManager();
- chatMan = new CivChat2Manager(instance);
- groupsEnabled = config_.getGroupsEnabled();
- log_.info(sb.append("groupsEnabled is set to: ")
- .append(groupsEnabled)
- .toString());
- sb.delete(0, sb.length());
- log_.debug("Debug Enabled");
- handle = new CivChat2CommandHandler();
- handle.registerCommands();
-
- chatListener = new CivChat2Listener(chatMan);
- registerNameLayerPermissions();
- registerEvents();
- }
-
- public void onDisable() {
-
- // onDisable stuff
- }
-
- public CivChat2Manager getCivChat2Manager() {
-
- return CivChat2.chatMan;
- }
-
- public static boolean debugEnabled() {
-
- return config_.getDebug();
- }
-
- public static void debugmessage(String msg) {
-
- log_.debug(msg);
- }
-
- public static CivChat2Log getCivChat2Log() {
-
- return log_;
- }
-
- public void registerEvents() {
-
- getServer().getPluginManager().registerEvents(chatListener, instance);
- }
-
- @SuppressWarnings("unchecked")
- public void registerNameLayerPermissions() {
-
- LinkedList memberAndAbove = new LinkedList();
- memberAndAbove.add(PlayerType.MEMBERS);
- memberAndAbove.add(PlayerType.MODS);
- memberAndAbove.add(PlayerType.ADMINS);
- memberAndAbove.add(PlayerType.OWNER);
- PermissionType.registerPermission("READ_CHAT", (LinkedList) memberAndAbove.clone());
- PermissionType.registerPermission("WRITE_CHAT", (LinkedList) memberAndAbove.clone());
- }
-
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
-
- return handle.execute(sender, cmd, args);
- }
-
- public CommandHandler getCivChat2CommandHandler() {
-
- return handle;
- }
-
- public static void warningMessage(String errorMsg) {
-
- log_.warning(errorMsg);
- }
-
- public static void infoMessage(String infoMsg) {
-
- log_.info(infoMsg);
- }
-
- public static CivChat2 getInstance() {
-
- return instance;
- }
-
- public static void severeMessage(String severeMsg) {
-
- log_.severe(severeMsg);
- }
-
- public CivChat2Config getPluginConfig() {
-
- return config_;
- }
-
- public CivChat2FileLogger getCivChat2FileLogger() {
-
- return fileLog;
- }
-
- public DatabaseManager getDatabaseManager() {
-
- return this.DBM;
- }
-
- @Override
- protected String getPluginName() {
-
- return "CivChat2";
- }
-
- @Override
- public List onTabComplete(CommandSender sender, Command cmd, String alias, String[] args) {
-
- return handle == null ? null : handle.complete(sender, cmd, args);
- }
-}
diff --git a/src/vg/civcraft/mc/civchat2/command/ChatCommand.java b/src/vg/civcraft/mc/civchat2/command/ChatCommand.java
deleted file mode 100644
index d77a8c2..0000000
--- a/src/vg/civcraft/mc/civchat2/command/ChatCommand.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package vg.civcraft.mc.civchat2.command;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.bukkit.Bukkit;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import vg.civcraft.mc.civchat2.CivChat2;
-import vg.civcraft.mc.civchat2.CivChat2Manager;
-import vg.civcraft.mc.civchat2.database.DatabaseManager;
-import vg.civcraft.mc.civchat2.utility.CivChat2Log;
-import vg.civcraft.mc.civmodcore.command.PlayerCommand;
-import vg.civcraft.mc.namelayer.GroupManager;
-import vg.civcraft.mc.namelayer.NameAPI;
-import vg.civcraft.mc.namelayer.group.Group;
-
-public abstract class ChatCommand extends PlayerCommand {
-
- protected CivChat2 plugin = CivChat2.getInstance();
-
- protected CivChat2Manager chatMan = plugin.getCivChat2Manager();
-
- protected CivChat2Log logger = CivChat2.getCivChat2Log();
-
- protected DatabaseManager DBM = plugin.getDatabaseManager();
-
- public ChatCommand(String name) {
-
- super(name);
- setArguments(0, 0);
- }
-
- @Override
- public List tabComplete(CommandSender arg0, String[] arg1) {
-
- return null;
- }
-
- protected Player argAsPlayer(int index) {
-
- try {
- return Bukkit.getPlayer(NameAPI.getUUID(getArgs()[index].trim()));
- } catch (Exception ex) {
- return null;
- }
- }
-
- protected Group argAsGroup(int index) {
-
- try {
- return GroupManager.getGroup(getArgs()[index].trim());
- } catch (Exception ex) {
- return null;
- }
- }
-
- protected String getRealName(Player player) {
-
- try {
- return NameAPI.getCurrentName(player.getUniqueId());
- } catch (Exception ex) {
- return null;
- }
- }
-
- protected String getRealName(String name) {
-
- try {
- return NameAPI.getCurrentName(NameAPI.getUUID(name));
- } catch (Exception ex) {
- return null;
- }
- }
-
- protected List findPlayers(String pattern) {
-
- List players = new ArrayList();
- for (Player p: Bukkit.getOnlinePlayers()) {
- if (p.getName().toLowerCase().startsWith(pattern.toLowerCase())) {
- players.add(p.getName());
- }
- }
- return players;
- }
-
- protected List findGroups(String pattern) {
-
- List groupsToReturn = new ArrayList();
- GroupManager gm = NameAPI.getGroupManager();
- List groups = gm.getAllGroupNames(player().getUniqueId());
- for (String group:groups) {
- if (group.toLowerCase().startsWith(pattern.toLowerCase())) {
- groupsToReturn.add(group);
- }
- }
- return groupsToReturn;
- }
-}
diff --git a/src/vg/civcraft/mc/civchat2/command/CivChat2CommandHandler.java b/src/vg/civcraft/mc/civchat2/command/CivChat2CommandHandler.java
deleted file mode 100644
index e12d042..0000000
--- a/src/vg/civcraft/mc/civchat2/command/CivChat2CommandHandler.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package vg.civcraft.mc.civchat2.command;
-
-import vg.civcraft.mc.civmodcore.command.CommandHandler;
-import vg.civcraft.mc.civchat2.command.commands.Exit;
-import vg.civcraft.mc.civchat2.command.commands.GroupChat;
-import vg.civcraft.mc.civchat2.command.commands.Ignore;
-import vg.civcraft.mc.civchat2.command.commands.IgnoreGroup;
-import vg.civcraft.mc.civchat2.command.commands.IgnoreList;
-import vg.civcraft.mc.civchat2.command.commands.Reply;
-import vg.civcraft.mc.civchat2.command.commands.Tell;
-import vg.civcraft.mc.civchat2.command.commands.Afk;
-
-public class CivChat2CommandHandler extends CommandHandler {
-
- public void registerCommands() {
-
- addCommands(new Tell("tell"));
- addCommands(new Afk("afk"));
- addCommands(new Reply("reply"));
- addCommands(new GroupChat("groupc"));
- addCommands(new Ignore("ignore"));
- addCommands(new IgnoreGroup("ignoregroup"));
- addCommands(new IgnoreList("ignorelist"));
- addCommands(new Exit("exit"));
- }
-}
diff --git a/src/vg/civcraft/mc/civchat2/command/commands/Afk.java b/src/vg/civcraft/mc/civchat2/command/commands/Afk.java
deleted file mode 100644
index 0ffa842..0000000
--- a/src/vg/civcraft/mc/civchat2/command/commands/Afk.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package vg.civcraft.mc.civchat2.command.commands;
-
-import org.bukkit.command.CommandSender;
-
-import vg.civcraft.mc.civchat2.ChatStrings;
-import vg.civcraft.mc.civchat2.command.ChatCommand;
-
-public class Afk extends ChatCommand {
-
- public Afk(String name) {
-
- super(name);
- setIdentifier("afk");
- setDescription("Sets your afk status.");
- setUsage("/afk");
- setErrorOnTooManyArgs(false);
- setSenderMustBePlayer(true);
- }
-
- @Override
- public boolean execute(CommandSender sender, String[] args) {
-
- Boolean isAfk = chatMan.setPlayerAfk(player(), !chatMan.isPlayerAfk(player()));
-
- if (isAfk) {
- msg(ChatStrings.chatAfk);
- } else {
- msg(ChatStrings.chatNotAfk);
- }
- logger.debug(String.format("Player %s changed afk status to %s.", getRealName(player()), isAfk.toString()));
-
- return true;
- }
-}
diff --git a/src/vg/civcraft/mc/civchat2/command/commands/Exit.java b/src/vg/civcraft/mc/civchat2/command/commands/Exit.java
deleted file mode 100644
index 57da972..0000000
--- a/src/vg/civcraft/mc/civchat2/command/commands/Exit.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package vg.civcraft.mc.civchat2.command.commands;
-
-import org.bukkit.command.CommandSender;
-
-import vg.civcraft.mc.civchat2.ChatStrings;
-import vg.civcraft.mc.civchat2.command.ChatCommand;
-
-public class Exit extends ChatCommand {
-
- public Exit(String name) {
-
- super(name);
- setIdentifier("exit");
- setDescription("Moves to global chat");
- setUsage("/exit");
- setErrorOnTooManyArgs(false);
- setSenderMustBePlayer(true);
- }
-
- @Override
- public boolean execute(CommandSender sender, String[] args) {
-
- chatMan.removeChannel(player());
- chatMan.removeGroupChat(player());
- msg(ChatStrings.chatMovedToGlobal);
- return true;
- }
-}
diff --git a/src/vg/civcraft/mc/civchat2/command/commands/GroupChat.java b/src/vg/civcraft/mc/civchat2/command/commands/GroupChat.java
deleted file mode 100644
index 8bb8102..0000000
--- a/src/vg/civcraft/mc/civchat2/command/commands/GroupChat.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package vg.civcraft.mc.civchat2.command.commands;
-
-import java.util.List;
-
-import org.bukkit.command.CommandSender;
-
-import vg.civcraft.mc.civchat2.ChatStrings;
-import vg.civcraft.mc.civchat2.command.ChatCommand;
-import vg.civcraft.mc.namelayer.GroupManager;
-import vg.civcraft.mc.namelayer.NameAPI;
-import vg.civcraft.mc.namelayer.group.Group;
-import vg.civcraft.mc.namelayer.permission.PermissionType;
-
-public class GroupChat extends ChatCommand {
-
- public GroupChat(String name) {
-
- super(name);
- setIdentifier("groupc");
- setDescription("Joins a group chat");
- setUsage("/groupc ");
- setErrorOnTooManyArgs(false);
- setSenderMustBePlayer(true);
- }
-
- @Override
- public boolean execute(CommandSender sender, String[] args) {
-
- GroupManager gm = NameAPI.getGroupManager();
- boolean isGroupChatting = true;
- logger.debug("chatMan = [" + chatMan.toString() + "]");
- if (chatMan.getGroupChatting(player()) == null) {
- isGroupChatting = false;
- }
- Group group;
- boolean defGroup = false;
- if (args.length < 1) {
- // Check if player is in groupchat and move them to normal chat
- if (isGroupChatting) {
- msg(ChatStrings.chatMovedToGlobal);
- chatMan.removeGroupChat(player());
- return true;
- } else {
- String grpName = gm.getDefaultGroup(player().getUniqueId());
- if (grpName != null) {
- group = GroupManager.getGroup(grpName);
- defGroup = true;
- } else {
- return false;
- }
- }
- } else {
- group = argAsGroup(0);
- }
- if (group == null) {
- msg(ChatStrings.chatGroupNotFound);
- return true;
- }
- if (!NameAPI.getGroupManager().hasAccess(group, player().getUniqueId(), PermissionType.getPermission("WRITE_CHAT"))) {
- msg(ChatStrings.chatGroupNoPerms);
- return true;
- }
- if (plugin.getDatabaseManager().isIgnoringGroup(sender.getName(), group.getName())) {
- msg(ChatStrings.chatNeedToUnignore, group.getName());
- return true;
- }
- if (args.length == 1) {
- if (isGroupChatting) {
- // Player already groupchatting check if it's this group
- Group curGroup = chatMan.getGroupChatting(player());
- if (curGroup == group) {
- msg(ChatStrings.chatGroupAlreadyChatting);
- return true;
- } else {
- msg(ChatStrings.chatGroupNowChattingIn, group.getName());
- chatMan.removeGroupChat(player());
- chatMan.addGroupChat(player(), group);
- return true;
- }
- } else {
- msg(ChatStrings.chatGroupNowChattingIn, group.getName());
- if (chatMan.getChannel(player()) != null) {
- chatMan.removeChannel(player());
- }
- chatMan.addGroupChat(player(), group);
- return true;
- }
- } else if (args.length > 1) {
- StringBuilder chatMsg = new StringBuilder();
- for (int i = defGroup ? 0 : 1; i < args.length; i++) {
- chatMsg.append(args[i]);
- chatMsg.append(" ");
- }
- if (isGroupChatting) {
- // Player already groupchatting check if it's this group
- Group curGroup = chatMan.getGroupChatting(player());
- if (curGroup == group) {
- chatMan.sendGroupMsg(player(), group, chatMsg.toString());
- return true;
- } else {
- chatMan.sendGroupMsg(player(), group, chatMsg.toString());
- return true;
- }
- } else {
- if (chatMan.getChannel(player()) != null) {
- chatMan.removeChannel(player());
- }
- chatMan.sendGroupMsg(player(), group, chatMsg.toString());
- return true;
- }
- }
- return false;
- }
-
- @Override
- public List tabComplete(CommandSender arg0, String[] arg1) {
-
- if (arg1.length == 0) {
- return null;
- }
- return findGroups(arg1[0]);
- }
-}
diff --git a/src/vg/civcraft/mc/civchat2/command/commands/Ignore.java b/src/vg/civcraft/mc/civchat2/command/commands/Ignore.java
deleted file mode 100644
index ebbf014..0000000
--- a/src/vg/civcraft/mc/civchat2/command/commands/Ignore.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package vg.civcraft.mc.civchat2.command.commands;
-
-import java.util.List;
-
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import vg.civcraft.mc.civchat2.ChatStrings;
-import vg.civcraft.mc.civchat2.command.ChatCommand;
-
-public class Ignore extends ChatCommand {
-
- public Ignore(String name) {
-
- super(name);
- setIdentifier("ignore");
- setDescription("Toggles ignoring a player");
- setUsage("/ignore ");
- setArguments(1, 1);
- setSenderMustBePlayer(true);
- }
-
- @Override
- public boolean execute(CommandSender sender, String[] args) {
-
- Player ignore = argAsPlayer(0);
- if (ignore == null) {
- msg(ChatStrings.chatPlayerNotFound);
- return true;
- }
-
- String ignoreName = getRealName(ignore);
- String name = getRealName(player());
- if (ignoreName == name) {
- msg(ChatStrings.chatCantIgnoreSelf);
- return true;
- }
- // Player added to the list
- if (!DBM.isIgnoringPlayer(name, ignoreName)) {
- DBM.addIgnoredPlayer(name, ignoreName);
- String debugMessage = "Player ignored another Player, Player: " + name + " IgnoredPlayer: " + ignoreName;
- logger.debug(debugMessage);
- msg(ChatStrings.chatNowIgnoring, ignoreName);
- return true;
- // Player removed from the list
- } else {
- DBM.removeIgnoredPlayer(name, ignoreName);
- String debugMessage = "Player un-ignored another Player, Player: " + name + " IgnoredPlayer: " + ignoreName;
- logger.debug(debugMessage);
- msg(ChatStrings.chatStoppedIgnoring, ignoreName);
- return true;
- }
- }
-
- @Override
- public List tabComplete(CommandSender sender, String[] args) {
-
- if (args.length != 1) {
- return null;
- }
- return findPlayers(args[0]);
- }
-}
diff --git a/src/vg/civcraft/mc/civchat2/command/commands/IgnoreGroup.java b/src/vg/civcraft/mc/civchat2/command/commands/IgnoreGroup.java
deleted file mode 100644
index 1e95714..0000000
--- a/src/vg/civcraft/mc/civchat2/command/commands/IgnoreGroup.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package vg.civcraft.mc.civchat2.command.commands;
-
-import java.util.List;
-
-import org.bukkit.command.CommandSender;
-
-import vg.civcraft.mc.civchat2.ChatStrings;
-import vg.civcraft.mc.civchat2.command.ChatCommand;
-import vg.civcraft.mc.namelayer.group.Group;
-
-public class IgnoreGroup extends ChatCommand {
-
- public IgnoreGroup(String name) {
-
- super(name);
- setIdentifier("ignoregroup");
- setDescription("Toggles ignoring a group");
- setUsage("/ignoregroup ");
- setArguments(1, 1);
- setSenderMustBePlayer(true);
- }
-
- @Override
- public boolean execute(CommandSender sender, String[] args) {
-
- Group group = argAsGroup(0);
- // No player exists with that name
- if (group == null) {
- msg(ChatStrings.chatGroupNotFound);
- return true;
- }
- String ignore = group.getName();
- String name = getRealName(player());
- // Player added to the list
- if (!DBM.isIgnoringGroup(name, ignore)) {
- DBM.addIgnoredGroup(name, ignore);
- String debugMessage = "Player ignored Group, Player: " + name + " Group: " + ignore;
- logger.debug(debugMessage);
- msg(ChatStrings.chatNowIgnoring, ignore);
- if (group.equals(chatMan.getGroupChatting(player()))) {
- chatMan.removeGroupChat(player());
- msg(ChatStrings.chatMovedToGlobal);
- }
- return true;
- // Player removed from the list
- } else {
- DBM.removeIgnoredGroup(name, ignore);
- String debugMessage = "Player un-ignored Group, Player: " + name + " Group: " + ignore;
- logger.debug(debugMessage);
- msg(ChatStrings.chatStoppedIgnoring, ignore);
- return true;
- }
- }
-
- @Override
- public List tabComplete(CommandSender arg0, String[] arg1) {
-
- if (arg1.length != 1) {
- return null;
- }
- return findGroups(arg1[0]);
- }
-}
diff --git a/src/vg/civcraft/mc/civchat2/command/commands/Reply.java b/src/vg/civcraft/mc/civchat2/command/commands/Reply.java
deleted file mode 100644
index f8e0a2e..0000000
--- a/src/vg/civcraft/mc/civchat2/command/commands/Reply.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package vg.civcraft.mc.civchat2.command.commands;
-
-import java.util.UUID;
-
-import org.bukkit.Bukkit;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import vg.civcraft.mc.civchat2.ChatStrings;
-import vg.civcraft.mc.civchat2.CivChat2;
-import vg.civcraft.mc.civchat2.command.ChatCommand;
-
-public class Reply extends ChatCommand {
-
- public Reply(String name) {
-
- super(name);
- setIdentifier("reply");
- setDescription("Replies to a private message");
- setUsage("/reply ");
- setSenderMustBePlayer(true);
- setErrorOnTooManyArgs(false);
- }
-
- @Override
- public boolean execute(CommandSender sender, String[] args) {
-
- Player player = (Player) sender;
- String senderName = player.getName();
- UUID receiverUUID = chatMan.getPlayerReply(player);
-
- Player receiver = Bukkit.getPlayer(receiverUUID);
- if (receiver == null) {
- msg(ChatStrings.chatNoOneToReplyTo);
- return true;
- }
-
- if (!(receiver.isOnline())) {
- msg(ChatStrings.chatPlayerIsOffline);
- logger.debug(parse(ChatStrings.chatPlayerIsOffline));
- return true;
- }
-
- if (player.getName().equals(receiver.getName())) {
- CivChat2.warningMessage("Reply Command, Player Replying to themself??? Player: [" + senderName + "]");
- msg(ChatStrings.chatCantMessageSelf);
- return true;
- }
-
- if (args.length > 0) {
- StringBuilder sb = new StringBuilder();
- for (String s: args) {
- sb.append(s + " ");
- }
- chatMan.sendPrivateMsg(player, receiver, sb.toString());
- return true;
- } else if (args.length == 0) {
- // Player to chat with reply user
- chatMan.removeChannel(player());
- chatMan.addChatChannel(player(), receiver);
- msg(ChatStrings.chatNowChattingWith, receiver.getName());
- return true;
- }
-
- return false;
- }
-}
diff --git a/src/vg/civcraft/mc/civchat2/command/commands/Tell.java b/src/vg/civcraft/mc/civchat2/command/commands/Tell.java
deleted file mode 100644
index 8f740f8..0000000
--- a/src/vg/civcraft/mc/civchat2/command/commands/Tell.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package vg.civcraft.mc.civchat2.command.commands;
-
-import java.util.List;
-import java.util.UUID;
-
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-
-import vg.civcraft.mc.civchat2.ChatStrings;
-import vg.civcraft.mc.civchat2.command.ChatCommand;
-
-public class Tell extends ChatCommand {
-
- public Tell(String name) {
- super(name);
- setIdentifier("tell");
- setDescription("Sends a private message to another player");
- setUsage("/tell ");
- setSenderMustBePlayer(true);
- setErrorOnTooManyArgs(false);
- }
-
- @Override
- public boolean execute(CommandSender sender, String[] args) {
-
- if (args.length == 0) {
- UUID chattingWith = chatMan.getChannel(player());
- if (chattingWith != null) {
- chatMan.removeChannel(player());
- msg(ChatStrings.chatRemovedFromChat);
- } else {
- msg(ChatStrings.chatNotInPrivateChat);
- }
- return true;
- }
-
- Player receiver = argAsPlayer(0);
- if (receiver == null) {
- msg(ChatStrings.chatPlayerNotFound);
- return true;
- }
-
- if (! (receiver.isOnline())) {
- msg(ChatStrings.chatPlayerIsOffline);
- logger.debug(parse(ChatStrings.chatPlayerIsOffline));
- return true;
- }
-
- if (player().equals(receiver)) {
- msg(ChatStrings.chatCantMessageSelf);
- return true;
- }
-
- if (args.length >= 2) {
- // Player and message
- StringBuilder builder = new StringBuilder();
- for (int x = 1; x < args.length; x++) {
- builder.append(args[x] + " ");
- }
-
- chatMan.sendPrivateMsg(player(), receiver, builder.toString());
- return true;
- } else if (args.length == 1) {
- if (DBM.isIgnoringPlayer(player().getUniqueId(), receiver.getUniqueId())) {
- msg(ChatStrings.chatNeedToUnignore, getRealName(receiver));
- return true;
- }
-
- if (DBM.isIgnoringPlayer(receiver.getUniqueId(), player().getUniqueId())) {
- msg(ChatStrings.chatPlayerIgnoringYou);
- return true;
- }
- chatMan.addChatChannel(player(), receiver);
- msg(ChatStrings.chatNowChattingWith, getRealName(receiver));
- return true;
- }
- return false;
- }
-
- @Override
- public List tabComplete(CommandSender sender, String[] args) {
-
- if (args.length != 1) {
- return null;
- }
- return findPlayers(args[0]);
- }
-}