Advertisement
Maxlego08

factionUtils

Jan 24th, 2020
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.68 KB | None | 0 0
  1. package fr.maxlego08.zspawner.zcore.utils.faction;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.lang.reflect.Method;
  5.  
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.Location;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.plugin.Plugin;
  10.  
  11. import com.massivecraft.factions.Board;
  12. import com.massivecraft.factions.FLocation;
  13. import com.massivecraft.factions.FPlayers;
  14.  
  15. import fr.maxlego08.zspawner.zcore.ZPlugin;
  16. import fr.maxlego08.zspawner.zcore.logger.Logger;
  17. import fr.maxlego08.zspawner.zcore.logger.Logger.LogType;
  18. import net.redstoneore.legacyfactions.entity.FPlayer;
  19. import net.redstoneore.legacyfactions.entity.FPlayerColl;
  20.  
  21. public class FactionUtils {
  22.  
  23.     private FactionType type = FactionType.NONE;
  24.     private FPlayers fPlayers;
  25.     private Method getPlayer;
  26.     private Method getByPlayer;
  27.  
  28.     public FactionUtils() {
  29.         this.loadFaction();
  30.         Logger.info("Faction Detection§7: §6" + type.name(), LogType.SUCCESS);
  31.         if (!type.equals(FactionType.NONE)) {
  32.             try {
  33.                 Field field = FPlayers.class.getDeclaredField("i");
  34.                 field.setAccessible(true);
  35.                 fPlayers = (FPlayers) field.get(FPlayers.class);
  36.                 getPlayer = fPlayers.getClass().getMethod("get", Player.class);
  37.             } catch (Exception e) {
  38.                 try {
  39.                     fPlayers = (FPlayers) FPlayers.class.getMethod("getInstance", null).invoke(null, null);
  40.                     getByPlayer = fPlayers.getClass().getMethod("getByPlayer", Player.class);
  41.                 } catch (Exception e1) {
  42.                 }
  43.             }
  44.         }
  45.     }
  46.  
  47.     private void loadFaction() {
  48.         for (Plugin pl : Bukkit.getPluginManager().getPlugins()) {
  49.             if (pl.getName().equalsIgnoreCase("Factions")) {
  50.                 String author = pl.getDescription().getAuthors().toString();
  51.                 if (author.contains("Benzimmer")) {
  52.                     type = FactionType.ULTIMATE;
  53.                     return;
  54.                 }
  55.                 if (author.contains("ProSavage") && author.contains("drtshock")) {
  56.                     type = FactionType.SAVAGE;
  57.                     return;
  58.                 }
  59.                 if (author.contains("drtshock")) {
  60.                     type = FactionType.UUID;
  61.                     return;
  62.                 }
  63.                 if (author.contains("Cayorion") && Bukkit.getPluginManager().isPluginEnabled("MassiveCore")) {
  64.                     type = FactionType.MASSIVECORE;
  65.                     return;
  66.                 }
  67.                 if (author.contains("Olof") && author.contains("Larsson")) {
  68.                     type = FactionType.FACTION_1_7_10;
  69.                     return;
  70.                 }
  71.             }
  72.             if (pl.getName().equalsIgnoreCase("LegacyFactions")) {
  73.                 type = FactionType.LEGACY;
  74.                 return;
  75.             }
  76.         }
  77.     }
  78.  
  79.     public FactionType getType() {
  80.         return type;
  81.     }
  82.  
  83.     private Object getFPlayer(Player player) {
  84.         try {
  85.             return getPlayer.invoke(fPlayers, player);
  86.         } catch (Exception e) {
  87.             try {
  88.                 return getByPlayer.invoke(fPlayers, player);
  89.             } catch (Exception e1) {
  90.                 e1.printStackTrace();
  91.             }
  92.         }
  93.         return null;
  94.     }
  95.  
  96.     /**
  97.      *
  98.      * @param player
  99.      * @param location
  100.      * @return
  101.      */
  102.     public boolean canBuild(Player player, Location location) {
  103.         boolean worldguardBuild = ZPlugin.z().getWorldguard() != null ? ZPlugin.z().getWorldguard().canBuild(player, location) : true;
  104.         boolean factionBuild = true;
  105.         switch (type) {
  106.         case LEGACY:
  107.             FPlayer fPlayer = FPlayerColl.get(player);
  108.             factionBuild = fPlayer.isInOwnTerritory();
  109.             break;
  110.         case MASSIVECORE:{
  111.             com.massivecraft.factions.entity.MPlayer mPlayer = com.massivecraft.factions.entity.MPlayer.get(player);
  112.             factionBuild = mPlayer.isInOwnTerritory();
  113.             break;
  114.         }
  115.         case FACTION_1_7_10:
  116.         case SAVAGE:
  117.         case ULTIMATE:
  118.         case UUID:
  119.             try {
  120.                 Object o = getFPlayer(player);
  121.                 factionBuild = (boolean) o.getClass().getMethod("isInOwnTerritory", null).invoke(o, null);
  122.             } catch (Exception e) {
  123.                 e.printStackTrace();
  124.             }
  125.             break;
  126.         case NONE:
  127.             factionBuild = true;
  128.             break;
  129.         }
  130.         return worldguardBuild && factionBuild;
  131.     }
  132.  
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement