Split colour permissions into 3: color/magic/format

This commit is contained in:
KHobbits 2012-03-22 22:07:13 +00:00
parent cd0d37f73c
commit 0dc1270aed
17 changed files with 93 additions and 61 deletions

View File

@ -327,7 +327,7 @@ public class Settings implements ISettings
{
String format = config.getString("chat.group-formats." + (group == null ? "Default" : group),
config.getString("chat.format", "&7[{GROUP}]&f {DISPLAYNAME}&7:&f {MESSAGE}"));
format = Util.replaceColor(format);
format = Util.replaceFormat(format);
format = format.replace("{DISPLAYNAME}", "%1$s");
format = format.replace("{GROUP}", "{0}");
format = format.replace("{MESSAGE}", "%2$s");
@ -349,7 +349,7 @@ public class Settings implements ISettings
@Override
public IText getAnnounceNewPlayerFormat()
{
return new SimpleTextInput(Util.replaceColor(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!")));
return new SimpleTextInput(Util.replaceFormat(config.getString("newbies.announce-format", "&dWelcome {DISPLAYNAME} to the server!")));
}
@Override

View File

@ -194,7 +194,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
@Override
public int compareTo(final User other)
{
return Util.stripColor(this.getDisplayName()).compareToIgnoreCase(Util.stripColor(other.getDisplayName()));
return Util.stripFormat(this.getDisplayName()).compareToIgnoreCase(Util.stripFormat(other.getDisplayName()));
}
@Override
@ -326,7 +326,7 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser
}
if (name.length() > 16)
{
name = Util.stripColor(name);
name = Util.stripFormat(name);
}
try
{

View File

@ -495,26 +495,83 @@ public class Util
}
return buf.toString();
}
private static transient final Pattern VANILLA_COLOR_PATTERN = Pattern.compile("\u00A7+[0-9A-FKa-fk]");
private static transient final Pattern EASY_COLOR_PATTERN = Pattern.compile("&([0-9a-fk])");
private static transient final Pattern VANILLA_PATTERN = Pattern.compile("\u00A7+[0-9A-FK-ORa-fk-or]");
private static transient final Pattern REPLACE_PATTERN = Pattern.compile("&([0-9a-fk-or])");
private static transient final Pattern VANILLA_COLOR_PATTERN = Pattern.compile("\u00A7+[0-9A-Fa-f]");
private static transient final Pattern VANILLA_MAGIC_PATTERN = Pattern.compile("\u00A7+[Kk]");
private static transient final Pattern VANILLA_FORMAT_PATTERN = Pattern.compile("\u00A7+[L-ORl-or]");
private static transient final Pattern REPLACE_COLOR_PATTERN = Pattern.compile("&([0-9a-f])");
private static transient final Pattern REPLACE_MAGIC_PATTERN = Pattern.compile("&(k)");
private static transient final Pattern REPLACE_FORMAT_PATTERN = Pattern.compile("&([l-or])");
public static String stripColor(final String input)
public static String stripFormat(final String input)
{
if (input == null)
{
return null;
}
return VANILLA_COLOR_PATTERN.matcher(input).replaceAll("");
return VANILLA_PATTERN.matcher(input).replaceAll("");
}
public static String replaceColor(final String input)
public static String replaceFormat(final String input)
{
if (input == null)
{
return null;
}
return REPLACE_PATTERN.matcher(input).replaceAll("");
}
return EASY_COLOR_PATTERN.matcher(input).replaceAll("\u00a7$1");
public static String blockURL(final String input)
{
if (input == null)
{
return null;
}
return input.replace(".", ". ").replace(". ", ". ");
}
public static String formatString(final IUser user, final String permBase, final String input)
{
if (input == null)
{
return null;
}
String message;
if (user.isAuthorized(permBase + ".color"))
{
message = Util.replaceColor(input, REPLACE_COLOR_PATTERN);
}
else
{
message = Util.stripColor(input, VANILLA_COLOR_PATTERN);
}
if (user.isAuthorized(permBase + ".magic"))
{
message = Util.replaceColor(message, REPLACE_MAGIC_PATTERN);
}
else
{
message = Util.stripColor(message, VANILLA_MAGIC_PATTERN);
}
if (user.isAuthorized(permBase + ".format"))
{
message = Util.replaceColor(message, REPLACE_FORMAT_PATTERN);
}
else
{
message = Util.stripColor(message, VANILLA_FORMAT_PATTERN);
}
return message;
}
private static String stripColor(final String input, final Pattern pattern)
{
return pattern.matcher(input).replaceAll("");
}
private static String replaceColor(final String input, final Pattern pattern)
{
return pattern.matcher(input).replaceAll("\u00a7$1");
}
}

