From b49494d55905d76f08443fbc487a1af712973b0b Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Mon, 12 Dec 2011 22:32:06 +0100 Subject: [PATCH] Text wrapping improvements etc. --- src/com/massivecraft/mcore1/MCore.java | 2 + src/com/massivecraft/mcore1/MPlugin.java | 2 +- .../massivecraft/mcore1/persist/Persist.java | 2 +- src/com/massivecraft/mcore1/text/Txt.java | 73 ++++++++++++++++--- 4 files changed, 65 insertions(+), 14 deletions(-) diff --git a/src/com/massivecraft/mcore1/MCore.java b/src/com/massivecraft/mcore1/MCore.java index 64d83aa3..fd58a0ec 100644 --- a/src/com/massivecraft/mcore1/MCore.java +++ b/src/com/massivecraft/mcore1/MCore.java @@ -70,6 +70,7 @@ public class MCore extends JavaPlugin // -------------------------------------------- // // TXT // -------------------------------------------- // + public static Txt txt = new Txt(); private static Map txtInstances = new HashMap(); public static Map getTxtInstances() { return txtInstances; } public static Txt getTxt(Object owner) { return txtInstances.get(owner); } @@ -83,6 +84,7 @@ public class MCore extends JavaPlugin // -------------------------------------------- // // PERM // -------------------------------------------- // + public static Perm perm = new Perm(txt); private static Map permInstances = new HashMap(); public static Map getPermInstances() { return permInstances; } public static Perm getPerm(Object owner) { return permInstances.get(owner); } diff --git a/src/com/massivecraft/mcore1/MPlugin.java b/src/com/massivecraft/mcore1/MPlugin.java index 8244ebff..564cad18 100644 --- a/src/com/massivecraft/mcore1/MPlugin.java +++ b/src/com/massivecraft/mcore1/MPlugin.java @@ -129,6 +129,6 @@ public abstract class MPlugin extends JavaPlugin } public void log(Level level, Object... msg) { - Logger.getLogger("Minecraft").log(level, this.logPrefix+txt.implode(msg, " ")); + Logger.getLogger("Minecraft").log(level, this.logPrefix + MCore.txt.implode(msg, " ")); } } diff --git a/src/com/massivecraft/mcore1/persist/Persist.java b/src/com/massivecraft/mcore1/persist/Persist.java index b7a58585..48d677d5 100644 --- a/src/com/massivecraft/mcore1/persist/Persist.java +++ b/src/com/massivecraft/mcore1/persist/Persist.java @@ -159,7 +159,7 @@ public class Persist } // Clean args - if (fromIndex < 0) + if (fromIndex <= 0) { fromIndex = 0; } diff --git a/src/com/massivecraft/mcore1/text/Txt.java b/src/com/massivecraft/mcore1/text/Txt.java index 0c672ce4..e3d7d45f 100644 --- a/src/com/massivecraft/mcore1/text/Txt.java +++ b/src/com/massivecraft/mcore1/text/Txt.java @@ -46,14 +46,19 @@ public class Txt // Top-level parsing functions. // -------------------------------------------- // - public String parse(String str, Object... args) + public String parse(String string, Object... args) { - return String.format(this.parse(str), args); + return String.format(this.parse(string), args); } - public String parse(String str) + public String parse(String string) { - return this.parseTags(parseColor(str)); + return this.parseTags(parseColor(string)); + } + + public ArrayList parse(Collection strings) + { + return this.parseTags(parseColor(strings)); } // -------------------------------------------- // @@ -61,10 +66,10 @@ public class Txt // -------------------------------------------- // public static final transient Pattern patternTag = Pattern.compile("<([a-zA-Z0-9_]*)>"); - public String replaceTags(String str, Map tags) + public String replaceTags(String string, Map tags) { StringBuffer ret = new StringBuffer(); - Matcher matcher = patternTag.matcher(str); + Matcher matcher = patternTag.matcher(string); while (matcher.find()) { String tag = matcher.group(1); @@ -82,9 +87,19 @@ public class Txt return ret.toString(); } - public String parseTags(String str) + public String parseTags(String string) { - return replaceTags(str, this.getDesign().getTags()); + return replaceTags(string, this.getDesign().getTags()); + } + + public ArrayList parseTags(Collection strings) + { + ArrayList ret = new ArrayList(strings.size()); + for (String string : strings) + { + ret.add(this.parseTags(string)); + } + return ret; } // -------------------------------------------- // @@ -99,6 +114,16 @@ public class Txt return string; } + public ArrayList parseColor(Collection strings) + { + ArrayList ret = new ArrayList(strings.size()); + for (String string : strings) + { + ret.add(this.parseColor(string)); + } + return ret; + } + public String parseColorAmp(String string) { string = string.replaceAll("(ยง([a-z0-9]))", "\u00A7$2"); @@ -150,10 +175,10 @@ public class Txt return string.substring(0, 1).toUpperCase()+string.substring(1); } - public String repeat(String s, int times) + public String repeat(String string, int times) { if (times <= 0) return ""; - else return s + repeat(s, times-1); + else return string + repeat(string, times-1); } public String implode(List list, String glue) @@ -363,8 +388,32 @@ public class Txt // -------------------------------------------- // // Wrapping the Craftbukkit TextWrapper // -------------------------------------------- // - public ArrayList wrap(final String text) + public ArrayList wrap(final String string) { - return new ArrayList(Arrays.asList(TextWrapper.wrapText(text))); + return new ArrayList(Arrays.asList(TextWrapper.wrapText(string))); + } + + public ArrayList wrap(final Collection strings) + { + ArrayList ret = new ArrayList(); + for (String line : strings) + { + ret.addAll(this.wrap(line)); + } + return ret; + } + + // -------------------------------------------- // + // Parse and Wrap combo + // -------------------------------------------- // + + public ArrayList parseWrap(final String string) + { + return this.wrap(this.parse(string)); + } + + public ArrayList parseWrap(final Collection strings) + { + return this.wrap(this.parse(strings)); } }