Developer - Handlers
Developer - Handlers
You can set custom handlers for things such as editing chat messages for fake admins, vanish handling and mute handling. An example use for when you would want to set a custom vanish handling is if you don't use Essentials for vanish (default plugin in FakeAdmin for checking if a player is vanished), but another plugin.
Chat handler example
The following code would replace a fake administrator's chat message if it contains "<level>" with their level, "<exp>" with their player EXP, and make it coloured (only for fake admins).
import com.faris.fakeadmin.api.FakeAdminAPI; import com.faris.fakeadmin.api.Handler; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin { public void onEnable() { if (!this.getServer().getPluginManager().isPluginEnabled("FakeAdmin")) { this.getServer().getConsoleSender().sendMessage(ChatColor.RED + "FakeAdmin is required for this plugin to work."); this.setEnabled(false); return; } FakeAdminAPI.setChatHandler(new Handler() { @Override public String getPluginName() { return getDescription().getName(); } @Override public Object getValue(Object... parameters) { Player player = (Player) parameters[0]; String message = parameters[1].toString(); message = ChatColor.translateAlternateColorCodes('&', message); message = message.replace("<exp>", String.valueOf(player.getExp())); message = message.replace("<level>", String.valueOf(player.getLevel())); return message; } }); } }
Vanish handler example
This will handle vanished players so that if a player is vanished from another player, don't show them.
import com.faris.fakeadmin.api.FakeAdminAPI; import com.faris.fakeadmin.api.Handler; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; public class Main extends JavaPlugin { private Map<UUID, List<UUID>> vanishedPlayers = new HashMap<>(); public void onEnable() { if (!this.getServer().getPluginManager().isPluginEnabled("FakeAdmin")) { this.getServer().getConsoleSender().sendMessage(ChatColor.RED + "FakeAdmin is required for this plugin to work."); this.setEnabled(false); return; } FakeAdminAPI.setVanishHandler(new Handler() { @Override public String getPluginName() { return getDescription().getName(); } @Override public Object getValue(Object... parameters) { Player viewer = parameters[0] != null ? (Player) parameters[0] : null; Player player = parameters[1] != null ? (Player) parameters[1] : null; if (viewer != null && player != null && vanishedPlayers.containsKey(viewer.getUniqueId())) { List<UUID> vanishedPlayersUUIDs = vanishedPlayers.get(viewer.getUniqueId()); return vanishedPlayersUUIDs != null && vanishedPlayersUUIDs.contains(player.getUniqueId()); } else { return false; } } }); } }
Comments