From de57060819b7dffb5a5a70d893a8b4bf29098d3b Mon Sep 17 00:00:00 2001 From: drtshock Date: Mon, 25 May 2015 15:46:18 -0500 Subject: [PATCH] Revert "Remove Fanciful, fix compilation (part 1/2)" This reverts commit fc1d08e5078c40ca36a159cb9d0edd4d67241cbc. We have users on builds before this was included in Spigot. We don't want to break those servers. --- pom.xml | 14 ++ .../factions/cmd/CmdDeinvite.java | 17 +-- .../massivecraft/factions/cmd/CmdFWarp.java | 18 +-- .../massivecraft/factions/cmd/CmdInvite.java | 11 +- .../massivecraft/factions/cmd/CmdKick.java | 23 +--- .../com/massivecraft/factions/cmd/CmdMod.java | 17 +-- .../massivecraft/factions/cmd/CmdShow.java | 10 +- .../factions/cmd/CmdShowInvites.java | 17 +-- .../massivecraft/factions/zcore/MCommand.java | 11 ++ .../factions/zcore/util/TagUtil.java | 120 ++++++------------ .../factions/zcore/util/TextUtil.java | 44 +++++-- 11 files changed, 132 insertions(+), 170 deletions(-) diff --git a/pom.xml b/pom.xml index 47fede64..8cf9b454 100644 --- a/pom.xml +++ b/pom.xml @@ -44,10 +44,15 @@ false + mkremins:fanciful com.google.code.gson:gson + + mkremins.fanciful + com.massivecraft.factions.shade.mkremins.fanciful + com.google.gson com.massivecraft.factions.shade.com.google.gson @@ -98,6 +103,11 @@ EssentialsXChat 2.0.1-SNAPSHOT + + mkremins + fanciful + 0.3.2-SNAPSHOT + org.dynmap dynmap @@ -138,5 +148,9 @@ repo.mikeprimm.com http://repo.mikeprimm.com/ + + franga2000-repo + http://repo.franga2000.com/artifactory/public + diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdDeinvite.java b/src/main/java/com/massivecraft/factions/cmd/CmdDeinvite.java index 82ec6348..2300034e 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdDeinvite.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdDeinvite.java @@ -5,10 +5,8 @@ import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayers; import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.zcore.util.TL; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; +import mkremins.fanciful.FancyMessage; +import org.bukkit.ChatColor; public class CmdDeinvite extends FCommand { @@ -33,18 +31,13 @@ public class CmdDeinvite extends FCommand { public void perform() { FPlayer you = this.argAsBestFPlayerMatch(0); if (you == null) { - TextComponent component = new TextComponent(TL.COMMAND_DEINVITE_CANDEINVITE.toString()); - component.setColor(net.md_5.bungee.api.ChatColor.GOLD); + FancyMessage msg = new FancyMessage(TL.COMMAND_DEINVITE_CANDEINVITE.toString()).color(ChatColor.GOLD); for (String id : myFaction.getInvites()) { FPlayer fp = FPlayers.getInstance().getById(id); String name = fp != null ? fp.getName() : id; - TextComponent then = new TextComponent(name + " "); - then.setColor(net.md_5.bungee.api.ChatColor.WHITE); - then.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[]{new TextComponent(TL.COMMAND_DEINVITE_CLICKTODEINVITE.format(name))})); - then.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, Conf.baseCommandAliases.get(0) + " deinvite " + name)); - component.addExtra(then); + msg.then(name + " ").color(ChatColor.WHITE).tooltip(TL.COMMAND_DEINVITE_CLICKTODEINVITE.format(name)).command(Conf.baseCommandAliases.get(0) + " deinvite " + name); } - fme.getPlayer().spigot().sendMessage(component); + sendFancyMessage(msg); return; } diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdFWarp.java b/src/main/java/com/massivecraft/factions/cmd/CmdFWarp.java index 989aab74..c81acfe1 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdFWarp.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdFWarp.java @@ -5,12 +5,9 @@ import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.P; import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.util.LazyLocation; -import com.massivecraft.factions.util.WarmUpUtil; import com.massivecraft.factions.zcore.util.TL; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; +import mkremins.fanciful.FancyMessage; +import org.bukkit.ChatColor; import java.util.Map; @@ -31,17 +28,12 @@ public class CmdFWarp extends FCommand { public void perform() { //TODO: check if in combat. if (args.size() == 0) { - TextComponent component = new TextComponent(TL.COMMAND_FWARP_WARPS.toString()); - component.setColor(net.md_5.bungee.api.ChatColor.GOLD); + FancyMessage msg = new FancyMessage(TL.COMMAND_FWARP_WARPS.toString()).color(ChatColor.GOLD); Map warps = myFaction.getWarps(); for (String s : warps.keySet()) { - TextComponent then = new TextComponent(s + " "); - then.setColor(net.md_5.bungee.api.ChatColor.WHITE); - then.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[]{new TextComponent(TL.COMMAND_FWARP_CLICKTOWARP.toString())})); - then.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, Conf.baseCommandAliases.get(0) + " warp " + s)); - component.addExtra(then); + msg.then(s + " ").tooltip(TL.COMMAND_FWARP_CLICKTOWARP.toString()).command(Conf.baseCommandAliases.get(0) + " warp " + s).color(ChatColor.WHITE); } - fme.getPlayer().spigot().sendMessage(component); + sendFancyMessage(msg); } else if (args.size() > 1) { fme.msg(TL.COMMAND_FWARP_COMMANDFORMAT); } else { diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdInvite.java b/src/main/java/com/massivecraft/factions/cmd/CmdInvite.java index 92597dd8..05eeac4c 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdInvite.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdInvite.java @@ -4,7 +4,8 @@ import com.massivecraft.factions.Conf; import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.zcore.util.TL; -import net.md_5.bungee.api.chat.*; +import mkremins.fanciful.FancyMessage; +import org.bukkit.ChatColor; public class CmdInvite extends FCommand { @@ -49,13 +50,9 @@ public class CmdInvite extends FCommand { } // Tooltips, colors, and commands only apply to the string immediately before it. - TextComponent component = new TextComponent(fme.describeTo(you, true)); - component.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[]{new TextComponent(TL.COMMAND_INVITE_CLICKTOJOIN.toString())})); - component.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, Conf.baseCommandAliases.get(0) + " join " + myFaction.getTag())); - component.addExtra(new ComponentBuilder(TL.COMMAND_INVITE_INVITEDYOU.toString()).color(net.md_5.bungee.api.ChatColor.YELLOW).create()[0]); - component.addExtra(new ComponentBuilder(myFaction.describeTo(you)).color(net.md_5.bungee.api.ChatColor.YELLOW).create()[0]); + FancyMessage message = new FancyMessage(fme.describeTo(you, true)).tooltip(TL.COMMAND_INVITE_CLICKTOJOIN.toString()).command(Conf.baseCommandAliases.get(0) + " join " + myFaction.getTag()).then(TL.COMMAND_INVITE_INVITEDYOU.toString()).color(ChatColor.YELLOW).tooltip(TL.COMMAND_INVITE_CLICKTOJOIN.toString()).command(Conf.baseCommandAliases.get(0) + " join " + myFaction.getTag()).then(myFaction.describeTo(you)).tooltip(TL.COMMAND_INVITE_CLICKTOJOIN.toString()).command(Conf.baseCommandAliases.get(0) + " join " + myFaction.getTag()); - you.getPlayer().spigot().sendMessage(component); + message.send(you.getPlayer()); //you.msg("%s invited you to %s", fme.describeTo(you, true), myFaction.describeTo(you)); myFaction.msg(TL.COMMAND_INVITE_INVITED, fme.describeTo(myFaction, true), you.describeTo(myFaction)); diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdKick.java b/src/main/java/com/massivecraft/factions/cmd/CmdKick.java index a483739f..49d4591e 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdKick.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdKick.java @@ -8,11 +8,9 @@ import com.massivecraft.factions.event.FPlayerLeaveEvent; import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.zcore.util.TL; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; +import mkremins.fanciful.FancyMessage; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; public class CmdKick extends FCommand { @@ -36,28 +34,19 @@ public class CmdKick extends FCommand { public void perform() { FPlayer toKick = this.argIsSet(0) ? this.argAsBestFPlayerMatch(0) : null; if (toKick == null) { - TextComponent component = new TextComponent(TL.COMMAND_KICK_CANDIDATES.toString()); - component.setColor(net.md_5.bungee.api.ChatColor.GOLD); + FancyMessage msg = new FancyMessage(TL.COMMAND_KICK_CANDIDATES.toString()).color(ChatColor.GOLD); for (FPlayer player : myFaction.getFPlayersWhereRole(Role.NORMAL)) { String s = player.getName(); - TextComponent then = new TextComponent(s + " "); - then.setColor(net.md_5.bungee.api.ChatColor.WHITE); - then.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[]{new TextComponent(TL.COMMAND_KICK_CLICKTOKICK.toString() + s)})); - then.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, Conf.baseCommandAliases.get(0) + " kick " + s)); - component.addExtra(then); + msg.then(s + " ").color(ChatColor.WHITE).tooltip(TL.COMMAND_KICK_CLICKTOKICK.toString() + s).command(Conf.baseCommandAliases.get(0) + " kick " + s); } if (fme.getRole() == Role.ADMIN) { for (FPlayer player : myFaction.getFPlayersWhereRole(Role.MODERATOR)) { String s = player.getName(); - TextComponent then = new TextComponent(s + " "); - then.setColor(net.md_5.bungee.api.ChatColor.GRAY); - then.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[]{new TextComponent(TL.COMMAND_KICK_CLICKTOKICK.toString() + s)})); - then.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, Conf.baseCommandAliases.get(0) + " kick " + s)); - component.addExtra(then); + msg.then(s + " ").color(ChatColor.GRAY).tooltip(TL.COMMAND_KICK_CLICKTOKICK.toString() + s).command(Conf.baseCommandAliases.get(0) + " kick " + s); } } - fme.getPlayer().spigot().sendMessage(component); + sendFancyMessage(msg); return; } diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdMod.java b/src/main/java/com/massivecraft/factions/cmd/CmdMod.java index fd8fd62c..d0f77643 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdMod.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdMod.java @@ -6,10 +6,8 @@ import com.massivecraft.factions.Faction; import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Role; import com.massivecraft.factions.zcore.util.TL; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; +import mkremins.fanciful.FancyMessage; +import org.bukkit.ChatColor; public class CmdMod extends FCommand { @@ -33,18 +31,13 @@ public class CmdMod extends FCommand { public void perform() { FPlayer you = this.argAsBestFPlayerMatch(0); if (you == null) { - TextComponent component = new TextComponent(TL.COMMAND_MOD_CANDIDATES.toString()); - component.setColor(net.md_5.bungee.api.ChatColor.GOLD); + FancyMessage msg = new FancyMessage(TL.COMMAND_MOD_CANDIDATES.toString()).color(ChatColor.GOLD); for (FPlayer player : myFaction.getFPlayersWhereRole(Role.NORMAL)) { String s = player.getName(); - TextComponent then = new TextComponent(s + " "); - then.setColor(net.md_5.bungee.api.ChatColor.WHITE); - then.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[]{new TextComponent(TL.COMMAND_MOD_CLICKTOPROMOTE.toString() + s)})); - then.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, Conf.baseCommandAliases.get(0) + " mod " + s)); - component.addExtra(then); + msg.then(s + " ").color(ChatColor.WHITE).tooltip(TL.COMMAND_MOD_CLICKTOPROMOTE.toString() + s).command(Conf.baseCommandAliases.get(0) + " mod " + s); } - fme.getPlayer().spigot().sendMessage(component); + sendFancyMessage(msg); return; } diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdShow.java b/src/main/java/com/massivecraft/factions/cmd/CmdShow.java index 14f8be30..084841bc 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdShow.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdShow.java @@ -7,7 +7,7 @@ import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TagReplacer; import com.massivecraft.factions.zcore.util.TagUtil; -import net.md_5.bungee.api.chat.BaseComponent; +import mkremins.fanciful.FancyMessage; import java.util.ArrayList; import java.util.List; @@ -79,10 +79,10 @@ public class CmdShow extends FCommand { for (String raw : show) { String parsed = TagUtil.parsePlain(faction, fme, raw); // use relations - if (TagUtil.hasComponent(parsed)) { - List components = TagUtil.parseComponent(faction, fme, parsed); - if (components != null) { - fme.getPlayer().spigot().sendMessage(components.toArray(new BaseComponent[components.size()])); + if (TagUtil.hasFancy(parsed)) { + List fancy = TagUtil.parseFancy(faction, fme, parsed); + if (fancy != null) { + sendFancyMessage(fancy); } continue; } diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdShowInvites.java b/src/main/java/com/massivecraft/factions/cmd/CmdShowInvites.java index 8022bcf1..ddc0bd1c 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdShowInvites.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdShowInvites.java @@ -5,10 +5,8 @@ import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayers; import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.zcore.util.TL; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.ClickEvent; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; +import mkremins.fanciful.FancyMessage; +import org.bukkit.ChatColor; public class CmdShowInvites extends FCommand { @@ -23,19 +21,14 @@ public class CmdShowInvites extends FCommand { @Override public void perform() { - TextComponent component = new TextComponent(TL.COMMAND_SHOWINVITES_PENDING.toString()); - component.setColor(net.md_5.bungee.api.ChatColor.GOLD); + FancyMessage msg = new FancyMessage(TL.COMMAND_SHOWINVITES_PENDING.toString()).color(ChatColor.GOLD); for (String id : myFaction.getInvites()) { FPlayer fp = FPlayers.getInstance().getById(id); String name = fp != null ? fp.getName() : id; - TextComponent then = new TextComponent(name + " "); - then.setColor(net.md_5.bungee.api.ChatColor.WHITE); - then.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[]{new TextComponent(TL.COMMAND_SHOWINVITES_CLICKTOREVOKE.format(name))})); - then.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, Conf.baseCommandAliases.get(0) + " deinvite " + name)); - component.addExtra(then); + msg.then(name + " ").color(ChatColor.WHITE).tooltip(TL.COMMAND_SHOWINVITES_CLICKTOREVOKE.format(name)).command(Conf.baseCommandAliases.get(0) + " deinvite " + name); } - fme.getPlayer().spigot().sendMessage(component); + sendFancyMessage(msg); } @Override diff --git a/src/main/java/com/massivecraft/factions/zcore/MCommand.java b/src/main/java/com/massivecraft/factions/zcore/MCommand.java index 00b2653d..c6900bb0 100644 --- a/src/main/java/com/massivecraft/factions/zcore/MCommand.java +++ b/src/main/java/com/massivecraft/factions/zcore/MCommand.java @@ -6,6 +6,7 @@ import com.massivecraft.factions.P; import com.massivecraft.factions.integration.Econ; import com.massivecraft.factions.zcore.util.TL; import com.massivecraft.factions.zcore.util.TextUtil; +import mkremins.fanciful.FancyMessage; import org.apache.commons.lang.time.DurationFormatUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -268,6 +269,16 @@ public abstract class MCommand { } } + public void sendFancyMessage(FancyMessage message) { + message.send(sender); + } + + public void sendFancyMessage(List messages) { + for (FancyMessage m : messages) { + sendFancyMessage(m); + } + } + public List getToolTips(FPlayer player) { List lines = new ArrayList(); for (String s : p.getConfig().getStringList("tooltips.show")) { diff --git a/src/main/java/com/massivecraft/factions/zcore/util/TagUtil.java b/src/main/java/com/massivecraft/factions/zcore/util/TagUtil.java index 2c438f7c..c0d30c1d 100644 --- a/src/main/java/com/massivecraft/factions/zcore/util/TagUtil.java +++ b/src/main/java/com/massivecraft/factions/zcore/util/TagUtil.java @@ -6,9 +6,7 @@ import com.massivecraft.factions.Faction; import com.massivecraft.factions.Factions; import com.massivecraft.factions.P; import com.massivecraft.factions.util.MiscUtil; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.HoverEvent; -import net.md_5.bungee.api.chat.TextComponent; +import mkremins.fanciful.FancyMessage; import org.bukkit.ChatColor; import java.util.ArrayList; @@ -76,34 +74,33 @@ public class TagUtil { return line; } - /** - * Scan a line and parse the component variable into a component list + * Scan a line and parse the fancy variable into a fancy list * * @param faction for faction (viewers faction) * @param fme for player (viewer) - * @param line component prefix + * @param line fancy message prefix * * @return */ - public static List parseComponent(Faction faction, FPlayer fme, String line) { + public static List parseFancy(Faction faction, FPlayer fme, String line) { for (TagReplacer tagReplacer : TagReplacer.getByType(TagType.FANCY)) { if (tagReplacer.contains(line)) { String clean = line.replace(tagReplacer.getTag(), ""); // remove tag - return getComponent(faction, fme, tagReplacer, clean); + return getFancy(faction, fme, tagReplacer, clean); } } return null; } /** - * Checks if a line has component variables + * Checks if a line has fancy variables * * @param line raw line from config with variables * * @return if the line has fancy variables */ - public static boolean hasComponent(String line) { + public static boolean hasFancy(String line) { for (TagReplacer tagReplacer : TagReplacer.getByType(TagType.FANCY)) { if (tagReplacer.contains(line)) { return true; @@ -112,9 +109,8 @@ public class TagUtil { return false; } - /** - * Lets get components? + * Lets get fancy. * * @param target Faction to get relate from * @param fme Player to relate to @@ -122,11 +118,11 @@ public class TagUtil { * * @return list of fancy messages to send */ - protected static List getComponent(Faction target, FPlayer fme, TagReplacer type, String prefix) { - List components = new ArrayList(); + protected static List getFancy(Faction target, FPlayer fme, TagReplacer type, String prefix) { + List fancyMessages = new ArrayList(); switch (type) { case ALLIES_LIST: - BaseComponent currentAllies = P.p.txt.parseComponent(prefix); + FancyMessage currentAllies = P.p.txt.parseFancy(prefix); boolean firstAlly = true; for (Faction otherFaction : Factions.getInstance().getAllFactions()) { if (otherFaction == target) { @@ -134,27 +130,19 @@ public class TagUtil { } String s = otherFaction.getTag(fme); if (otherFaction.getRelationTo(target).isAlly()) { - TextComponent then = new TextComponent(firstAlly ? s : ", " + s); - List list = tipFaction(otherFaction); - TextComponent[] hover = new TextComponent[list.size()]; - for (int i = 0; i < list.size(); i++) { - TextComponent component = new TextComponent(list.get(i)); - component.setColor(net.md_5.bungee.api.ChatColor.valueOf(fme.getColorTo(otherFaction).name())); - hover[i] = component; - } - then.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hover)); - currentAllies.addExtra(then); + currentAllies.then(firstAlly ? s : ", " + s); + currentAllies.tooltip(tipFaction(otherFaction)).color(fme.getColorTo(otherFaction)); firstAlly = false; - if (currentAllies.toPlainText().length() > ARBITRARY_LIMIT) { - components.add(currentAllies); - currentAllies = new TextComponent(""); + if (currentAllies.toJSONString().length() > ARBITRARY_LIMIT) { + fancyMessages.add(currentAllies); + currentAllies = new FancyMessage(""); } } } - components.add(currentAllies); - return components; // we must return here and not outside the switch + fancyMessages.add(currentAllies); + return fancyMessages; // we must return here and not outside the switch case ENEMIES_LIST: - BaseComponent currentEnemies = P.p.txt.parseComponent(prefix); + FancyMessage currentEnemies = P.p.txt.parseFancy(prefix); boolean firstEnemy = true; for (Faction otherFaction : Factions.getInstance().getAllFactions()) { if (otherFaction == target) { @@ -162,73 +150,49 @@ public class TagUtil { } String s = otherFaction.getTag(fme); if (otherFaction.getRelationTo(target).isEnemy()) { - TextComponent then = new TextComponent(firstEnemy ? s : ", " + s); - List list = tipFaction(otherFaction); - TextComponent[] hover = new TextComponent[list.size()]; - for (int i = 0; i < list.size(); i++) { - TextComponent component = new TextComponent(list.get(i)); - component.setColor(net.md_5.bungee.api.ChatColor.valueOf(fme.getColorTo(otherFaction).name())); - hover[i] = component; - } - then.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hover)); - currentEnemies.addExtra(then); + currentEnemies.then(firstEnemy ? s : ", " + s); + currentEnemies.tooltip(tipFaction(otherFaction)).color(fme.getColorTo(otherFaction)); firstEnemy = false; - if (currentEnemies.toPlainText().length() > ARBITRARY_LIMIT) { - components.add(currentEnemies); - currentEnemies = new TextComponent(""); + if (currentEnemies.toJSONString().length() > ARBITRARY_LIMIT) { + fancyMessages.add(currentEnemies); + currentEnemies = new FancyMessage(""); } } } - components.add(currentEnemies); - return components; // we must return here and not outside the switch + fancyMessages.add(currentEnemies); + return fancyMessages; // we must return here and not outside the switch case ONLINE_LIST: - BaseComponent currentOnline = P.p.txt.parseComponent(prefix); + FancyMessage currentOnline = P.p.txt.parseFancy(prefix); boolean firstOnline = true; for (FPlayer p : MiscUtil.rankOrder(target.getFPlayersWhereOnline(true))) { String name = p.getNameAndTitle(); - TextComponent then = new TextComponent(firstOnline ? name : ", " + name); - List list = tipPlayer(p); - TextComponent[] hover = new TextComponent[list.size()]; - for (int i = 0; i < list.size(); i++) { - TextComponent component = new TextComponent(list.get(i)); - component.setColor(net.md_5.bungee.api.ChatColor.valueOf(fme.getColorTo(p).name())); - hover[i] = component; - } - then.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hover)); - currentOnline.addExtra(then); + currentOnline.then(firstOnline ? name : ", " + name); + currentOnline.tooltip(tipPlayer(p)).color(fme.getColorTo(p)); firstOnline = false; - if (currentOnline.toPlainText().length() > ARBITRARY_LIMIT) { - components.add(currentOnline); - currentOnline = new TextComponent(""); + if (currentOnline.toJSONString().length() > ARBITRARY_LIMIT) { + fancyMessages.add(currentOnline); + currentOnline = new FancyMessage(""); } } - components.add(currentOnline); - return components; // we must return here and not outside the switch + fancyMessages.add(currentOnline); + return fancyMessages; // we must return here and not outside the switch case OFFLINE_LIST: - BaseComponent currentOffline = P.p.txt.parseComponent(prefix); + FancyMessage currentOffline = P.p.txt.parseFancy(prefix); boolean firstOffline = true; for (FPlayer p : MiscUtil.rankOrder(target.getFPlayers())) { String name = p.getNameAndTitle(); if (!p.isOnline()) { - TextComponent then = new TextComponent(firstOffline ? name : ", " + name); - List list = tipPlayer(p); - TextComponent[] hover = new TextComponent[list.size()]; - for (int i = 0; i < list.size(); i++) { - TextComponent component = new TextComponent(list.get(i)); - component.setColor(net.md_5.bungee.api.ChatColor.valueOf(fme.getColorTo(p).name())); - hover[i] = component; - } - then.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hover)); - currentOffline.addExtra(then); + currentOffline.then(firstOffline ? name : ", " + name); + currentOffline.tooltip(tipPlayer(p)).color(fme.getColorTo(p)); firstOffline = false; - if (currentOffline.toPlainText().length() > ARBITRARY_LIMIT) { - components.add(currentOffline); - currentOffline = new TextComponent(""); + if (currentOffline.toJSONString().length() > ARBITRARY_LIMIT) { + fancyMessages.add(currentOffline); + currentOffline = new FancyMessage(""); } } } - components.add(currentOffline); - return components; // we must return here and not outside the switch + fancyMessages.add(currentOffline); + return fancyMessages; // we must return here and not outside the switch } return null; } diff --git a/src/main/java/com/massivecraft/factions/zcore/util/TextUtil.java b/src/main/java/com/massivecraft/factions/zcore/util/TextUtil.java index cadf4e30..d5dfc829 100644 --- a/src/main/java/com/massivecraft/factions/zcore/util/TextUtil.java +++ b/src/main/java/com/massivecraft/factions/zcore/util/TextUtil.java @@ -1,7 +1,6 @@ package com.massivecraft.factions.zcore.util; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; +import mkremins.fanciful.FancyMessage; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -56,24 +55,41 @@ public class TextUtil { } // -------------------------------------------- // - // Component parsing + // Fancy parsing // -------------------------------------------- // - public BaseComponent parseComponent(String prefix) { - return toComponent(parse(prefix)); + public FancyMessage parseFancy(String prefix) { + return toFancy(parse(prefix)); } - public static BaseComponent toComponent(String first) { - BaseComponent[] components = TextComponent.fromLegacyText(first); - if (components.length == 0) { - return null; + public static FancyMessage toFancy(String first) { + String text = ""; + FancyMessage message = new FancyMessage(text); + ChatColor color = null; + char[] chars = first.toCharArray(); + + for (int i = 0; i < chars.length; i++) { + if (chars[i] == 'ยง') { + if (color != null) { + message.then(text).color(color); + text = ""; + color = ChatColor.getByChar(chars[i + 1]); + } else { + color = ChatColor.getByChar(chars[i + 1]); + } + i++; // skip color char + } else { + text += chars[i]; + } } - // convert it to a single component, for ease - BaseComponent component = components[0]; - for (int i = 1; i < components.length; i++) { - component.addExtra(components[i]); + if (text.length() > 0) { + if (color != null) { + message.then(text).color(color); + } else { + message.text(text); + } } - return component; + return message; } // -------------------------------------------- //