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>
<artifactId>citizens-cmd</artifactId>
<version>2.0</version>
<version>2.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>CitizensCMD</name>

View File

@ -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)

View File

@ -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);
}
}

View File

@ -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));

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_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

View File

@ -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;
}

View File

@ -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Задръжте върху команда за помощ и пример!"

View File

@ -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欲要知道更多把鼠標停留在一個指令上!"

View File

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

View File

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

View File

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

View File

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