Rewritten Factions hook, so we don't need Factions in our code.

This commit is contained in:
snowleo 2011-07-19 11:26:23 +02:00
parent 6a156ede68
commit dc99efb0a7
4 changed files with 70 additions and 38 deletions

View File

@ -2,6 +2,8 @@ package com.earth2me.essentials.chat;
import com.earth2me.essentials.IEssentials;
import com.earth2me.essentials.Util;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bukkit.event.Event.Priority;
@ -13,15 +15,17 @@ import org.bukkit.plugin.java.JavaPlugin;
public class EssentialsChat extends JavaPlugin
{
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private Map<String, IEssentialsChatListener> chatListener;
public void onEnable()
{
final PluginManager pluginManager = getServer().getPluginManager();
final IEssentials ess = (IEssentials)pluginManager.getPlugin("Essentials");
EssentialsChatPlayerListener.checkFactions(pluginManager);
chatListener = new HashMap<String, IEssentialsChatListener>();
//EssentialsChatPlayerListener.checkFactions(pluginManager);
final EssentialsChatPlayerListener playerListener = new EssentialsChatPlayerListener(getServer(), ess);
final EssentialsChatPlayerListener playerListener = new EssentialsChatPlayerListener(getServer(), ess, chatListener);
pluginManager.registerEvent(Type.PLAYER_CHAT, playerListener, Priority.Highest, this);
if (!this.getDescription().getVersion().equals(ess.getDescription().getVersion()))
{
@ -32,5 +36,11 @@ public class EssentialsChat extends JavaPlugin
public void onDisable()
{
chatListener.clear();
}
public void addEssentialsChatListener(String plugin, IEssentialsChatListener listener)
{
chatListener.put(plugin, listener);
}
}

View File

@ -3,31 +3,30 @@ package com.earth2me.essentials.chat;
import com.earth2me.essentials.IEssentials;
import com.earth2me.essentials.User;
import com.earth2me.essentials.Util;
import java.util.Map;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerListener;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.mcteam.factions.Factions;
//import org.mcteam.factions.Factions;
public class EssentialsChatPlayerListener extends PlayerListener
{
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private final transient IEssentials ess;
private final transient Server server;
private static Factions factions = null;
private final transient Map<String, IEssentialsChatListener> listeners;
//private static Factions factions = null;
public EssentialsChatPlayerListener(final Server server, final IEssentials ess)
public EssentialsChatPlayerListener(final Server server, final IEssentials ess, final Map<String, IEssentialsChatListener> listeners)
{
this.server = server;
this.ess = ess;
this.listeners = listeners;
}
@Override
@ -38,8 +37,15 @@ public class EssentialsChatPlayerListener extends PlayerListener
return;
}
if (factions != null && (factions.shouldLetFactionsHandleThisChat(event)))
return;
//if (factions != null && (factions.shouldLetFactionsHandleThisChat(event)))
// return;
for (IEssentialsChatListener listener : listeners.values())
{
if (listener.shouldHandleThisChat(event))
{
return;
}
}
final User user = ess.getUser(event.getPlayer());
@ -112,37 +118,42 @@ public class EssentialsChatPlayerListener extends PlayerListener
}
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()));
for (IEssentialsChatListener listener : listeners.values())
{
message = listener.modifyMessage(message);
}
//if (factions != null)
// message = message.replace("{FACTION}", factions.getPlayerFactionTagRelation(event.getPlayer(), p)).replace("{FACTION_TITLE}", factions.getPlayerTitle(event.getPlayer()));
u.sendMessage(message);
}
}
protected static void checkFactions(PluginManager pm)
/*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);
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);
}*/
}

View File

@ -0,0 +1,11 @@
package com.earth2me.essentials.chat;
import org.bukkit.event.player.PlayerChatEvent;
public interface IEssentialsChatListener
{
boolean shouldHandleThisChat(PlayerChatEvent event);
String modifyMessage(String message);
}

View File

@ -7,4 +7,4 @@ website: http://www.earth2me.net:8001/
description: Provides chat control features for Essentials. Requires Permissions.
authors: [Zenexer, ementalo, Aelux, Brettflan, KimKandor, snowleo, ceulemans, Xeology]
depend: [Essentials]
softdepend: [Factions]
#softdepend: [Factions]