TFGuilds/src/main/java/me/totalfreedom/tfguilds/TFMBridge.java

143 lines
4.3 KiB
Java

package me.totalfreedom.tfguilds;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import me.totalfreedom.tfguilds.util.ReflectionsHelper;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
public class TFMBridge
{
private final TFGuilds plugin = TFGuilds.getPlugin();
private /*TotalFreedomMod*/ Plugin tfm = null;
public /*TotalFreedomMod*/ Plugin getTfm()
{
if (tfm == null)
{
try
{
final Plugin tfmPlugin = plugin.getServer().getPluginManager().getPlugin("TotalFreedomMod");
if (tfmPlugin != null && tfmPlugin.isEnabled())
{
tfm = /*(TotalFreedomMod)*/tfmPlugin;
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
return tfm;
}
public boolean isAdmin(Player player)
{
if (getTfm() == null)
{
Bukkit.getLogger().warning("TotalFreedomMod not detected, checking operator status instead.");
return player.isOp();
}
Object al = ReflectionsHelper.getField(getTfm(), "adminList");
Method isAdmin = ReflectionsHelper.getMethod(al, "isAdmin", Player.class);
try
{
return (boolean)isAdmin.invoke(al, player) /*getTfm().al.isAdmin(player)*/;
}
catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
return false;
}
public boolean isAdmin(CommandSender sender)
{
if (getTfm() == null)
{
Bukkit.getLogger().warning("TotalFreedomMod not detected, checking operator status instead.");
return sender.isOp();
}
Object al = ReflectionsHelper.getField(getTfm(), "adminList");
Method isAdmin = ReflectionsHelper.getMethod(al, "isAdmin", CommandSender.class);
try
{
return (boolean)isAdmin.invoke(al, sender) /*getTfm().al.isAdmin(player)*/;
}
catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
return false;
}
public boolean isVanished(Player player)
{
if (getTfm() == null)
{
Bukkit.getLogger().warning("TotalFreedomMod not detected, vanish will return false.");
return false;
}
Object al = ReflectionsHelper.getField(getTfm(), "adminList");
Method isVanished = ReflectionsHelper.getMethod(al, "isVanished", String.class);
try
{
return (boolean)isVanished.invoke(al, player.getName()) /*getTfm().al.isVanished(player.getName)*/;
}
catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
return false;
}
public String getTag(Player player)
{
if (getTfm() == null)
{
return null;
}
Object pl = ReflectionsHelper.getField(getTfm(), "playerList");
Method getPlayer = ReflectionsHelper.getMethod(pl, "getPlayer", Player.class);
try
{
Object fPlayer = getPlayer.invoke(pl, player);
Method getTag = ReflectionsHelper.getMethod(fPlayer, "getTag");
return (String)getTag.invoke(fPlayer);
}
catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
return "" /*ChatColor.stripColor(getTfm().pl.getPlayer(player).getTag())*/;
}
public void clearTag(Player player)
{
if (getTfm() == null)
{
return;
}
// getTfm().pl.getPlayer(player).setTag(null);
Object pl = ReflectionsHelper.getField(getTfm(), "playerList");
Method getPlayer = ReflectionsHelper.getMethod(pl, "getPlayer", Player.class);
try
{
Object fPlayer = getPlayer.invoke(pl, player);
Method setTag = ReflectionsHelper.getMethod(fPlayer, "setTag", String.class);
setTag.invoke(fPlayer, (Object)null);
}
catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
}
}