diff --git a/src/com/massivecraft/factions/ConfServer.java b/src/com/massivecraft/factions/ConfServer.java index e85d69ad..c44c3b5d 100644 --- a/src/com/massivecraft/factions/ConfServer.java +++ b/src/com/massivecraft/factions/ConfServer.java @@ -3,6 +3,7 @@ package com.massivecraft.factions; import java.util.*; import org.bukkit.*; +import org.bukkit.event.EventPriority; import com.massivecraft.mcore.SimpleConfig; import com.massivecraft.mcore.util.MUtil; @@ -105,15 +106,19 @@ public class ConfServer extends SimpleConfig // CHAT // -------------------------------------------- // - // Configuration on the Faction tag in chat messages. + // We offer a simple standard way to set the format public static boolean chatSetFormat = false; - public static String chatSetFormatTo = "<{faction_relcolor}§l{faction_roleprefix}§r{faction_relcolor}{faction_tag_pr}"+ChatColor.WHITE.toString()+"%s> %s"; + public static EventPriority chatSetFormatAt = EventPriority.LOWEST; + public static String chatSetFormatTo = "<{faction_relcolor}§l{faction_roleprefix}§r{faction_relcolor}{faction_tag_pr}§f%s> %s"; + + // We offer a simple standard way to parse the chat tags public static boolean chatParseTags = true; + public static EventPriority chatParseTagsAt = EventPriority.LOW; - + // TODO: What is this line and can I get rid of it? public static String chatTagFormat = "%s"+ChatColor.WHITE; // This one is almost deprecated now right? or is it? - // Herochat + // HeroChat: The Faction Channel public static String herochatFactionName = "Faction"; public static String herochatFactionNick = "F"; public static String herochatFactionFormat = "{color}[&l{nick}&r{color} &l{faction_roleprefix}&r{color}{faction_title_pr}{sender}{color}] &f{msg}"; @@ -124,6 +129,7 @@ public class ConfServer extends SimpleConfig public static boolean herochatFactionMuted = false; public static Set herochatFactionWorlds = new HashSet(); + // HeroChat: The Allies Channel public static String herochatAlliesName = "Allies"; public static String herochatAlliesNick = "A"; public static String herochatAlliesFormat = "{color}[&l{nick}&r&f {faction_relcolor}&l{faction_roleprefix}&r{faction_relcolor}{faction_tag_pr}{sender}{color}] &f{msg}"; @@ -133,8 +139,6 @@ public class ConfServer extends SimpleConfig public static boolean herochatAlliesCrossWorld = true; public static boolean herochatAlliesMuted = false; public static Set herochatAlliesWorlds = new HashSet(); - - public static String herochatAllyName = "Allies"; // -------------------------------------------- // // AUTO LEAVE diff --git a/src/com/massivecraft/factions/Factions.java b/src/com/massivecraft/factions/Factions.java index d1ded278..7c323de3 100644 --- a/src/com/massivecraft/factions/Factions.java +++ b/src/com/massivecraft/factions/Factions.java @@ -13,10 +13,10 @@ import com.massivecraft.factions.integration.LWCFeatures; import com.massivecraft.factions.integration.SpoutFeatures; import com.massivecraft.factions.integration.Worldguard; import com.massivecraft.factions.listeners.FactionsListenerChat; -import com.massivecraft.factions.listeners.FactionsEntityListener; +import com.massivecraft.factions.listeners.TodoFactionsEntityListener; import com.massivecraft.factions.listeners.FactionsListenerExploit; import com.massivecraft.factions.listeners.FactionsListenerMain; -import com.massivecraft.factions.listeners.FactionsPlayerListener; +import com.massivecraft.factions.listeners.TodoFactionsPlayerListener; import com.massivecraft.factions.task.AutoLeaveTask; import com.massivecraft.factions.task.EconLandRewardTask; @@ -43,9 +43,8 @@ public class Factions extends MPlugin public CmdFactions getOuterCmdFactions() { return this.outerCmdFactions; } // Listeners - public FactionsPlayerListener playerListener; - public FactionsListenerChat chatListener; - public FactionsEntityListener entityListener; + public TodoFactionsPlayerListener playerListener; + public TodoFactionsEntityListener entityListener; // -------------------------------------------- // // OVERRIDE @@ -84,22 +83,16 @@ public class Factions extends MPlugin // Register Event Handlers FactionsListenerMain.get().setup(); - // TODO: Chat goes here + FactionsListenerChat.get().setup(); FactionsListenerExploit.get().setup(); - // TODO: Get rid of these - this.playerListener = new FactionsPlayerListener(); + this.playerListener = new TodoFactionsPlayerListener(); getServer().getPluginManager().registerEvents(this.playerListener, this); - this.chatListener = new FactionsListenerChat(); - getServer().getPluginManager().registerEvents(this.chatListener, this); - - this.entityListener = new FactionsEntityListener(); + this.entityListener = new TodoFactionsEntityListener(); getServer().getPluginManager().registerEvents(this.entityListener, this); - - postEnable(); } diff --git a/src/com/massivecraft/factions/listeners/FactionsListenerChat.java b/src/com/massivecraft/factions/listeners/FactionsListenerChat.java index b32857ef..3a8089a9 100644 --- a/src/com/massivecraft/factions/listeners/FactionsListenerChat.java +++ b/src/com/massivecraft/factions/listeners/FactionsListenerChat.java @@ -1,9 +1,15 @@ package com.massivecraft.factions.listeners; import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import com.massivecraft.factions.ConfServer; import com.massivecraft.factions.Factions; +import com.massivecraft.factions.chat.ChatFormatter; +import com.massivecraft.mcore.util.SenderUtil; public class FactionsListenerChat implements Listener { @@ -24,9 +30,109 @@ public class FactionsListenerChat implements Listener } // -------------------------------------------- // - // LISTENER + // SET FORMAT // -------------------------------------------- // - // TODO: + public static void setFormat(AsyncPlayerChatEvent event, EventPriority currentPriority) + { + // If we are setting the chat format ... + if (!ConfServer.chatSetFormat) return; + + // ... and this is the right priority ... + if (currentPriority != ConfServer.chatSetFormatAt) return; + + // ... then set the format. + event.setFormat(ConfServer.chatSetFormatTo); + } + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void setFormatLowest(AsyncPlayerChatEvent event) + { + setFormat(event, EventPriority.LOWEST); + } + + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void setFormatLow(AsyncPlayerChatEvent event) + { + setFormat(event, EventPriority.LOW); + } + + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + public void setFormatNormal(AsyncPlayerChatEvent event) + { + setFormat(event, EventPriority.NORMAL); + } + + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + public void setFormatHigh(AsyncPlayerChatEvent event) + { + setFormat(event, EventPriority.HIGH); + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void setFormatHighest(AsyncPlayerChatEvent event) + { + setFormat(event, EventPriority.HIGHEST); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void setFormatMonitor(AsyncPlayerChatEvent event) + { + setFormat(event, EventPriority.MONITOR); + } + + // -------------------------------------------- // + // PARSE TAGS + // -------------------------------------------- // + + public static void parseTags(AsyncPlayerChatEvent event, EventPriority currentPriority) + { + // If we are setting the chat format ... + if (!ConfServer.chatParseTags) return; + + // ... and this is the right priority ... + if (currentPriority != ConfServer.chatParseTagsAt) return; + + // ... then parse tags a.k.a. "format the format". + String format = event.getFormat(); + format = ChatFormatter.format(format, SenderUtil.getSenderId(event.getPlayer()), null, null); + event.setFormat(format); + } + + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void parseTagsLowest(AsyncPlayerChatEvent event) + { + parseTags(event, EventPriority.LOWEST); + } + + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void parseTagsLow(AsyncPlayerChatEvent event) + { + parseTags(event, EventPriority.LOW); + } + + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + public void parseTagsNormal(AsyncPlayerChatEvent event) + { + parseTags(event, EventPriority.NORMAL); + } + + @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) + public void parseTagsHigh(AsyncPlayerChatEvent event) + { + parseTags(event, EventPriority.HIGH); + } + + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void parseTagsHighest(AsyncPlayerChatEvent event) + { + parseTags(event, EventPriority.HIGHEST); + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void parseTagsMonitor(AsyncPlayerChatEvent event) + { + parseTags(event, EventPriority.MONITOR); + } } diff --git a/src/com/massivecraft/factions/listeners/FactionsEntityListener.java b/src/com/massivecraft/factions/listeners/TodoFactionsEntityListener.java similarity index 99% rename from src/com/massivecraft/factions/listeners/FactionsEntityListener.java rename to src/com/massivecraft/factions/listeners/TodoFactionsEntityListener.java index a33d99dd..418d5438 100644 --- a/src/com/massivecraft/factions/listeners/FactionsEntityListener.java +++ b/src/com/massivecraft/factions/listeners/TodoFactionsEntityListener.java @@ -42,7 +42,7 @@ import com.massivecraft.factions.event.PowerLossEvent; import com.massivecraft.mcore.ps.PS; -public class FactionsEntityListener implements Listener +public class TodoFactionsEntityListener implements Listener { @EventHandler(priority = EventPriority.NORMAL) diff --git a/src/com/massivecraft/factions/listeners/FactionsPlayerListener.java b/src/com/massivecraft/factions/listeners/TodoFactionsPlayerListener.java similarity index 99% rename from src/com/massivecraft/factions/listeners/FactionsPlayerListener.java rename to src/com/massivecraft/factions/listeners/TodoFactionsPlayerListener.java index 8f7be299..5e5b9794 100644 --- a/src/com/massivecraft/factions/listeners/FactionsPlayerListener.java +++ b/src/com/massivecraft/factions/listeners/TodoFactionsPlayerListener.java @@ -35,7 +35,7 @@ import com.massivecraft.mcore.ps.PS; import com.massivecraft.mcore.util.MUtil; -public class FactionsPlayerListener implements Listener +public class TodoFactionsPlayerListener implements Listener { @EventHandler(priority = EventPriority.NORMAL) public void onPlayerJoin(PlayerJoinEvent event)