diff --git a/lib/Essentials.jar b/lib/Essentials.jar new file mode 100644 index 00000000..d022397b Binary files /dev/null and b/lib/Essentials.jar differ diff --git a/src/com/massivecraft/factions/Conf.java b/src/com/massivecraft/factions/Conf.java index 4315b838..edbcb0e6 100644 --- a/src/com/massivecraft/factions/Conf.java +++ b/src/com/massivecraft/factions/Conf.java @@ -102,8 +102,8 @@ public class Conf public static boolean homesTeleportToOnDeath = true; public static boolean homesRespawnFromNoPowerLossWorlds = true; public static boolean homesTeleportCommandEnabled = true; + public static boolean homesTeleportCommandEssentialsIntegration = true; public static boolean homesTeleportCommandSmokeEffectEnabled = true; - public static float homesTeleportCommandSmokeEffectThickness = 3f; public static boolean homesTeleportAllowedFromEnemyTerritory = true; public static boolean homesTeleportAllowedFromDifferentWorld = true; public static double homesTeleportAllowedEnemyDistance = 32.0; diff --git a/src/com/massivecraft/factions/Faction.java b/src/com/massivecraft/factions/Faction.java index 2ac359b6..de01f34c 100644 --- a/src/com/massivecraft/factions/Faction.java +++ b/src/com/massivecraft/factions/Faction.java @@ -1,7 +1,6 @@ package com.massivecraft.factions; import java.util.*; -import java.util.logging.Level; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -361,7 +360,7 @@ public class Faction extends Entity implements EconomyParticipator public Set getFPlayers() { // return a shallow copy of the FPlayer list, to prevent tampering and concurrency issues - Set ret = new HashSet(fplayers); + Set ret = new HashSet(fplayers); return ret; } diff --git a/src/com/massivecraft/factions/cmd/CmdHome.java b/src/com/massivecraft/factions/cmd/CmdHome.java index acd9f6a5..3c53d33f 100644 --- a/src/com/massivecraft/factions/cmd/CmdHome.java +++ b/src/com/massivecraft/factions/cmd/CmdHome.java @@ -3,10 +3,16 @@ package com.massivecraft.factions.cmd; import java.util.ArrayList; import java.util.List; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import com.earth2me.essentials.IEssentials; +import com.earth2me.essentials.Teleport; +import com.earth2me.essentials.Trade; import com.massivecraft.factions.Board; import com.massivecraft.factions.Conf; import com.massivecraft.factions.FLocation; @@ -18,6 +24,7 @@ import com.massivecraft.factions.struct.Permission; import com.massivecraft.factions.struct.Rel; import com.massivecraft.factions.zcore.util.SmokeUtil; +@SuppressWarnings("deprecation") public class CmdHome extends FCommand { @@ -123,21 +130,44 @@ public class CmdHome extends FCommand } } - // if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay - if ( ! payForCommand(Conf.econCostHome, "to teleport to your faction home", "for teleporting to your faction home")) return; - - // Create a smoke effect - if (Conf.homesTeleportCommandSmokeEffectEnabled) + // The teleport is either handled inhouse or by the Essentials plugin as a warp + final Plugin grab = Bukkit.getPluginManager().getPlugin("Essentials"); + if (Conf.homesTeleportCommandEssentialsIntegration && grab != null && grab.isEnabled()) { - List smokeLocations = new ArrayList(); - smokeLocations.add(me.getLocation()); - smokeLocations.add(me.getLocation().clone().add(0, 1, 0)); - smokeLocations.add(myFaction.getHome()); - smokeLocations.add(myFaction.getHome().clone().add(0, 1, 0)); - SmokeUtil.spawnCloudRandom(smokeLocations, Conf.homesTeleportCommandSmokeEffectThickness); + // Handled by Essentials + IEssentials ess = (IEssentials) grab; + Teleport teleport = (Teleport) ess.getUser(this.me).getTeleport(); + Trade trade = new Trade(Conf.econCostHome, ess); + try + { + teleport.teleport(myFaction.getHome(), trade); + } + catch (Exception e) + { + me.sendMessage(ChatColor.RED.toString()+e.getMessage()); + } + } + else + { + // Handled by Factions + + // if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay + if ( ! payForCommand(Conf.econCostHome, "to teleport to your faction home", "for teleporting to your faction home")) return; + + // Create a smoke effect + if (Conf.homesTeleportCommandSmokeEffectEnabled) + { + List smokeLocations = new ArrayList(); + smokeLocations.add(me.getLocation()); + smokeLocations.add(me.getLocation().clone().add(0, 1, 0)); + smokeLocations.add(myFaction.getHome()); + smokeLocations.add(myFaction.getHome().clone().add(0, 1, 0)); + SmokeUtil.spawnCloudRandom(smokeLocations, 3f); + } + + me.teleport(myFaction.getHome()); } - me.teleport(myFaction.getHome()); } }