Support for the CAPI plugin.

This commit is contained in:
Olof Larsson 2011-10-14 15:03:23 +02:00
parent 3967579884
commit 00f6f4ab05
7 changed files with 141 additions and 10 deletions

BIN
lib/capi.jar Normal file

Binary file not shown.

View File

@ -2,7 +2,7 @@ name: Factions
version: 1.6.0_dev version: 1.6.0_dev
main: com.massivecraft.factions.P main: com.massivecraft.factions.P
authors: [Olof Larsson, Brett Flannigan] authors: [Olof Larsson, Brett Flannigan]
softdepend: [PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, iChat, LocalAreaChat, nChat, ChatManager, AuthMe, Register, Spout, WorldEdit, WorldGuard] softdepend: [PermissionsEx, Permissions, Essentials, EssentialsChat, HeroChat, iChat, LocalAreaChat, nChat, ChatManager, CAPI, AuthMe, Register, Spout, WorldEdit, WorldGuard]
permissions: permissions:
factions.kit.admin: factions.kit.admin:
description: All faction permissions. description: All faction permissions.

View File

@ -15,13 +15,6 @@ public class Conf
public static ChatColor colorAlly = ChatColor.LIGHT_PURPLE; public static ChatColor colorAlly = ChatColor.LIGHT_PURPLE;
public static ChatColor colorNeutral = ChatColor.WHITE; public static ChatColor colorNeutral = ChatColor.WHITE;
public static ChatColor colorEnemy = ChatColor.RED; public static ChatColor colorEnemy = ChatColor.RED;
/*
public static ChatColor colorSystem = ChatColor.YELLOW;
public static ChatColor colorChrome = ChatColor.GOLD;
public static ChatColor colorCommand = ChatColor.AQUA;
public static ChatColor colorParameter = ChatColor.DARK_AQUA;
*/
// Power // Power
public static double powerPlayerMax = 10.0; public static double powerPlayerMax = 10.0;

View File

@ -33,6 +33,7 @@ import com.earth2me.essentials.chat.EssentialsChat;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.massivecraft.factions.integration.EssentialsFeatures; import com.massivecraft.factions.integration.EssentialsFeatures;
import com.massivecraft.factions.integration.capi.CapiFeatures;
public class P extends MPlugin public class P extends MPlugin
{ {
@ -92,6 +93,7 @@ public class P extends MPlugin
setupSpout(this); setupSpout(this);
Econ.doSetup(); Econ.doSetup();
Econ.oldMoneyDoTransfer(); Econ.oldMoneyDoTransfer();
CapiFeatures.setup();
if(Conf.worldGuardChecking) if(Conf.worldGuardChecking)
{ {

View File

@ -0,0 +1,21 @@
package com.massivecraft.factions.integration.capi;
import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.Event.Priority;
import org.bukkit.plugin.Plugin;
import com.massivecraft.factions.P;
public class CapiFeatures
{
public static void setup()
{
Plugin plug = Bukkit.getServer().getPluginManager().getPlugin("CAPI");
if (plug != null && plug.getClass().getName().equals("com.massivecraft.capi.CAPI"))
{
P.p.log("Integration with the CAPI plugin was successful");
P.p.registerEvent(Event.Type.CUSTOM_EVENT, new PluginCapiListener(P.p), Priority.Normal);
}
}
}

View File

@ -0,0 +1,115 @@
package com.massivecraft.factions.integration.capi;
import java.util.LinkedHashSet;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.massivecraft.capi.Channel;
import com.massivecraft.capi.Channels;
import com.massivecraft.capi.events.CAPIListChannelsEvent;
import com.massivecraft.capi.events.CAPIMessageToChannelEvent;
import com.massivecraft.capi.events.CAPIMessageToPlayerEvent;
import com.massivecraft.capi.events.CAPISelectChannelEvent;
import com.massivecraft.capi.listeners.CapiListener;
import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.FPlayers;
import com.massivecraft.factions.Faction;
import com.massivecraft.factions.P;
import com.massivecraft.factions.struct.Relation;
public class PluginCapiListener extends CapiListener
{
P p;
Set<String> myChannelIds = new LinkedHashSet<String>();
public PluginCapiListener(P p)
{
this.p = p;
myChannelIds.add("faction");
myChannelIds.add("allies");
}
private String replacePlayerTags(String format, FPlayer me, FPlayer you)
{
String meFactionTag = me.getChatTag(you);
format = format.replace("{ME_FACTIONTAG}", meFactionTag.length() == 0 ? "" : meFactionTag);
format = format.replace("{ME_FACTIONTAG_PADR}", meFactionTag.length() == 0 ? "" : meFactionTag+" ");
format = format.replace("{ME_FACTIONTAG_PADL}", meFactionTag.length() == 0 ? "" : " "+meFactionTag);
format = format.replace("{ME_FACTIONTAG_PADB}", meFactionTag.length() == 0 ? "" : " "+meFactionTag+" ");
String youFactionTag = you.getChatTag(me);
format = format.replace("{YOU_FACTIONTAG}", youFactionTag.length() == 0 ? "" : youFactionTag);
format = format.replace("{YOU_FACTIONTAG_PADR}", youFactionTag.length() == 0 ? "" : youFactionTag+" ");
format = format.replace("{YOU_FACTIONTAG_PADL}", youFactionTag.length() == 0 ? "" : " "+youFactionTag);
format = format.replace("{YOU_FACTIONTAG_PADB}", youFactionTag.length() == 0 ? "" : " "+youFactionTag+" ");
return format;
}
@Override
public void onListChannelsEvent(CAPIListChannelsEvent event)
{
for (Channel c : Channels.i.get())
{
if (myChannelIds.contains(c.getId()))
{
event.getChannels().add(c);
}
}
}
@Override
public void onMessageToChannel(CAPIMessageToChannelEvent event)
{
if (event.isCancelled()) return;
if ( ! myChannelIds.contains(event.getChannel().getId())) return;
Player me = event.getMe();
FPlayer fme = FPlayers.i.get(me);
Faction myFaction = fme.getFaction();
if (event.getChannel().getId().equals("faction") && myFaction.isNormal())
{
event.getThem().addAll(myFaction.getOnlinePlayers());
}
else if (event.getChannel().getId().equals("allies"))
{
for (Player somePlayer : Bukkit.getServer().getOnlinePlayers())
{
FPlayer someFPlayer = FPlayers.i.get(somePlayer);
if (someFPlayer.getRelationTo(fme).value >= Relation.ALLY.value)
{
event.getThem().add(somePlayer);
}
}
}
}
@Override
public void onMessageToPlayer(CAPIMessageToPlayerEvent event)
{
if (event.isCancelled()) return;
event.setFormat(this.replacePlayerTags(event.getFormat(), FPlayers.i.get(event.getMe()), FPlayers.i.get(event.getYou())));
}
@Override
public void onSelectChannel(CAPISelectChannelEvent event)
{
if (event.isCancelled()) return;
String channelId = event.getChannel().getId();
if ( ! myChannelIds.contains(channelId)) return;
Player me = event.getMe();
FPlayer fme = FPlayers.i.get(me);
if ( ! fme.hasFaction())
{
event.setFailMessage(p.txt.parse("<b>You must be member in a faction to use this channel."));
event.setCancelled(true);
}
}
}

View File

@ -180,10 +180,10 @@ public abstract class MPlugin extends JavaPlugin
public boolean handleCommand(CommandSender sender, String commandString, boolean testOnly) public boolean handleCommand(CommandSender sender, String commandString, boolean testOnly)
{ {
boolean noSlash = false; boolean noSlash = true;
if (commandString.startsWith("/")) if (commandString.startsWith("/"))
{ {
noSlash = true; noSlash = false;
commandString = commandString.substring(1); commandString = commandString.substring(1);
} }