diff options
author | snowleo <schneeleo@gmail.com> | 2011-07-02 15:41:17 -0700 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2011-07-02 15:41:17 -0700 |
commit | 4eb94e7facaf91e9df0bf2ae4621c46370c6b79d (patch) | |
tree | 5ab3ce7f1bcf946e0b87afadea385ee226b1496e /EssentialsChat | |
parent | ff8564787a234ed4dce9bc4ee136850cd2cb370a (diff) | |
parent | 16b101b958551bac656364fa6ed4399799d72b0c (diff) | |
download | Essentials-4eb94e7facaf91e9df0bf2ae4621c46370c6b79d.tar Essentials-4eb94e7facaf91e9df0bf2ae4621c46370c6b79d.tar.gz Essentials-4eb94e7facaf91e9df0bf2ae4621c46370c6b79d.tar.lz Essentials-4eb94e7facaf91e9df0bf2ae4621c46370c6b79d.tar.xz Essentials-4eb94e7facaf91e9df0bf2ae4621c46370c6b79d.zip |
Merge pull request #8 from Brettflan/master
Implemented Factions plugin hooks to EssentialsChat for proper chat integration between them (master/dev branch)
Diffstat (limited to 'EssentialsChat')
3 files changed, 47 insertions, 2 deletions
diff --git a/EssentialsChat/nbproject/project.properties b/EssentialsChat/nbproject/project.properties index 08df72abc..2e51b176b 100644 --- a/EssentialsChat/nbproject/project.properties +++ b/EssentialsChat/nbproject/project.properties @@ -27,11 +27,13 @@ dist.javadoc.dir=${dist.dir}/javadoc endorsed.classpath= excludes= file.reference.bukkit-0.0.1-SNAPSHOT.jar=../lib/bukkit-0.0.1-SNAPSHOT.jar +file.reference.Factions.jar=../lib/Factions.jar includes=** jar.compress=false javac.classpath=\ ${reference.Essentials.jar}:\ - ${file.reference.bukkit-0.0.1-SNAPSHOT.jar} + ${file.reference.bukkit-0.0.1-SNAPSHOT.jar}:\ + ${file.reference.Factions.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=false diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java index 428413661..5fb8e9842 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChat.java @@ -17,6 +17,9 @@ public class EssentialsChat extends JavaPlugin public void onEnable() { final PluginManager pluginManager = getServer().getPluginManager(); + + EssentialsChatPlayerListener.checkFactions(pluginManager); + final EssentialsChatPlayerListener playerListener = new EssentialsChatPlayerListener(getServer()); pluginManager.registerEvent(Type.PLAYER_JOIN, playerListener, Priority.Lowest, this); pluginManager.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.Highest, this); diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java index 211733818..57c41de72 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListener.java @@ -13,6 +13,10 @@ import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerRespawnEvent; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginManager; + +import org.mcteam.factions.Factions; public class EssentialsChatPlayerListener extends PlayerListener @@ -20,6 +24,7 @@ public class EssentialsChatPlayerListener extends PlayerListener private static final Logger LOGGER = Logger.getLogger("Minecraft"); private final transient IEssentials ess = Essentials.getStatic(); private final transient Server server; + private static Factions factions = null; public EssentialsChatPlayerListener(final Server server) { @@ -48,6 +53,10 @@ public class EssentialsChatPlayerListener extends PlayerListener { return; } + + if (factions != null && (factions.shouldLetFactionsHandleThisChat(event))) + return; + final User user = ess.getUser(event.getPlayer()); updateDisplayName(user); @@ -118,8 +127,39 @@ public class EssentialsChatPlayerListener extends PlayerListener continue; } } + String message = String.format(event.getFormat(), user.getDisplayName(), event.getMessage()); + + if (factions != null) + message = message.replace("{FACTION}", factions.getPlayerFactionTagRelation(event.getPlayer(), p)).replace("{FACTION_TITLE}", factions.getPlayerTitle(event.getPlayer())); - u.sendMessage(String.format(event.getFormat(), user.getDisplayName(), event.getMessage())); + u.sendMessage(message); } } + + protected static void checkFactions(PluginManager pm) + { + if (factions != null) + return; + + Plugin factionsPlugin = pm.getPlugin("Factions"); + if (factionsPlugin == null) + return; + + factions = (Factions)factionsPlugin; + try + { // make sure Factions is sufficiently up-to-date + if (factions.hookSupportVersion() < 1) + factions = null; + } + catch (NoSuchMethodError ex) + { // if not, we can't work with it, so don't bother + factions = null; + } + + if (factions == null) + return; + + // normally a good thing, but we'll skip it to let Factions handle faction tags for global messages + //factions.handleFactionTagExternally(true); + } } |