Code: 17:10:38 [SEVERE] Error occurred while enabling ServerNotify v1.0 (Is it up to date?) java.util.regex.PatternSyntaxException: Illegal repetition {players} at java.util.regex.Pattern.error(Pattern.java:1713) at java.util.regex.Pattern.closure(Pattern.java:2775) at java.util.regex.Pattern.sequence(Pattern.java:1889) at java.util.regex.Pattern.expr(Pattern.java:1752) at java.util.regex.Pattern.compile(Pattern.java:1460) at java.util.regex.Pattern.<init>(Pattern.java:1133) at java.util.regex.Pattern.compile(Pattern.java:823) at java.lang.String.replaceAll(String.java:2189) at me.gomeow.servernotify.servernotify.onEnable(servernotify.java:39) at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217) at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:374) at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381) at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:270) at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:252) at net.minecraft.server.MinecraftServer.j(MinecraftServer.java:310) at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:289) at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:248) at net.minecraft.server.DedicatedServer.init(DedicatedServer.java:141) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:390) at net.minecraft.server.ThreadServerApplication.run(SourceFile:818) that is the error. The point is for it to replace {players} if found with a list of the players, but I get an error Code:java @Override public void onEnable() { saveDefaultConfig(); final Set<String> messagekeys = this.getConfig().getConfigurationSection("Message").getKeys(false); final ArrayList<String> messages = new ArrayList<String>(); for(String messageline : messagekeys) { messages.add(this.getConfig().getString("Message."+messageline)); } for(String messages2 : messages) { if(messages2.toUpperCase().contains("{PLAYERS}")) { Player[] online = getServer().getOnlinePlayers(); ArrayList<String> names = new ArrayList<String>(); for(Player player : online) { names.add(player.getDisplayName()); } String players = new String(); for(String str : names) { if(!(str == names.get(names.size() - 1))) { players = players + str + ", "; } else { players = players + str; } } String newmessage = messages2.toLowerCase().replaceAll("{players}", players); messages.set(names.indexOf(messages2), newmessage); } } Integer interval = this.getConfig().getInt("Interval"); getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { @Override public void run() { for(String line : messages) { System.out.println(line); } } }, 0L, interval * 20); }
The problem is that { is a reserved character for regex expressions, and used to specifiy the number of repetitions of a character. By using that, the contains thinks you are trying to allow "PLAYERS" number of repetitions (and obviously "PLAYERS" is not an integer. Choose a different pattern matching character for your templated text than {
As long as you change it to something not reserved by regex, then yes. Take a look at http://www.regular-expressions.info/reference.html to confirm the special/reserved characters.