Skip to content

Instantly share code, notes, and snippets.

@Techcable
Last active August 29, 2015 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Techcable/6a54feee83417b020e24 to your computer and use it in GitHub Desktop.
Save Techcable/6a54feee83417b020e24 to your computer and use it in GitHub Desktop.
A combat tag API supporting CombatTag, CombatTagReloaded, and PvPManager
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