Added function to send messages to player when clicking the NPC

This commit is contained in:
Mateus Moreira 2018-08-11 20:35:02 +01:00
parent 60a31c65fd
commit 8b38473896
12 changed files with 83 additions and 43 deletions

View File

@ -6,7 +6,7 @@
<groupId>me.mattmoreira.plugins</groupId> <groupId>me.mattmoreira.plugins</groupId>
<artifactId>citizens-cmd</artifactId> <artifactId>citizens-cmd</artifactId>
<version>2.0</version> <version>2.1-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>CitizensCMD</name> <name>CitizensCMD</name>

View File

@ -42,6 +42,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import static me.mattmoreira.citizenscmd.utility.TimeUtil.getFormattedTime; import static me.mattmoreira.citizenscmd.utility.TimeUtil.getFormattedTime;
import static me.mattmoreira.citizenscmd.utility.Util.color;
public class NPCListener implements Listener { public class NPCListener implements Listener {
@ -49,7 +50,7 @@ public class NPCListener implements Listener {
Bukkit.getMessenger().registerOutgoingPluginChannel(CitizensCMD.getPlugin(), "BungeeCord"); Bukkit.getMessenger().registerOutgoingPluginChannel(CitizensCMD.getPlugin(), "BungeeCord");
} }
@EventHandler (priority = EventPriority.HIGHEST) @EventHandler (priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onRightClick(NPCRightClickEvent event) { public void onRightClick(NPCRightClickEvent event) {
int npc = event.getNPC().getId(); int npc = event.getNPC().getId();
Player player = event.getClicker(); Player player = event.getClicker();
@ -127,28 +128,35 @@ public class NPCListener implements Listener {
if (permissions.size() != commands.size()) return; if (permissions.size() != commands.size()) return;
for (int i = 0; i < permissions.size(); i++) { for (int i = 0; i < permissions.size(); i++) {
final int loopFinalPosition = i; switch (permissions.get(i).toLowerCase()) {
Bukkit.getScheduler().runTask(CitizensCMD.getPlugin(), () -> {
switch (permissions.get(loopFinalPosition).toLowerCase()) {
case "console": case "console":
CitizensCMD.getPlugin().getServer().dispatchCommand(CitizensCMD.getPlugin().getServer().getConsoleSender(), commands.get(loopFinalPosition)); CitizensCMD.getPlugin().getServer().dispatchCommand(CitizensCMD.getPlugin().getServer().getConsoleSender(), commands.get(i));
break; break;
case "none": case "none":
player.chat("/" + commands.get(loopFinalPosition)); player.chat("/" + commands.get(i));
break; break;
case "server": case "server":
changeServer(player, commands.get(loopFinalPosition)); changeServer(player, commands.get(i));
break; break;
default: case "message":
CitizensCMD.getPlugin().getPermissionsManager().setPermission(player, permissions.get(loopFinalPosition)); String finalMessage;
player.chat("/" + commands.get(loopFinalPosition)); if (commands.get(i).contains("{display}")) {
CitizensCMD.getPlugin().getPermissionsManager().unsetPermission(player, permissions.get(loopFinalPosition)); 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) { public void onLeftClick(NPCLeftClickEvent event) {
int npc = event.getNPC().getId(); int npc = event.getNPC().getId();
Player player = event.getClicker(); Player player = event.getClicker();
@ -225,32 +233,39 @@ public class NPCListener implements Listener {
commands.add(command); commands.add(command);
} }
} }
if (permissions.size() != commands.size()) return; if (permissions.size() != commands.size()) return;
for (int i = 0; i < permissions.size(); i++) { for (int i = 0; i < permissions.size(); i++) {
final int loopFinalPosition = i; switch (permissions.get(i).toLowerCase()) {
Bukkit.getScheduler().runTask(CitizensCMD.getPlugin(), () -> {
switch (permissions.get(loopFinalPosition).toLowerCase()) {
case "console": case "console":
CitizensCMD.getPlugin().getServer().dispatchCommand(CitizensCMD.getPlugin().getServer().getConsoleSender(), commands.get(loopFinalPosition)); CitizensCMD.getPlugin().getServer().dispatchCommand(CitizensCMD.getPlugin().getServer().getConsoleSender(), commands.get(i));
break; break;
case "none": case "none":
player.chat("/" + commands.get(loopFinalPosition)); player.chat("/" + commands.get(i));
break; break;
case "server": case "server":
changeServer(player, commands.get(loopFinalPosition)); changeServer(player, commands.get(i));
break; break;
default: case "message":
CitizensCMD.getPlugin().getPermissionsManager().setPermission(player, permissions.get(loopFinalPosition)); String finalMessage;
player.chat("/" + commands.get(loopFinalPosition)); if (commands.get(i).contains("{display}")) {
CitizensCMD.getPlugin().getPermissionsManager().unsetPermission(player, permissions.get(loopFinalPosition)); 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) if (!player.hasPermission("citizenscmd.bypass") || CitizensCMD.getPlugin().getDataHandler().getNPCCooldown(npc) != 0)

View File

@ -46,12 +46,19 @@ public class CMDAdd extends CommandBase {
String permission = args[0]; String permission = args[0];
boolean left = false; boolean left = false;
boolean displayName = false;
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
String[] commandsArray = Arrays.copyOfRange(args, 1, args.length); String[] commandsArray = Arrays.copyOfRange(args, 1, args.length);
commandsArray[0] = commandsArray[0].replace("/", ""); commandsArray[0] = commandsArray[0].replace("/", "");
for (int i = 0; i < commandsArray.length; i++) { for (int i = 0; i < commandsArray.length; i++) {
if (commandsArray[i].equalsIgnoreCase("-d")) {
displayName = true;
commandsArray[i] = "";
}
if (commandsArray[i].equalsIgnoreCase("-l")) { if (commandsArray[i].equalsIgnoreCase("-l")) {
left = true; left = true;
break; break;
@ -60,9 +67,16 @@ public class CMDAdd extends CommandBase {
else stringBuilder.append(commandsArray[i]).append(" "); else stringBuilder.append(commandsArray[i]).append(" ");
} }
String finalString;
if (displayName)
finalString = "{display} " + stringBuilder.toString().trim();
else
finalString = stringBuilder.toString().trim();
boolean finalLeft = left; 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);
} }
} }

View File

@ -19,6 +19,7 @@
package me.mattmoreira.citizenscmd.files; package me.mattmoreira.citizenscmd.files;
import me.mattmoreira.citizenscmd.CitizensCMD; import me.mattmoreira.citizenscmd.CitizensCMD;
import me.mattmoreira.citizenscmd.utility.Path;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
@ -87,6 +88,9 @@ public class LangHandler {
langConf.load(langFile); 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 parent : langConf.getConfigurationSection("messages").getKeys(false)) {
for (String child : langConf.getConfigurationSection("messages." + parent).getKeys(false)) for (String child : langConf.getConfigurationSection("messages." + parent).getKeys(false))
messages.put("messages." + parent + "." + child, langConf.getString("messages." + parent + "." + child)); messages.put("messages." + parent + "." + child, langConf.getString("messages." + parent + "." + child));

View File

@ -69,6 +69,7 @@ public class Path {
public static final String PAY_CANCELED = MAIN_PATH_NPCS + "pay-canceled"; 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_NO_MONEY = MAIN_PATH_NPCS + "pay-no-money";
public static final String PAY_COMPLETED = MAIN_PATH_NPCS + "pay-completed"; public static final String PAY_COMPLETED = MAIN_PATH_NPCS + "pay-completed";
public static final String MESSAGE_DISPLAY = MAIN_PATH_NPCS + "message-display";
/** /**
* Help * Help

View File

@ -146,7 +146,7 @@ public class Util {
switch (subCMD.toLowerCase()) { switch (subCMD.toLowerCase()) {
case "add": case "add":
argComplete[0] = new String[]{"console", "none", "permission", "server"}; argComplete[0] = new String[]{"console", "none", "permission", "server", "message"};
break; break;
case "remove": case "remove":
argComplete[0] = new String[]{"left", "right"}; argComplete[0] = new String[]{"left", "right"};
@ -158,7 +158,7 @@ public class Util {
argComplete[1] = new String[]{"left", "right"}; argComplete[1] = new String[]{"left", "right"};
argComplete[2] = CitizensCMD.getPlugin().getDataHandler().getCompleteCommandsNumbers(getSelectedNpcId(player), EnumTypes.ClickType.LEFT); argComplete[2] = CitizensCMD.getPlugin().getDataHandler().getCompleteCommandsNumbers(getSelectedNpcId(player), EnumTypes.ClickType.LEFT);
argComplete[3] = CitizensCMD.getPlugin().getDataHandler().getCompleteCommandsNumbers(getSelectedNpcId(player), EnumTypes.ClickType.RIGHT); 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; return argComplete;
} }

View File

@ -42,6 +42,7 @@ messages:
pay-canceled: "&cПлащането бе отменено!" pay-canceled: "&cПлащането бе отменено!"
pay-no-money: "&cНямаш достатъчно пари, за да извършиш това действие!" pay-no-money: "&cНямаш достатъчно пари, за да извършиш това действие!"
pay-completed: "&a{price}$ Бяха взети от твоята сметка!" pay-completed: "&a{price}$ Бяха взети от твоята сметка!"
message-display: "{name}:&r"
help: help:
version: "&7&oВерсия:" version: "&7&oВерсия:"
info: "&7Задръжте върху команда за помощ и пример!" info: "&7Задръжте върху команда за помощ и пример!"

View File

@ -42,6 +42,7 @@ messages:
pay-canceled: "&c付費被取消!" pay-canceled: "&c付費被取消!"
pay-no-money: "&c你沒有足夠的金錢!" pay-no-money: "&c你沒有足夠的金錢!"
pay-completed: "&a已經在你的帳戶扣去{price}$!" pay-completed: "&a已經在你的帳戶扣去{price}$!"
message-display: "{name}:&r"
help: help:
version: "&7&o版本:" version: "&7&o版本:"
info: "&7欲要知道更多把鼠標停留在一個指令上!" info: "&7欲要知道更多把鼠標停留在一個指令上!"

View File

@ -42,6 +42,7 @@ messages:
pay-canceled: "&cPayment canceled!" pay-canceled: "&cPayment canceled!"
pay-no-money: "&cYou don't have enough money to do this!" pay-no-money: "&cYou don't have enough money to do this!"
pay-completed: "&a{price}$ has been taken from your account!" pay-completed: "&a{price}$ has been taken from your account!"
message-display: "{name}:&r"
help: help:
version: "&7&oVersion:" version: "&7&oVersion:"
info: "&7Hover a command for more info and example!" info: "&7Hover a command for more info and example!"

View File

@ -42,6 +42,7 @@ messages:
pay-canceled: "&cBetaling avslått!" pay-canceled: "&cBetaling avslått!"
pay-no-money: "&cDu har ikke nok penger til dette!" pay-no-money: "&cDu har ikke nok penger til dette!"
pay-completed: "&a{price}$ har blitt tatt fra din konto!" pay-completed: "&a{price}$ har blitt tatt fra din konto!"
message-display: "{name}:&r"
help: help:
version: "&7&oVersjon:" version: "&7&oVersjon:"
info: "&7Hold musen over for å få infomarsjon!" info: "&7Hold musen over for å få infomarsjon!"

View File

@ -42,6 +42,7 @@ messages:
pay-canceled: "&cPagamento cancelado!" pay-canceled: "&cPagamento cancelado!"
pay-no-money: "&cVocê não tem dinheiro suficiente para fazer isso!" pay-no-money: "&cVocê não tem dinheiro suficiente para fazer isso!"
pay-completed: "&a{price}$ foi retirado da sua conta!" pay-completed: "&a{price}$ foi retirado da sua conta!"
message-display: "{name}:&r"
help: help:
version: "&7&oVersão:" version: "&7&oVersão:"
info: "&7Passe o mouse sobre um comando para mais informações e exemplos!" info: "&7Passe o mouse sobre um comando para mais informações e exemplos!"

View File

@ -42,6 +42,7 @@ messages:
pay-canceled: "&cPlata anulata!" pay-canceled: "&cPlata anulata!"
pay-no-money: "&cNu aveti destui bani pentru a face asta!" pay-no-money: "&cNu aveti destui bani pentru a face asta!"
pay-completed: "&a{price}$ au fost adaugati in contul dvs!" pay-completed: "&a{price}$ au fost adaugati in contul dvs!"
message-display: "{name}:&r"
help: help:
version: "&7&oVersiune:" version: "&7&oVersiune:"
info: "&7Plasati mouse-ul peste o comanda pentru mai multe informatii si exemple!" info: "&7Plasati mouse-ul peste o comanda pentru mai multe informatii si exemple!"