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!"