package me.asofold.bpl.simplyvanish.api.hooks.impl;
import me.asofold.bpl.simplyvanish.api.hooks.AbstractHook;
import me.asofold.bpl.simplyvanish.api.hooks.HookPurpose;
import me.asofold.bpl.simplyvanish.api.hooks.util.PluginGetter;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.User;
public class Essentials2Hook extends AbstractHook{
private final PluginGetter<Essentials> getter;
public Essentials2Hook() throws SecurityException, NoSuchMethodException{
getter = new PluginGetter<Essentials>("Essentials");
User.class.getDeclaredMethod("setHidden", boolean.class); // hmmm
}
@Override
public String getHookName() {
return "Essentials2";
}
@Override
public HookPurpose[] getSupportedMethods() {
return new HookPurpose[]{HookPurpose.BEFORE_VANISH, HookPurpose.AFTER_REAPPEAR};
}
@Override
public final void beforeVanish(final String playerName) {
setHidden(playerName, true);
}
@Override
public final void afterReappear(final String playerName) {
setHidden(playerName, false);
}
private final void setHidden(final String playerName, final boolean hidden) {
final Player player = Bukkit.getPlayerExact(playerName);
final Object obj;
if (player != null) obj = player;
else obj = playerName;
try{
final User user = getter.getPlugin().getUser(obj);
if (user != null) user.setHidden(hidden);
}
catch(Throwable t){
// TODO: organize the source code by grace of devs.
}
}
}