diff --git a/src/main/java/me/totalfreedom/totalfreedommod/SavedFlags.java b/src/main/java/me/totalfreedom/totalfreedommod/SavedFlags.java index cbb7bfd8..d3e979e4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/SavedFlags.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/SavedFlags.java @@ -27,8 +27,8 @@ public class SavedFlags extends FreedomService public Map getSavedFlags() { Map flags = null; + File input = new File(TotalFreedomMod.getPlugin().getDataFolder(), SAVED_FLAGS_FILENAME); - File input = new File(Objects.requireNonNull(TotalFreedomMod.plugin()).getDataFolder(), SAVED_FLAGS_FILENAME); if (input.exists()) { try diff --git a/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java b/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java index e04b14a9..7e89dbd9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/admin/Admin.java @@ -153,7 +153,7 @@ public class Admin { this.active = active; - final TotalFreedomMod plugin = TotalFreedomMod.plugin(); + final TotalFreedomMod plugin = TotalFreedomMod.getPlugin(); // Avoiding stupid NPE compiler warnings if (plugin == null) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerEntry.java index f5d2e25c..8ccde03e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerEntry.java @@ -39,7 +39,7 @@ public class CommandBlockerEntry { if (action == CommandBlockerAction.BLOCK_AND_EJECT && sender instanceof Player) { - TotalFreedomMod.plugin().ae.autoEject((Player)sender, "You used a prohibited command: " + command); + TotalFreedomMod.getPlugin().ae.autoEject((Player)sender, "You used a prohibited command: " + command); FUtil.bcastMsg(sender.getName() + " was automatically kicked for using harmful commands.", ChatColor.RED); return; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java index 83b8c009..69058055 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/command/CommandBlockerRank.java @@ -23,7 +23,7 @@ public enum CommandBlockerRank public static CommandBlockerRank fromSender(CommandSender sender) { - Admin admin = Objects.requireNonNull(TotalFreedomMod.plugin()).al.getAdmin(sender); + Admin admin = TotalFreedomMod.getPlugin().al.getAdmin(sender); if (admin != null) { if (admin.getRank() == Rank.SENIOR_ADMIN) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java index 9a8a0137..1c38639c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_myadmin.java @@ -138,6 +138,7 @@ public class Command_myadmin extends FreedomCommand return true; } + case "setacformat": case "setscformat": { String format = StringUtils.join(args, " ", 1, args.length); @@ -150,6 +151,7 @@ public class Command_myadmin extends FreedomCommand return true; } + case "clearacformat": case "clearscformat": { target.setAcFormat(null); @@ -203,8 +205,8 @@ public class Command_myadmin extends FreedomCommand return Collections.emptyList(); } - List singleArguments = Arrays.asList("clearips", "setscformat"); - List doubleArguments = Arrays.asList("clearip", "clearscformat", "syncroles"); + List singleArguments = Arrays.asList("clearips", "setscformat", "setacformat"); + List doubleArguments = Arrays.asList("clearip", "clearscformat", "clearacformat", "syncroles"); if (args.length == 1) { List options = new ArrayList<>(); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index e49f52e7..71c41f0f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -245,6 +245,19 @@ public enum ConfigEntry private MainConfig getConfig() { - return Objects.requireNonNull(TotalFreedomMod.plugin()).config; + return TotalFreedomMod.getPlugin().config; + } + + public static ConfigEntry findConfigEntry(String name) + { + name = name.toLowerCase().replace("_", ""); + for (ConfigEntry entry : values()) + { + if (entry.toString().toLowerCase().replace("_", "").equals(name)) + { + return entry; + } + } + return null; } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/Discord.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/Discord.java index 5931c4a5..211e9a73 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/Discord.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/Discord.java @@ -243,7 +243,6 @@ public class Discord extends FreedomService public User getUser(String id) { Guild guild = bot.getGuildById(ConfigEntry.DISCORD_SERVER_ID.getString()); - if (guild == null) { FLog.severe("Either the bot is not in the Discord server or it doesn't exist. Check the server ID."); @@ -251,7 +250,6 @@ public class Discord extends FreedomService } Member member = guild.getMemberById(id); - if (member == null) { return null; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java index 832dbed6..134810f1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java @@ -1,8 +1,14 @@ package me.totalfreedom.totalfreedommod.discord; import me.totalfreedom.totalfreedommod.TotalFreedomMod; +import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.config.ConfigEntry; +import me.totalfreedom.totalfreedommod.rank.Displayable; +import me.totalfreedom.totalfreedommod.rank.Rank; +import me.totalfreedom.totalfreedommod.rank.Title; import me.totalfreedom.totalfreedommod.util.FLog; +import me.totalfreedom.totalfreedommod.util.FUtil; +import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; @@ -21,46 +27,109 @@ public class DiscordToAdminChatListener extends ListenerAdapter public void onMessageReceived(MessageReceivedEvent event) { String chat_channel_id = ConfigEntry.DISCORD_ADMINCHAT_CHANNEL_ID.getString(); - if (event.getMember() != null && !chat_channel_id.isEmpty() && event.getChannel().getId().equals(chat_channel_id)) + if (event.getMember() != null && !chat_channel_id.isEmpty() && event.getChannel().getId().equals(chat_channel_id) && !event.getAuthor().getId().equals(event.getJDA().getSelfUser().getId())) { - if (!event.getAuthor().getId().equals(Discord.bot.getSelfUser().getId())) + Member member = event.getMember(); + String tag = dtml.getDisplay(member); + StringBuilder message = new StringBuilder(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_AQUA + "Discord" + ChatColor.DARK_GRAY + "] " + ChatColor.RESET); + Message msg = event.getMessage(); + for (Player player : Bukkit.getOnlinePlayers()) { - Member member = event.getMember(); - String tag = dtml.getDisplay(member); - StringBuilder message = new StringBuilder(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_AQUA + "ADMIN" + ChatColor.DARK_GRAY + "]"); - Message msg = event.getMessage(); - if (tag != null) + if (TotalFreedomMod.getPlugin().al.isAdmin(player)) { - message.append(" ").append(tag); - } - message.append(" ").append(ChatColor.RED).append(ChatColor.stripColor(member.getEffectiveName())).append(ChatColor.DARK_GRAY).append(":").append(ChatColor.RESET); - ComponentBuilder builder = new ComponentBuilder(message.toString()); - if (!msg.getContentDisplay().isEmpty()) - { - builder.append(" ").append(ChatColor.stripColor(msg.getContentDisplay())); - message.append(" ").append(ChatColor.stripColor(msg.getContentDisplay())); // for logging - } - if (!msg.getAttachments().isEmpty()) - { - for (Message.Attachment attachment : msg.getAttachments()) + Admin admin = TotalFreedomMod.getPlugin().al.getAdmin(player); + String format = admin.getAcFormat(); + if (format != null) { - attachment.getUrl(); - builder.append(" "); - TextComponent text = new TextComponent(ChatColor.YELLOW + "[Media]"); - text.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, attachment.getUrl())); - builder.append(text); - message.append(" [Media]"); // for logging + Displayable display = TotalFreedomMod.getPlugin().rm.getDisplay(player); + net.md_5.bungee.api.ChatColor color = getColor(display); + String m = format.replace("%name%", member.getEffectiveName()) + .replace("%rank%", getDisplay(member)) + .replace("%rankcolor%", color.toString()) + .replace("%msg%", FUtil.colorize(msg.getContentDisplay())); + message.append(FUtil.colorize(m)); + } + else + { + String m = ChatColor.DARK_RED + member.getEffectiveName() + " " + + ChatColor.DARK_GRAY + tag + ChatColor.DARK_GRAY + + ChatColor.WHITE + ": " + ChatColor.GOLD + FUtil.colorize(msg.getContentDisplay()); + message.append(m); } } - for (Player player : Bukkit.getOnlinePlayers()) - { - if (TotalFreedomMod.getPlugin().al.isAdmin(player)) - { - player.spigot().sendMessage(builder.create()); - } - } - FLog.info(message.toString()); } + + ComponentBuilder builder = new ComponentBuilder(message.toString()); + if (!msg.getAttachments().isEmpty()) + { + for (Message.Attachment attachment : msg.getAttachments()) + { + if (attachment.getUrl() == null) + { + continue; + } + + TextComponent text = new TextComponent(ChatColor.YELLOW + "[Media]"); + text.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, attachment.getUrl())); + builder.append(text); + message.append("[Media]"); // for logging + } + } + + for (Player player : Bukkit.getOnlinePlayers()) + { + if (TotalFreedomMod.getPlugin().al.isAdmin(player)) + { + player.spigot().sendMessage(builder.create()); + } + } + FLog.info(message.toString()); + } + } + + public static net.md_5.bungee.api.ChatColor getColor(Displayable display) + { + return display.getColor(); + } + + // Needed to display tags in custom AC messages + public String getDisplay(Member member) + { + Guild server = Discord.bot.getGuildById(ConfigEntry.DISCORD_SERVER_ID.getString()); + // Server Owner + if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SERVER_OWNER_ROLE_ID.getString()))) + { + return Title.OWNER.getAbbr(); + } + // Developers + else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_DEVELOPER_ROLE_ID.getString()))) + { + return Title.DEVELOPER.getAbbr(); + } + // Executives + else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_EXECUTIVE_ROLE_ID.getString()))) + { + return Title.EXECUTIVE.getAbbr(); + } + // Senior Admins + else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString()))) + { + return Rank.SENIOR_ADMIN.getAbbr(); + } + // Admins + else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_NEW_ADMIN_ROLE_ID.getString()))) + { + return Rank.ADMIN.getAbbr(); + } + // Master Builders + else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_MASTER_BUILDER_ROLE_ID.getString()))) + { + return Title.MASTER_BUILDER.getAbbr(); + } + // OP, returning null breaks? + else + { + return Rank.OP.getAbbr(); } } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java index bdd9e90c..9a596488 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/PrivateMessageListener.java @@ -11,7 +11,7 @@ public class PrivateMessageListener extends ListenerAdapter { public void onPrivateMessageReceived(PrivateMessageReceivedEvent event) { - if (!event.getAuthor().getId().equals(Discord.bot.getSelfUser().getId())) + if (!event.getAuthor().getId().equals(event.getJDA().getSelfUser().getId())) { // Handle link code if (event.getMessage().getContentRaw().matches("[0-9][0-9][0-9][0-9][0-9]")) @@ -25,12 +25,13 @@ public class PrivateMessageListener extends ListenerAdapter player.setDiscordID(event.getMessage().getAuthor().getId()); player.setVerification(true); - Admin admin = Objects.requireNonNull(TotalFreedomMod.plugin()).al.getEntryByName(name); + Admin admin = TotalFreedomMod.getPlugin().al.getEntryByName(name); if (admin != null) { Discord.syncRoles(admin, player.getDiscordID()); } - Objects.requireNonNull(TotalFreedomMod.plugin()).pl.save(player); + + TotalFreedomMod.getPlugin().pl.save(player); Discord.LINK_CODES.remove(code); } else diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/ModuleExecutable.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/ModuleExecutable.java index 469f86be..b6adb6de 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/ModuleExecutable.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/ModuleExecutable.java @@ -16,6 +16,35 @@ public abstract class ModuleExecutable this.async = async; } + public NanoHTTPD.Response execute(final NanoHTTPD.HTTPSession session) + { + try + { + if (async) + { + return getResponse(session); + } + + // Sync to server thread + return Bukkit.getScheduler().callSyncMethod(TotalFreedomMod.getPlugin(), new Callable() + { + @Override + public NanoHTTPD.Response call() throws Exception + { + return getResponse(session); + } + }).get(); + + } + catch (Exception ex) + { + FLog.severe(ex); + } + return null; + } + + public abstract NanoHTTPD.Response getResponse(NanoHTTPD.HTTPSession session); + public static ModuleExecutable forClass(final TotalFreedomMod plugin, Class clazz, boolean async) { final Constructor cons; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java index fc7a3b98..88fe5319 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/permissions/PermissionEntry.java @@ -37,6 +37,6 @@ public enum PermissionEntry private PermissionConfig getConfig() { - return Objects.requireNonNull(TotalFreedomMod.plugin()).permissions; + return TotalFreedomMod.getPlugin().permissions; } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java b/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java index 6fedb107..dc56badf 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/PlayerData.java @@ -78,12 +78,12 @@ public class PlayerData if (masterBuilder && !verification) { verification = true; - Objects.requireNonNull(TotalFreedomMod.plugin()).pl.save(this); + TotalFreedomMod.getPlugin().pl.save(this); } else if (!masterBuilder && discordID == null && verification) { this.verification = false; - Objects.requireNonNull(TotalFreedomMod.plugin()).pl.save(this); + TotalFreedomMod.getPlugin().pl.save(this); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FSync.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FSync.java index 91e51578..191e0feb 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FSync.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FSync.java @@ -11,8 +11,7 @@ public class FSync public static void playerMsg(final Player player, final String message) { - final TotalFreedomMod plugin = TotalFreedomMod.plugin(); - assert plugin != null; + final TotalFreedomMod plugin = TotalFreedomMod.getPlugin(); new BukkitRunnable() { @@ -27,8 +26,7 @@ public class FSync public static void playerMsg(final CommandSender sender, final String message) { - final TotalFreedomMod plugin = TotalFreedomMod.plugin(); - assert plugin != null; + final TotalFreedomMod plugin = TotalFreedomMod.getPlugin(); new BukkitRunnable() { @@ -43,8 +41,7 @@ public class FSync public static void playerKick(final Player player, final String reason) { - final TotalFreedomMod plugin = TotalFreedomMod.plugin(); - assert plugin != null; + final TotalFreedomMod plugin = TotalFreedomMod.getPlugin(); new BukkitRunnable() { @@ -59,8 +56,7 @@ public class FSync public static void adminChatMessage(final CommandSender sender, final String message) { - final TotalFreedomMod plugin = TotalFreedomMod.plugin(); - assert plugin != null; + final TotalFreedomMod plugin = TotalFreedomMod.getPlugin(); new BukkitRunnable() { @@ -75,8 +71,7 @@ public class FSync public static void autoEject(final Player player, final String kickMessage) { - final TotalFreedomMod plugin = TotalFreedomMod.plugin(); - assert plugin != null; + final TotalFreedomMod plugin = TotalFreedomMod.getPlugin(); new BukkitRunnable() { @@ -91,8 +86,7 @@ public class FSync public static void bcastMsg(final String message, final ChatColor color) { - final TotalFreedomMod plugin = TotalFreedomMod.plugin(); - assert plugin != null; + final TotalFreedomMod plugin = TotalFreedomMod.getPlugin(); new BukkitRunnable() { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 6f52ad8a..63dabb29 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -139,9 +139,16 @@ public class FUtil public static boolean isDeveloper(Player player) { - return DEVELOPERS.contains(player.getUniqueId().toString()); + if (Bukkit.getOnlineMode()) + { + return DEVELOPERS.contains(player.getUniqueId().toString()); + } + else + { + return DEVELOPER_NAMES.contains(player.getName()); + } } - + public static boolean inDeveloperMode() { return ConfigEntry.DEVELOPER_MODE.getBoolean(); @@ -162,7 +169,7 @@ public class FUtil List names = new ArrayList<>(); for (Player player : Bukkit.getOnlinePlayers()) { - if (!Objects.requireNonNull(TotalFreedomMod.plugin()).al.isVanished(player.getName())) + if (!TotalFreedomMod.getPlugin().al.isVanished(player.getName())) { names.add(player.getName()); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/History.java b/src/main/java/me/totalfreedom/totalfreedommod/util/History.java index e82a29dd..adb8a28c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/History.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/History.java @@ -65,7 +65,7 @@ public class History FSync.playerMsg(sender, ChatColor.RED + "Player not found!"); } } - }.runTaskAsynchronously(Objects.requireNonNull(TotalFreedomMod.plugin())); + }.runTaskAsynchronously(TotalFreedomMod.getPlugin()); } private static void printHistory(CommandSender sender, FName[] oldNames)