diff --git a/src/main/java/dansplugins/rpsystem/MedievalRoleplayEngine.java b/src/main/java/dansplugins/rpsystem/MedievalRoleplayEngine.java index 8131e03..0535e50 100644 --- a/src/main/java/dansplugins/rpsystem/MedievalRoleplayEngine.java +++ b/src/main/java/dansplugins/rpsystem/MedievalRoleplayEngine.java @@ -22,6 +22,8 @@ import java.io.File; public class MedievalRoleplayEngine extends JavaPlugin { + private static final int BSTATS_PLUGIN_ID = 8996; + private final String pluginVersion = "v" + getDescription().getVersion(); public final CardLookupService cardLookupService = new CardLookupServiceImpl(this); @@ -38,12 +40,10 @@ public class MedievalRoleplayEngine extends JavaPlugin { @Override public void onEnable() { - // create/load config if (!(new File("./plugins/MedievalRoleplayEngine/config.yml").exists())) { configService.saveConfigDefaults(); } else { - // pre load compatibility checks if (isVersionMismatched()) { configService.handleVersionMismatch(); } @@ -62,8 +62,7 @@ public void onEnable() { registerListeners(); - int pluginId = 8996; - new Metrics(this, pluginId); + new Metrics(this, BSTATS_PLUGIN_ID); if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { new PlaceholderAPI(this).register(); diff --git a/src/main/java/dansplugins/rpsystem/cards/CardRepository.java b/src/main/java/dansplugins/rpsystem/cards/CardRepository.java index 14b36ba..0bbdf8c 100644 --- a/src/main/java/dansplugins/rpsystem/cards/CardRepository.java +++ b/src/main/java/dansplugins/rpsystem/cards/CardRepository.java @@ -12,7 +12,7 @@ public ArrayList getCards() { public CharacterCard getCard(UUID uuid) { for (CharacterCard card : getCards()) { - if (card.getPlayerUUID().equals(uuid)) { + if (uuid != null && uuid.equals(card.getPlayerUUID())) { return card; } } @@ -21,7 +21,7 @@ public CharacterCard getCard(UUID uuid) { public boolean hasCard(UUID uuid) { for (CharacterCard card : getCards()) { - if (card.getPlayerUUID().equals(uuid)) { + if (uuid != null && uuid.equals(card.getPlayerUUID())) { return true; } } diff --git a/src/main/java/dansplugins/rpsystem/cards/CharacterCard.java b/src/main/java/dansplugins/rpsystem/cards/CharacterCard.java index aab40a1..18d32a1 100644 --- a/src/main/java/dansplugins/rpsystem/cards/CharacterCard.java +++ b/src/main/java/dansplugins/rpsystem/cards/CharacterCard.java @@ -25,7 +25,6 @@ public CharacterCard(MedievalRoleplayEngine medievalRoleplayEngine, UUID uuid) { playerUUID = uuid; } - // storage constructor public CharacterCard(MedievalRoleplayEngine medievalRoleplayEngine) { this.medievalRoleplayEngine = medievalRoleplayEngine; } @@ -38,8 +37,8 @@ public UUID getPlayerUUID() { return playerUUID; } - public void setName(String newUUID) { - name = newUUID; + public void setName(String newName) { + name = newName; } public String getName() { @@ -101,7 +100,6 @@ public boolean save() { FileWriter saveWriter = new FileWriter("./plugins/MedievalRoleplayEngine/" + playerUUID + ".txt"); - // actual saving takes place here saveWriter.write(playerUUID.toString() + "\n"); saveWriter.write(name + "\n"); saveWriter.write(race + "\n"); @@ -126,7 +124,6 @@ public boolean load(String filename) { File loadFile = new File("./plugins/MedievalRoleplayEngine/" + filename); Scanner loadReader = new Scanner(loadFile); - // actual loading if (loadReader.hasNextLine()) { setPlayerUUID(UUID.fromString(loadReader.nextLine())); } @@ -163,7 +160,6 @@ public boolean legacyLoad(String filename) { File loadFile = new File("./plugins/medieval-roleplay-engine/" + filename); Scanner loadReader = new Scanner(loadFile); - // actual loading if (loadReader.hasNextLine()) { setPlayerUUID(medievalRoleplayEngine.uuidChecker.findUUIDBasedOnPlayerName(loadReader.nextLine())); } diff --git a/src/main/java/dansplugins/rpsystem/commands/CommandService.java b/src/main/java/dansplugins/rpsystem/commands/CommandService.java index 4c8d096..9be7e81 100644 --- a/src/main/java/dansplugins/rpsystem/commands/CommandService.java +++ b/src/main/java/dansplugins/rpsystem/commands/CommandService.java @@ -24,14 +24,12 @@ public CommandService(MedievalRoleplayEngine medievalRoleplayEngine) { public boolean interpretCommand(CommandSender sender, String label, String[] args) { - // help command if (label.equalsIgnoreCase("rphelp")) { HelpCommand command = new HelpCommand(medievalRoleplayEngine); command.showListOfCommands(sender); return true; } - // card command if (label.equalsIgnoreCase("card")) { CardCommand command = new CardCommand(medievalRoleplayEngine); if (args.length == 0) { diff --git a/src/main/java/dansplugins/rpsystem/commands/bird/BirdCommand.java b/src/main/java/dansplugins/rpsystem/commands/bird/BirdCommand.java index c87c126..2026c0a 100644 --- a/src/main/java/dansplugins/rpsystem/commands/bird/BirdCommand.java +++ b/src/main/java/dansplugins/rpsystem/commands/bird/BirdCommand.java @@ -15,7 +15,6 @@ public BirdCommand(MedievalRoleplayEngine medievalRoleplayEngine) { } public void sendBird(CommandSender sender, String[] args) { - // player check if (!(sender instanceof Player)) { return; } @@ -28,7 +27,6 @@ public void sendBird(CommandSender sender, String[] args) { return; } - // zero args check if (args.length < 2) { player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /bird (player-name) (message)"); return; diff --git a/src/main/java/dansplugins/rpsystem/commands/card/CardCommand.java b/src/main/java/dansplugins/rpsystem/commands/card/CardCommand.java index 8a23a03..7b3b38f 100644 --- a/src/main/java/dansplugins/rpsystem/commands/card/CardCommand.java +++ b/src/main/java/dansplugins/rpsystem/commands/card/CardCommand.java @@ -18,297 +18,246 @@ public CardCommand(MedievalRoleplayEngine medievalRoleplayEngine) { } public void showCard(CommandSender sender, String[] args) { - if (sender instanceof Player) { - Player player = (Player) sender; + if (!(sender instanceof Player)) { + return; + } + Player player = (Player) sender; - if (player.hasPermission("rp.card.show") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { - CharacterCard card = medievalRoleplayEngine.cardLookupService.lookup(player.getUniqueId()); - medievalRoleplayEngine.messenger.sendCardInfoToPlayer(card, player); - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.show'"); + if (player.hasPermission("rp.card.show") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { + CharacterCard card = medievalRoleplayEngine.cardLookupService.lookup(player.getUniqueId()); + if (card == null) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "You do not have a character card to view."); + return; } - + medievalRoleplayEngine.messenger.sendCardInfoToPlayer(card, player); + } + else { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.show'"); } } public void showHelpMessage(CommandSender sender) { - if (sender instanceof Player) { - - Player player = (Player) sender; - - if (player.hasPermission("rp.card.help") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { - sender.sendMessage(ChatColor.BOLD + "" + medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + " == " + "Character Card Commands" + " == "); - sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card - View your character card."); - sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card lookup (player) - View the character card of a specific player."); - sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card name (name) - Change your character's name."); - sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card race (race) - Change your character's race."); - sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card subculture (subculture) - Change your character's subculture."); - sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card age (age) - Change your character's age."); - sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card gender (gender) - Change your character's gender."); - sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card religion (religion) - Change your character's religion."); - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.help'"); - } + if (!(sender instanceof Player)) { + return; + } + Player player = (Player) sender; + + if (player.hasPermission("rp.card.help") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { + sender.sendMessage(ChatColor.BOLD + "" + medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + " == " + "Character Card Commands" + " == "); + sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card - View your character card."); + sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card lookup (player) - View the character card of a specific player."); + sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card name (name) - Change your character's name."); + sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card race (race) - Change your character's race."); + sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card subculture (subculture) - Change your character's subculture."); + sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card age (age) - Change your character's age."); + sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card gender (gender) - Change your character's gender."); + sender.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "/card religion (religion) - Change your character's religion."); + } + else { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.help'"); } - } public void changeName(CommandSender sender, String[] args) { + if (!(sender instanceof Player)) { + return; + } + Player player = (Player) sender; - int changeNameCooldown = medievalRoleplayEngine.getConfig().getInt("changeNameCooldown"); - - if (sender instanceof Player) { - Player player = (Player) sender; - - if (player.hasPermission("rp.card.name") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { - for (CharacterCard card : medievalRoleplayEngine.cardRepository.getCards()) { - - if (card.getPlayerUUID().equals(player.getUniqueId())) { - - if (!medievalRoleplayEngine.ephemeralData.getPlayersOnNameChangeCooldown().contains(player.getUniqueId())) { - - if (args.length > 1) { - card.setName(medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); - player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + "Name set! Type /card to see changes."); - - if (changeNameCooldown != 0) { - // cooldown - medievalRoleplayEngine.ephemeralData.getPlayersOnNameChangeCooldown().add(player.getUniqueId()); - - int seconds = changeNameCooldown; - getServer().getScheduler().runTaskLater(medievalRoleplayEngine, new Runnable() { - @Override - public void run() { - medievalRoleplayEngine.ephemeralData.getPlayersOnNameChangeCooldown().remove(player.getUniqueId()); - player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + "You can now change your character's name again."); - } - }, seconds * 20); - } - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /card name (character-name)"); - } - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "You must wait before changing your name again!"); - } - } + if (!(player.hasPermission("rp.card.name") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default"))) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.name'"); + return; + } - } - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.name'"); - } + CharacterCard card = findCardForPlayer(player.getUniqueId()); + if (card == null) { + return; + } + if (medievalRoleplayEngine.ephemeralData.getPlayersOnNameChangeCooldown().contains(player.getUniqueId())) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "You must wait before changing your name again!"); + return; } - } - public void changeRace(CommandSender sender, String[] args) { - if (sender instanceof Player) { - Player player = (Player) sender; - - if (player.hasPermission("rp.card.race") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { - for (CharacterCard card : medievalRoleplayEngine.cardRepository.getCards()) { - - if (card.getPlayerUUID().equals(player.getUniqueId())) { - - if (args.length > 1) { - card.setRace(medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); - player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + "Race set! Type /card to see changes."); - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /card race (character-race)"); - } - } - } - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.race'"); - } + if (args.length < 2) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /card name (character-name)"); + return; + } + card.setName(medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); + player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + "Name set! Type /card to see changes."); + + int changeNameCooldown = medievalRoleplayEngine.configService.getInt("changeNameCooldown"); + if (changeNameCooldown != 0) { + medievalRoleplayEngine.ephemeralData.getPlayersOnNameChangeCooldown().add(player.getUniqueId()); + getServer().getScheduler().runTaskLater(medievalRoleplayEngine, new Runnable() { + @Override + public void run() { + medievalRoleplayEngine.ephemeralData.getPlayersOnNameChangeCooldown().remove(player.getUniqueId()); + player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + "You can now change your character's name again."); + } + }, changeNameCooldown * 20); } } - public void changeSubculture(CommandSender sender, String[] args) { - if (sender instanceof Player) { - Player player = (Player) sender; - - if (player.hasPermission("rp.card.subculture") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { - for (CharacterCard card : medievalRoleplayEngine.cardRepository.getCards()) { - - if (card.getPlayerUUID().equals(player.getUniqueId())) { - - if (args.length > 1) { - card.setSubculture(medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); - player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + "Subculture set! Type /card to see changes."); - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /card subculture (character-subculture)"); - } - } - } - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.subculture'"); - } + public void changeRace(CommandSender sender, String[] args) { + applyStringCardChange(sender, args, "rp.card.race", "race", + (card, value) -> card.setRace(value)); + } - } + public void changeSubculture(CommandSender sender, String[] args) { + applyStringCardChange(sender, args, "rp.card.subculture", "subculture", + (card, value) -> card.setSubculture(value)); } public void changeReligion(CommandSender sender, String[] args) { - if (sender instanceof Player) { - Player player = (Player) sender; - - if (player.hasPermission("rp.card.religion") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { - for (CharacterCard card : medievalRoleplayEngine.cardRepository.getCards()) { - - if (card.getPlayerUUID().equals(player.getUniqueId())) { - - if (args.length > 1) { - card.setReligion(medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); - player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + "Religion set! Type /card to see changes."); - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /card religion (character-religion)"); - } - } - } - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.religion'"); - } + applyStringCardChange(sender, args, "rp.card.religion", "religion", + (card, value) -> card.setReligion(value)); + } - } + public void changeGender(CommandSender sender, String[] args) { + applyStringCardChange(sender, args, "rp.card.gender", "gender", + (card, value) -> card.setGender(value)); } public void changeAge(CommandSender sender, String[] args) { - if (sender instanceof Player) { - Player player = (Player) sender; - - if (player.hasPermission("rp.card.age") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { - for (CharacterCard card : medievalRoleplayEngine.cardRepository.getCards()) { - - if (card.getPlayerUUID().equals(player.getUniqueId())) { - - if (args.length > 1) { - int newAge; - try { - newAge = Integer.parseInt(medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); - } catch(NumberFormatException e) { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Must be a number."); - return; - } - card.setAge(newAge); - player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + "Age set! Type /card to see changes."); - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /card age (character-age)"); - } - } - } - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.age'"); - } + if (!(sender instanceof Player)) { + return; + } + Player player = (Player) sender; + if (!(player.hasPermission("rp.card.age") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default"))) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.age'"); + return; } - } - public void changeGender(CommandSender sender, String[] args) { - if (sender instanceof Player) { - Player player = (Player) sender; - - if (player.hasPermission("rp.card.gender") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { - for (CharacterCard card : medievalRoleplayEngine.cardRepository.getCards()) { - - if (card.getPlayerUUID().equals(player.getUniqueId())) { - - if (args.length > 1) { - card.setGender(medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); - player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + "Gender set! Type /card to see changes."); - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /card gender (character-gender)"); - } - } - } - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.gender'"); - } + CharacterCard card = findCardForPlayer(player.getUniqueId()); + if (card == null) { + return; + } + if (args.length < 2) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /card age (character-age)"); + return; } + + int newAge; + try { + newAge = Integer.parseInt(medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); + } catch (NumberFormatException e) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Must be a number."); + return; + } + card.setAge(newAge); + player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + "Age set! Type /card to see changes."); } public void showPlayerInfo(CommandSender sender, String[] args) { - if (sender instanceof Player) { + if (!(sender instanceof Player)) { + return; + } + Player player = (Player) sender; - Player player = (Player) sender; + if (!(player.hasPermission("rp.card.lookup") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default"))) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.lookup'"); + return; + } - if (player.hasPermission("rp.card.lookup") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { + if (args.length < 2) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /card lookup (playerName)"); + return; + } - if (args.length < 2) { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Usage: /card lookup (playerName)"); - return; - } + UUID targetUUID = medievalRoleplayEngine.uuidChecker.findUUIDBasedOnPlayerName(medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); + if (targetUUID == null) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "That player wasn't found."); + return; + } - // get UUID - UUID targetUUID = medievalRoleplayEngine.uuidChecker.findUUIDBasedOnPlayerName(medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); - if (targetUUID == null) { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "That player wasn't found."); - return; - } + CharacterCard card = medievalRoleplayEngine.cardLookupService.lookup(targetUUID); + if (card == null) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "That player doesn't have a card."); + return; + } - CharacterCard card = medievalRoleplayEngine.cardLookupService.lookup(targetUUID); + medievalRoleplayEngine.messenger.sendCardInfoToPlayer(card, player); + } - if (card == null) { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "That player doesn't have a card."); - return; - } + public boolean forceSave(CommandSender sender) { + if (!(sender instanceof Player)) { + return false; + } + Player player = (Player) sender; - medievalRoleplayEngine.messenger.sendCardInfoToPlayer(card, player); - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.show.others'"); - } + if (player.hasPermission("rp.card.forcesave") || player.hasPermission("rp.admin")) { + medievalRoleplayEngine.storageService.saveCardFileNames(); + medievalRoleplayEngine.storageService.saveCards(); + return true; + } + else { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.forcesave'"); + return false; + } + } + public boolean forceLoad(CommandSender sender) { + if (!(sender instanceof Player)) { + return false; } + Player player = (Player) sender; + if (player.hasPermission("rp.card.forceload") || player.hasPermission("rp.admin")) { + medievalRoleplayEngine.storageService.loadCards(); + return true; + } + else { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.forceload'"); + return false; + } } - public boolean forceSave(CommandSender sender) { - if (sender instanceof Player) { - Player player = (Player) sender; + private void applyStringCardChange(CommandSender sender, String[] args, String permissionNode, + String fieldName, CardFieldSetter setter) { + if (!(sender instanceof Player)) { + return; + } + Player player = (Player) sender; - if (player.hasPermission("rp.card.forcesave") || player.hasPermission("rp.admin")) { - medievalRoleplayEngine.storageService.saveCardFileNames(); - medievalRoleplayEngine.storageService.saveCards(); - return true; - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.forcesave'"); - return false; - } + if (!(player.hasPermission(permissionNode) || player.hasPermission("rp.card.*") || player.hasPermission("rp.default"))) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + + "Sorry! In order to use this command, you need the following permission: '" + permissionNode + "'"); + return; + } + + CharacterCard card = findCardForPlayer(player.getUniqueId()); + if (card == null) { + return; + } + if (args.length < 2) { + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + + "Usage: /card " + fieldName + " (character-" + fieldName + ")"); + return; } - return false; + + setter.apply(card, medievalRoleplayEngine.argumentParser.createStringFromFirstArgOnwards(args, 1)); + player.sendMessage(medievalRoleplayEngine.colorChecker.getPositiveAlertColor() + + capitalize(fieldName) + " set! Type /card to see changes."); } - public boolean forceLoad(CommandSender sender) { - if (sender instanceof Player) { - Player player = (Player) sender; + private CharacterCard findCardForPlayer(UUID playerUUID) { + return medievalRoleplayEngine.cardRepository.getCard(playerUUID); + } - if (player.hasPermission("rp.card.forceload") || player.hasPermission("rp.admin")) { - medievalRoleplayEngine.storageService.loadCards(); - return true; - } - else { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.card.forceload'"); - return false; - } + private String capitalize(String text) { + if (text == null || text.isEmpty()) { + return text; } - return false; + return Character.toUpperCase(text.charAt(0)) + text.substring(1); + } + + @FunctionalInterface + private interface CardFieldSetter { + void apply(CharacterCard card, String value); } } diff --git a/src/main/java/dansplugins/rpsystem/commands/config/ConfigCommand.java b/src/main/java/dansplugins/rpsystem/commands/config/ConfigCommand.java index b61758d..dca6033 100644 --- a/src/main/java/dansplugins/rpsystem/commands/config/ConfigCommand.java +++ b/src/main/java/dansplugins/rpsystem/commands/config/ConfigCommand.java @@ -31,14 +31,12 @@ public boolean handleConfigAccess(CommandSender sender, String[] args) { } if (args[0].equalsIgnoreCase("show")) { - // no further arguments needed, list config medievalRoleplayEngine.configService.sendPlayerConfigList(player); return true; } if (args[0].equalsIgnoreCase("set")) { - // two more arguments needed if (args.length > 2) { String option = args[1]; diff --git a/src/main/java/dansplugins/rpsystem/commands/local/LocalChatCommand.java b/src/main/java/dansplugins/rpsystem/commands/local/LocalChatCommand.java index 087a8fd..ac9eaa1 100644 --- a/src/main/java/dansplugins/rpsystem/commands/local/LocalChatCommand.java +++ b/src/main/java/dansplugins/rpsystem/commands/local/LocalChatCommand.java @@ -35,7 +35,6 @@ public boolean startChattingInLocalChat(CommandSender sender, String[] args) { } } - // add player to local chat addPlayerToLocalChat(player); return true; diff --git a/src/main/java/dansplugins/rpsystem/commands/localooc/LocalOOCChatCommand.java b/src/main/java/dansplugins/rpsystem/commands/localooc/LocalOOCChatCommand.java index 889495c..b94a4a5 100644 --- a/src/main/java/dansplugins/rpsystem/commands/localooc/LocalOOCChatCommand.java +++ b/src/main/java/dansplugins/rpsystem/commands/localooc/LocalOOCChatCommand.java @@ -24,7 +24,7 @@ public void sendLocalOOCMessage(CommandSender sender, String[] args) { Player player = (Player) sender; if (!(player.hasPermission("rp.localOOC") || player.hasPermission("rp.default"))) { - player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.yell'"); + player.sendMessage(medievalRoleplayEngine.colorChecker.getNegativeAlertColor() + "Sorry! In order to use this command, you need the following permission: 'rp.localOOC'"); return; } diff --git a/src/main/java/dansplugins/rpsystem/commands/title/TitleCommand.java b/src/main/java/dansplugins/rpsystem/commands/title/TitleCommand.java index d7d7ee1..f1fb3db 100644 --- a/src/main/java/dansplugins/rpsystem/commands/title/TitleCommand.java +++ b/src/main/java/dansplugins/rpsystem/commands/title/TitleCommand.java @@ -19,13 +19,10 @@ public void titleBook(CommandSender sender, String[] args) { if (sender instanceof Player) { Player player = (Player) sender; - // check permission if (player.hasPermission("rp.title") || player.hasPermission("rp.default")) { - // check if they're holding a book if (player.getInventory().getItemInMainHand().getType() == Material.WRITABLE_BOOK) { - // args check if (args.length > 0) { String newTitle = medievalRoleplayEngine.argumentParser.createStringFromArgs(args); diff --git a/src/main/java/dansplugins/rpsystem/commands/whisper/WhisperCommand.java b/src/main/java/dansplugins/rpsystem/commands/whisper/WhisperCommand.java index 621f595..2b0a097 100644 --- a/src/main/java/dansplugins/rpsystem/commands/whisper/WhisperCommand.java +++ b/src/main/java/dansplugins/rpsystem/commands/whisper/WhisperCommand.java @@ -16,7 +16,6 @@ public void sendQuietMessage(CommandSender sender, String[] args) { int whisperChatRadius = medievalRoleplayEngine.getConfig().getInt("whisperChatRadius"); String whisperChatColor = medievalRoleplayEngine.getConfig().getString("whisperChatColor"); - // player check if (!(sender instanceof Player)) { return; } diff --git a/src/main/java/dansplugins/rpsystem/commands/yell/YellCommand.java b/src/main/java/dansplugins/rpsystem/commands/yell/YellCommand.java index b014c0a..19b3767 100644 --- a/src/main/java/dansplugins/rpsystem/commands/yell/YellCommand.java +++ b/src/main/java/dansplugins/rpsystem/commands/yell/YellCommand.java @@ -16,7 +16,6 @@ public void sendLoudMessage(CommandSender sender, String[] args) { int yellChatRadius = medievalRoleplayEngine.getConfig().getInt("yellChatRadius"); String yellChatColor = medievalRoleplayEngine.getConfig().getString("yellChatColor"); - // player check if (!(sender instanceof Player)) { return; } diff --git a/src/main/java/dansplugins/rpsystem/config/ConfigService.java b/src/main/java/dansplugins/rpsystem/config/ConfigService.java index cba3818..6f73436 100644 --- a/src/main/java/dansplugins/rpsystem/config/ConfigService.java +++ b/src/main/java/dansplugins/rpsystem/config/ConfigService.java @@ -14,7 +14,6 @@ public ConfigService(MedievalRoleplayEngine medievalRoleplayEngine) { } public void handleVersionMismatch() { - // set version if (!getConfig().isString("version")) { getConfig().addDefault("version", medievalRoleplayEngine.getVersion()); } @@ -22,7 +21,6 @@ public void handleVersionMismatch() { getConfig().set("version", medievalRoleplayEngine.getVersion()); } - // add defaults if they don't exist if (!getConfig().isInt("localChatRadius")) { getConfig().addDefault("localChatRadius", 25); } @@ -62,7 +60,11 @@ public void handleVersionMismatch() { if (!getConfig().isString("positiveAlertColor")) { getConfig().addDefault("positiveAlertColor", "green"); } - if (!getConfig().isString("neurtalAlertColor")) { + if (!getConfig().isString("neutralAlertColor") && getConfig().isString("neurtalAlertColor")) { + getConfig().set("neutralAlertColor", getConfig().getString("neurtalAlertColor")); + getConfig().set("neurtalAlertColor", null); + } + if (!getConfig().isString("neutralAlertColor")) { getConfig().addDefault("neutralAlertColor", "aqua"); } if (!getConfig().isString("negativeAlertColor")) { @@ -129,7 +131,6 @@ else if (option.equalsIgnoreCase("doubletest")) { player.sendMessage(medievalRoleplayEngine.colorChecker.getColorByName(getString("positiveAlertColor")) + "String set!"); } - // save medievalRoleplayEngine.saveConfig(); altered = true; } diff --git a/src/main/java/dansplugins/rpsystem/listeners/ChatListener.java b/src/main/java/dansplugins/rpsystem/listeners/ChatListener.java index 54cd57f..4ffca01 100644 --- a/src/main/java/dansplugins/rpsystem/listeners/ChatListener.java +++ b/src/main/java/dansplugins/rpsystem/listeners/ChatListener.java @@ -23,7 +23,6 @@ public void handle(AsyncPlayerChatEvent event) { String localChatColorString = medievalRoleplayEngine.getConfig().getString("localChatColor"); if (medievalRoleplayEngine.ephemeralData.getPlayersSpeakingInLocalChat().contains(event.getPlayer().getUniqueId())) { - // get color and character name ChatColor localChatColor = medievalRoleplayEngine.colorChecker.getColorByName(localChatColorString); String characterName = medievalRoleplayEngine.cardRepository.getCard(event.getPlayer().getUniqueId()).getName(); @@ -33,7 +32,6 @@ public void handle(AsyncPlayerChatEvent event) { return; } - // prepare message to send String messageToSend; if (!event.getMessage().contains("*")) { messageToSend = localChatColor + "" + String.format("%s: \"%s\"", characterName, event.getMessage()); @@ -42,7 +40,7 @@ public void handle(AsyncPlayerChatEvent event) { else { String messageWithoutEmote = removeStringContainedBetweenAsterisks(event.getMessage()); - String emoteMessage = getStringContainedBetweenAstericks(event.getMessage()); + String emoteMessage = getStringContainedBetweenAsterisks(event.getMessage()); int emoteRadius = medievalRoleplayEngine.getConfig().getInt("emoteRadius"); String emoteColorString = medievalRoleplayEngine.getConfig().getString("emoteColor"); @@ -63,16 +61,12 @@ public void handle(AsyncPlayerChatEvent event) { } private String removeStringContainedBetweenAsterisks(String string) { - String toReturn = ""; - - String stringToRemove = getStringContainedBetweenAstericks(string); + String stringToRemove = getStringContainedBetweenAsterisks(string); if (stringToRemove != null) { - toReturn = string.replace("*" + stringToRemove + "*", ""); - - if (medievalRoleplayEngine.isDebugEnabled()) { System.out.println("String after removal: " + toReturn); } - - return toReturn; + String result = string.replace("*" + stringToRemove + "*", ""); + if (medievalRoleplayEngine.isDebugEnabled()) { System.out.println("String after removal: " + result); } + return result; } else { return string; @@ -80,30 +74,29 @@ private String removeStringContainedBetweenAsterisks(String string) { } - private String getStringContainedBetweenAstericks(String string) { - String toReturn = ""; - - int firstAsterickIndex = -1; + private String getStringContainedBetweenAsterisks(String string) { + int firstAsteriskIndex = -1; for (int i = 0; i < string.length(); i++) { if (string.charAt(i) == '*') { - firstAsterickIndex = i; - if (medievalRoleplayEngine.isDebugEnabled()) { System.out.println("First asterick index: " + i); } + firstAsteriskIndex = i; + if (medievalRoleplayEngine.isDebugEnabled()) { System.out.println("First asterisk index: " + i); } break; } } - int secondAsterickIndex = -1; - for (int i = firstAsterickIndex + 1; i < string.length(); i++) { + int secondAsteriskIndex = -1; + for (int i = firstAsteriskIndex + 1; i < string.length(); i++) { if (string.charAt(i) == '*') { - secondAsterickIndex = i; - if (medievalRoleplayEngine.isDebugEnabled()) { System.out.println("Second asterick index: " + i); } + secondAsteriskIndex = i; + if (medievalRoleplayEngine.isDebugEnabled()) { System.out.println("Second asterisk index: " + i); } break; } } - if (firstAsterickIndex != -1 && secondAsterickIndex != -1) { - if (medievalRoleplayEngine.isDebugEnabled()) { System.out.println("String contained between astericks: " + toReturn); } - return string.substring(firstAsterickIndex + 1, secondAsterickIndex); + if (firstAsteriskIndex != -1 && secondAsteriskIndex != -1) { + String contained = string.substring(firstAsteriskIndex + 1, secondAsteriskIndex); + if (medievalRoleplayEngine.isDebugEnabled()) { System.out.println("String contained between asterisks: " + contained); } + return contained; } else { return null; diff --git a/src/main/java/dansplugins/rpsystem/listeners/InteractionListener.java b/src/main/java/dansplugins/rpsystem/listeners/InteractionListener.java index 410228d..b49b6de 100644 --- a/src/main/java/dansplugins/rpsystem/listeners/InteractionListener.java +++ b/src/main/java/dansplugins/rpsystem/listeners/InteractionListener.java @@ -8,6 +8,8 @@ import org.bukkit.event.player.PlayerInteractAtEntityEvent; public class InteractionListener implements Listener { + private static final int RIGHT_CLICK_COOLDOWN_TICKS = 40; + private final MedievalRoleplayEngine medievalRoleplayEngine; public InteractionListener(MedievalRoleplayEngine medievalRoleplayEngine) { @@ -37,14 +39,13 @@ public void handle(PlayerInteractAtEntityEvent event) { if (player.hasPermission("rp.card.show.others") || player.hasPermission("rp.card.*") || player.hasPermission("rp.default")) { medievalRoleplayEngine.messenger.sendCardInfoToPlayer(card, player); - int seconds = 2; medievalRoleplayEngine.getServer().getScheduler().runTaskLater(medievalRoleplayEngine, new Runnable() { @Override public void run() { medievalRoleplayEngine.ephemeralData.getPlayersWithRightClickCooldown().remove(player.getUniqueId()); } - }, seconds * 20); + }, RIGHT_CLICK_COOLDOWN_TICKS); } } diff --git a/src/main/java/dansplugins/rpsystem/storage/StorageService.java b/src/main/java/dansplugins/rpsystem/storage/StorageService.java index da761aa..0b4e7e8 100644 --- a/src/main/java/dansplugins/rpsystem/storage/StorageService.java +++ b/src/main/java/dansplugins/rpsystem/storage/StorageService.java @@ -7,6 +7,7 @@ import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; +import java.util.Objects; import java.util.Scanner; public class StorageService { @@ -31,9 +32,7 @@ public void saveCardFileNames() { FileWriter saveWriter = new FileWriter(saveFile); - // actual saving takes place here for (CharacterCard card : medievalRoleplayEngine.cardRepository.getCards()) { -// System.out.println("[medievalRoleplayEngine.isDebugEnabled()] Saving card with UUID: " + card.getPlayerUUID()); if (card.getPlayerUUID() != null) { saveWriter.write(card.getPlayerUUID().toString() + ".txt" + "\n"); } @@ -60,21 +59,24 @@ public void loadCards() { File loadFile = new File("./plugins/MedievalRoleplayEngine/" + "cards.txt"); Scanner loadReader = new Scanner(loadFile); - // actual loading while (loadReader.hasNextLine()) { String nextFilename = loadReader.nextLine(); CharacterCard temp = new CharacterCard(medievalRoleplayEngine); temp.load(nextFilename); - // existence check - int index = -1; + if (temp.getPlayerUUID() == null) { + if (medievalRoleplayEngine.isDebugEnabled()) { System.out.println("Skipping card with null UUID from file: " + nextFilename); } + continue; + } + + int existingIndex = -1; for (int i = 0; i < medievalRoleplayEngine.cardRepository.getCards().size(); i++) { - if (medievalRoleplayEngine.cardRepository.getCards().get(i).getPlayerUUID().equals(temp.getPlayerUUID())) { - index = i; + if (Objects.equals(medievalRoleplayEngine.cardRepository.getCards().get(i).getPlayerUUID(), temp.getPlayerUUID())) { + existingIndex = i; } } - if (index != -1) { - medievalRoleplayEngine.cardRepository.getCards().remove(index); + if (existingIndex != -1) { + medievalRoleplayEngine.cardRepository.getCards().remove(existingIndex); } medievalRoleplayEngine.cardRepository.getCards().add(temp); @@ -94,7 +96,6 @@ public void legacyLoadCards() { File loadFile = new File("./plugins/medieval-roleplay-engine/" + "card-player-names.txt"); Scanner loadReader = new Scanner(loadFile); - // actual loading while (loadReader.hasNextLine()) { String nextName = loadReader.nextLine(); CharacterCard temp = new CharacterCard(medievalRoleplayEngine); diff --git a/src/main/java/dansplugins/rpsystem/utils/Messenger.java b/src/main/java/dansplugins/rpsystem/utils/Messenger.java index ad20698..c13a792 100644 --- a/src/main/java/dansplugins/rpsystem/utils/Messenger.java +++ b/src/main/java/dansplugins/rpsystem/utils/Messenger.java @@ -7,7 +7,8 @@ import org.bukkit.Location; import org.bukkit.entity.Player; -import java.util.Objects; +import java.util.UUID; +import java.util.function.Predicate; import static org.bukkit.Bukkit.getServer; @@ -18,102 +19,25 @@ public Messenger(MedievalRoleplayEngine medievalRoleplayEngine) { this.medievalRoleplayEngine = medievalRoleplayEngine; } - public int sendRPMessageToPlayersWithinDistance(Player player, String message, int distance) { - Location playerLocation = player.getLocation(); - - int numPlayersWhoHeard = 0; - - // for every online player - for (Player potentialPlayer : getServer().getOnlinePlayers()) { - - // if in world - if (Objects.equals(potentialPlayer.getLocation().getWorld().getName(), playerLocation.getWorld().getName())) { - - // if within 30 blocks - if (potentialPlayer.getLocation().distance(playerLocation) < distance) { - - // if player has not hidden local chat - if (!medievalRoleplayEngine.ephemeralData.getPlayersWhoHaveHiddenLocalChat().contains(potentialPlayer.getUniqueId())) { - numPlayersWhoHeard++; - potentialPlayer.sendMessage(message); - } - - } - } - } - - if (medievalRoleplayEngine.configService.getBoolean("logChat")) { - logMessageToConsole("RP", player.getDisplayName(), message); - } - - return numPlayersWhoHeard; + public int sendRPMessageToPlayersWithinDistance(Player sender, String message, int distance) { + int recipientCount = deliverMessageToNearbyPlayers(sender, message, distance, false, + uuid -> medievalRoleplayEngine.ephemeralData.getPlayersWhoHaveHiddenLocalChat().contains(uuid)); + logChatIfEnabled("RP", sender.getDisplayName(), message); + return recipientCount; } - public int sendRPMessageToPlayersWithinDistanceExcludingTarget(Player player, String message, int distance) { - Location playerLocation = player.getLocation(); - - int numPlayersWhoHeard = 0; - - // for every online player - for (Player potentialPlayer : getServer().getOnlinePlayers()) { - - // if in world - if (potentialPlayer.getLocation().getWorld().getName() == playerLocation.getWorld().getName()) { - - // if within 30 blocks - if (potentialPlayer.getLocation().distance(playerLocation) < distance) { - - if (!potentialPlayer.getName().equalsIgnoreCase(player.getName())) { - - // if player has not hidden local chat - if (!medievalRoleplayEngine.ephemeralData.getPlayersWhoHaveHiddenLocalChat().contains(potentialPlayer.getUniqueId())) { - numPlayersWhoHeard++; - potentialPlayer.sendMessage(message); - - } - - } - - } - } - } - - if (medievalRoleplayEngine.configService.getBoolean("logChat")) { - logMessageToConsole("RP", player.getDisplayName(), message); - } - - return numPlayersWhoHeard; + public int sendRPMessageToPlayersWithinDistanceExcludingTarget(Player sender, String message, int distance) { + int recipientCount = deliverMessageToNearbyPlayers(sender, message, distance, true, + uuid -> medievalRoleplayEngine.ephemeralData.getPlayersWhoHaveHiddenLocalChat().contains(uuid)); + logChatIfEnabled("RP", sender.getDisplayName(), message); + return recipientCount; } - public int sendOOCMessageToPlayersWithinDistance(Player player, String message, int distance) { - Location playerLocation = player.getLocation(); - - int numPlayersWhoHeard = 0; - - // for every online player - for (Player potentialPlayer : getServer().getOnlinePlayers()) { - - // if in world - if (potentialPlayer.getLocation().getWorld().getName() == playerLocation.getWorld().getName()) { - - // if within 30 blocks - if (potentialPlayer.getLocation().distance(playerLocation) < distance) { - - // if player has not hidden local OOC chat - if (!medievalRoleplayEngine.ephemeralData.getPlayersWhoHaveHiddenLocalOOCChat().contains(potentialPlayer.getUniqueId())) { - numPlayersWhoHeard++; - potentialPlayer.sendMessage(message); - } - - } - } - } - - if (medievalRoleplayEngine.configService.getBoolean("logChat")) { - logMessageToConsole("OOC", player.getDisplayName(), message); - } - - return numPlayersWhoHeard; + public int sendOOCMessageToPlayersWithinDistance(Player sender, String message, int distance) { + int recipientCount = deliverMessageToNearbyPlayers(sender, message, distance, false, + uuid -> medievalRoleplayEngine.ephemeralData.getPlayersWhoHaveHiddenLocalOOCChat().contains(uuid)); + logChatIfEnabled("OOC", sender.getDisplayName(), message); + return recipientCount; } public void sendCardInfoToPlayer(CharacterCard card, Player player) { @@ -126,13 +50,45 @@ public void sendCardInfoToPlayer(CharacterCard card, Player player) { player.sendMessage(medievalRoleplayEngine.colorChecker.getNeutralAlertColor() + "Religion: " + card.getReligion()); } + private int deliverMessageToNearbyPlayers(Player sender, String message, int distance, + boolean excludeSender, Predicate hiddenChatCheck) { + Location senderLocation = sender.getLocation(); + if (senderLocation.getWorld() == null) { + return 0; + } + int recipientCount = 0; + for (Player nearby : getServer().getOnlinePlayers()) { + Location nearbyLocation = nearby.getLocation(); + if (nearbyLocation.getWorld() == null) { + continue; + } + if (!nearbyLocation.getWorld().getName().equals(senderLocation.getWorld().getName())) { + continue; + } + if (nearbyLocation.distance(senderLocation) >= distance) { + continue; + } + if (excludeSender && nearby.getUniqueId().equals(sender.getUniqueId())) { + continue; + } + if (hiddenChatCheck.test(nearby.getUniqueId())) { + continue; + } + recipientCount++; + nearby.sendMessage(message); + } + return recipientCount; + } + /** - * Log a message to the console to allow moderators to see what is being said in chat - * @param chat the type of chat (RP, OOC, etc.) + * Log a message to the console to allow moderators to see what is being said in chat. + * @param chatType the type of chat (RP, OOC, etc.) * @param playerName the name of the player who sent the message * @param message the message that was sent */ - private void logMessageToConsole(String chat, String playerName, String message) { - medievalRoleplayEngine.getLogger().info("[" + chat + "] " + playerName + ": " + message); + private void logChatIfEnabled(String chatType, String playerName, String message) { + if (medievalRoleplayEngine.configService.getBoolean("logChat")) { + medievalRoleplayEngine.getLogger().info("[" + chatType + "] " + playerName + ": " + message); + } } }