View File

@ -85,6 +85,7 @@ public class Commandgive extends EssentialsCommand
throw new Exception(_("cantSpawnItem", "Air"));
}
//TODO: TL this.
final String itemName = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace('_', ' ');
sender.sendMessage(ChatColor.BLUE + "Giving " + stack.getAmount() + " of " + itemName + " to " + giveTo.getDisplayName() + ".");
if (giveTo.isAuthorized("essentials.oversizedstacks"))

View File

@ -23,7 +23,7 @@ public class Commandhelpop extends EssentialsCommand
throw new NotEnoughArgumentsException();
}
user.setDisplayNick();
final String message = _("helpOp", user.getDisplayName(), Util.stripColor(getFinalArg(args, 0)));
final String message = _("helpOp", user.getDisplayName(), Util.stripFormat(getFinalArg(args, 0)));
logger.log(Level.INFO, message);
for (Player onlinePlayer : server.getOnlinePlayers())
{

View File

@ -75,7 +75,7 @@ public class Commandlist extends EssentialsCommand
for (String group : groups)
{
final StringBuilder groupString = new StringBuilder();
groupString.append(_("listGroupTag", Util.replaceColor(group)));
groupString.append(_("listGroupTag", Util.replaceFormat(group)));
final List<User> users = sort.get(group);
Collections.sort(users);
boolean first = true;

View File

@ -59,7 +59,7 @@ public class Commandmail extends EssentialsCommand
}
if (!u.isIgnoredPlayer(user.getName()))
{
final String mail = Util.sanitizeString(Util.stripColor(getFinalArg(args, 2)));
final String mail = Util.sanitizeString(Util.stripFormat(getFinalArg(args, 2)));
u.addMail(user.getName() + ": " + mail);
}
user.sendMessage(_("mailSent"));
@ -71,7 +71,7 @@ public class Commandmail extends EssentialsCommand
{
throw new Exception(_("noPerm", "essentials.mail.sendall"));
}
ess.scheduleAsyncDelayedTask(new SendAll(user.getName() + ": " + Util.stripColor(getFinalArg(args, 1))));
ess.scheduleAsyncDelayedTask(new SendAll(user.getName() + ": " + Util.stripFormat(getFinalArg(args, 1))));
user.sendMessage(_("mailSent"));
return;
}

View File

@ -27,14 +27,7 @@ public class Commandme extends EssentialsCommand
}
String message = getFinalArg(args, 0);
if (user.isAuthorized("essentials.chat.color"))
{
message = Util.replaceColor(message);
}
else
{
message = Util.stripColor(message);
}
message = Util.formatString(user, "essentials.chat", message);
user.setDisplayNick();
ess.broadcastMessage(user, _("action", user.getDisplayName(), message));

View File

@ -34,18 +34,11 @@ public class Commandmsg extends EssentialsCommand
{
throw new Exception(_("voiceSilenced"));
}
if (user.isAuthorized("essentials.msg.color"))
{
message = Util.replaceColor(message);
}
else
{
message = Util.stripColor(message);
}
message = Util.formatString(user, "essentials.msg", message);
}
else
{
message = Util.replaceColor(message);
message = Util.replaceFormat(message);
}
final String translatedMe = _("me");

View File

@ -64,11 +64,13 @@ public class Commandnick extends EssentialsCommand
private String formatNickname(final User user, final String nick)
{
if (user == null || user.isAuthorized("essentials.nick.color"))
if (user == null)
{
return nick.replace('&', '\u00a7').replaceAll("\u00a7+k", "");
} else {
return Util.stripColor(nick);
return Util.replaceFormat(nick);
}
else
{
return Util.formatString(user, "essentials.nick", nick);
}
}

