Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fr.maxlego08.zspawner.zcore.utils.faction;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.Plugin;
- import com.massivecraft.factions.Board;
- import com.massivecraft.factions.FLocation;
- import com.massivecraft.factions.FPlayers;
- import fr.maxlego08.zspawner.zcore.ZPlugin;
- import fr.maxlego08.zspawner.zcore.logger.Logger;
- import fr.maxlego08.zspawner.zcore.logger.Logger.LogType;
- import net.redstoneore.legacyfactions.entity.FPlayer;
- import net.redstoneore.legacyfactions.entity.FPlayerColl;
- public class FactionUtils {
- private FactionType type = FactionType.NONE;
- private FPlayers fPlayers;
- private Method getPlayer;
- private Method getByPlayer;
- public FactionUtils() {
- this.loadFaction();
- Logger.info("Faction Detection§7: §6" + type.name(), LogType.SUCCESS);
- if (!type.equals(FactionType.NONE)) {
- try {
- Field field = FPlayers.class.getDeclaredField("i");
- field.setAccessible(true);
- fPlayers = (FPlayers) field.get(FPlayers.class);
- getPlayer = fPlayers.getClass().getMethod("get", Player.class);
- } catch (Exception e) {
- try {
- fPlayers = (FPlayers) FPlayers.class.getMethod("getInstance", null).invoke(null, null);
- getByPlayer = fPlayers.getClass().getMethod("getByPlayer", Player.class);
- } catch (Exception e1) {
- }
- }
- }
- }
- private void loadFaction() {
- for (Plugin pl : Bukkit.getPluginManager().getPlugins()) {
- if (pl.getName().equalsIgnoreCase("Factions")) {
- String author = pl.getDescription().getAuthors().toString();
- if (author.contains("Benzimmer")) {
- type = FactionType.ULTIMATE;
- return;
- }
- if (author.contains("ProSavage") && author.contains("drtshock")) {
- type = FactionType.SAVAGE;
- return;
- }
- if (author.contains("drtshock")) {
- type = FactionType.UUID;
- return;
- }
- if (author.contains("Cayorion") && Bukkit.getPluginManager().isPluginEnabled("MassiveCore")) {
- type = FactionType.MASSIVECORE;
- return;
- }
- if (author.contains("Olof") && author.contains("Larsson")) {
- type = FactionType.FACTION_1_7_10;
- return;
- }
- }
- if (pl.getName().equalsIgnoreCase("LegacyFactions")) {
- type = FactionType.LEGACY;
- return;
- }
- }
- }
- public FactionType getType() {
- return type;
- }
- private Object getFPlayer(Player player) {
- try {
- return getPlayer.invoke(fPlayers, player);
- } catch (Exception e) {
- try {
- return getByPlayer.invoke(fPlayers, player);
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- }
- return null;
- }
- /**
- *
- * @param player
- * @param location
- * @return
- */
- public boolean canBuild(Player player, Location location) {
- boolean worldguardBuild = ZPlugin.z().getWorldguard() != null ? ZPlugin.z().getWorldguard().canBuild(player, location) : true;
- boolean factionBuild = true;
- switch (type) {
- case LEGACY:
- FPlayer fPlayer = FPlayerColl.get(player);
- factionBuild = fPlayer.isInOwnTerritory();
- break;
- case MASSIVECORE:{
- com.massivecraft.factions.entity.MPlayer mPlayer = com.massivecraft.factions.entity.MPlayer.get(player);
- factionBuild = mPlayer.isInOwnTerritory();
- break;
- }
- case FACTION_1_7_10:
- case SAVAGE:
- case ULTIMATE:
- case UUID:
- try {
- Object o = getFPlayer(player);
- factionBuild = (boolean) o.getClass().getMethod("isInOwnTerritory", null).invoke(o, null);
- } catch (Exception e) {
- e.printStackTrace();
- }
- break;
- case NONE:
- factionBuild = true;
- break;
- }
- return worldguardBuild && factionBuild;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement