summaryrefslogtreecommitdiffstats
path: root/Essentials/src/net/ess3/utils/Util.java
diff options
context:
space:
mode:
Diffstat (limited to 'Essentials/src/net/ess3/utils/Util.java')
-rw-r--r--Essentials/src/net/ess3/utils/Util.java115
1 files changed, 102 insertions, 13 deletions
diff --git a/Essentials/src/net/ess3/utils/Util.java b/Essentials/src/net/ess3/utils/Util.java
index f00570685..273cd4679 100644
--- a/Essentials/src/net/ess3/utils/Util.java
+++ b/Essentials/src/net/ess3/utils/Util.java
@@ -1,17 +1,19 @@
package net.ess3.utils;
-import static net.ess3.I18n._;
-import net.ess3.api.IEssentials;
-import net.ess3.api.ISettings;
-import net.ess3.api.InvalidNameException;
-import net.ess3.utils.gnu.inet.encoding.Punycode;
-import net.ess3.utils.gnu.inet.encoding.PunycodeException;
+import de.bananaco.bpermissions.imp.Permissions;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Collection;
import java.util.Locale;
import java.util.regex.Pattern;
import lombok.Cleanup;
+import static net.ess3.I18n._;
+import net.ess3.api.IEssentials;
+import net.ess3.api.ISettings;
+import net.ess3.api.IUser;
+import net.ess3.api.InvalidNameException;
+import net.ess3.utils.gnu.inet.encoding.Punycode;
+import net.ess3.utils.gnu.inet.encoding.PunycodeException;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
@@ -173,7 +175,7 @@ public final class Util
public static String formatAsCurrency(final double value)
{
-
+
String str = dFormat.format(value);
if (str.endsWith(".00"))
{
@@ -328,26 +330,113 @@ public final class Util
perm.recalculatePermissibles();
return perm;
}
- 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 URL_PATTERN = Pattern.compile("((?:(?:https?)://)?[\\w-_\\.]{2,})\\.([a-z]{2,3}(?:/\\S+)?)");
+ 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_PATTERN.matcher(input).replaceAll("");
+ }
- return VANILLA_COLOR_PATTERN.matcher(input).replaceAll("");
+ public static String replaceFormat(final String input)
+ {
+ if (input == null)
+ {
+ return null;
+ }
+ return REPLACE_PATTERN.matcher(input).replaceAll("\u00a7$1");
+ }
+
+ public static String blockURL(final String input)
+ {
+ if (input == null)
+ {
+ return null;
+ }
+ String text = URL_PATTERN.matcher(input).replaceAll("$1 $2");
+ while (URL_PATTERN.matcher(text).find())
+ {
+ text = URL_PATTERN.matcher(text).replaceAll("$1 $2");
+ }
+ return text;
+ }
+
+ public static String formatString(final IUser user, final String permBase, final String input)
+ {
+ if (input == null)
+ {
+ return null;
+ }
+ String message;
+ if (Permissions.hasPermission(user.getBase(), permBase + ".color"))
+ {
+ message = Util.replaceColor(input, REPLACE_COLOR_PATTERN);
+ }
+ else
+ {
+ message = Util.stripColor(input, VANILLA_COLOR_PATTERN);
+ }
+ if (Permissions.hasPermission(user.getBase(), permBase + ".magic"))
+ {
+ message = Util.replaceColor(message, REPLACE_MAGIC_PATTERN);
+ }
+ else
+ {
+ message = Util.stripColor(message, VANILLA_MAGIC_PATTERN);
+ }
+ if (Permissions.hasPermission(user.getBase(), permBase + ".format"))
+ {
+ message = Util.replaceColor(message, REPLACE_FORMAT_PATTERN);
+ }
+ else
+ {
+ message = Util.stripColor(message, VANILLA_FORMAT_PATTERN);
+ }
+ return message;
}
- public static String replaceColor(final String input)
+ public static String formatMessage(final IUser user, final String permBase, final String input)
{
if (input == null)
{
return null;
}
+ String message = formatString(user, permBase, input);
+ if (!Permissions.hasPermission(user.getBase(), permBase + ".url"))
+ {
+ message = Util.blockURL(message);
+ }
+ return message;
+ }
+
+ public static String stripColor(final String input)
+ {
+ if (input == null)
+ {
+ return null;
+ }
+
+ return VANILLA_COLOR_PATTERN.matcher(input).replaceAll("");
+ }
- return EASY_COLOR_PATTERN.matcher(input).replaceAll("\u00a7$1");
+ 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");
}
}