From dd10eb3f5e275482f94e190872979ba33252ee5d Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 26 Apr 2021 00:37:16 -0600 Subject: [PATCH 01/20] Update Command_ride.java --- .../me/totalfreedom/totalfreedommod/command/Command_ride.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java index 9b8ca1d3..30a1883b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ride.java @@ -26,7 +26,7 @@ public class Command_ride extends FreedomCommand final FPlayer fPlayer = plugin.pl.getPlayer(playerSender); if (fPlayer.getCageData().isCaged()) { - msg("You cannot used this command while caged."); + msg("You cannot use this command while caged."); return true; } From 57b3351047527f3bcc6e04e08a2f9a06e92b0364 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 26 Apr 2021 00:58:28 -0600 Subject: [PATCH 02/20] ok, done (FS-156) --- src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java b/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java index b67211dd..5eebbb2d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/shop/Shop.java @@ -227,7 +227,7 @@ public class Shop extends FreedomService ItemStack itemStack = new ItemStack(Material.BLAZE_ROD); ItemMeta itemMeta = itemStack.getItemMeta(); assert itemMeta != null; - itemMeta.setDisplayName(FUtil.colorize("&bL&3i&bg&3h&bt&3i&bn&3g &b&bR&3o&bd")); + itemMeta.setDisplayName(FUtil.colorize("&bL&3i&bg&3h&bt&3n&bi&3n&bg &3R&bo&3d")); itemMeta.setLore(Arrays.asList(ChatColor.AQUA + "Strike others down with the power of lightning.", ChatColor.RED + ChatColor.ITALIC.toString() + "The classic way to exterminate annoyances.")); itemMeta.addEnchant(Enchantment.CHANNELING, 1, false); itemStack.setItemMeta(itemMeta); From f85f3e32ead584333c959d8f60ab04dc6aa63c72 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 26 Apr 2021 01:23:24 -0600 Subject: [PATCH 03/20] Fixes FS-137 --- .../me/totalfreedom/totalfreedommod/config/ConfigEntry.java | 1 + .../totalfreedommod/discord/DiscordToAdminChatListener.java | 5 +++++ .../totalfreedommod/discord/DiscordToMinecraftListener.java | 5 +++++ src/main/resources/config.yml | 2 ++ 4 files changed, 13 insertions(+) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index c6974ba8..eb557b1f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -83,6 +83,7 @@ public enum ConfigEntry DISCORD_NEW_ADMIN_ROLE_ID(String.class, "discord.admin_role_id"), DISCORD_SENIOR_ADMIN_ROLE_ID(String.class, "discord.senior_admin_role_id"), DISCORD_DEVELOPER_ROLE_ID(String.class, "discord.developer_role_id"), + DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID(String.class, "discord.assistant_executive_role_id"), DISCORD_EXECUTIVE_ROLE_ID(String.class, "discord.executive_role_id"), DISCORD_SERVER_OWNER_ROLE_ID(String.class, "discord.server_owner_role_id"), // diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java index 633b0e8f..4e0ff6fb 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToAdminChatListener.java @@ -119,6 +119,11 @@ public class DiscordToAdminChatListener extends ListenerAdapter { return Title.EXECUTIVE; } + // Assistant Executives + else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID.getString()))) + { + return Title.ASSTEXEC; + } // Senior Admins else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString()))) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java index 85a58d64..e0f26bff 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/discord/DiscordToMinecraftListener.java @@ -84,6 +84,11 @@ public class DiscordToMinecraftListener extends ListenerAdapter { return Title.EXECUTIVE.getColoredTag(); } + // Assistant Executives + else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID.getString()))) + { + return Title.ASSTEXEC.getColoredTag(); + } // Senior Admins else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString()))) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 027578fa..d157570f 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -78,6 +78,8 @@ discord: senior_admin_role_id: '' # Developer role ID developer_role_id: '' + # Assistant Executive role ID + assistant_executive_role_id: '' # Executive Admin role ID executive_role_id: '' # Owner role ID From c60b451ce7c99d0764289c3bc6f54fbf252a7b73 Mon Sep 17 00:00:00 2001 From: Elmon11 Date: Sun, 2 May 2021 14:03:48 +0200 Subject: [PATCH 04/20] grammar fix --- .../me/totalfreedom/totalfreedommod/command/Command_glow.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java index 62100467..ca77a8ce 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_glow.java @@ -26,7 +26,7 @@ public class Command_glow extends FreedomCommand playerSender.addPotionEffect(glow); glowing = true; } - msg("You " + (glowing ? "are now" : "no longer") + " glowing."); + msg("You are " + (glowing ? "now" : "no longer") + " glowing."); return true; } } From 879a524bb4e2dccd4e3651fba040a0dd46ccea31 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 3 May 2021 15:44:05 +0100 Subject: [PATCH 05/20] Remove a number of wipe commands we don't want anyway We shouldn't be wiping any of this data within the server now anyway so let's not tempt fate again. --- .../command/Command_wipecoreprotectdata.java | 37 ---------- .../command/Command_wipeflatlands.java | 53 -------------- .../command/Command_wipepunishments.java | 40 ---------- .../command/Command_wiperegions.java | 73 ------------------- .../command/Command_wipewarps.java | 34 --------- 5 files changed, 237 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipecoreprotectdata.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipeflatlands.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipepunishments.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_wiperegions.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipewarps.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipecoreprotectdata.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipecoreprotectdata.java deleted file mode 100644 index f89ff3cf..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipecoreprotectdata.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE) -@CommandParameters(description = "Wipes the CoreProtect data for the flatlands", usage = "/") -public class Command_wipecoreprotectdata extends FreedomCommand -{ - - @Override - public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.cpb.isEnabled()) - { - msg("CoreProtect is not enabled on this server"); - return true; - } - - FUtil.adminAction(sender.getName(), "Wiping CoreProtect data for the flatlands", true); - - new BukkitRunnable() - { - @Override - public void run() - { - plugin.cpb.clearDatabase(plugin.wm.flatlands.getWorld()); - } - }.runTaskAsynchronously(plugin); - - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipeflatlands.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipeflatlands.java deleted file mode 100644 index a0b71336..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipeflatlands.java +++ /dev/null @@ -1,53 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.ChatColor; -import org.bukkit.World; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) -@CommandParameters(description = "Wipe the flatlands map. Requires manual restart after command is used.", usage = "/") -public class Command_wipeflatlands extends FreedomCommand -{ - - @Override - public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - plugin.sf.setSavedFlag("do_wipe_flatlands", true); - - if (!ConfigEntry.FLATLANDS_GENERATE.getBoolean()) - { - msg("Flatlands generation is disabled, therefore it cannot be wiped."); - return true; - } - - FUtil.bcastMsg("Server is going offline for flatlands wipe.", ChatColor.GRAY); - - World flatlands = plugin.wm.flatlands.getWorld(); - - if (plugin.wgb.isEnabled()) - { - plugin.wgb.wipeRegions(flatlands); - } - - for (Player player : server.getOnlinePlayers()) - { - player.kickPlayer("Server is going offline for flatlands wipe, come back in a few minutes."); - } - - if (plugin.cpb.isEnabled()) - { - plugin.cpb.clearDatabase(flatlands, true); - } - else - { - server.shutdown(); - } - - return true; - } -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipepunishments.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipepunishments.java deleted file mode 100644 index f6d5c2ce..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipepunishments.java +++ /dev/null @@ -1,40 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) -@CommandParameters(description = "Wipes all logged punishments or punishments for a specific user.", usage = "/ ") -public class Command_wipepunishments extends FreedomCommand -{ - - @Override - public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - - if (args.length < 1) - { - return false; - } - - if (args[0].equalsIgnoreCase("-a")) - { - FUtil.adminAction(sender.getName(), "Wiping the punishment history", true); - - msg("Wiped " + plugin.pul.clear() + " punishments."); - } - else - { - String username = args[0]; - - FUtil.adminAction(sender.getName(), "Wiping the punishment history for " + username, true); - - msg("Wiped " + plugin.pul.clear(username) + " punishments for " + username + "."); - } - - return true; - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wiperegions.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wiperegions.java deleted file mode 100644 index 42ddf20c..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wiperegions.java +++ /dev/null @@ -1,73 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.ChatColor; -import org.bukkit.World; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE) -@CommandParameters(description = "Wipe all WorldGuard regions for a specified world.", usage = "/ ") -public class Command_wiperegions extends FreedomCommand -{ - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.wgb.isEnabled()) - { - msg("WorldGuard is not enabled."); - return true; - } - - if (args.length != 1) - { - return false; - } - - World world = server.getWorld(args[0]); - if (world == null) - { - msg("There is no world named \"" + args[0] + "\"", ChatColor.RED); - return true; - } - - int regionsWiped = plugin.wgb.wipeRegions(world); - - if (regionsWiped != 0) - { - FUtil.adminAction(sender.getName(), "Wiped all regions in " + world.getName(), true); - msg("Wiped " + regionsWiped + " regions in " + world.getName()); - } - else - { - msg(ChatColor.RED + "No regions were found in \"" + world.getName() + "\""); - } - return true; - } - - public List getAllWorldNames() - { - List names = new ArrayList<>(); - for (World world : server.getWorlds()) - { - names.add(world.getName()); - } - return names; - } - - @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (args.length == 1) - { - return getAllWorldNames(); - } - - return Collections.emptyList(); - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipewarps.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipewarps.java deleted file mode 100644 index b7003ea6..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wipewarps.java +++ /dev/null @@ -1,34 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import com.earth2me.essentials.Essentials; -import java.io.File; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) -@CommandParameters(description = "Removes all Essentials warps", usage = "/") -public class Command_wipewarps extends FreedomCommand -{ - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (!plugin.esb.isEnabled()) - { - msg("Essentials is not enabled on this server."); - return true; - } - - Essentials essentials = plugin.esb.getEssentialsPlugin(); - File warps = new File(essentials.getDataFolder(), "warps"); - FUtil.adminAction(sender.getName(), "Wiping Essentials warps", true); - FUtil.deleteFolder(warps); - //noinspection ResultOfMethodCallIgnored - warps.mkdir(); - essentials.reload(); - msg("All warps deleted."); - return true; - } -} From 6fb9507a4ca3928c596bd47307d5fdbffd8f6b66 Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 4 May 2021 06:31:55 -0600 Subject: [PATCH 06/20] Why overcomplicating things is a horrifically bad idea (#55) The longer I look into this plugin's code, the angrier I will become. This fixes 2 bugs in the /potion command: - Fixes non-admins being able to clear other players - Fixes NPE caused when trying to add potion effects to players who are not on the server as a non-admin. Both of these issues are caused by overcomplicating seemingly simple solutions, hence the name of this commit. Co-authored-by: Ryan Co-authored-by: Nathan Curran <30569566+Focusvity@users.noreply.github.com> --- .../totalfreedom/totalfreedommod/command/Command_potion.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java index f130d51a..0f30f24d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java @@ -65,7 +65,7 @@ public class Command_potion extends FreedomCommand Player target = playerSender; if (args.length == 2) { - if (!plugin.al.isAdmin(sender) && !target.equals(getPlayer(sender.getName()))) + if (!plugin.al.isAdmin(sender) && !args[1].equalsIgnoreCase(sender.getName())) { msg(ChatColor.RED + "Only admins can clear potion effects from other players."); return true; @@ -104,7 +104,7 @@ public class Command_potion extends FreedomCommand if (args.length == 5) { - if (!plugin.al.isAdmin(sender) && !getPlayer(args[4]).equals(getPlayer(sender.getName()))) + if (!plugin.al.isAdmin(sender) && !args[4].equalsIgnoreCase(sender.getName())) { msg("Only admins can apply potion effects to other players.", ChatColor.RED); return true; From 07b5076717a7d46b3001483e14d581c972d5b99c Mon Sep 17 00:00:00 2001 From: Video Date: Sun, 9 May 2021 09:42:31 -0600 Subject: [PATCH 07/20] Bug fixes, improvements, and removals (FS-192) (#46) * Three fixes * Fixes /tempban throwing a NullPointerException when trying to get a player who isn't on the server but was in the past * Fixes /tempban banning players for 24 hours regardless of the duration defined * Fixes /list -t throwing a NullPointerException when performed from a non-player source (such as Telnet) * Removes hubworld entriely * Configurable blacklists for tag, muted commands, and wildcard Changes: * Moves globally blocked commands to the `global` subsection of the original `blocked_commands` section. You *will* need to update your configurations * /wildcard's command blacklist is now configurable under the `wildcard` section in `blocked_commands`. * The commands muted players can't use are now configurable under the `muted` section in `blocked_commands`. * Removes some commented-out globally blocked command entries. Co-authored-by: Ryan --- .../totalfreedom/totalfreedommod/Muter.java | 5 +- .../totalfreedommod/TotalFreedomMod.java | 1 - .../bridge/WorldGuardBridge.java | 1 - .../command/Command_hubworld.java | 202 -------- .../totalfreedommod/command/Command_list.java | 2 +- .../totalfreedommod/command/Command_tag.java | 10 +- .../command/Command_tagnyan.java | 3 +- .../command/Command_tagrainbow.java | 3 +- .../command/Command_tempban.java | 69 ++- .../command/Command_wildcard.java | 12 +- .../totalfreedommod/config/ConfigEntry.java | 5 +- .../totalfreedommod/world/HubWorld.java | 102 ---- .../totalfreedommod/world/WorldManager.java | 12 - .../world/WorldRestrictions.java | 2 +- src/main/resources/config.yml | 440 ++++++++++-------- 15 files changed, 301 insertions(+), 568 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/world/HubWorld.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/Muter.java b/src/main/java/me/totalfreedom/totalfreedommod/Muter.java index c0416e16..c6b336ae 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/Muter.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/Muter.java @@ -1,13 +1,11 @@ package me.totalfreedom.totalfreedommod; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FSync; -import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.entity.Player; @@ -20,7 +18,6 @@ import org.bukkit.event.player.PlayerJoinEvent; public class Muter extends FreedomService { - public static final List MUTE_COMMANDS = Arrays.asList(StringUtils.split("say,me,msg,tell,reply,mail", ",")); public final List MUTED_PLAYERS = new ArrayList<>(); @Override @@ -88,7 +85,7 @@ public class Muter extends FreedomService cmdName = command.getName().toLowerCase(); } - if (MUTE_COMMANDS.contains(cmdName)) + if (ConfigEntry.MUTED_BLOCKED_COMMANDS.getStringList().contains(cmdName)) { player.sendMessage(ChatColor.RED + "That command is blocked while you are muted."); event.setCancelled(true); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java index fc4bf512..9804f730 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java @@ -127,7 +127,6 @@ public class TotalFreedomMod extends JavaPlugin public Sitter st; public VanishHandler vh; public Pterodactyl ptero; - //public HubWorldRestrictions hwr; // // Bridges public BukkitTelnetBridge btb; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java index 048f7ac3..6bc0ab9b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldGuardBridge.java @@ -15,7 +15,6 @@ public class WorldGuardBridge extends FreedomService @Override public void onStart() { - plugin.wr.protectWorld(plugin.wm.hubworld.getWorld()); plugin.wr.protectWorld(plugin.wm.masterBuilderWorld.getWorld()); } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java deleted file mode 100644 index cf6da0d0..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_hubworld.java +++ /dev/null @@ -1,202 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import io.papermc.lib.PaperLib; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.world.WorldTime; -import me.totalfreedom.totalfreedommod.world.WorldWeather; -import org.bukkit.World; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.OP, source = SourceType.BOTH) -@CommandParameters(description = "HubWorld management stuff", - usage = "/ [time | weather ]", - aliases = "hw,hub") -public class Command_hubworld extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - CommandMode commandMode = null; - - if (args.length == 0) - { - commandMode = CommandMode.TELEPORT; - } - else if (args.length >= 2) - { - if ("time".equalsIgnoreCase(args[0])) - { - commandMode = CommandMode.TIME; - } - else if ("weather".equalsIgnoreCase(args[0])) - { - commandMode = CommandMode.WEATHER; - } - } - - if (commandMode == null) - { - return false; - } - - try - { - switch (commandMode) - { - case TELEPORT: - { - if (!(sender instanceof Player) || playerSender == null) - { - return false; - } - - World hubWorld = null; - try - { - hubWorld = plugin.wm.hubworld.getWorld(); - } - catch (Exception ignored) - { - } - - if (hubWorld == null || playerSender.getWorld() == hubWorld) - { - msg("Going to the main world."); - PaperLib.teleportAsync(playerSender, server.getWorlds().get(0).getSpawnLocation()); - } - else - { - msg("Going to the hub world"); - plugin.wm.hubworld.sendToWorld(playerSender); - } - - break; - } - case TIME: - { - assertCommandPerms(sender, playerSender); - - if (args.length == 2) - { - WorldTime timeOfDay = WorldTime.getByAlias(args[1]); - if (timeOfDay != null) - { - plugin.wm.hubworld.setTimeOfDay(timeOfDay); - msg("Hub world time set to: " + timeOfDay.name()); - } - else - { - msg("Invalid time of day. Can be: sunrise, noon, sunset, midnight"); - } - } - else - { - return false; - } - - break; - } - case WEATHER: - { - assertCommandPerms(sender, playerSender); - - if (args.length == 2) - { - WorldWeather weatherMode = WorldWeather.getByAlias(args[1]); - if (weatherMode != null) - { - plugin.wm.hubworld.setWeatherMode(weatherMode); - msg("Hub world weather set to: " + weatherMode.name()); - } - else - { - msg("Invalid weather mode. Can be: off, rain, storm"); - } - } - else - { - return false; - } - - break; - } - default: - { - return false; - } - } - } - catch (PermissionDeniedException ex) - { - if (ex.getMessage().isEmpty()) - { - return noPerms(); - } - msg(ex.getMessage()); - return true; - } - - return true; - } - - @Override - public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) - { - if (!plugin.al.isAdmin(sender)) - { - return Collections.emptyList(); - } - if (args.length == 1) - { - return Arrays.asList("time", "weather"); - } - else if (args.length == 2) - { - if (args[0].equals("time")) - { - return Arrays.asList("morning", "noon", "evening", "night"); - } - else if (args[0].equals("weather")) - { - return Arrays.asList("off", "rain", "storm"); - } - } - return Collections.emptyList(); - } - - // TODO: Redo this properly - private void assertCommandPerms(CommandSender sender, Player playerSender) throws PermissionDeniedException - { - if (!(sender instanceof Player) || playerSender == null || !plugin.al.isAdmin(playerSender)) - { - throw new PermissionDeniedException(); - } - } - - private enum CommandMode - { - TELEPORT, TIME, WEATHER - } - - private static class PermissionDeniedException extends Exception - { - - private static final long serialVersionUID = 1L; - - private PermissionDeniedException() - { - super(""); - } - - private PermissionDeniedException(String string) - { - super(string); - } - } -} \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java index f3a0ad94..336bae57 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java @@ -88,7 +88,7 @@ public class Command_list extends FreedomCommand List n = new ArrayList<>(); - if (listFilter == ListFilter.TELNET_SESSIONS && plugin.al.isAdmin(sender) && plugin.al.getAdmin(playerSender).getRank().isAtLeast(Rank.ADMIN)) + if (listFilter == ListFilter.TELNET_SESSIONS && plugin.al.isAdmin(sender)) { List connectedAdmins = plugin.btb.getConnectedAdmins(); onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedAdmins.size()) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java index 02538518..6f6a1520 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java @@ -1,7 +1,8 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.Arrays; import java.util.List; + +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; @@ -19,9 +20,6 @@ import org.bukkit.entity.Player; public class Command_tag extends FreedomCommand { - public static final List FORBIDDEN_WORDS = Arrays.asList( - "admin", "owner", "moderator", "developer", "console", "dev", "staff", "mod", "sra", "tca", "sta", "sa"); - @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { @@ -170,7 +168,7 @@ public class Command_tag extends FreedomCommand if (!plugin.al.isAdmin(sender)) { - for (String word : FORBIDDEN_WORDS) + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { if (rawTag.contains(word)) { @@ -261,7 +259,7 @@ public class Command_tag extends FreedomCommand if (!plugin.al.isAdmin(sender)) { - for (String word : FORBIDDEN_WORDS) + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { if (rawTag.contains(word)) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java index a59d3447..f2618fd8 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagnyan.java @@ -1,5 +1,6 @@ package me.totalfreedom.totalfreedommod.command; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; @@ -43,7 +44,7 @@ public class Command_tagnyan extends FreedomCommand if (!plugin.al.isAdmin(sender)) { - for (String word : Command_tag.FORBIDDEN_WORDS) + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { if (rawTag.contains(word)) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java index fb4afa1f..3795a8c6 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tagrainbow.java @@ -1,5 +1,6 @@ package me.totalfreedom.totalfreedommod.command; +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.StringUtils; @@ -33,7 +34,7 @@ public class Command_tagrainbow extends FreedomCommand return true; } - for (String word : Command_tag.FORBIDDEN_WORDS) + for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList()) { if (rawTag.contains(word)) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java index 3e8d2780..dfc412ce 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java @@ -13,6 +13,8 @@ import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -44,6 +46,9 @@ public class Command_tempban extends FreedomCommand } } + final String username; + final List ips = new ArrayList<>(); + final Player player = getPlayer(args[0]); final PlayerData entry; if (player == null) @@ -55,15 +60,18 @@ public class Command_tempban extends FreedomCommand msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); return true; } + + username = entry.getName(); + ips.addAll(entry.getIps()); } else { entry = plugin.pl.getData(player); + username = player.getName(); + ips.add(FUtil.getIp(player)); } - final List ips = new ArrayList<>(entry.getIps()); - assert player != null; - final StringBuilder message = new StringBuilder("Temporarily banned " + player.getName()); + final StringBuilder message = new StringBuilder("Temporarily banned " + username); Date expires = FUtil.parseDateOffset("30m"); message.append(" until ").append(date_format.format(expires)); @@ -80,16 +88,36 @@ public class Command_tempban extends FreedomCommand message.append(", Reason: \"").append(reason).append("\""); } + Ban ban; + + if (player != null) + { + ban = Ban.forPlayer(player, sender, expires, reason); + } + else + { + ban = Ban.forPlayerName(username, sender, expires, reason); + } + + for (String ip : ips) + { + ban.addIp(ip); + } + plugin.bm.addBan(ban); + if (!quiet) { - // Strike with lightning - final Location targetPos = player.getLocation(); - for (int x = -1; x <= 1; x++) + if (player != null) { - for (int z = -1; z <= 1; z++) + // Strike with lightning + final Location targetPos = player.getLocation(); + for (int x = -1; x <= 1; x++) { - final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); - Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos); + for (int z = -1; z <= 1; z++) + { + final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); + Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos); + } } } @@ -97,21 +125,22 @@ public class Command_tempban extends FreedomCommand } else { - msg("Quietly temporarily banned " + player.getName() + "."); + msg("Quietly temporarily banned " + username + "."); } - - Ban ban; - - ban = Ban.forPlayer(player, sender, null, reason); - - for (String ip : ips) + if (player != null) { - ban.addIp(ip); + player.kickPlayer(ban.bakeKickMessage()); + for (Player p : Bukkit.getOnlinePlayers()) + { + if (FUtil.getIp(p).equals(FUtil.getIp(player))) + { + p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned."); + } + } } - plugin.bm.addBan(ban); - player.kickPlayer(ban.bakeKickMessage()); - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.TEMPBAN, reason)); + + plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.TEMPBAN, reason)); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java index a796b620..a4d74e4c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_wildcard.java @@ -3,6 +3,8 @@ package me.totalfreedom.totalfreedommod.command; import java.util.ArrayList; import java.util.Arrays; import java.util.List; + +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.rank.Rank; import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; @@ -15,14 +17,6 @@ import org.bukkit.entity.Player; public class Command_wildcard extends FreedomCommand { - public static final List BLOCKED_COMMANDS = Arrays.asList( - "wildcard", - "gtfo", - "doom", - "slconfig", - "smite" - ); - @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { @@ -52,7 +46,7 @@ public class Command_wildcard extends FreedomCommand aliases = Arrays.asList(fCmd.getAliases().split(",")); } - for (String blockedCommand : BLOCKED_COMMANDS) + for (String blockedCommand : ConfigEntry.WILDCARD_BLOCKED_COMMANDS.getStringList()) { if (blockedCommand.equals(args[0].toLowerCase()) || aliases.contains(blockedCommand)) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index eb557b1f..05051905 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -155,7 +155,10 @@ public enum ConfigEntry EXPLOSIVE_RADIUS(Double.class, "explosive_radius"), FREECAM_TRIGGER_COUNT(Integer.class, "freecam_trigger_count"), SERVICE_CHECKER_URL(String.class, "service_checker_url"), - BLOCKED_COMMANDS(List.class, "blocked_commands"), + BLOCKED_COMMANDS(List.class, "blocked_commands.global"), + MUTED_BLOCKED_COMMANDS(List.class, "blocked_commands.muted"), + WILDCARD_BLOCKED_COMMANDS(List.class, "blocked_commands.wildcard"), + FORBIDDEN_WORDS(List.class, "forbidden_words"), HOST_SENDER_NAMES(List.class, "host_sender_names"), FAMOUS_PLAYERS(List.class, "famous_players"), ADMIN_ONLY_MODE(Boolean.class, "admin_only_mode"), diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/HubWorld.java b/src/main/java/me/totalfreedom/totalfreedommod/world/HubWorld.java deleted file mode 100644 index 241c6d81..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/HubWorld.java +++ /dev/null @@ -1,102 +0,0 @@ -package me.totalfreedom.totalfreedommod.world; - -import me.totalfreedom.totalfreedommod.config.ConfigEntry; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.WorldCreator; -import org.bukkit.WorldType; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.entity.Player; - -public final class HubWorld extends CustomWorld -{ - - private static final String GENERATION_PARAMETERS = ConfigEntry.FLATLANDS_GENERATE_PARAMS.getString(); - // - private WorldWeather weather = WorldWeather.OFF; - private WorldTime time = WorldTime.INHERIT; - - public HubWorld() - { - super("hubworld"); - } - - @Override - public void sendToWorld(Player player) - { - super.sendToWorld(player); - } - - // TODO: Replace instances of org.bukkit.Sign with a non deprecated version. This might include more boilerplate. - @SuppressWarnings("deprecation") - @Override - protected World generateWorld() - { - final WorldCreator worldCreator = new WorldCreator(getName()); - worldCreator.generateStructures(false); - worldCreator.type(WorldType.NORMAL); - worldCreator.environment(World.Environment.NORMAL); - worldCreator.generator(new CleanroomChunkGenerator(GENERATION_PARAMETERS)); - - final World world = server.createWorld(worldCreator); - - assert world != null; - world.setSpawnFlags(false, false); - world.setSpawnLocation(0, 50, 0); - - final Block welcomeSignBlock = world.getBlockAt(0, 50, 0); - welcomeSignBlock.setType(Material.OAK_SIGN); - org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign)welcomeSignBlock.getState(); - - org.bukkit.material.Sign signData = (org.bukkit.material.Sign)welcomeSign.getData(); - signData.setFacingDirection(BlockFace.NORTH); - - welcomeSign.setLine(0, ChatColor.GREEN + "Hub World"); - welcomeSign.setLine(1, ChatColor.DARK_GRAY + "---"); - welcomeSign.setLine(2, ChatColor.YELLOW + "Spawn Point"); - welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---"); - welcomeSign.update(); - - plugin.gr.commitGameRules(); - return world; - } - - public WorldWeather getWeatherMode() - { - return weather; - } - - public void setWeatherMode(final WorldWeather weatherMode) - { - this.weather = weatherMode; - - try - { - weatherMode.setWorldToWeather(getWorld()); - } - catch (Exception ignored) - { - } - } - - public WorldTime getTimeOfDay() - { - return time; - } - - public void setTimeOfDay(final WorldTime timeOfDay) - { - this.time = timeOfDay; - - try - { - timeOfDay.setWorldToTime(getWorld()); - } - catch (Exception ignored) - { - } - } - -} diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java index a88dec0a..579da910 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldManager.java @@ -20,14 +20,12 @@ public class WorldManager extends FreedomService public Flatlands flatlands; public AdminWorld adminworld; public MasterBuilderWorld masterBuilderWorld; - public HubWorld hubworld; public WorldManager() { this.flatlands = new Flatlands(); this.adminworld = new AdminWorld(); this.masterBuilderWorld = new MasterBuilderWorld(); - this.hubworld = new HubWorld(); } @Override @@ -36,7 +34,6 @@ public class WorldManager extends FreedomService flatlands.getWorld(); adminworld.getWorld(); masterBuilderWorld.getWorld(); - hubworld.getWorld(); // Disable weather if (ConfigEntry.DISABLE_WEATHER.getBoolean()) @@ -57,7 +54,6 @@ public class WorldManager extends FreedomService flatlands.getWorld().save(); adminworld.getWorld().save(); masterBuilderWorld.getWorld().save(); - hubworld.getWorld().save(); } @EventHandler(priority = EventPriority.HIGH) @@ -73,10 +69,6 @@ public class WorldManager extends FreedomService { return; } - else if (event.getWorld().equals(hubworld.getWorld()) && hubworld.getWeatherMode() != WorldWeather.OFF) - { - return; - } } catch (Exception ignored) { @@ -101,10 +93,6 @@ public class WorldManager extends FreedomService { return; } - else if (event.getWorld().equals(hubworld.getWorld()) && hubworld.getWeatherMode() != WorldWeather.OFF) - { - return; - } } catch (Exception ignored) { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java index f1869635..4aef7377 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/world/WorldRestrictions.java @@ -54,7 +54,7 @@ public class WorldRestrictions extends FreedomService { if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getName())) { - if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld()) || player.getWorld().equals(plugin.wm.hubworld.getWorld())) + if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld())) { return true; } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d157570f..065239bd 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -230,214 +230,242 @@ allow: auto_clear: false gravity: false -# Blocked commands: -# -# How blocked commands work: -# All sections described below are delimited by colon characters. -# Make sure that you block a command by its main command name, not an alias -# as all aliases are blocked by default. Commands are case-insensitive. -# -# * The first section is a letter which indicates which rank may use this command -# Valid ranks: -# n - Nobody (Completely disabled) -# a - Admins (Console) -# s - Senior Admins (Console) -# o - Ops (Non-Ops won't be able to use it) -# -# * The second section is a letter which indicates what to do when a player executes that command. -# Valid actions: -# b - Block the command -# a - Block the command and auto-eject that player (for ops and below) -# u - Block the command and Return an "Unknown command" message (Used to hide commands) -# -# * The third section is the command to be blocked, prefixed with a slash -# -# * The fourth section is the message to send to the player when executing that command. -# This should be omitted if unwanted. ChatColors are supported with the &-key. By default -# the starting ChatColor is set to gray. You can use the default 'That command is blocked.' message -# by using a single underscore. -# -# Examples: -# - 'n:b:/mail sendall:&4You can't send mails to everyone!' -# - 's:a:/stop' -# - 'n:b:/ban:_' -# blocked_commands: - # Core Protect Blocked and shows as an unknown command... - - 'a:u:/co:_' - - 'n:u:/co purge:_' - - 'a:u:/coreprotect:_' - - 'n:u:/coreprotect purge:_' - - 'a:u:/core:_' - - 'n:u:/core purge:_' - # Disabled commands - - 'n:b:/essentials:_' - - 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.' - - 'n:b:/disguiseradius:_' - - 'n:b:/undisguiseradius:_' - - 'n:b:/debug:_' - - 'n:b:/pardon:_' - - 'n:b:/ban-ip:_' - - 'n:b:/pardon-ip:_' - - 'n:b:/toggledownfall:_' - - 'n:b:/spreadplayers:_' - - 'n:b:/blockdata:_' - - 'n:b:/clearhistory:_' - - 'n:b:/save-on:_' - - 'n:b:/save-off:_' - - 'n:b:/packet:_' - - 'n:b://eval:_' - - 'n:b:/testvote:_' - - 'n:b:/nvreload:_' - - 'n:b:/bungeeguard:_' - - 'n:b:/buycraft:_' - - 'n:b:/spigot reload:_' -# - 'n:b:/setjail:_' - - 'n:b:/mail sendall:Sending mail to all players is not allowed.' - - 'n:b:/entitydata:_' - - 'n:b:/skins:_' - - 'n:b:/advancement:_' - - 'n:b:/worldborder:The worldborder does not need to be changed. This command is disabled.' - - 'n:b:/defaultgamemode:The default gamemode should not be changed.' - - 'n:b:/thread:_' - - 'n:b:/stacktrace:_' - - 'n:b:/function:_' - - 'n:b:/forceload:_' - - 'n:b:/fill:_' - - 'n:b:/paper:_' - - 'n:b:/locate:_' - - 'n:b:/vvbukkit:_' - - 'n:b:/plot area c:_' - - 'n:b:/d minecart_command:_' - - 'n:b:/loot:_' - - 'n:b:/plan:_' -# - 'n:b:/explosivearrows:&cDisabled until further notice' - - 'n:b://material:_' - - 'n:b://mat:_' - - 'n:b:/mat:_' - - 'n:b:/vpnguard:_' - - 'n:b:/pcapi:_' - - 'n:b://distr:&cNope.' - - 'n:b:/data:_' - - 'n:b:/datapack:_' - - 'n:b://regen:_' - - 'n:b:/onlinemode:&cThis breaks UUIDs.' - - 'n:b:/execute:_' - - 'n:b:/killall:_' - - 'n:b:/createdisguise:_' - - 'n:b:/attribute:_' + # + # How globally blocked commands work: + # All sections described below are delimited by colon characters. + # Make sure that you block a command by its main command name, not an alias + # as all aliases are blocked by default. Commands are case-insensitive. + # + # * The first section is a letter which indicates which rank may use this command + # Valid ranks: + # n - Nobody (Completely disabled) + # a - Admins (Console) + # s - Senior Admins (Console) + # o - Ops (Non-Ops won't be able to use it) + # + # * The second section is a letter which indicates what to do when a player executes that command. + # Valid actions: + # b - Block the command + # a - Block the command and auto-eject that player (for ops and below) + # u - Block the command and Return an "Unknown command" message (Used to hide commands) + # + # * The third section is the command to be blocked, prefixed with a slash + # + # * The fourth section is the message to send to the player when executing that command. + # This should be omitted if unwanted. ChatColors are supported with the &-key. By default + # the starting ChatColor is set to gray. You can use the default 'That command is blocked.' message + # by using a single underscore. + # + # Examples: + # - 'n:b:/mail sendall:&4You can't send mails to everyone!' + # - 's:a:/stop' + # - 'n:b:/ban:_' + # + global: + # CoreProtect Blocked and shows as an unknown command... + - 'a:u:/co:_' + - 'n:u:/co purge:_' + - 'a:u:/coreprotect:_' + - 'n:u:/coreprotect purge:_' + - 'a:u:/core:_' + - 'n:u:/core purge:_' - # Admin commands - - 'a:b:/vive:_' - - 'a:b:/vse:_' - - 'a:b:/lightning:_' - - 'a:b:/playsound:_' - - 'a:b:/locatebiome:_' - - 'a:b:/delchunks:_' - - 'a:b:/exploitfixer:_' - - 'a:b:/massivelag:_' - - 'a:b:/ml:_' - - 'a:b:/createkit:_' - - 'a:b:/delkit:_' - - 'a:b:/region:_' - - 'a:b:/clone:_' - - 'a:b:/cap:_' - - 'a:b:/gamemode:Use /gmc and /gms to set your gamemode.' - - 'a:b:/powernbt:_' - - 'a:b:/nbt.:_' - - 'a:b:/blockshub:_' - - 'a:b:/protocol:_' - - 'a:b:/libsdisguises reload:_' - - 'a:b://awe:_' - - 'a:b:/stopfire:_' - - 'a:b:/allowfire' - - 'a:b:/stoplag:_' - - 'a:b:/worldguard:_' - - 'a:b:/slay:_' - - 'a:b:/save-all:_' - - 'a:b:/libsdisguises:_' - - 'a:b:/particle:Due to security reasons, the use of /particle has been disabled.' - - 'a:b:/rainbowclear:_' - - 'a:b:/rainbowspeed:_' - - 'a:b:/kick:_' - - 'a:b:/difficulty:_' - - 'a:b:/captchafy:_' - - 'a:b:/socialspy:_' - - 'a:b:/sproxy:_' - - 'a:b:/replaceitem:_' - - 'a:b:/kill:_' - - 'a:b:/reaction:_' - - 'a:b:/setworldspawn:_' - - 'a:b:/scoreboard:_' - - 'a:b:/setspawn:_' - - 'a:b:/forestgen:_' - - 'a:b:/setidletimeout:_' - - 'a:b:/lrbuild:_' - - 'a:b:/size:_' - - 'a:b:/break:_' - - 'a:b:/disentity:_' - - 'a:b:/reload:_' - - 'a:b:/title:_' - - 'a:b:/weather:_' - - 'a:b:/tpall:_' - - 'a:b:/etpall:_' - - 'a:b:/setblock:_' - - 'a:b:/gamerule:_' - - 'a:b:/togglejail:_' - - 'a:b:/range:_' - - 'a:b:/stop:_' - - 'a:b:/restart:_' - - 'a:b:/sr:_' - - 'a:b:/tpo:_' - - 'a:b:/tpohere:_' - - 'a:b:/tphere:_' - - 'a:b:/rfchairs:_' - - 'a:b:/ppo:_' - - 'a:b:/vulnerabilitypatcher:_' - - 'a:b:/crackshot config:_' - - 'a:b:/marry reload:_' - - 'a:b:/bh:_' - - 'a:b:/tpaall:_' - - 'a:b:/paper heap:_' - - 'a:u:/burn:_' - - 'a:b:/summon:_' - - 'a:b:/discord:_' - - 'a:b:/bossbar:_' - - 'a:b:/team:_' - - 'a:b:/spawner:_' -# - 'a:b:/getpos:_' - - 's:b:/istack:_' - - 'a:b:/getloc:_' - - 'a:b:/holo:_' - - 'a:b:/hd:_' - - 'a:b:/hologram:_' - - 'a:b:/holograms:_' -# - 'a:b:/whois:&cpeople like aurulim ruined the usage of this command, stop tp bypassing' # Blocking this is ridiculous. Instead of being lazy and just blocking whois, how about you disable the part where it reveals people's coords, like you did with disabling IPs? - - 's:b:/awe toggle:_' - - 's:b:/tellraw:_' - - 's:b://awe toggle:_' - - 'a:b:/openinv:_' - - 'a:b:/oi:_' - - 'a:b:/open:_' - - 'a:b:/openender:_' - - 'a:b:/oe:_' - - 'a:b:/searchinv:_' - - 'a:b:/si:_' - - 'a:b:/searchender:_' - - 'a:b:/se:_' - - 'a:b:/searchenchant:_' - - 'a:b:/searchenchants:_' - - 'a:b:/anycontainer:_' - - 'a:b:/anychest:_' - - 'a:b:/sc:_' - - 'a:b:/fawe:_' - - 'a:b:/wea:_' - - 'a:b:/protocolsupport:_' - - 'a:b:/ps:_' - - 'n:b:/wra:_' - - 's:b:/viaver:_' - - 's:b:/viaversion:_' - - 's:b:/spark:_' + # Disabled commands + - 'n:b:/essentials:_' + - 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.' + - 'n:b:/disguiseradius:_' + - 'n:b:/undisguiseradius:_' + - 'n:b:/debug:_' + - 'n:b:/pardon:_' + - 'n:b:/ban-ip:_' + - 'n:b:/pardon-ip:_' + - 'n:b:/toggledownfall:_' + - 'n:b:/spreadplayers:_' + - 'n:b:/blockdata:_' + - 'n:b:/clearhistory:_' + - 'n:b:/save-on:_' + - 'n:b:/save-off:_' + - 'n:b:/packet:_' + - 'n:b://eval:_' + - 'n:b:/testvote:_' + - 'n:b:/nvreload:_' + - 'n:b:/bungeeguard:_' + - 'n:b:/buycraft:_' + - 'n:b:/spigot reload:_' + - 'n:b:/mail sendall:Sending mail to all players is not allowed.' + - 'n:b:/entitydata:_' + - 'n:b:/skins:_' + - 'n:b:/advancement:_' + - 'n:b:/worldborder:The worldborder does not need to be changed. This command is disabled.' + - 'n:b:/defaultgamemode:The default gamemode should not be changed.' + - 'n:b:/thread:_' + - 'n:b:/stacktrace:_' + - 'n:b:/function:_' + - 'n:b:/forceload:_' + - 'n:b:/fill:_' + - 'n:b:/paper:_' + - 'n:b:/locate:_' + - 'n:b:/vvbukkit:_' + - 'n:b:/plot area c:_' + - 'n:b:/d minecart_command:_' + - 'n:b:/loot:_' + - 'n:b:/plan:_' + - 'n:b://material:_' + - 'n:b://mat:_' + - 'n:b:/mat:_' + - 'n:b:/vpnguard:_' + - 'n:b:/pcapi:_' + - 'n:b://distr:&cNope.' + - 'n:b:/data:_' + - 'n:b:/datapack:_' + - 'n:b://regen:_' + - 'n:b:/execute:_' + - 'n:b:/killall:_' + - 'n:b:/createdisguise:_' + - 'n:b:/attribute:_' + + # Admin commands + - 'a:b:/vive:_' + - 'a:b:/vse:_' + - 'a:b:/lightning:_' + - 'a:b:/playsound:_' + - 'a:b:/locatebiome:_' + - 'a:b:/delchunks:_' + - 'a:b:/exploitfixer:_' + - 'a:b:/massivelag:_' + - 'a:b:/ml:_' + - 'a:b:/createkit:_' + - 'a:b:/delkit:_' + - 'a:b:/region:_' + - 'a:b:/clone:_' + - 'a:b:/cap:_' + - 'a:b:/gamemode:Use /gmc and /gms to set your gamemode.' + - 'a:b:/powernbt:_' + - 'a:b:/nbt.:_' + - 'a:b:/blockshub:_' + - 'a:b:/protocol:_' + - 'a:b:/libsdisguises reload:_' + - 'a:b://awe:_' + - 'a:b:/stopfire:_' + - 'a:b:/allowfire' + - 'a:b:/stoplag:_' + - 'a:b:/worldguard:_' + - 'a:b:/slay:_' + - 'a:b:/save-all:_' + - 'a:b:/libsdisguises:_' + - 'a:b:/particle:Due to security reasons, the use of /particle has been disabled.' + - 'a:b:/rainbowclear:_' + - 'a:b:/rainbowspeed:_' + - 'a:b:/kick:_' + - 'a:b:/difficulty:_' + - 'a:b:/captchafy:_' + - 'a:b:/socialspy:_' + - 'a:b:/sproxy:_' + - 'a:b:/replaceitem:_' + - 'a:b:/kill:_' + - 'a:b:/reaction:_' + - 'a:b:/setworldspawn:_' + - 'a:b:/scoreboard:_' + - 'a:b:/setspawn:_' + - 'a:b:/forestgen:_' + - 'a:b:/setidletimeout:_' + - 'a:b:/lrbuild:_' + - 'a:b:/size:_' + - 'a:b:/break:_' + - 'a:b:/disentity:_' + - 'a:b:/reload:_' + - 'a:b:/title:_' + - 'a:b:/weather:_' + - 'a:b:/tpall:_' + - 'a:b:/etpall:_' + - 'a:b:/setblock:_' + - 'a:b:/gamerule:_' + - 'a:b:/togglejail:_' + - 'a:b:/range:_' + - 'a:b:/stop:_' + - 'a:b:/restart:_' + - 'a:b:/sr:_' + - 'a:b:/tpo:_' + - 'a:b:/tpohere:_' + - 'a:b:/tphere:_' + - 'a:b:/rfchairs:_' + - 'a:b:/ppo:_' + - 'a:b:/vulnerabilitypatcher:_' + - 'a:b:/crackshot config:_' + - 'a:b:/marry reload:_' + - 'a:b:/bh:_' + - 'a:b:/tpaall:_' + - 'a:b:/paper heap:_' + - 'a:u:/burn:_' + - 'a:b:/summon:_' + - 'a:b:/discord:_' + - 'a:b:/bossbar:_' + - 'a:b:/team:_' + - 'a:b:/spawner:_' + - 's:b:/istack:_' + - 'a:b:/getloc:_' + - 'a:b:/holo:_' + - 'a:b:/hd:_' + - 'a:b:/hologram:_' + - 'a:b:/holograms:_' + - 's:b:/awe toggle:_' + - 's:b:/tellraw:_' + - 's:b://awe toggle:_' + - 'a:b:/openinv:_' + - 'a:b:/oi:_' + - 'a:b:/open:_' + - 'a:b:/openender:_' + - 'a:b:/oe:_' + - 'a:b:/searchinv:_' + - 'a:b:/si:_' + - 'a:b:/searchender:_' + - 'a:b:/se:_' + - 'a:b:/searchenchant:_' + - 'a:b:/searchenchants:_' + - 'a:b:/anycontainer:_' + - 'a:b:/anychest:_' + - 'a:b:/sc:_' + - 'a:b:/fawe:_' + - 'a:b:/wea:_' + - 'a:b:/protocolsupport:_' + - 'a:b:/ps:_' + - 'n:b:/wra:_' + - 's:b:/viaver:_' + - 's:b:/viaversion:_' + - 's:b:/spark:_' + + # Commands that cannot be used by muted players + muted: + - say + - me + - msg + - tell + - reply + - mail + + # Commands that cannot be used with /wildcard + wildcard: + - wildcard + - gtfo + - doom + - slconfig + - smite + +# Words that cannot be used in tags +forbidden_words: + - admin + - owner + - moderator + - developer + - console + - dev + - staff + - mod + - sra + - tca + - sta + - sa # Automatically wipe dropped objects auto_wipe: true From 8d1e8dcf05a6116644afc77dce3869303b2a896d Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 16 May 2021 15:27:12 +0100 Subject: [PATCH 08/20] Switched from -c to -ci (#63) Resolves FS-219 --- .../totalfreedom/totalfreedommod/command/Command_smite.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java index b10bf92c..92b73d0d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_smite.java @@ -15,7 +15,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/ [reason] [-c | -q]") +@CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/ [reason] [-ci | -q]") public class Command_smite extends FreedomCommand { @@ -106,9 +106,9 @@ public class Command_smite extends FreedomCommand reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " "); } } - else if (args[args.length - 1].equalsIgnoreCase("-c")) + else if (args[args.length - 1].equalsIgnoreCase("-ci")) { - if (args[args.length - 1].equalsIgnoreCase("-c")) + if (args[args.length - 1].equalsIgnoreCase("-ci")) { clearinv = true; } From 659050454511893e9cadcfb0efc75f59c4fa4a9f Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Mon, 17 May 2021 15:50:09 +1000 Subject: [PATCH 09/20] Added new dependency to allow TFM to compile (#65) --- pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 178ce56b..acc156df 100644 --- a/pom.xml +++ b/pom.xml @@ -277,6 +277,11 @@ 5.4.2 compile + + org.eclipse.sisu + org.eclipse.sisu.inject + 0.3.4 + @@ -434,7 +439,8 @@ io.papermc.lib - me.totalfreedom.totalfreedommod.paperlib + me.totalfreedom.totalfreedommod.paperlib + org.bstats From de9556c550a49c04b9640cd7fcf321e59fdb27e9 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Mon, 17 May 2021 20:31:34 +1000 Subject: [PATCH 10/20] Name change for Fleek (#64) --- src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 02d4bfc7..195384db 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -73,10 +73,10 @@ public class FUtil "38ea7c82-7bdc-4f48-b7fd-0e93fc26813d", // AwesomePinch "ba5aafba-9012-418f-9819-a7020d591068", // TFTWPhoenix "d6dd9740-40db-45f5-ab16-4ee16a633009", // Abhi - "2e06e049-24c8-42e4-8bcf-d35372af31e6", // unsuperiordev + "2e06e049-24c8-42e4-8bcf-d35372af31e6", // NotInSync "f97c0d7b-6413-4558-a409-88f09a8f9adb" // videogamesm12 ); - public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix","abhithedev", "unsuperiordev", "videogamesm12"); + public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix","abhithedev", "NotInSync", "videogamesm12"); public static final Map CHAT_COLOR_NAMES = new HashMap<>(); public static final List CHAT_COLOR_POOL = Arrays.asList( ChatColor.DARK_RED, From b72782de4f9942fd52981d275cec410f76bdaa24 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 21 May 2021 22:44:51 +0100 Subject: [PATCH 11/20] Add //g to blocked commands (#62) Co-authored-by: Nathan Curran <30569566+Focusvity@users.noreply.github.com> --- src/main/resources/config.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 065239bd..3780220d 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -35,7 +35,7 @@ server: # All players who show up as executive executives: [ ] - + # All players who show up as assistant executive assistant_executives: [] @@ -434,6 +434,7 @@ blocked_commands: - 's:b:/viaver:_' - 's:b:/viaversion:_' - 's:b:/spark:_' + - 's:b://g:_' # Commands that cannot be used by muted players muted: @@ -567,7 +568,7 @@ admininfo: - ' &6- Report those breaking the rules' - ' &2- And apply on our forums at the link:' - '&9https://forum.totalfreedom.me/d/45-admin-application-template' - + # What to display in the vote command. votinginfo: - '&bVoting Links:' From 5e63b71861716e4264c852aca75c7c9cde1ba1f8 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 23 May 2021 00:06:34 +1000 Subject: [PATCH 12/20] Small modification to new TFGuilds (FS-255) (#67) --- pom.xml | 4 ++-- .../totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index acc156df..cfeb5851 100644 --- a/pom.xml +++ b/pom.xml @@ -252,9 +252,9 @@ - com.github.TotalFreedomMC + com.github.AtlasMediaGroup TFGuilds - db036fb187 + master-SNAPSHOT provided diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java index fea8ad88..e315b15c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/TFGuildsBridge.java @@ -53,6 +53,6 @@ public class TFGuildsBridge extends FreedomService { return false; } - return Common.IN_GUILD_CHAT.contains(player); + return Common.GUILD_CHAT.contains(player); } } \ No newline at end of file From 63069ff9ec30d37148e6a1e6b280f302ab555977 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 23 May 2021 00:40:55 +1000 Subject: [PATCH 13/20] Calculate the player count without offline players (FS-247) (#68) Co-authored-by: Ryan --- .../totalfreedommod/command/Command_list.java | 3 +-- .../totalfreedommod/httpd/module/Module_list.java | 4 +--- .../me/totalfreedom/totalfreedommod/util/FUtil.java | 13 +++++++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java index 336bae57..996ac302 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_list.java @@ -101,8 +101,7 @@ public class Command_list extends FreedomCommand } else { - int count = server.getOnlinePlayers().size() - AdminList.vanished.size(); - onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(count < 0 ? 0 : count) + onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(FUtil.getFakePlayerCount()) .append(ChatColor.BLUE) .append(" out of a maximum ") .append(ChatColor.RED) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java index ef40114c..8ee00487 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java @@ -88,8 +88,6 @@ public class Module_list extends HTTPDModule } } - int count = server.getOnlinePlayers().size() - AdminList.vanished.size(); - // for future refernce - any multi-worded ranks are to be delimited by underscores in the json; eg. senior_admins responseObject.put("owners", owners); responseObject.put("executives", executives); @@ -99,7 +97,7 @@ public class Module_list extends HTTPDModule responseObject.put("master_builders", masterbuilders); responseObject.put("operators", operators); responseObject.put("imposters", imposters); - responseObject.put("online", count < 0 ? 0 : count); + responseObject.put("online", FUtil.getFakePlayerCount()); responseObject.put("max", server.getMaxPlayers()); final NanoHTTPD.Response response = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_JSON, responseObject.toString()); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 195384db..5afb206a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -838,6 +838,19 @@ public class FUtil }.runTaskLater(TotalFreedomMod.getPlugin(), delay); } + public static int getFakePlayerCount() + { + int i = TotalFreedomMod.getPlugin().al.vanished.size(); + for (String name : TotalFreedomMod.getPlugin().al.vanished) + { + if (Bukkit.getPlayer(name) == null) + { + i--; + } + } + return getServer().getOnlinePlayers().size() - i; + } + public static class PaginationList extends ArrayList { private final int epp; From ff760a6c119a6e929870195d0310dd5e505404ab Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Tue, 25 May 2021 21:45:53 +1000 Subject: [PATCH 14/20] Use long instead of int and use offset to check time (FS-181) (#69) * Use long instead of int and use offset to check time (FS-181) * Remove star import --- .../totalfreedommod/BackupManager.java | 17 +++-- .../totalfreedommod/util/FUtil.java | 75 +++++++++---------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java b/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java index e70bbf36..d5f2b8e2 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/BackupManager.java @@ -1,6 +1,5 @@ package me.totalfreedom.totalfreedommod; -import java.io.File; import me.totalfreedom.totalfreedommod.banning.IndefiniteBanList; import me.totalfreedom.totalfreedommod.config.YamlConfig; import me.totalfreedom.totalfreedommod.permissions.PermissionConfig; @@ -9,8 +8,11 @@ import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.util.FileUtil; +import java.io.File; + public class BackupManager extends FreedomService { + @Override public void onStart() { @@ -42,16 +44,16 @@ public class BackupManager extends FreedomService config.load(); // Weekly - if (!config.isInt(save + ".weekly")) + if (!config.isLong(save + ".weekly")) { performBackup(file, "weekly"); config.set(save + ".weekly", FUtil.getUnixTime()); } else { - int lastBackupWeekly = config.getInt(save + ".weekly"); + long lastBackupWeekly = config.getLong(save + ".weekly"); - if (lastBackupWeekly + 3600 * 24 * 7 < FUtil.getUnixTime()) + if (FUtil.parseLongOffset(lastBackupWeekly, "1w") < FUtil.getUnixTime()) { performBackup(file, "weekly"); config.set(save + ".weekly", FUtil.getUnixTime()); @@ -65,16 +67,16 @@ public class BackupManager extends FreedomService } // Daily - if (!config.isInt(save + ".daily")) + if (!config.isLong(save + ".daily")) { performBackup(file, "daily"); config.set(save + ".daily", FUtil.getUnixTime()); } else { - int lastBackupDaily = config.getInt(save + ".daily"); + long lastBackupDaily = config.getLong(save + ".daily"); - if (lastBackupDaily + 3600 * 24 < FUtil.getUnixTime()) + if (FUtil.parseLongOffset(lastBackupDaily, "1d") < FUtil.getUnixTime()) { performBackup(file, "daily"); config.set(save + ".daily", FUtil.getUnixTime()); @@ -98,5 +100,4 @@ public class BackupManager extends FreedomService final File newYaml = new File(backupFolder, file + "." + type + ".bak"); FileUtil.copy(oldYaml, newYaml); } - } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java index 5afb206a..a269a296 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -1,33 +1,5 @@ package me.totalfreedom.totalfreedommod.util; -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.lang.reflect.Field; -import java.net.HttpURLConnection; -import java.net.URL; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.Instant; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.SplittableRandom; -import java.util.TimeZone; -import java.util.UUID; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import org.apache.commons.io.FileUtils; @@ -48,6 +20,18 @@ import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; import org.json.simple.JSONArray; + +import java.io.*; +import java.lang.reflect.Field; +import java.net.HttpURLConnection; +import java.net.URL; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import static org.bukkit.Bukkit.getServer; public class FUtil @@ -76,7 +60,7 @@ public class FUtil "2e06e049-24c8-42e4-8bcf-d35372af31e6", // NotInSync "f97c0d7b-6413-4558-a409-88f09a8f9adb" // videogamesm12 ); - public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix","abhithedev", "NotInSync", "videogamesm12"); + public static final List DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix", "abhithedev", "NotInSync", "videogamesm12"); public static final Map CHAT_COLOR_NAMES = new HashMap<>(); public static final List CHAT_COLOR_POOL = Arrays.asList( ChatColor.DARK_RED, @@ -274,7 +258,7 @@ public class FUtil public static Response sendRequest(String endpoint, String method, List headers, String body) throws IOException { URL url = new URL(endpoint); - HttpURLConnection connection = (HttpURLConnection)url.openConnection(); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(method); @@ -393,7 +377,8 @@ public class FUtil } } - private static final List regxList = new ArrayList(){{ + private static final List regxList = new ArrayList() + {{ add("y"); add("mo"); add("w"); @@ -403,11 +388,13 @@ public class FUtil add("s"); }}; - private static long a(String parse) { + private static long a(String parse) + { StringBuilder sb = new StringBuilder(); regxList.forEach(obj -> { - if (parse.endsWith(obj)) { + if (parse.endsWith(obj)) + { sb.append(parse.split(obj)[0]); } }); @@ -415,7 +402,8 @@ public class FUtil return Long.parseLong(sb.toString()); } - private static TimeUnit verify(String arg) { + private static TimeUnit verify(String arg) + { TimeUnit unit = null; for (String c : regxList) { @@ -461,6 +449,16 @@ public class FUtil return Date.from(instant); } + public static long parseLongOffset(long unix, String... time) + { + Instant instant = Instant.ofEpochMilli(unix); + for (String arg : time) + { + instant = instant.plusSeconds(verify(arg).get() * a(arg)); + } + return FUtil.getUnixTime(Date.from(instant)); + } + public static String playerListToNames(Set players) { List names = new ArrayList<>(); @@ -553,7 +551,7 @@ public class FUtil { Field field = checkClass.getDeclaredField(name); field.setAccessible(true); - return (T)field.get(from); + return (T) field.get(from); } catch (NoSuchFieldException | IllegalAccessException ignored) @@ -635,7 +633,7 @@ public class FUtil public static int randomInteger(int min, int max) { int range = max - min + 1; - return (int)(Math.random() * range) + min; + return (int) (Math.random() * range) + min; } public static String randomString(int length) @@ -773,7 +771,7 @@ public class FUtil { c1values[i] = Math.round(c1values[i] + factor * (c2values[i] - c1values[i])); } - return Color.fromRGB((int)c1values[0], (int)c1values[1], (int)c1values[2]); + return Color.fromRGB((int) c1values[0], (int) c1values[1], (int) c1values[2]); } public static boolean isValidIPv4(String ip) @@ -853,6 +851,7 @@ public class FUtil public static class PaginationList extends ArrayList { + private final int epp; public PaginationList(int epp) @@ -870,7 +869,7 @@ public class FUtil public int getPageCount() { - return (int)Math.ceil((double)size() / (double)epp); + return (int) Math.ceil((double) size() / (double) epp); } public List getPage(int page) From 53c59919717cf22b9e728ef21703922a23d360f9 Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 26 May 2021 03:55:49 -0600 Subject: [PATCH 15/20] Addresses FS-224 (#70) --- .../totalfreedom/totalfreedommod/LoginProcess.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 90a3a4ea..2cbe79de 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -240,17 +240,9 @@ public class LoginProcess extends FreedomService if (noteCount != 0) { String noteMessage = "This player has " + noteCount + " admin note" + (noteCount > 1 ? "s" : "") + "."; - JSONMessage notice = JSONMessage.create(ChatColor.GOLD + noteMessage + " Click here to view them.") - .tooltip("Click here to view them.") - .runCommand("/notes " + player.getName() + " list"); FLog.info(noteMessage); - for (Player p : server.getOnlinePlayers()) - { - if (plugin.al.isAdmin(p)) - { - notice.send(p); - } - } + plugin.al.messageAllAdmins(ChatColor.GOLD + noteMessage); + plugin.al.messageAllAdmins(ChatColor.GOLD + "Do " + ChatColor.YELLOW + "/notes " + player.getName() + " list" + ChatColor.GOLD + " to view them."); } } From 5c3ef1f107b71ee71fb3a69f76923ed1485319eb Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Thu, 27 May 2021 11:35:11 +1000 Subject: [PATCH 16/20] Bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cfeb5851..275643ec 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 2021.04 + 2021.05-RC01 jar From 77a05f22a8ead77e79ea335c2ab27f35588fa748 Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 6 Jun 2021 14:06:01 +1000 Subject: [PATCH 17/20] TotalFreedomMod May Update --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 275643ec..8a6735cc 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 2021.05-RC01 + 2021.05 jar From 17b051e2a7fa4d4971b90179075b34a6e5561d75 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 7 Jun 2021 16:16:10 +0100 Subject: [PATCH 18/20] Retired support for 2021.02 fully. (#72) --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index 12dab535..adc91e1d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -19,13 +19,13 @@ These versions are no longer under active development, however we will look to r | Version | Supported | Support End: | | ------------------- | ------------------ | ------------ | | 2021.04 | :white_check_mark: | July 2021 | -| 2021.02 | :white_check_mark: | June 2021 | ### No Longer Supported These versions are no longer supported at all. It is strongly advised to update if you are running any of these versions. | Version | Supported | Support Ended: | | ------------------- | ------------------ | ------------------- | +| 2021.02 | :x: | 6 June 2021 | | 2020.11 | :x: | 3 May 2021 | | 6.0.x (Pre-Release) | :x: | December 2020 | | < 2020.11 | :x: | December 2020 | From 939e98b759c61f68a90142b4e58dad9ad058bb39 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 8 Jul 2021 20:48:41 +0100 Subject: [PATCH 19/20] Update badges (#88) Remove TravisCI Add Github Maven Build Action Add CodeQL Badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 24e51aa6..10fe096d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# TotalFreedomMod [![Build Status](https://travis-ci.com/AtlasMediaGroup/TotalFreedomMod.svg?branch=development)](https://travis-ci.com/AtlasMediaGroup/TotalFreedomMod) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/29c0f964da304666bd654bc7b1d556db)](https://www.codacy.com/gh/AtlasMediaGroup/TotalFreedomMod/dashboard?utm_source=github.com&utm_medium=referral&utm_content=AtlasMediaGroup/TotalFreedomMod&utm_campaign=Badge_Grade) +# TotalFreedomMod [![Maven-Build](https://github.com/AtlasMediaGroup/TotalFreedomMod/actions/workflows/maven.yml/badge.svg)](https://github.com/AtlasMediaGroup/TotalFreedomMod/actions/workflows/maven.yml) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/29c0f964da304666bd654bc7b1d556db)](https://www.codacy.com/gh/AtlasMediaGroup/TotalFreedomMod/dashboard?utm_source=github.com&utm_medium=referral&utm_content=AtlasMediaGroup/TotalFreedomMod&utm_campaign=Badge_Grade) [![CodeQL](https://github.com/AtlasMediaGroup/TotalFreedomMod/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/AtlasMediaGroup/TotalFreedomMod/actions/workflows/codeql-analysis.yml) TotalFreedomMod is a CraftBukkit server plugin designed primarily to support the [Official TotalFreedom Minecraft Server](https://totalfreedom.me/). However, you are more than welcome to adapt the source for your own server. From a37364d07e8d91330622ec2ed50419f2ff1d6ea7 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 16 Jul 2021 11:43:46 +0100 Subject: [PATCH 20/20] Correct JDK Version in README (#92) It's currently wrong so needed updating. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 10fe096d..5f31795f 100644 --- a/README.md +++ b/README.md @@ -14,4 +14,4 @@ For information on our security policy and reporting an issue, please see [SECUR ### Compiling -You need Maven to build. You'd also need to set the JDK version to Java 8 as that is the current standard as of now. +You need Maven to build. You'd also need to set the JDK version to Java 11 as that is the current standard as of now.