2024-11-11 10:55:21 +02:00
|
|
|
package com.hypherionmc.craterlib.common;
|
|
|
|
|
|
|
|
import com.hypherionmc.craterlib.core.platform.CompatUtils;
|
|
|
|
import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment;
|
|
|
|
import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer;
|
|
|
|
import com.hypherionmc.craterlib.utils.ChatUtils;
|
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.metadata.MetadataValue;
|
|
|
|
import org.bukkit.plugin.Plugin;
|
|
|
|
|
|
|
|
import java.lang.reflect.Method;
|
|
|
|
|
|
|
|
public class PaperCompatHelper implements CompatUtils {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isPlayerActive(BridgedPlayer player) {
|
|
|
|
// Essentials Vanish
|
|
|
|
if (ModloaderEnvironment.INSTANCE.isModLoaded("Essentials")) {
|
|
|
|
return !isEssentialsVanished(player);
|
|
|
|
}
|
|
|
|
|
|
|
|
// PhantomAdmin Vanish
|
|
|
|
if (ModloaderEnvironment.INSTANCE.isModLoaded("PhantomAdmin"))
|
|
|
|
return !isPhantomVanished(player);
|
|
|
|
|
|
|
|
// Other vanish mods
|
|
|
|
try {
|
|
|
|
Player p = (Player) player.toMojangServerPlayer();
|
|
|
|
for (MetadataValue meta : p.getMetadata("vanished")) {
|
|
|
|
if (meta.asBoolean()) return true;
|
|
|
|
}
|
|
|
|
} catch (Exception ignored) {}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getSkinUUID(BridgedPlayer player) {
|
|
|
|
return player.getStringUUID();
|
|
|
|
}
|
|
|
|
|
|
|
|
private boolean isEssentialsVanished(BridgedPlayer player) {
|
|
|
|
try {
|
|
|
|
Plugin p = Bukkit.getPluginManager().getPlugin("Essentials");
|
|
|
|
if (p == null)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
Method getUser = p.getClass().getMethod("getUser", String.class);
|
|
|
|
Object essentialsPlayer = getUser.invoke(p, ChatUtils.resolve(player.getName(), false));
|
|
|
|
|
|
|
|
if (essentialsPlayer != null) {
|
|
|
|
Method isVanished = essentialsPlayer.getClass().getMethod("isVanished");
|
|
|
|
return (boolean) isVanished.invoke(essentialsPlayer);
|
|
|
|
}
|
|
|
|
} catch (Exception ignored) {}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
private boolean isPhantomVanished(BridgedPlayer player) {
|
|
|
|
try {
|
|
|
|
Plugin p = Bukkit.getPluginManager().getPlugin("PhantomAdmin");
|
|
|
|
if (p == null)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
Method isInvisible = p.getClass().getDeclaredMethod("isInvisible", Player.class);
|
|
|
|
isInvisible.setAccessible(true);
|
|
|
|
|
|
|
|
return (boolean) isInvisible.invoke(p, (Player) player.toMojangServerPlayer());
|
|
|
|
} catch (Exception ignored) {
|
|
|
|
ignored.printStackTrace();
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2025-02-01 14:06:08 +02:00
|
|
|
@Override
|
|
|
|
public boolean isPlayerBleeding(BridgedPlayer player) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean playerBledOut(BridgedPlayer player) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean playerRevived(BridgedPlayer player) {
|
|
|
|
return false;
|
|
|
|
}
|
2025-04-28 14:07:53 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isPrivateMessage(BridgedPlayer player) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Component getChannelPrefix(BridgedPlayer player) {
|
|
|
|
return Component.empty();
|
|
|
|
}
|
2024-11-11 10:55:21 +02:00
|
|
|
}
|