Last active
August 29, 2015 14:13
-
-
Save Techcable/6a54feee83417b020e24 to your computer and use it in GitHub Desktop.
A combat tag API supporting CombatTag, CombatTagReloaded, and PvPManager
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.bukkit.entity.Entity; | |
import org.bukkit.entity.Player; | |
import com.trc202.CombatTag.CombatTag; | |
import com.trc202.CombatTagApi.CombatTagApi; | |
import me.NoChance.PvPManager.PvPManager; | |
import me.NoChance.PvPManager.Config.Variables; | |
import me.NoChance.PvPManager.Managers.PlayerHandler; | |
import techcable.minecraft.combattag.CombatTagAPI; | |
/** | |
* API to interface with Combat Tag, Combat Tag Reloaded, and PvPManager | |
* | |
* @author Techcable | |
*/ | |
public class CombatAPI { | |
private CombatAPI() {} | |
/** | |
* Returns if a player is combat tagged | |
* @param player the player to check | |
* @return true if combat tagged | |
*/ | |
public static boolean isTagged(Player player) { | |
if (hasCombatTag()) { | |
return getCombatTagApi().isInCombat(player); | |
} else if (hasCombatTagReloaded()) { | |
return CombatTagAPI.isTagged(player); | |
} else if (hasPvpManager()) { | |
return getPlayerHandler().get(player).isInCombat(); | |
} else { | |
return false; | |
} | |
} | |
/** | |
* Returns the time a player has left in combat | |
* <p> | |
* Returns -1 if not in combat<br> | |
* Returns -2 if not installed | |
* | |
* @param player the player to check | |
* @return time in milliseconds until the player is no longer in combat | |
*/ | |
public static long getRemainingTagTime(Player player) { | |
if (hasCombatTag()) { | |
return getCombatTagApi().getRemainingTagTime(player); | |
} else if (hasCombatTagReloaded()) { | |
return CombatTagAPI.getRemainingTagTime(player); | |
} else if (hasPvpManager()) { | |
long timeLeft = (System.currentTimeMillis() - getPlayerHandler().get(player).getTaggedTime()) - Variables.timeInCombat * 1000; //Very Hacky -- PvPManager doesn't have a public api | |
if (timeLeft < 1) return -1; //Not tagged | |
return timeLeft; | |
} else { | |
return -2; //Not installed | |
} | |
} | |
/** | |
* Checks if an entity is a NPC | |
* @param entity the entity to check | |
* @return true if entity is a NPC | |
*/ | |
public static boolean isNPC(Entity entity) { | |
if (hasCombatTag()) { | |
return getCombatTagApi().isNPC(entity); | |
} else if (hasCombatTagReloaded()) { | |
return CombatTagAPI.isNPC(entity); | |
} else { | |
return false; //Not installed or PvPManager | |
} | |
} | |
/** | |
* Tag this player | |
* @param player player to tag | |
*/ | |
public static void tag(Player player) { | |
if (hasCombatTag()) { | |
getCombatTagApi().tagPlayer(player); | |
} else if (hasCombatTagReloaded()) { | |
CombatTagAPI.addTagged(player); | |
} else if (hasPvpManager()) { | |
return getPlayerHandler().tag(getPlayerHandler().get(player)); | |
} | |
} | |
/** | |
* UnTag this player | |
* @param player player to un-tag | |
*/ | |
public static void unTag(Player player) { | |
if (hasCombatTag()) { | |
getCombatTagApi().untagPlayer(player); | |
} else if (hasCombatTagReloaded()) { | |
CombatTagAPI.removeTagged(player); | |
} else if (hasPvpManager()) { | |
return getPlayerHandler().untag(getPlayerHandler().get(player)); | |
} | |
} | |
/** | |
* Return wether a combat-tagging plugin is installed | |
* Only CombatTag, CombatTagReloaded, and PvPManager are currently supported | |
* @return true if a combat tag plugin is installed | |
*/ | |
public static boolean isInstalled() { | |
return hasCombatTag() || hasCombatTagReloaded() || hasPvpManager(); | |
} | |
//Internal | |
private static PlayerHandler getPlayerHandler() { | |
PvPManager plugin = (PvPManager) Bukkit.getPluginManager().getPlugin("PvPManager"); | |
return plugin.getPlayerHandler(); | |
} | |
private static boolean hasCombatTag() { | |
return Bukkit.getPluginManager().getPlugin("CombatTag") != null; | |
} | |
private static boolean hasCombatTagReloaded() { | |
return Bukkit.getPluginManager().getPlugin("CombatTagReloaded") != null; | |
} | |
private static boolean hasPvpManager() { | |
return Bukkit.getPluginManager().getPlugin("PvPManager") != null; | |
} | |
private static CombatTagApi combatTagApi; | |
private static CombatTagApi getCombatTagApi() { | |
if (combatTagApi == null) { | |
CombatTag plugin = (CombatTag) Bukkit.getPluginManager().getPlugin("CombatTag"); | |
this.combatTagApi = new CombatTagApi(plugin); | |
} | |
return combatTagApi; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment