diff --git a/pom.xml b/pom.xml
index c8d6000..9834f4c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.mattmoreira.plugins
citizens-cmd
- 2.0
+ 2.1-SNAPSHOT
jar
CitizensCMD
diff --git a/src/main/java/me/mattmoreira/citizenscmd/Listeners/NPCListener.java b/src/main/java/me/mattmoreira/citizenscmd/Listeners/NPCListener.java
index 70332a9..1b9e876 100644
--- a/src/main/java/me/mattmoreira/citizenscmd/Listeners/NPCListener.java
+++ b/src/main/java/me/mattmoreira/citizenscmd/Listeners/NPCListener.java
@@ -42,6 +42,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static me.mattmoreira.citizenscmd.utility.TimeUtil.getFormattedTime;
+import static me.mattmoreira.citizenscmd.utility.Util.color;
public class NPCListener implements Listener {
@@ -49,7 +50,7 @@ public class NPCListener implements Listener {
Bukkit.getMessenger().registerOutgoingPluginChannel(CitizensCMD.getPlugin(), "BungeeCord");
}
- @EventHandler (priority = EventPriority.HIGHEST)
+ @EventHandler (priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onRightClick(NPCRightClickEvent event) {
int npc = event.getNPC().getId();
Player player = event.getClicker();
@@ -127,28 +128,35 @@ public class NPCListener implements Listener {
if (permissions.size() != commands.size()) return;
for (int i = 0; i < permissions.size(); i++) {
- final int loopFinalPosition = i;
- Bukkit.getScheduler().runTask(CitizensCMD.getPlugin(), () -> {
- switch (permissions.get(loopFinalPosition).toLowerCase()) {
+ switch (permissions.get(i).toLowerCase()) {
- case "console":
- CitizensCMD.getPlugin().getServer().dispatchCommand(CitizensCMD.getPlugin().getServer().getConsoleSender(), commands.get(loopFinalPosition));
- break;
+ case "console":
+ CitizensCMD.getPlugin().getServer().dispatchCommand(CitizensCMD.getPlugin().getServer().getConsoleSender(), commands.get(i));
+ break;
- case "none":
- player.chat("/" + commands.get(loopFinalPosition));
- break;
+ case "none":
+ player.chat("/" + commands.get(i));
+ break;
- case "server":
- changeServer(player, commands.get(loopFinalPosition));
- break;
+ case "server":
+ changeServer(player, commands.get(i));
+ break;
- default:
- CitizensCMD.getPlugin().getPermissionsManager().setPermission(player, permissions.get(loopFinalPosition));
- player.chat("/" + commands.get(loopFinalPosition));
- CitizensCMD.getPlugin().getPermissionsManager().unsetPermission(player, permissions.get(loopFinalPosition));
- }
- });
+ case "message":
+ String finalMessage;
+ if (commands.get(i).contains("{display}")) {
+ String tmpStr = commands.get(i).replace("{display}", CitizensCMD.getPlugin().getLang().getMessage(Path.MESSAGE_DISPLAY));
+ finalMessage = tmpStr.replace("{name}", event.getNPC().getFullName());
+ } else
+ finalMessage = commands.get(i);
+ player.sendMessage(color(finalMessage));
+ break;
+
+ default:
+ CitizensCMD.getPlugin().getPermissionsManager().setPermission(player, permissions.get(i));
+ player.chat("/" + commands.get(i));
+ CitizensCMD.getPlugin().getPermissionsManager().unsetPermission(player, permissions.get(i));
+ }
}
@@ -157,7 +165,7 @@ public class NPCListener implements Listener {
}
- @EventHandler (priority = EventPriority.HIGHEST)
+ @EventHandler (priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onLeftClick(NPCLeftClickEvent event) {
int npc = event.getNPC().getId();
Player player = event.getClicker();
@@ -225,32 +233,39 @@ public class NPCListener implements Listener {
commands.add(command);
}
}
-
+
if (permissions.size() != commands.size()) return;
for (int i = 0; i < permissions.size(); i++) {
- final int loopFinalPosition = i;
- Bukkit.getScheduler().runTask(CitizensCMD.getPlugin(), () -> {
- switch (permissions.get(loopFinalPosition).toLowerCase()) {
+ switch (permissions.get(i).toLowerCase()) {
- case "console":
- CitizensCMD.getPlugin().getServer().dispatchCommand(CitizensCMD.getPlugin().getServer().getConsoleSender(), commands.get(loopFinalPosition));
- break;
+ case "console":
+ CitizensCMD.getPlugin().getServer().dispatchCommand(CitizensCMD.getPlugin().getServer().getConsoleSender(), commands.get(i));
+ break;
- case "none":
- player.chat("/" + commands.get(loopFinalPosition));
- break;
+ case "none":
+ player.chat("/" + commands.get(i));
+ break;
- case "server":
- changeServer(player, commands.get(loopFinalPosition));
- break;
+ case "server":
+ changeServer(player, commands.get(i));
+ break;
- default:
- CitizensCMD.getPlugin().getPermissionsManager().setPermission(player, permissions.get(loopFinalPosition));
- player.chat("/" + commands.get(loopFinalPosition));
- CitizensCMD.getPlugin().getPermissionsManager().unsetPermission(player, permissions.get(loopFinalPosition));
- }
- });
+ case "message":
+ String finalMessage;
+ if (commands.get(i).contains("{display}")) {
+ String tmpStr = commands.get(i).replace("{display}", CitizensCMD.getPlugin().getLang().getMessage(Path.MESSAGE_DISPLAY));
+ finalMessage = tmpStr.replace("{name}", event.getNPC().getFullName());
+ } else
+ finalMessage = commands.get(i);
+ player.sendMessage(color(finalMessage));
+ break;
+
+ default:
+ CitizensCMD.getPlugin().getPermissionsManager().setPermission(player, permissions.get(i));
+ player.chat("/" + commands.get(i));
+ CitizensCMD.getPlugin().getPermissionsManager().unsetPermission(player, permissions.get(i));
+ }
}
if (!player.hasPermission("citizenscmd.bypass") || CitizensCMD.getPlugin().getDataHandler().getNPCCooldown(npc) != 0)
diff --git a/src/main/java/me/mattmoreira/citizenscmd/commands/CMDAdd.java b/src/main/java/me/mattmoreira/citizenscmd/commands/CMDAdd.java
index 48bc1bc..239ef9d 100644
--- a/src/main/java/me/mattmoreira/citizenscmd/commands/CMDAdd.java
+++ b/src/main/java/me/mattmoreira/citizenscmd/commands/CMDAdd.java
@@ -46,12 +46,19 @@ public class CMDAdd extends CommandBase {
String permission = args[0];
boolean left = false;
+ boolean displayName = false;
StringBuilder stringBuilder = new StringBuilder();
String[] commandsArray = Arrays.copyOfRange(args, 1, args.length);
commandsArray[0] = commandsArray[0].replace("/", "");
for (int i = 0; i < commandsArray.length; i++) {
+
+ if (commandsArray[i].equalsIgnoreCase("-d")) {
+ displayName = true;
+ commandsArray[i] = "";
+ }
+
if (commandsArray[i].equalsIgnoreCase("-l")) {
left = true;
break;
@@ -60,9 +67,16 @@ public class CMDAdd extends CommandBase {
else stringBuilder.append(commandsArray[i]).append(" ");
}
+ String finalString;
+
+ if (displayName)
+ finalString = "{display} " + stringBuilder.toString().trim();
+ else
+ finalString = stringBuilder.toString().trim();
+
boolean finalLeft = left;
- CitizensCMD.getPlugin().getDataHandler().addCommand(getSelectedNpcId(player), permission, stringBuilder.toString().trim(), player, finalLeft);
+ CitizensCMD.getPlugin().getDataHandler().addCommand(getSelectedNpcId(player), permission, finalString, player, finalLeft);
}
}
diff --git a/src/main/java/me/mattmoreira/citizenscmd/files/LangHandler.java b/src/main/java/me/mattmoreira/citizenscmd/files/LangHandler.java
index 18c3c95..6ee4118 100644
--- a/src/main/java/me/mattmoreira/citizenscmd/files/LangHandler.java
+++ b/src/main/java/me/mattmoreira/citizenscmd/files/LangHandler.java
@@ -19,6 +19,7 @@
package me.mattmoreira.citizenscmd.files;
import me.mattmoreira.citizenscmd.CitizensCMD;
+import me.mattmoreira.citizenscmd.utility.Path;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -87,6 +88,9 @@ public class LangHandler {
langConf.load(langFile);
+ if (!langConf.contains(Path.MESSAGE_DISPLAY))
+ langConf.set(Path.MESSAGE_DISPLAY, "{name}:&r");
+
for (String parent : langConf.getConfigurationSection("messages").getKeys(false)) {
for (String child : langConf.getConfigurationSection("messages." + parent).getKeys(false))
messages.put("messages." + parent + "." + child, langConf.getString("messages." + parent + "." + child));
diff --git a/src/main/java/me/mattmoreira/citizenscmd/utility/Path.java b/src/main/java/me/mattmoreira/citizenscmd/utility/Path.java
index 063b65d..be6f2c5 100644
--- a/src/main/java/me/mattmoreira/citizenscmd/utility/Path.java
+++ b/src/main/java/me/mattmoreira/citizenscmd/utility/Path.java
@@ -69,6 +69,7 @@ public class Path {
public static final String PAY_CANCELED = MAIN_PATH_NPCS + "pay-canceled";
public static final String PAY_NO_MONEY = MAIN_PATH_NPCS + "pay-no-money";
public static final String PAY_COMPLETED = MAIN_PATH_NPCS + "pay-completed";
+ public static final String MESSAGE_DISPLAY = MAIN_PATH_NPCS + "message-display";
/**
* Help
diff --git a/src/main/java/me/mattmoreira/citizenscmd/utility/Util.java b/src/main/java/me/mattmoreira/citizenscmd/utility/Util.java
index 6a2f14e..ce30c95 100644
--- a/src/main/java/me/mattmoreira/citizenscmd/utility/Util.java
+++ b/src/main/java/me/mattmoreira/citizenscmd/utility/Util.java
@@ -146,7 +146,7 @@ public class Util {
switch (subCMD.toLowerCase()) {
case "add":
- argComplete[0] = new String[]{"console", "none", "permission", "server"};
+ argComplete[0] = new String[]{"console", "none", "permission", "server", "message"};
break;
case "remove":
argComplete[0] = new String[]{"left", "right"};
@@ -158,7 +158,7 @@ public class Util {
argComplete[1] = new String[]{"left", "right"};
argComplete[2] = CitizensCMD.getPlugin().getDataHandler().getCompleteCommandsNumbers(getSelectedNpcId(player), EnumTypes.ClickType.LEFT);
argComplete[3] = CitizensCMD.getPlugin().getDataHandler().getCompleteCommandsNumbers(getSelectedNpcId(player), EnumTypes.ClickType.RIGHT);
- argComplete[4] = new String[]{"console", "none", "permission", "server"};
+ argComplete[4] = new String[]{"console", "none", "permission", "server", "message"};
}
return argComplete;
}
diff --git a/src/main/resources/lang/bg.yml b/src/main/resources/lang/bg.yml
index 418d38b..99ebc80 100644
--- a/src/main/resources/lang/bg.yml
+++ b/src/main/resources/lang/bg.yml
@@ -42,6 +42,7 @@ messages:
pay-canceled: "&cПлащането бе отменено!"
pay-no-money: "&cНямаш достатъчно пари, за да извършиш това действие!"
pay-completed: "&a{price}$ Бяха взети от твоята сметка!"
+ message-display: "{name}:&r"
help:
version: "&7&oВерсия:"
info: "&7Задръжте върху команда за помощ и пример!"
diff --git a/src/main/resources/lang/ch.yml b/src/main/resources/lang/ch.yml
index e293880..88e74f9 100644
--- a/src/main/resources/lang/ch.yml
+++ b/src/main/resources/lang/ch.yml
@@ -42,6 +42,7 @@ messages:
pay-canceled: "&c付費被取消!"
pay-no-money: "&c你沒有足夠的金錢!"
pay-completed: "&a已經在你的帳戶扣去{price}$!"
+ message-display: "{name}:&r"
help:
version: "&7&o版本:"
info: "&7欲要知道更多,把鼠標停留在一個指令上!"
diff --git a/src/main/resources/lang/en.yml b/src/main/resources/lang/en.yml
index 5124f85..5b69db4 100644
--- a/src/main/resources/lang/en.yml
+++ b/src/main/resources/lang/en.yml
@@ -42,6 +42,7 @@ messages:
pay-canceled: "&cPayment canceled!"
pay-no-money: "&cYou don't have enough money to do this!"
pay-completed: "&a{price}$ has been taken from your account!"
+ message-display: "{name}:&r"
help:
version: "&7&oVersion:"
info: "&7Hover a command for more info and example!"
diff --git a/src/main/resources/lang/no.yml b/src/main/resources/lang/no.yml
index f67f877..3d3d694 100644
--- a/src/main/resources/lang/no.yml
+++ b/src/main/resources/lang/no.yml
@@ -42,6 +42,7 @@ messages:
pay-canceled: "&cBetaling avslått!"
pay-no-money: "&cDu har ikke nok penger til dette!"
pay-completed: "&a{price}$ har blitt tatt fra din konto!"
+ message-display: "{name}:&r"
help:
version: "&7&oVersjon:"
info: "&7Hold musen over for å få infomarsjon!"
diff --git a/src/main/resources/lang/pt.yml b/src/main/resources/lang/pt.yml
index 208dda4..80ea1bd 100644
--- a/src/main/resources/lang/pt.yml
+++ b/src/main/resources/lang/pt.yml
@@ -42,6 +42,7 @@ messages:
pay-canceled: "&cPagamento cancelado!"
pay-no-money: "&cVocê não tem dinheiro suficiente para fazer isso!"
pay-completed: "&a{price}$ foi retirado da sua conta!"
+ message-display: "{name}:&r"
help:
version: "&7&oVersão:"
info: "&7Passe o mouse sobre um comando para mais informações e exemplos!"
diff --git a/src/main/resources/lang/ro.yml b/src/main/resources/lang/ro.yml
index c6a00bf..af11861 100644
--- a/src/main/resources/lang/ro.yml
+++ b/src/main/resources/lang/ro.yml
@@ -42,6 +42,7 @@ messages:
pay-canceled: "&cPlata anulata!"
pay-no-money: "&cNu aveti destui bani pentru a face asta!"
pay-completed: "&a{price}$ au fost adaugati in contul dvs!"
+ message-display: "{name}:&r"
help:
version: "&7&oVersiune:"
info: "&7Plasati mouse-ul peste o comanda pentru mai multe informatii si exemple!"