View File

@ -23,7 +23,7 @@ public class Commandping extends EssentialsCommand
}
else
{
sender.sendMessage(Util.replaceColor(getFinalArg(args, 0)));
sender.sendMessage(Util.replaceFormat(getFinalArg(args, 0)));
}
}
}

View File

@ -32,20 +32,13 @@ public class Commandr extends EssentialsCommand
if (sender instanceof Player)
{
User user = ess.getUser(sender);
if (user.isAuthorized("essentials.msg.color"))
{
message = Util.replaceColor(message);
}
else
{
message = Util.stripColor(message);
}
message = Util.formatString(user, "essentials.msg", message);
replyTo = user;
senderName = user.getDisplayName();
}
else
{
message = Util.replaceColor(message);
message = Util.replaceFormat(message);
replyTo = Console.getConsoleReplyTo();
senderName = Console.NAME;
}

View File

@ -32,9 +32,9 @@ public class Commandrealname extends EssentialsCommand
continue;
}
u.setDisplayNick();
final String displayName = Util.stripColor(u.getDisplayName()).toLowerCase(Locale.ENGLISH);
final String displayName = Util.stripFormat(u.getDisplayName()).toLowerCase(Locale.ENGLISH);
if (!whois.equals(displayName)
&& !displayName.equals(Util.stripColor(ess.getSettings().getNicknamePrefix()) + whois)
&& !displayName.equals(Util.stripFormat(ess.getSettings().getNicknamePrefix()) + whois)
&& !whois.equalsIgnoreCase(u.getName()))
{
continue;

View File

@ -37,7 +37,7 @@ public class Commandwhois extends EssentialsCommand
showhidden = true;
}
final String whois = args[0].toLowerCase(Locale.ENGLISH);
final int prefixLength = Util.stripColor(ess.getSettings().getNicknamePrefix()).length();
final int prefixLength = Util.stripFormat(ess.getSettings().getNicknamePrefix()).length();
for (Player onlinePlayer : server.getOnlinePlayers())
{
final User user = ess.getUser(onlinePlayer);
@ -45,7 +45,7 @@ public class Commandwhois extends EssentialsCommand
{
continue;
}
final String nickName = Util.stripColor(user.getNickname());
final String nickName = Util.stripFormat(user.getNickname());
if (!whois.equalsIgnoreCase(nickName)
&& !whois.substring(prefixLength).equalsIgnoreCase(nickName)
&& !whois.equalsIgnoreCase(user.getName()))

View File

@ -88,14 +88,14 @@ public class SignBlockListener implements Listener
{
for (int i = 0; i < 4; i++)
{
event.setLine(i, Util.replaceColor(event.getLine(i)));
event.setLine(i, Util.replaceFormat(event.getLine(i)));
}
}
else
{
for (int i = 0; i < 4; i++)
{
event.setLine(i, Util.stripColor(event.getLine(i)));
event.setLine(i, Util.stripFormat(event.getLine(i)));
}
}

View File

@ -147,7 +147,7 @@ public class SignProtection extends EssentialsSign
{
return SignProtectionState.OWNER;
}
if (Util.stripColor(sign.getLine(3)).equalsIgnoreCase(username))
if (Util.stripFormat(sign.getLine(3)).equalsIgnoreCase(username))
{
return SignProtectionState.OWNER;
}

View File

@ -37,14 +37,7 @@ public class EssentialsChatPlayerListenerLowest extends EssentialsChatPlayer
/**
* This listener should apply the general chat formatting only...then return control back the event handler
*/
if (user.isAuthorized("essentials.chat.color"))
{
event.setMessage(Util.replaceColor(event.getMessage()));
}
else
{
event.setMessage(Util.stripColor(event.getMessage()));
}
event.setMessage(Util.formatString(user, "essentials.chat", event.getMessage()));
String group = user.getGroup();
String world = user.getWorld().getName();
event.setFormat(ess.getSettings().getChatFormat(group).format(new Object[] {group, world, world.substring(0, 1).toUpperCase(Locale.ENGLISH)}));