@Override public void load() { groupsFile = new File(plugin.getDataFolder(), "groups.yml"); groups = Utils.getConfig(groupsFile, "groups.yml", plugin); playersFile = new File(plugin.getDataFolder(), "players.yml"); players = Utils.getConfig(playersFile, "players.yml", plugin); loadGroups(); loadPlayers(); new BukkitRunnable() { @Override public void run() { handler.applyTags(); } }.runTask(plugin); }
private void testCompat() { PacketWrapper wrapper = new PacketWrapper("TEST", "&f", "", 0, new ArrayList<>()); wrapper.send(); if (wrapper.error == null) return; Bukkit.getPluginManager().disablePlugin(this); getLogger().severe(new StringBuilder() .append("\n------------------------------------------------------\n") .append("[WARNING] NametagEdit v").append(getDescription().getVersion()).append(" Failed to load! [WARNING]") .append("\n------------------------------------------------------") .append("\nThis might be an issue with reflection. REPORT this:\n> ") .append(wrapper.error) .append("\nThe plugin will now self destruct.\n------------------------------------------------------") .toString()); }
@Override public void run() { plugin.getHandler().reload(); } }.runTask(plugin);
@Override public void onEnable() { testCompat(); if (!isEnabled()) return; manager = new NametagManager(this); handler = new NametagHandler(this, manager); PluginManager pluginManager = Bukkit.getPluginManager(); if (checkShouldRegister("zPermissions")) { pluginManager.registerEvents(new HookZPermissions(handler), this); } else if (checkShouldRegister("PermissionsEx")) { pluginManager.registerEvents(new HookPermissionsEX(handler), this); } else if (checkShouldRegister("GroupManager")) { pluginManager.registerEvents(new HookGroupManager(handler), this); } else if (checkShouldRegister("LuckPerms")) { pluginManager.registerEvents(new HookLuckPerms(handler), this); } if (pluginManager.getPlugin("LibsDisguises") != null) { pluginManager.registerEvents(new HookLibsDisguise(this), this); } getCommand("ne").setExecutor(new NametagCommand(handler)); if (api == null) { api = new NametagAPI(handler, manager); } }
private FakeTeam reset(String player, FakeTeam fakeTeam) { if (fakeTeam != null && fakeTeam.getMembers().remove(player)) { boolean delete; Player removing = Bukkit.getPlayerExact(player); if (removing != null) { delete = removePlayerFromTeamPackets(fakeTeam, removing.getName()); } else { OfflinePlayer toRemoveOffline = Bukkit.getOfflinePlayer(player); delete = removePlayerFromTeamPackets(fakeTeam, toRemoveOffline.getName()); } plugin.debug(player + " was removed from " + fakeTeam.getName()); if (delete) { removeTeamPackets(fakeTeam); TEAMS.remove(fakeTeam.getName()); plugin.debug("FakeTeam " + fakeTeam.getName() + " has been deleted. Size: " + TEAMS.size()); } } return fakeTeam; }
private void handleError(SQLException e) { if (handler.isDebug()) { e.printStackTrace(); } else { plugin.getLogger().severe("NametagEdit Query Failed - Reason: " + e.getMessage()); plugin.getLogger().severe("If this is not a connection error, please enable debug with /nte debug and post the error on our GitHub Issue Tracker."); } }
private void sendUpdateSelf(WrappedGameProfile gameProfile) throws FieldAccessException { Optional.ofNullable(receiver.getVehicle()).ifPresent(Entity::eject); sendPacketsSelf(gameProfile); //trigger update exp receiver.setExp(receiver.getExp()); //triggers updateAbilities receiver.setWalkSpeed(receiver.getWalkSpeed()); //send the current inventory - otherwise player would have an empty inventory receiver.updateInventory(); PlayerInventory inventory = receiver.getInventory(); inventory.setHeldItemSlot(inventory.getHeldItemSlot()); //trigger update attributes like health modifier for generic.maxHealth try { receiver.getClass().getDeclaredMethod("updateScaledHealth").invoke(receiver); } catch (ReflectiveOperationException reflectiveEx) { plugin.getLog().error("Failed to invoke updateScaledHealth for attributes", reflectiveEx); } //tell NameTagEdit to refresh the scoreboard if (Bukkit.getPluginManager().isPluginEnabled("NametagEdit")) { NametagEdit.getApi().reloadNametag(receiver); } }
private void applyConfig() { this.debug = config.getBoolean("Debug"); this.tabListEnabled = config.getBoolean("Tablist.Enabled"); this.longNametagsEnabled = config.getBoolean("Tablist.LongTags"); this.refreshTagOnWorldChange = config.getBoolean("RefreshTagOnWorldChange"); DISABLE_PUSH_ALL_TAGS = config.getBoolean("DisablePush"); if (config.getBoolean("MetricsEnabled")) { Metrics m = new Metrics(NametagEdit.getPlugin(NametagEdit.class)); m.addCustomChart(new Metrics.SimplePie("using_spigot", () -> PlaceholderAPIPlugin.getServerVersion().isSpigot() ? "yes" : "no")); } clearEmptyTeamTask = createTask("ClearEmptyTeamsInterval", clearEmptyTeamTask, new Runnable() { @Override public void run() { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "nte teams clear"); } }); refreshNametagTask = createTask("RefreshInterval", refreshNametagTask, new Runnable() { @Override public void run() { nametagManager.reset(); applyTags(); } }); }
public void applyTags() { if (!Bukkit.isPrimaryThread()) { new BukkitRunnable() { @Override public void run() { applyTags(); } }.runTask(plugin); return; } for (Player online : Utils.getOnline()) { if (online != null) { applyTagToPlayer(online, false); } } plugin.debug("Applied tags to all online players."); }
void debug(String message) { if (handler != null && handler.debug()) { getLogger().info("[DEBUG] " + message); } }
@Override public void load(Player player, boolean loggedIn) { loadPlayerTag(player); plugin.getHandler().applyTagToPlayer(player, loggedIn); }
/** * Replaces placeholders when a player tag is created. * Maxim and Clip's plugins are searched for, and input * is replaced. We use direct imports to avoid any problems! * (So don't change that) */ public String formatWithPlaceholders(Player player, String input, boolean limitChars) { if (input == null) return ""; if (player == null) return input; if (Bukkit.getPluginManager().isPluginEnabled("MVdWPlaceholderAPI")) { plugin.debug("Trying to use MVdWPlaceholderAPI for placeholders"); if (be.maximvdw.placeholderapi.PlaceholderAPI.getLoadedPlaceholderCount() != 0) { input = be.maximvdw.placeholderapi.PlaceholderAPI.replacePlaceholders(player, input); } else { Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[NametagEdit] As the error above suggests, you " + "do NOT have any placeholder plugins installed. The placeholder API is merely an interface, it " + "requires other plugins to function. This is NOT an issue with NametagEdit."); } } // The string can become null again at this point. Add another check. if (input != null && Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { plugin.debug("Trying to use PlaceholderAPI for placeholders"); input = me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(player, input); } return Utils.format(input, limitChars); }
private boolean checkShouldRegister(String plugin) { if (Bukkit.getPluginManager().getPlugin(plugin) == null) return false; getLogger().info("Found " + plugin + "! Hooking in."); return true; }
private void convertDatabaseToFile(Connection connection) { try { final String GROUP_QUERY = "SELECT name, prefix, suffix, permission, priority FROM " + DatabaseConfig.TABLE_GROUPS; final String PLAYER_QUERY = "SELECT name, uuid, prefix, suffix, priority FROM " + DatabaseConfig.TABLE_PLAYERS; final File groupsFile = new File(plugin.getDataFolder(), "groups_CONVERTED.yml"); final File playersFile = new File(plugin.getDataFolder(), "players_CONVERTED.yml"); final YamlConfiguration groups = Utils.getConfig(groupsFile); final YamlConfiguration players = Utils.getConfig(playersFile); ResultSet results = connection.prepareStatement(GROUP_QUERY).executeQuery(); while (results.next()) { groups.set("Groups." + results.getString("name") + ".Permission", results.getString("permission")); groups.set("Groups." + results.getString("name") + ".Prefix", results.getString("prefix")); groups.set("Groups." + results.getString("name") + ".Suffix", results.getString("suffix")); groups.set("Groups." + results.getString("name") + ".SortPriority", results.getInt("priority")); } results = connection.prepareStatement(PLAYER_QUERY).executeQuery(); while (results.next()) { players.set("Players." + results.getString("uuid") + ".Name", results.getString("name")); players.set("Players." + results.getString("uuid") + ".Prefix", results.getString("prefix")); players.set("Players." + results.getString("uuid") + ".Suffix", results.getString("suffix")); players.set("Players." + results.getString("uuid") + ".SortPriority", results.getInt("priority")); } results.close(); groups.save(groupsFile); players.save(playersFile); } catch (SQLException | IOException e) { e.printStackTrace(); } }
@Override public void run() { plugin.getHandler().applyTagToPlayer((Player) event.getEntity(), false); } }.runTaskLater(plugin, 3);
plugin.debug(player + " already belongs to a similar team (" + previous.getName() + ")"); return; if (joining != null) { joining.addMember(player); plugin.debug("Using existing team for " + player); } else { joining = new FakeTeam(prefix, suffix, sortPriority, playerTag); TEAMS.put(joining.getName(), joining); addTeamPackets(joining); plugin.debug("Created FakeTeam " + joining.getName() + ". Size: " + TEAMS.size()); plugin.debug(player + " has been added to team " + joining.getName());
private void convertFilesToDatabase(Connection connection) { final File groupsFile = new File(plugin.getDataFolder(), "groups.yml"); final File playersFile = new File(plugin.getDataFolder(), "players.yml");
@EventHandler public void onDisguiseEvent(final DisguiseEvent event) { if (event.getEntity() instanceof Player) { plugin.getHandler().getNametagManager().reset(event.getEntity().getName()); new BukkitRunnable() { @Override public void run() { plugin.getHandler().applyTagToPlayer((Player) event.getEntity(), false); } }.runTaskLater(plugin, 3); } }
plugin.debug("Applying " + (tempNametag.isPlayerTag() ? "PlayerTag" : "GroupTag") + " to " + player.getName());
@Override public void run() { FileConfiguration config = plugin.getHandler().getConfig(); String connectionString = "jdbc:mysql://" + config.getString("MySQL.Hostname") + ":" + config.getInt("MySQL.Port") + "/" + config.getString("MySQL.Database"); try (Connection connection = DriverManager.getConnection(connectionString, config.getString("MySQL.Username"), config.getString("MySQL.Password"))) { if (databaseToFile) { convertDatabaseToFile(connection); } else { convertFilesToDatabase(connection); } } catch (SQLException e) { e.printStackTrace(); } finally { new BukkitRunnable() { @Override public void run() { plugin.getHandler().reload(); } }.runTask(plugin); } }