From 928ab41d7f95159e8263d4e7c34858a0fc0297a8 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 26 Apr 2021 00:37:16 -0600 Subject: [PATCH 01/73] 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 be562fe7227b90fa52c57f81ff35f32ecfd26e39 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 26 Apr 2021 00:58:28 -0600 Subject: [PATCH 02/73] 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 407b63e48beb2173bdede626dfcc7732f39b3a55 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 26 Apr 2021 01:23:24 -0600 Subject: [PATCH 03/73] 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 1cf46c7337c2d536bb416b9a30ba8218999f17cd Mon Sep 17 00:00:00 2001 From: Elmon11 Date: Sun, 2 May 2021 14:03:48 +0200 Subject: [PATCH 04/73] 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 951c699ed02e84db33940263e750cab557877310 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 3 May 2021 15:44:05 +0100 Subject: [PATCH 05/73] 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 bdf4ca84e0a422775068ad3ef6264dfc64176db9 Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 4 May 2021 06:31:55 -0600 Subject: [PATCH 06/73] 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 9dd0298f56951344177bbc8c45f3aa4398118bbb Mon Sep 17 00:00:00 2001 From: Video Date: Sun, 9 May 2021 09:42:31 -0600 Subject: [PATCH 07/73] 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 d170f6d32398b09a40b906eb8d10e214a7856132 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 16 May 2021 15:27:12 +0100 Subject: [PATCH 08/73] 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 b1196fcf002f6b3c65f7a8a465be7c444093e2fd 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/73] 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 21af722e233ed38606ae7f1db698971065b78732 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/73] 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 ac615f54f7dd4319cd050215020f44b537cf46c6 Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 21 May 2021 22:44:51 +0100 Subject: [PATCH 11/73] 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 9ff5da8d8f08701c473001722c1ef082fbd7fd31 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/73] 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 d047cfc8ffb95d04b3b25b8bed4816eba35e9e89 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/73] 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 eedb7a53759aa04504b81895939411674c4540ff 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/73] 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 8c7bf365a048727fbbb2327c1d5d2ba4561aab67 Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 26 May 2021 03:55:49 -0600 Subject: [PATCH 15/73] 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 da7e8f64aa29f834f17d2391cfedb99bba3a8e0d Mon Sep 17 00:00:00 2001 From: Video Date: Sat, 12 Jun 2021 04:26:40 -0600 Subject: [PATCH 16/73] Continuation on that notes thing (#74) I forgot to remove the dependency after I removed the code that used JSONMessage. This fixes that by removing both the repository and the dependency from the pom file. --- pom.xml | 13 ------------- .../totalfreedom/totalfreedommod/LoginProcess.java | 1 - 2 files changed, 14 deletions(-) diff --git a/pom.xml b/pom.xml index cfeb5851..83483900 100644 --- a/pom.xml +++ b/pom.xml @@ -105,11 +105,6 @@ https://papermc.io/repo/repository/maven-public/ - - rayzr-repo - https://cdn.rawgit.com/Rayzr522/maven-repo/master/ - - ess-repo https://ci.ender.zone/plugin/repository/everything/ @@ -216,13 +211,6 @@ compile - - me.rayzr522 - jsonmessage - 1.0.0 - compile - - com.github.vexsoftware votifier @@ -454,7 +442,6 @@ commons-codec:commons-codec org.reflections:reflections org.javassist:javassist - me.rayzr522:jsonmessage io.papermc:paperlib com.github.speedxx:Mojangson org.bstats:bstats-bukkit diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 2cbe79de..015cb064 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -4,7 +4,6 @@ import io.papermc.lib.PaperLib; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; -import me.rayzr522.jsonmessage.JSONMessage; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.PlayerData; From 06025b2e696b31be82d57a5fb722f6863809c8ea Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 13 Jun 2021 19:51:27 +0100 Subject: [PATCH 17/73] Updated permissions to re-baseline with the dev server (#75) Updating this to be based off of the dev server as it seems this has not been updated in some time. Primary purpose is to add the crackshot bypass removal for everyone (Though allow admins to bypass) and to add a start of network manager perms in the hopes it makes it more usable going forward. --- src/main/resources/permissions.yml | 127 +++++++++++++++++++++++++++-- 1 file changed, 118 insertions(+), 9 deletions(-) diff --git a/src/main/resources/permissions.yml b/src/main/resources/permissions.yml index ae404160..1c1877d7 100644 --- a/src/main/resources/permissions.yml +++ b/src/main/resources/permissions.yml @@ -1,16 +1,50 @@ # -# TotalFreedomMod Permissions +# TotalFreedomMod 5.5 Permissions # by ZeroEpoch1969 # # Note that every group inherits the previous groups' permissions -# Meaning Senior Admins have the permissions of Operators and Admins, and etc +# Meaning Telnet Admins have the permissions of Operators and Super Admins, and etc # This is used to remove all permission begging with the root node # This is useful when a plugin gives all permissions to a player because they are opped remove: - "voxelsniper" - - "bending" + - "bending.admin" + - "bending.ability.Cleanse" + - "worldedit.brush.apply" + - "essentials.near.exclude" + - "plots.admin" + - "plots.debugroadregen" + - "plots.debugclaimtest" + - "plots.debugpaste" + - "plots.debugallowunsafe" + - "plots.debugloadtest" + - "plots.debugsavetest" + - "plots.cluster" + #Crackshot + - "crackshot.bypass.all" + #NetworkManager + - "networkmanager.*" + - "networkmanager.notify.joinbanned" + - "networkmanager.notify.*" + - "networkmanager.announce.global" + - "networkmanager.announce" + - "networkmanager.chatlock" + - "networkmanager.clearchat.bypass" + - "networkmanager.clearchat.*" + - "networkmanager.notify.ticket.new" + - "networkmanager.lookup" + - "networkmanager.maintenance.*" + - "networkmanager.permissions" + - "networkmanager.reports" + - "networkmanager.tickets" + - "networkmanager.chatlock.bypass" + - "networkmanager.anticaps.bypass" + - "networkmanager.antispam.bypass" + - "networkmanager.commandblocker.bypass" + - "networkmanager.tags.*" + # Operator permission nodes operators: @@ -36,16 +70,79 @@ operators: - "worldedit.removebelow" - "worldedit.removenear" - "worldedit.replacenear" - + - "worldedit.brush.*" + - "worldedit.global-mask" + - "worldedit.fill" + - "worldedit.fill.recursive" # LibsDisguises - "libsdisguises.noactionbar" - + # WorldGuard - "worldguard.region.list.own" - "worldguard.region.addmember.own.*" - "worldguard.region.removemember.own.*" - "worldguard.region.info.*" + # Bending + - "bending.command.add" + - "bending.command.bind" + - "bending.command.check" + - "bending.command.choose" + - "bending.command.rechoose" + - "bending.command.clear" + - "bending.command.copy" + - "bending.command.display" + - "bending.command.help" + - "bending.command.invincible" + - "bending.command.preset" + - "bending.command.preset.list" + - "bending.command.preset.create" + - "bending.command.preset.delete" + - "bending.command.preset.bind" + - "bending.command.preset.bind.assign" + - "bending.command.preset.bind.external" + - "bending.command.toggle" + - "bending.command.version" + - "bending.command.who" + - "bending.earth" + - "bending.air" + - "bending.fire" + - "bending.water" + - "bending.water.bloodbending.anytime" + - "bending.ability.AvatarState" + - "bending.command.add.chi" + - "bending.command.choose.chi" + - "bending.ability.Paralyze" + - "bending.ability.RapidPunch" + - "bending.ability.Smokescreen" + - "bending.ability.WarriorStance" + - "bending.ability.AcrobatStance" + - "bending.ability.QuickStrike" + - "bending.ability.SwiftKick" + - "bending.ability.ChiCombo" + - "bending.chi.passive" + - "bending.ability.MetalClips.throw" + - "bending.ability.AirCombo" + - "bending.ability.Flight" + - "bending.ability.WaterCombo" + - "bending.ability.EarthCombo" + - "bending.ability.FireCombo" + - "bending.ability.ChiCombo" + - "bending.air.passive" + - "bending.chi.passive" + - "bending.earth.passive" + - "bending.fire.passive" + - "bending.water.passive" + # NetworkManager + - "networkmanager.chatlog" + - "networkmanager.find" + - "networkmanager.gtps" + - "networkmanager.lookup" + - "networkmanager.slashserver.*" + - "networkmanager.notification.join" + - "networkmanager.party.nolimit" + - "networkmanager.tabcompletechat" + # Master Builder permission nodes master_builders: - "worldedit.tool.*" @@ -59,13 +156,25 @@ master_builders: - "voxelsniper.sniper" - "voxelsniper.goto" - "voxelsniper.brush.*" - + # Admin permission nodes admins: - - "coreprotect.*" - "worldedit.*" - "worldguard.*" - - "bending.*" + - "bending.admin.remove" + - "bending.command.toggle.all" + - "bending.admin.toggle" + - "bending.command.reload" + - "plots.cluster" + - "networkmanager.adminchat" + - "networkmanager.announce.server" + - "networkmanager.socialspy" + - "networkmanager.fullproxy.bypass" + - "networkmanager.lookup.ip" + #Crackshot + - "crackshot.bypass.all" # Senior Admin permission nodes -senior_admins: [] +senior_admins: + - "bending.admin.permaremove" + - "bending.ability.Cleanse" From 3027e2a18cc8316fc7ce574c932ca81a436bbd29 Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 17:29:57 -0600 Subject: [PATCH 18/73] Two fixes, one commit To kill two birds with one stone, I've done two fixes in this commit. - Fixes issue that caused quiet warns to behave improperly (e.g. the warnings wouldn't increment if quiet) - Added WARN to the PunishmentType list. --- .../totalfreedommod/command/Command_warn.java | 34 +++++++++++-------- .../totalfreedommod/player/FPlayer.java | 9 +++-- .../punishments/PunishmentType.java | 3 +- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java index 827a5b04..17be800f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java @@ -1,6 +1,9 @@ package me.totalfreedom.totalfreedommod.command; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; 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.ChatColor; @@ -53,25 +56,28 @@ public class Command_warn extends FreedomCommand String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); player.sendTitle(ChatColor.RED + "You've been warned.", ChatColor.YELLOW + "Reason: " + warnReason, 20, 100, 60); - msg(ChatColor.GREEN + "You have successfully warned " + player.getName()); + msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason); + plugin.pl.getPlayer(player).incrementWarnings(quiet); + plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.WARN, warnReason)); if (quiet) { - msg("Warned " + player.getName() + " quietly"); - return true; + msg("You have successfully warned " + player.getName() + " quietly."); } + else + { + String adminNotice = ChatColor.RED + + sender.getName() + + " - " + + "Warning: " + + player.getName() + + " - Reason: " + + ChatColor.YELLOW + + warnReason; + plugin.al.messageAllAdmins(adminNotice); - msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason); - String adminNotice = ChatColor.RED + - sender.getName() + - " - " + - "Warning: " + - player.getName() + - " - Reason: " + - ChatColor.YELLOW + - warnReason; - plugin.al.messageAllAdmins(adminNotice); - plugin.pl.getPlayer(player).incrementWarnings(); + msg("You have successfully warned " + player.getName() + "."); + } return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java index 4e1febc4..b0ea8bc1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java @@ -429,14 +429,19 @@ public class FPlayer this.warningCount = warningCount; } - public void incrementWarnings() + public void incrementWarnings(boolean quiet) { this.warningCount++; if (this.warningCount % 2 == 0) { Player p = getPlayer(); - p.getWorld().strikeLightning(p.getLocation()); + + if (!quiet) + { + p.getWorld().strikeLightning(p.getLocation()); + } + FUtil.playerMsg(p, ChatColor.RED + "You have been warned at least twice now, make sure to read the rules at " + ConfigEntry.SERVER_BAN_URL.getString()); } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java index 705fd928..e7b82e85 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java @@ -7,5 +7,6 @@ public enum PunishmentType KICK, TEMPBAN, BAN, - DOOM + DOOM, + WARN } From 96d47e8e0cc90328b06925eff10339e560419806 Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 17:47:09 -0600 Subject: [PATCH 19/73] Update EntityWiper.java --- .../java/me/totalfreedom/totalfreedommod/EntityWiper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java b/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java index 67a61cc2..3c58a451 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java @@ -2,6 +2,8 @@ package me.totalfreedom.totalfreedommod; import java.util.Arrays; import java.util.List; + +import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.util.Groups; import org.bukkit.Bukkit; import org.bukkit.World; @@ -33,7 +35,10 @@ public class EntityWiper extends FreedomService @Override public void run() { - wipeEntities(false); + if (ConfigEntry.AUTO_ENTITY_WIPE.getBoolean()) + { + wipeEntities(false); + } } }.runTaskTimer(plugin, 600L, 600L); // 30 second delay after startup + run every 30 seconds } From 0c12a19d1d2ea55ca77681a25fba918000f02b26 Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 10 Jun 2021 17:40:02 -0600 Subject: [PATCH 20/73] FS-27 --- .../java/me/totalfreedom/totalfreedommod/fun/Landminer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java index bf9c8bde..fc249df9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java @@ -73,7 +73,7 @@ public class Landminer extends FreedomService continue; } - if (!(player.getLocation().distanceSquared(location) <= (landmine.radius * landmine.radius))) + if (player.getLocation().distanceSquared(location) > (landmine.radius * landmine.radius)) { break; } From ed815794ed2da595a91699dd830f7f1f9323882e Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 10 Jun 2021 17:44:09 -0600 Subject: [PATCH 21/73] FS-26 --- src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java index 55c4ec94..a50a902a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java @@ -128,7 +128,7 @@ public class ItemFun extends FreedomService LivingEntity livingEntity = (LivingEntity)event.getRightClicked(); EntityType entityType = livingEntity.getType(); - if (!(entityType == fPlayer.mobThrowerCreature())) + if (entityType != fPlayer.mobThrowerCreature()) { return; } From f4749559d2eee158391298fda00f86724007eb54 Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 10 Jun 2021 17:53:17 -0600 Subject: [PATCH 22/73] FS-25 --- .../me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java b/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java index 8f9eb229..ba80fa8f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java @@ -43,6 +43,7 @@ public class IndefiniteBan implements IConfig @Override public void saveTo(ConfigurationSection cs) { + // The indefinite ban list is only intended to be modified manually. It is not intended to save. } @Override From 62fe72d99b585b72a1a7cbbfde63efc4cea4bdbe Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 20:36:29 -0600 Subject: [PATCH 23/73] Code quality and consistency improvements Here's all the changes I've made in this commit: - Resolves FS-44 (AutoEject.java) - Resolves FS-45 (BlockBlocker.java) - Resolves FS-47 and FS-48 (InteractBlocker.java) - Resolves FS-49 (Command_cage.java) - Resolves FS-50 (Command_manageshop.java) - Resolves FS-51 (Command_notes.java) - Resolves FS-52 (Command_potion.java) - Resolves FS-53 (Command_tag.java) - Resolves FS-55 (ItemFun.java) - Resolves FS-56 (Module_list.java) - Resolves FS-57 (Module_players.java) - Removes redundant code from InteractBlocker.java - Misc. code consistency corrections (global) --- .../totalfreedommod/AutoEject.java | 4 ++++ .../blocking/BlockBlocker.java | 5 ++++ .../blocking/InteractBlocker.java | 10 +++++--- .../totalfreedommod/command/Command_cage.java | 4 ++++ .../command/Command_manageshop.java | 11 ++++++++- .../command/Command_notes.java | 6 ++++- .../command/Command_potion.java | 23 +++++++++++++++++++ .../totalfreedommod/command/Command_tag.java | 10 ++++++++ .../totalfreedommod/fun/ItemFun.java | 5 ++++ .../httpd/module/Module_list.java | 9 ++++++++ .../httpd/module/Module_players.java | 9 ++++++++ 11 files changed, 91 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java b/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java index 63c9818a..2e84035a 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java @@ -85,6 +85,10 @@ public class AutoEject extends FreedomService player.kickPlayer(kickMessage); break; } + default: + { + FLog.warning("Unrecognized EjectMethod " + method.name() + " found, defaulting to STRIKE_THREE"); + } case STRIKE_THREE: { plugin.bm.addBan(Ban.forPlayerFuzzy(player, Bukkit.getConsoleSender(), null, kickMessage)); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java index db80dff9..746ce186 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java @@ -171,6 +171,11 @@ public class BlockBlocker extends FreedomService } break; } + default: + { + // Do nothing + break; + } } if (Groups.BANNERS.contains(event.getBlockPlaced().getType())) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java index c8f6efb6..2e53f9de 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java @@ -36,10 +36,9 @@ public class InteractBlocker extends FreedomService break; } - case LEFT_CLICK_AIR: - case LEFT_CLICK_BLOCK: + default: { - // + // Do nothing break; } } @@ -158,6 +157,11 @@ public class InteractBlocker extends FreedomService event.setCancelled(true); break; } + default: + { + // Do nothing + break; + } } } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java index 2ba3812d..5cc72009 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java @@ -83,6 +83,10 @@ public class Command_cage extends FreedomCommand msg("Invalid block!", ChatColor.RED); break; } + default: + { + return false; + } } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java index 60c786c3..1c0a7a81 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java @@ -35,8 +35,8 @@ public class Command_manageshop extends FreedomCommand } switch (args[1]) { - case "add": + { try { int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); @@ -75,7 +75,9 @@ public class Command_manageshop extends FreedomCommand msg("Invalid number: " + args[2], ChatColor.RED); return true; } + } case "remove": + { try { int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); @@ -122,7 +124,9 @@ public class Command_manageshop extends FreedomCommand msg("Invalid number: " + args[2], ChatColor.RED); return true; } + } case "set": + { try { int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); @@ -147,6 +151,11 @@ public class Command_manageshop extends FreedomCommand msg("Invalid number: " + args[2], ChatColor.RED); return true; } + } + default: + { + return false; + } } } else if (args[0].equals("items")) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java index 8a4754b2..4a4cd2ab 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java @@ -116,8 +116,12 @@ public class Command_notes extends FreedomCommand msg("Cleared " + count + " notes.", ChatColor.GREEN); return true; } + + default: + { + return false; + } } - return false; } @Override 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 0f30f24d..feab9776 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java @@ -29,6 +29,7 @@ public class Command_potion extends FreedomCommand switch (args.length) { case 1: + { if (args[0].equalsIgnoreCase("list")) { List potionEffectTypeNames = new ArrayList<>(); @@ -58,8 +59,10 @@ public class Command_potion extends FreedomCommand } } } + } case 2: + { if (args[0].equalsIgnoreCase("clear")) { Player target = playerSender; @@ -95,9 +98,11 @@ public class Command_potion extends FreedomCommand msg("Cleared all active potion effects " + (!target.equals(playerSender) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA); } break; + } case 4: case 5: + { if (args[0].equalsIgnoreCase("add")) { Player target = playerSender; @@ -167,8 +172,11 @@ public class Command_potion extends FreedomCommand + (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA); } break; + } default: + { return false; + } } return true; } @@ -179,14 +187,17 @@ public class Command_potion extends FreedomCommand switch (args.length) { case 1: + { List arguments = new ArrayList<>(Arrays.asList("list", "clear", "add")); if (plugin.al.isAdmin(sender)) { arguments.add("clearall"); } return arguments; + } case 2: + { if (args[0].equals("clear")) { if (plugin.al.isAdmin(sender)) @@ -199,22 +210,28 @@ public class Command_potion extends FreedomCommand return getAllPotionTypes(); } break; + } case 3: + { if (args[0].equals("add")) { return Collections.singletonList(""); } break; + } case 4: + { if (args[0].equals("add")) { return Collections.singletonList(""); } break; + } case 5: + { if (plugin.al.isAdmin(sender)) { if (args[0].equals("add")) @@ -223,6 +240,12 @@ public class Command_potion extends FreedomCommand } } break; + } + + default: + { + break; + } } return Collections.emptyList(); 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 6f6a1520..0ae1b9d4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java @@ -105,6 +105,11 @@ public class Command_tag extends FreedomCommand } return true; } + + default: + { + return false; + } } } else if (args.length >= 2) @@ -279,6 +284,11 @@ public class Command_tag extends FreedomCommand msg("Tag set to '" + outputTag + ChatColor.GRAY + "'." + (save ? " (Saved)" : "") + from + to); return true; } + + default: + { + return false; + } } } return false; diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java index a50a902a..08ae5252 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java @@ -304,6 +304,11 @@ public class ItemFun extends FreedomService } break; } + default: + { + // Do nothing + break; + } } } 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 8ee00487..33573926 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 @@ -79,11 +79,20 @@ public class Module_list extends HTTPDModule switch (admin.getRank()) { case ADMIN: + { admins.add(player.getName()); break; + } case SENIOR_ADMIN: + { senioradmins.add(player.getName()); break; + } + default: + { + // Do nothing + break; + } } } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java index 3ae3fbbe..61f8b819 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java @@ -51,11 +51,20 @@ public class Module_players extends HTTPDModule switch (admin.getRank()) { case ADMIN: + { admins.add(username); break; + } case SENIOR_ADMIN: + { senioradmins.add(username); break; + } + default: + { + // Do nothing + break; + } } } From 4188cb80fa68ff9f9fd88841c7516f1442a1a1a6 Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 20:56:18 -0600 Subject: [PATCH 24/73] FS-54 --- .../command/Command_toggle.java | 52 +++++++------------ 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java index c25ebe9c..f1bb1bff 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java @@ -16,6 +16,12 @@ import org.bukkit.entity.Player; @CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/ [option] [value] [value]") public class Command_toggle extends FreedomCommand { + List toggles = Arrays.asList( + "waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk", + "firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke [range] [count]", + "explosives [radius]", "unsafeenchs", "bells", "armorstands", "structureblocks", "jigsaws", "grindstones", + "jukeboxes", "spawners", "4chan", "beehives", "respawnanchors", "autotp", "autoclear", "minecarts", "mp44", + "landmines", "tossmob", "gravity"); @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) @@ -23,38 +29,10 @@ public class Command_toggle extends FreedomCommand if (args.length == 0) { msg("Available toggles: "); - msg("- waterplace"); - msg("- fireplace"); - msg("- lavaplace"); - msg("- fluidspread"); - msg("- lavadmg"); - msg("- firespread"); - msg("- frostwalk"); - msg("- firework"); - msg("- prelog"); - msg("- lockdown"); - msg("- petprotect"); - msg("- entitywipe"); - msg("- nonuke [range] [count]"); - msg("- explosives [radius]"); - msg("- unsafeenchs"); - msg("- bells"); - msg("- armorstands"); - msg("- structureblocks"); - msg("- jigsaws"); - msg("- grindstones"); - msg("- jukeboxes"); - msg("- spawners"); - msg("- 4chan"); - msg("- beehives"); - msg("- respawnanchors"); - msg("- autotp"); - msg("- autoclear"); - msg("- minecarts"); - msg("- landmines"); - msg("- mp44"); - msg("- tossmob"); - msg("- gravity"); + for (String toggle : toggles) + { + msg("- " + toggle); + } return false; } @@ -304,6 +282,16 @@ public class Command_toggle extends FreedomCommand toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY); break; } + + default: + { + msg("Available toggles: "); + for (String toggle : toggles) + { + msg("- " + toggle); + } + return false; + } } return true; } From d3665f31fe0cb83238700088445353adb5a2bc7b Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 21:56:25 -0600 Subject: [PATCH 25/73] Shut up Codacy --- .../me/totalfreedom/totalfreedommod/command/Command_toggle.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java index f1bb1bff..712ff7ff 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java @@ -16,7 +16,7 @@ import org.bukkit.entity.Player; @CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/ [option] [value] [value]") public class Command_toggle extends FreedomCommand { - List toggles = Arrays.asList( + private final List toggles = Arrays.asList( "waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk", "firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke [range] [count]", "explosives [radius]", "unsafeenchs", "bells", "armorstands", "structureblocks", "jigsaws", "grindstones", From 6d1fce1716fc786908706e04e23ea4b930fba66f Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 22:06:12 -0600 Subject: [PATCH 26/73] FS-201 --- .../java/me/totalfreedom/totalfreedommod/CommandSpy.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java b/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java index 6a641bee..30d39f0f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java @@ -25,11 +25,6 @@ public class CommandSpy extends FreedomService { if (plugin.al.isAdmin(player) && plugin.al.getAdmin(player).getCommandSpy()) { - if (plugin.al.isAdmin(event.getPlayer()) && !plugin.al.isSeniorAdmin(player)) - { - continue; - } - if (player != event.getPlayer()) { FUtil.playerMsg(player, event.getPlayer().getName() + ": " + event.getMessage()); From be700a90ceba2b5b00df3ce718b3f2318bf1b09c Mon Sep 17 00:00:00 2001 From: Video Date: Wed, 16 Jun 2021 22:42:45 -0600 Subject: [PATCH 27/73] Simple fix --- .../totalfreedommod/command/Command_entitywipe.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java index ff2043b2..f83157f5 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java @@ -64,6 +64,12 @@ public class Command_entitywipe extends FreedomCommand return true; } + if (type == EntityType.PLAYER) + { + msg("Player entities cannot be purged.", ChatColor.RED); + return true; + } + if (!getAllEntities().contains(type)) { msg(FUtil.formatName(type.name()) + " is an entity, however: it is a mob.", ChatColor.RED); From e1c3bad4d0ee9ef250ee7ae48eae3ad11e149f2a Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 17 Jun 2021 06:56:52 -0600 Subject: [PATCH 28/73] Even more punishment log types Here's what I've changed in this commit: - Adds /blockcmd to the punishment log (FS-239) - Adds /blockedit and /blockpvp to the punishment log (FS-240) - Adds /cage to the punishment log (FS-241) - Adds /orbit to the punishment log (FS-242) - Changes the order of operations in some commands to be a bit more consistent --- .../totalfreedommod/command/Command_blockcmd.java | 6 +++++- .../totalfreedommod/command/Command_blockedit.java | 4 ++++ .../totalfreedommod/command/Command_blockpvp.java | 3 +++ .../totalfreedommod/command/Command_cage.java | 4 ++++ .../totalfreedommod/command/Command_orbit.java | 8 ++++++-- .../totalfreedommod/punishments/PunishmentType.java | 7 ++++++- 6 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java index fece338d..ee2ba733 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java @@ -1,6 +1,8 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -75,9 +77,11 @@ public class Command_blockcmd extends FreedomCommand FPlayer playerdata = plugin.pl.getPlayer(player); if (!playerdata.allCommandsBlocked()) { - playerdata.setCommandsBlocked(true); FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true); + playerdata.setCommandsBlocked(true); msg("Blocked commands for " + player.getName() + "."); + + plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.BLOCKCMD, null)); } else { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java index e1904553..cba22999 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java @@ -1,6 +1,8 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang.ArrayUtils; @@ -128,6 +130,8 @@ public class Command_blockedit extends FreedomCommand msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED); msg("Blocked all block modification abilities for " + player2.getName()); + + plugin.pul.logPunishment(new Punishment(player2.getName(), FUtil.getIp(player2), sender.getName(), PunishmentType.BLOCKEDIT, null)); } return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java index 0471724c..9c4bee0f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java @@ -1,6 +1,8 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.apache.commons.lang3.ArrayUtils; @@ -125,6 +127,7 @@ public class Command_blockpvp extends FreedomCommand { Command_smite.smite(sender, p, reason); } + plugin.pul.logPunishment(new Punishment(p.getName(), FUtil.getIp(p), sender.getName(), PunishmentType.BLOCKPVP, null)); msg(p, "Your PVP has been disabled.", ChatColor.RED); msg("Disabled PVP for " + p.getName()); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java index 5cc72009..46f20d8e 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java @@ -5,6 +5,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -111,6 +113,8 @@ public class Command_cage extends FreedomCommand { FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true); } + + plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null)); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java index 08894999..06320f31 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java @@ -1,6 +1,8 @@ package me.totalfreedom.totalfreedommod.command; import me.totalfreedom.totalfreedommod.player.FPlayer; +import me.totalfreedom.totalfreedommod.punishments.Punishment; +import me.totalfreedom.totalfreedommod.punishments.PunishmentType; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; import org.bukkit.ChatColor; @@ -56,11 +58,13 @@ public class Command_orbit extends FreedomCommand } } + FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false); + player.setGameMode(GameMode.SURVIVAL); playerdata.startOrbiting(strength); - player.setVelocity(new Vector(0, strength, 0)); - FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false); + + plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.ORBIT, null)); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java index e7b82e85..1c710350 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java @@ -8,5 +8,10 @@ public enum PunishmentType TEMPBAN, BAN, DOOM, - WARN + WARN, + CAGE, + BLOCKEDIT, + BLOCKPVP, + BLOCKCMD, + ORBIT } From 32138b2e596e6b0b3e48c77e75446654e427acf0 Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 17 Jun 2021 13:41:25 -0600 Subject: [PATCH 29/73] Order of operations fix --- .../totalfreedommod/command/Command_cage.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java index 46f20d8e..933181c9 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java @@ -92,6 +92,15 @@ public class Command_cage extends FreedomCommand } } + if (outerMaterial == Material.PLAYER_HEAD) + { + FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true); + } + else + { + FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true); + } + Location location = player.getLocation().clone().add(0.0, 1.0, 0.0); if (skullName != null) @@ -102,18 +111,8 @@ public class Command_cage extends FreedomCommand { fPlayer.getCageData().cage(location, outerMaterial, innerMaterial); } - player.setGameMode(GameMode.SURVIVAL); - if (outerMaterial == Material.PLAYER_HEAD) - { - FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true); - } - else - { - FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true); - } - plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null)); return true; } From 064e73f58ba87c7de0df0a4aba64f7d6ffce1272 Mon Sep 17 00:00:00 2001 From: Video Date: Fri, 18 Jun 2021 06:16:52 -0600 Subject: [PATCH 30/73] ez (#77) --- .../totalfreedom/totalfreedommod/command/Command_freeze.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java index 45de1bde..fdcce361 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java @@ -23,12 +23,12 @@ public class Command_freeze extends FreedomCommand if (!gFreeze) { - FUtil.adminAction(sender.getName(), "Disabling global player freeze", false); + FUtil.adminAction(sender.getName(), "Unfreezing all players", false); msg("Players are now free to move."); return true; } - FUtil.adminAction(sender.getName(), "Enabling global player freeze", false); + FUtil.adminAction(sender.getName(), "Freezing all players", false); for (Player player : server.getOnlinePlayers()) { if (!isAdmin(player)) From 6fd075fe96c8204b68681ec797a6cbce1bd1583b Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 24 Jun 2021 21:21:39 +0100 Subject: [PATCH 31/73] Start building Java 16 (#84) * Start building Java 16 * Re-apply Fleek's change * Removed the shitty Github auto formatted white space. * Update to the maven build in Github workflows Given TravisCI has started to charge, I guess this might be what we move back to using as our main way to verify if something can actually build. * Update maven.yml * Delete .travis.yml --- .github/workflows/maven.yml | 12 +++++++++++- .travis.yml | 13 ------------- pom.xml | 4 ++-- 3 files changed, 13 insertions(+), 16 deletions(-) delete mode 100644 .travis.yml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 59cede28..cd7f4aee 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -8,10 +8,20 @@ jobs: runs-on: ubuntu-latest steps: + # Java 11 Builds - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-version: 11 - name: Build with Maven run: mvn -B package --file pom.xml + + # Java 16 Builds + - uses: actions/checkout@v1 + - name: Set up JDK 16 + uses: actions/setup-java@v1 + with: + java-version: 16 + - name: Build with Maven + run: mvn -B package --file pom.xml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 141c7052..00000000 --- a/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: java -jdk: - - oraclejdk11 - - openjdk11 -notifications: - email: false -addons: - apt: - packages: - - sshpass -script: mvn clean install -after_success: - - ./travis-upload.sh diff --git a/pom.xml b/pom.xml index 83483900..01cfb186 100644 --- a/pom.xml +++ b/pom.xml @@ -163,9 +163,9 @@ - com.github.TotalFreedomMC + com.github.AtlasMediaGroup TF-LibsDisguises - 48f01cf2fe + 5a340341b0 provided From a08fd2afb67fd2a84a467c5036280ce3247975d7 Mon Sep 17 00:00:00 2001 From: Video Date: Sat, 26 Jun 2021 07:25:08 -0600 Subject: [PATCH 32/73] Adds /seed command (FS-225) (#85) * Create Command_seed.java * Addresses requested changes * My IDE decided to try to "fix" things with *s in imports Co-authored-by: Ryan --- .../totalfreedommod/command/Command_seed.java | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java new file mode 100644 index 00000000..ff489582 --- /dev/null +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java @@ -0,0 +1,97 @@ +package me.totalfreedom.totalfreedommod.command; + +import me.totalfreedom.totalfreedommod.rank.Rank; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.chat.TranslatableComponent; +import net.md_5.bungee.api.chat.hover.content.Text; +import org.bukkit.ChatColor; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +@CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH) +@CommandParameters(description = "Get the seed of the world you are currently in.", usage = "/seed [world]") +public class Command_seed extends FreedomCommand +{ + @Override + public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + World world; + + if (args.length > 0) + { + world = server.getWorld(args[0]); + if (world == null) + { + msg("That world could not be found", ChatColor.RED); + return true; + } + } + else + { + // If the sender is a Player, use that world. Otherwise, use the overworld as a fallback. + if (!senderIsConsole) + { + world = playerSender.getWorld(); + } + else + { + world = server.getWorlds().get(0); + } + } + + // If the sender is not a Player, use the usual msg method to + if (senderIsConsole) + { + msg("Seed: [" + ChatColor.GREEN + world.getSeed() + ChatColor.WHITE + "]", ChatColor.WHITE); + } + else + { + // Gets the seed for later uses + String seed = String.valueOf(world.getSeed()); + + // This is a really stupid hack to get things to play nicely, but it works so I don't give a damn + BaseComponent[] components = {new TranslatableComponent("chat.copy.click")}; + TextComponent seedAsComponent = new TextComponent(seed); + + // Style the message like in vanilla Minecraft. + seedAsComponent.setColor(ChatColor.GREEN.asBungee()); + seedAsComponent.setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, seed)); + seedAsComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text(components))); + + // Enclose the seed with brackets + TextComponent seedString = new TextComponent("["); + seedString.addExtra(seedAsComponent); + seedString.addExtra("]"); + + // Send the message to the player. + TranslatableComponent response = new TranslatableComponent("commands.seed.success", seedString); + playerSender.spigot().sendMessage(response); + } + return true; + } + + @Override + public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) + { + if (args.length == 1) + { + // Returns a list of worlds on the server and returns it + List worlds = new ArrayList<>(); + for (World world : server.getWorlds()) + { + worlds.add(world.getName()); + } + return worlds; + } + + return null; + } +} \ No newline at end of file From d77f59435bb7ac34e360795a12b5cdd14ee9c26c Mon Sep 17 00:00:00 2001 From: Nathan Curran <30569566+Focusvity@users.noreply.github.com> Date: Sun, 27 Jun 2021 00:06:15 +1000 Subject: [PATCH 33/73] Use 'getPlayer()' to prevent NPE (FS-159) (#87) Co-authored-by: Ryan --- .../totalfreedommod/player/FPlayer.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java index b0ea8bc1..03e0c075 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java @@ -1,7 +1,5 @@ package me.totalfreedom.totalfreedommod.player; -import java.util.ArrayList; -import java.util.List; import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.caging.CageData; import me.totalfreedom.totalfreedommod.config.ConfigEntry; @@ -16,8 +14,12 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; +import java.util.ArrayList; +import java.util.List; + public class FPlayer { + public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L; @@ -247,7 +249,7 @@ public class FPlayer public void startArrowShooter(TotalFreedomMod plugin) { this.stopArrowShooter(); - this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L); + this.mp44ScheduleTask = new ArrowShooter(getPlayer()).runTaskTimer(plugin, 1L, 1L); this.mp44Firing = true; } @@ -709,8 +711,11 @@ public class FPlayer @Override public void run() { - Arrow shot = player.launchProjectile(Arrow.class); - shot.setVelocity(shot.getVelocity().multiply(2.0)); + if (player != null) + { + Arrow shot = player.launchProjectile(Arrow.class); + shot.setVelocity(shot.getVelocity().multiply(2.0)); + } } } } \ No newline at end of file From 36bd8c0fade68995c0c9d5b44f9d64c0407934c4 Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 29 Jun 2021 21:52:46 -0600 Subject: [PATCH 34/73] 2 bugfixes - Fixes FS-309 by checking if a material provided is actually a block before caging someone. - Fixes a bug that causes the command to throw an ArrayOutOfBoundsException if one were to use a command like `/cage player1 block`. --- .../totalfreedommod/command/Command_cage.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java index 933181c9..c7992547 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java @@ -77,13 +77,26 @@ public class Command_cage extends FreedomCommand } case "block": { - if (Material.matchMaterial(args[2]) != null) + if (args.length >= 3) { - outerMaterial = Material.matchMaterial(args[2]); - break; + // Checks the validity of the Material and checks if it's a block. + // This is incredibly inefficient, as Spigot's isBlock() method in Material is an actual + // nightmare of switch-cases. + if (Material.matchMaterial(args[2]) != null && Material.matchMaterial(args[2]).isBlock()) + { + outerMaterial = Material.matchMaterial(args[2]); + break; + } + else + { + msg("Invalid block!", ChatColor.RED); + return true; + } + } + else + { + return false; } - msg("Invalid block!", ChatColor.RED); - break; } default: { From 92bbb62379e1270dcde4730d7bbb44c04912dc0b Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 5 Jul 2021 23:29:22 +0100 Subject: [PATCH 35/73] Temporarily re-naming /clearchat to /cleanchat (#91) * Temporarily re-naming /clearchat to /cleanchat Due to another plugin which currently doesn't quite have all the permissions working, this command is not currently able to be executed as it stands. * Shhh I know I'm an idiot --- .../{Command_clearchat.java => Command_cleanchat.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename src/main/java/me/totalfreedom/totalfreedommod/command/{Command_clearchat.java => Command_cleanchat.java} (94%) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java similarity index 94% rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java rename to src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java index 3e891b9d..6bcf50ed 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java @@ -8,7 +8,7 @@ import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) @CommandParameters(description = "Clears the chat.", usage = "/", aliases = "cc") -public class Command_clearchat extends FreedomCommand +public class Command_cleanchat extends FreedomCommand { @Override @@ -27,4 +27,4 @@ public class Command_clearchat extends FreedomCommand FUtil.adminAction(sender.getName(), "Cleared chat", true); return true; } -} \ No newline at end of file +} From d99f3e657bc103e764ef764b18da6f33cb327c21 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 8 Jul 2021 20:48:27 +0100 Subject: [PATCH 36/73] Let's actually do dependency uplifts (#89) --- .github/dependabot.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..60dde504 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,19 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + + # Maintain Maven Updates + - package-ecosystem: "maven" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "daily" + + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" From fc3fe871b3aaf66f83081a7239a6c33bb22375a5 Mon Sep 17 00:00:00 2001 From: Video Date: Thu, 5 Aug 2021 00:43:01 -0600 Subject: [PATCH 37/73] FS-381 --- src/main/resources/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 3780220d..b60d5f34 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -206,7 +206,7 @@ allow: fire_spread: false fluid_spread: false lava_place: true - lava_damage: false + lava_damage: true water_place: true tnt_minecarts: false explosions: false From a9c9979b1c12d0a88c771ee4584d15f3661df4f1 Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 10 Aug 2021 04:06:41 -0600 Subject: [PATCH 38/73] FS-218 --- .../totalfreedommod/LoginProcess.java | 17 +++++++++++++++++ .../totalfreedommod/config/ConfigEntry.java | 1 + src/main/resources/config.yml | 6 ++++++ 3 files changed, 24 insertions(+) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 015cb064..6b655a59 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -19,6 +19,7 @@ import org.bukkit.event.player.AsyncPlayerPreLoginEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.scheduler.BukkitTask; public class LoginProcess extends FreedomService { @@ -190,6 +191,22 @@ public class LoginProcess extends FreedomService final FPlayer fPlayer = plugin.pl.getPlayer(player); final PlayerData playerData = plugin.pl.getData(player); + // Sends a message to the player if they have never joined before (or simply lack player data). + if (!event.getPlayer().hasPlayedBefore()) + { + final BukkitTask runnable = new BukkitRunnable() + { + @Override + public void run() + { + for (String line : ConfigEntry.FIRST_JOIN_INFO.getStringList()) + { + player.sendMessage(FUtil.colorize(line)); + } + } + }.runTaskLater(plugin, 20); + } + player.sendTitle(FUtil.colorize(ConfigEntry.SERVER_LOGIN_TITLE.getString()), FUtil.colorize(ConfigEntry.SERVER_LOGIN_SUBTITLE.getString()), 20, 100, 60); player.setOp(true); diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index 05051905..2eca28be 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -165,6 +165,7 @@ public enum ConfigEntry ADMIN_INFO(List.class, "admininfo"), VOTING_INFO(List.class, "votinginfo"), MASTER_BUILDER_INFO(List.class, "masterbuilderinfo"), + FIRST_JOIN_INFO(List.class, "first_join_info"), AUTO_ENTITY_WIPE(Boolean.class, "auto_wipe"), TOGGLE_CHAT(Boolean.class, "toggle_chat"), DEVELOPER_MODE(Boolean.class, "developer_mode"), diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 3780220d..4c2a39ba 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -590,6 +590,12 @@ masterbuilderinfo: - ' &2- Template:' - '&9https://forum.totalfreedom.me/d/336-master-builder-application-process' +# What new players will see upon joining for the first time. +first_join_info: + - "&6Welcome to TotalFreedom -- the original Free-OP server!" + - "&eThe server's name doesn't mean we have no rules. Do &6/rules &efor a list of them." + - "&aNeed help getting started? Do &2/help &aor a list of commands!" + # Famous players - cannot be banned by username famous_players: - honeydew From 871acc2eeb929423f3e4a7fda253da6642497546 Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 10 Aug 2021 04:13:23 -0600 Subject: [PATCH 39/73] Actually, let's make it possible to disable it if needed --- .../me/totalfreedom/totalfreedommod/LoginProcess.java | 2 +- .../totalfreedom/totalfreedommod/config/ConfigEntry.java | 3 ++- src/main/resources/config.yml | 8 +++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 6b655a59..0a1f56dd 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -192,7 +192,7 @@ public class LoginProcess extends FreedomService final PlayerData playerData = plugin.pl.getData(player); // Sends a message to the player if they have never joined before (or simply lack player data). - if (!event.getPlayer().hasPlayedBefore()) + if (!event.getPlayer().hasPlayedBefore() && ConfigEntry.FIRST_JOIN_INFO_ENABLED.getBoolean()) { final BukkitTask runnable = new BukkitRunnable() { diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java index 2eca28be..021f30f1 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java @@ -165,7 +165,8 @@ public enum ConfigEntry ADMIN_INFO(List.class, "admininfo"), VOTING_INFO(List.class, "votinginfo"), MASTER_BUILDER_INFO(List.class, "masterbuilderinfo"), - FIRST_JOIN_INFO(List.class, "first_join_info"), + FIRST_JOIN_INFO(List.class, "first_join_info.text"), + FIRST_JOIN_INFO_ENABLED(Boolean.class, "first_join_info.enabled"), AUTO_ENTITY_WIPE(Boolean.class, "auto_wipe"), TOGGLE_CHAT(Boolean.class, "toggle_chat"), DEVELOPER_MODE(Boolean.class, "developer_mode"), diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 4c2a39ba..bba2c44a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -592,9 +592,11 @@ masterbuilderinfo: # What new players will see upon joining for the first time. first_join_info: - - "&6Welcome to TotalFreedom -- the original Free-OP server!" - - "&eThe server's name doesn't mean we have no rules. Do &6/rules &efor a list of them." - - "&aNeed help getting started? Do &2/help &aor a list of commands!" + enabled: true + text: + - "&6Welcome to TotalFreedom -- the original Free-OP server!" + - "&eThe server's name doesn't mean we have no rules. Do &6/rules &efor a list of them." + - "&aNeed help getting started? Do &2/help &aor a list of commands!" # Famous players - cannot be banned by username famous_players: From 3f89f3f48e578705f5c516e2af039e2bf4c7d7af Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 10 Aug 2021 06:58:04 -0600 Subject: [PATCH 40/73] Shut the fuck up Codacy --- src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java index 0a1f56dd..64700e61 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java @@ -194,7 +194,7 @@ public class LoginProcess extends FreedomService // Sends a message to the player if they have never joined before (or simply lack player data). if (!event.getPlayer().hasPlayedBefore() && ConfigEntry.FIRST_JOIN_INFO_ENABLED.getBoolean()) { - final BukkitTask runnable = new BukkitRunnable() + new BukkitRunnable() { @Override public void run() From 6874b2ce134ddf42f190264e8026b1c45f262fbb Mon Sep 17 00:00:00 2001 From: Video Date: Tue, 10 Aug 2021 10:33:48 -0600 Subject: [PATCH 41/73] Fixes /setlevel by completely removing it (FS-82) (#95) To quote Ryan: > If /exp works (and we've said it has) then the scope of this ticket will be to just go remove the TFM command... This does exactly that. --- .../command/Command_setlevel.java | 49 ------------------- 1 file changed, 49 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlevel.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlevel.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlevel.java deleted file mode 100644 index 551c09d4..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_setlevel.java +++ /dev/null @@ -1,49 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Sets your experience level (XP).", usage = "/ [level]") -public class Command_setlevel extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length != 1) - { - return false; - } - - int new_level; - - try - { - new_level = Integer.parseInt(args[0]); - - if (new_level < 0) - { - new_level = 0; - } - else if (new_level > 50) - { - new_level = 50; - } - } - catch (NumberFormatException ex) - { - msg("Invalid level.", ChatColor.RED); - return true; - } - - playerSender.setLevel(new_level); - - msg("Your XP level is now set to " + ChatColor.GOLD + new_level); - - return true; - } -} \ No newline at end of file From dccc3158695b3d8dd98f44916f9e18f34d2eec26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Aug 2021 20:50:03 +0100 Subject: [PATCH 42/73] Bump actions/setup-java from 1.4.3 to 2.2.0 (#98) * Bump actions/setup-java from 1.4.3 to 2.2.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 1.4.3 to 2.2.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v1.4.3...v2.2.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Fix the breaking change the 2.x branch of the action added There is a breaking change which Dependabot hasn't picked up on which causes this to not play ball. This should resolve said issue. Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Wild1145 --- .github/workflows/codeql-analysis.yml | 3 ++- .github/workflows/maven.yml | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index dbeaac5d..ff614751 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -38,10 +38,11 @@ jobs: uses: actions/checkout@v2 - name: Setup Java JDK - uses: actions/setup-java@v1.4.3 + uses: actions/setup-java@v2.2.0 with: # The Java version to make available on the path. Takes a whole or semver Java version, or 1.x syntax (e.g. 1.8 => Java 8.x). Early access versions can be specified in the form of e.g. 14-ea, 14.0.0-ea, or 14.0.0-ea.28 java-version: 11 + distribution: 'adopt' # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index cd7f4aee..97e71f0b 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -11,17 +11,19 @@ jobs: # Java 11 Builds - uses: actions/checkout@v1 - name: Set up JDK 11 - uses: actions/setup-java@v1 + uses: actions/setup-java@v2.2.0 with: java-version: 11 + distribution: 'adopt' - name: Build with Maven run: mvn -B package --file pom.xml # Java 16 Builds - uses: actions/checkout@v1 - name: Set up JDK 16 - uses: actions/setup-java@v1 + uses: actions/setup-java@v2.2.0 with: java-version: 16 + distribution: 'adopt' - name: Build with Maven run: mvn -B package --file pom.xml From 2eb6cc00365b8cc08d739888a356f14929b60e7e Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 18 Aug 2021 23:45:56 +0100 Subject: [PATCH 43/73] Correct CoreProtect POM Version (#108) Co-authored-by: Video --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9687c927..a63df040 100644 --- a/pom.xml +++ b/pom.xml @@ -193,7 +193,7 @@ net.coreprotect coreprotect - 19.3 + 19.5 provided From a335a2acf7106872b432e31d6f2801fc498042a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 21 Aug 2021 15:21:18 +0100 Subject: [PATCH 44/73] Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 (#114) Bumps [maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.1.1 to 3.1.2. - [Release notes](https://github.com/apache/maven-checkstyle-plugin/releases) - [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.1.1...maven-checkstyle-plugin-3.1.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a63df040..2ca44f68 100644 --- a/pom.xml +++ b/pom.xml @@ -256,7 +256,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.1.1 + 3.1.2 compile @@ -462,7 +462,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.1.1 + 3.1.2 checkstyle.xml true From d901cbaa81456714de5ae2a83e604f28ebc55688 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 21 Aug 2021 21:25:56 +0100 Subject: [PATCH 45/73] Update pom.xml (#121) * Update pom.xml * Fix version from re-upload --- pom.xml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index e5302215..0f45f0cc 100644 --- a/pom.xml +++ b/pom.xml @@ -109,6 +109,11 @@ ess-repo https://ci.ender.zone/plugin/repository/everything/ + + + total-freedom-libs-snapshot-local + https://atlasmedia.jfrog.io/artifactory/total-freedom-libs-snapshot-local/ + @@ -135,10 +140,9 @@ - com.github.speedxx - Mojangson - 1957eef8d6 - compile + ca.momoperes + mojangson + 1.0-20210821.193420-1 From 541c66c3dee2e198a594edfab64e15ea7fbe617a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 21 Aug 2021 21:50:45 +0100 Subject: [PATCH 46/73] Bump codacy/codacy-analysis-cli-action from 1.1.0 to 4.0.0 (#101) Bumps [codacy/codacy-analysis-cli-action](https://github.com/codacy/codacy-analysis-cli-action) from 1.1.0 to 4.0.0. - [Release notes](https://github.com/codacy/codacy-analysis-cli-action/releases) - [Commits](https://github.com/codacy/codacy-analysis-cli-action/compare/1.1.0...4.0.0) --- updated-dependencies: - dependency-name: codacy/codacy-analysis-cli-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codacy-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codacy-analysis.yml b/.github/workflows/codacy-analysis.yml index 6b818a9f..e5aa4641 100644 --- a/.github/workflows/codacy-analysis.yml +++ b/.github/workflows/codacy-analysis.yml @@ -25,7 +25,7 @@ jobs: # Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis - name: Run Codacy Analysis CLI - uses: codacy/codacy-analysis-cli-action@1.1.0 + uses: codacy/codacy-analysis-cli-action@4.0.0 with: # Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository # You can also omit the token and run the tools that support default configurations From d70b7bbec242213012eac59b30b2ffc82482c597 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 26 Aug 2021 13:00:19 +0100 Subject: [PATCH 47/73] Split out Java 11 and Java 16 for faster runs --- .github/workflows/java11-maven.yml | 21 +++++++++++++++++ .github/workflows/maven.yml | 38 ------------------------------ 2 files changed, 21 insertions(+), 38 deletions(-) create mode 100644 .github/workflows/java11-maven.yml delete mode 100644 .github/workflows/maven.yml diff --git a/.github/workflows/java11-maven.yml b/.github/workflows/java11-maven.yml new file mode 100644 index 00000000..10c5ffc2 --- /dev/null +++ b/.github/workflows/java11-maven.yml @@ -0,0 +1,21 @@ +name: Java11-Maven-Build + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + # Checkout the code + - uses: actions/checkout@v1 + + # Java 11 Builds + - name: Set up JDK 11 + uses: actions/setup-java@v2.2.0 + with: + java-version: 11 + distribution: 'adopt' + - name: Build with Maven + run: mvn -B package --file pom.xml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml deleted file mode 100644 index 603989a1..00000000 --- a/.github/workflows/maven.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: Maven-Build - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - # Java 11 Builds - - uses: actions/checkout@v1 - - name: Set up JDK 11 - uses: actions/setup-java@v2.2.0 - with: - java-version: 11 - distribution: 'adopt' - - name: Build with Maven - run: mvn -B package --file pom.xml - - # Java 16 Builds - - uses: actions/checkout@v1 - - name: Set up JDK 16 - uses: actions/setup-java@v2.2.0 - with: - java-version: 16 - distribution: 'adopt' - - name: Build with Maven - run: mvn -B package --file pom.xml - - # Java 16 Builds - - uses: actions/checkout@v1 - - name: Set up JDK 16 - uses: actions/setup-java@v1 - with: - java-version: 16 - - name: Build with Maven - run: mvn -B package --file pom.xml From f45466ee24911c0d7ba3599affc76dcc3dc36340 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 26 Aug 2021 13:01:20 +0100 Subject: [PATCH 48/73] Create java16-maven.yml --- .github/workflows/java16-maven.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/java16-maven.yml diff --git a/.github/workflows/java16-maven.yml b/.github/workflows/java16-maven.yml new file mode 100644 index 00000000..4b992498 --- /dev/null +++ b/.github/workflows/java16-maven.yml @@ -0,0 +1,21 @@ +name: Java16-Maven-Build + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + # Checkout the code + - uses: actions/checkout@v1 + + # Java 16 Builds + - name: Set up JDK 16 + uses: actions/setup-java@v2.2.0 + with: + java-version: 16 + distribution: 'adopt' + - name: Build with Maven + run: mvn -B package --file pom.xml From 7dd235b166a2f47342a414a9c636fea3436872fe Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 26 Aug 2021 16:18:49 +0100 Subject: [PATCH 49/73] Update java11-maven.yml --- .github/workflows/java11-maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java11-maven.yml b/.github/workflows/java11-maven.yml index 10c5ffc2..84b38f98 100644 --- a/.github/workflows/java11-maven.yml +++ b/.github/workflows/java11-maven.yml @@ -3,7 +3,7 @@ name: Java11-Maven-Build on: [push] jobs: - build: + build-java-11: runs-on: ubuntu-latest From 464ed85f1b7189f2e09cfadb003b71a2f61bd532 Mon Sep 17 00:00:00 2001 From: Ryan Date: Thu, 26 Aug 2021 16:18:58 +0100 Subject: [PATCH 50/73] Update java16-maven.yml --- .github/workflows/java16-maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/java16-maven.yml b/.github/workflows/java16-maven.yml index 4b992498..c37d7521 100644 --- a/.github/workflows/java16-maven.yml +++ b/.github/workflows/java16-maven.yml @@ -3,7 +3,7 @@ name: Java16-Maven-Build on: [push] jobs: - build: + build-java-16: runs-on: ubuntu-latest From f380898bb739ed6801f3b88de626026e44332863 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 26 Aug 2021 11:22:08 -0400 Subject: [PATCH 51/73] yo remove my name (#123) Co-authored-by: Ryan --- src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java | 3 +-- 1 file changed, 1 insertion(+), 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 a269a296..81bae8cc 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java @@ -54,13 +54,12 @@ public class FUtil "d018f2b8-ce60-4672-a45f-e580e0331299", // speednt "458de06f-36a5-4e1b-aaa6-ec1d1751c5b6", // SupItsDillon "c8e5af82-6aba-4dd7-83e8-474381380cc9", // Paldiu - "38ea7c82-7bdc-4f48-b7fd-0e93fc26813d", // AwesomePinch "ba5aafba-9012-418f-9819-a7020d591068", // TFTWPhoenix "d6dd9740-40db-45f5-ab16-4ee16a633009", // Abhi "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", "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 4c3f188bb8efbd8225426bd54f779987cc0806fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 29 Aug 2021 20:08:43 +0100 Subject: [PATCH 52/73] Bump actions/setup-java from 2.2.0 to 2.3.0 (#122) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2.2.0 to 2.3.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2.2.0...v2.3.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ryan --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/java11-maven.yml | 2 +- .github/workflows/java16-maven.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index ff614751..fc5b35cc 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -38,7 +38,7 @@ jobs: uses: actions/checkout@v2 - name: Setup Java JDK - uses: actions/setup-java@v2.2.0 + uses: actions/setup-java@v2.3.0 with: # The Java version to make available on the path. Takes a whole or semver Java version, or 1.x syntax (e.g. 1.8 => Java 8.x). Early access versions can be specified in the form of e.g. 14-ea, 14.0.0-ea, or 14.0.0-ea.28 java-version: 11 diff --git a/.github/workflows/java11-maven.yml b/.github/workflows/java11-maven.yml index 84b38f98..967abde2 100644 --- a/.github/workflows/java11-maven.yml +++ b/.github/workflows/java11-maven.yml @@ -13,7 +13,7 @@ jobs: # Java 11 Builds - name: Set up JDK 11 - uses: actions/setup-java@v2.2.0 + uses: actions/setup-java@v2.3.0 with: java-version: 11 distribution: 'adopt' diff --git a/.github/workflows/java16-maven.yml b/.github/workflows/java16-maven.yml index c37d7521..92896df8 100644 --- a/.github/workflows/java16-maven.yml +++ b/.github/workflows/java16-maven.yml @@ -13,7 +13,7 @@ jobs: # Java 16 Builds - name: Set up JDK 16 - uses: actions/setup-java@v2.2.0 + uses: actions/setup-java@v2.3.0 with: java-version: 16 distribution: 'adopt' From 23caa4e853465e2fe8900aa82458b2f7456f3368 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 4 Sep 2021 01:07:04 +0100 Subject: [PATCH 53/73] Dependency Fix & Improvements (#132) * Upgrade Test Going to see if switching to the new repo that went live 3 days ago and updating TFM to pull the latest version of Essentials is going to help things here. TFM is building locally so I haven't a fucking scooby doo why Github can't run the build because I've even tried dropping the M2 folder... * Let's try again Utter bullshit so far. * Apparently we don't even use essentials... No idea where the imports for EssentialsBridge are coming from... * Various tweaks Hopefully this might give some more joy, but if not it's removed a command I didn't want anyway and reduced our dependency tree. I have also switched it to using the ATLAS Artafactory which will serve as an ongoing cache for dependencies and should start to speed up our Github builds as Maven is rubbish with many repo's. --- pom.xml | 40 +++----- .../command/Command_makeopregion.java | 96 ------------------- 2 files changed, 14 insertions(+), 122 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java diff --git a/pom.xml b/pom.xml index 0f45f0cc..dc0dfbdb 100644 --- a/pom.xml +++ b/pom.xml @@ -39,9 +39,10 @@ + - jitpack.io - https://jitpack.io + totalfreedom-development + https://atlasmedia.jfrog.io/artifactory/totalfreedom-development/ @@ -101,19 +102,11 @@ - papermc - https://papermc.io/repo/repository/maven-public/ - - - - ess-repo - https://ci.ender.zone/plugin/repository/everything/ + esentialsx-repo + https://repo.essentialsx.net/releases/ - - total-freedom-libs-snapshot-local - https://atlasmedia.jfrog.io/artifactory/total-freedom-libs-snapshot-local/ - + @@ -176,14 +169,7 @@ com.sk89q.worldedit worldedit-bukkit - 7.3.0-SNAPSHOT - provided - - - - net.ess3 - EssentialsX - 2.18.2 + 7.2.4 provided @@ -221,12 +207,12 @@ v1.9 provided - + - net.goldtreeservers - worldguardextraflags - 4.0.0 - provided + net.ess3 + EssentialsX + 2.18.2 + compile @@ -263,12 +249,14 @@ 3.1.2 compile + org.junit.jupiter junit-jupiter 5.4.2 compile + org.eclipse.sisu org.eclipse.sisu.inject diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java deleted file mode 100644 index 7cf2334f..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_makeopregion.java +++ /dev/null @@ -1,96 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import com.sk89q.worldedit.IncompleteRegionException; -import com.sk89q.worldedit.LocalSession; -import com.sk89q.worldedit.regions.Region; -import com.sk89q.worldguard.domains.DefaultDomain; -import com.sk89q.worldguard.protection.flags.Flag; -import com.sk89q.worldguard.protection.flags.Flags; -import com.sk89q.worldguard.protection.flags.RegionGroup; -import com.sk89q.worldguard.protection.flags.StateFlag; -import com.sk89q.worldguard.protection.managers.RegionManager; -import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion; -import com.sk89q.worldguard.protection.regions.ProtectedRegion; -import java.util.HashMap; -import java.util.Map; -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.ChatColor; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Make a WorldGuard region for an OP.", usage = "/ ", aliases = "mor") -public class Command_makeopregion extends FreedomCommand -{ - - final Map, Object> flags = new HashMap, Object>() - {{ - put(Flags.BLOCK_PLACE, StateFlag.State.ALLOW); - put(Flags.BLOCK_BREAK, StateFlag.State.ALLOW); - put(Flags.BUILD, StateFlag.State.ALLOW); - put(Flags.PLACE_VEHICLE, StateFlag.State.ALLOW); - put(Flags.DESTROY_VEHICLE, StateFlag.State.ALLOW); - put(Flags.ENTITY_ITEM_FRAME_DESTROY, StateFlag.State.ALLOW); - put(Flags.ENTITY_PAINTING_DESTROY, StateFlag.State.ALLOW); - put(net.goldtreeservers.worldguardextraflags.flags.Flags.WORLDEDIT, StateFlag.State.ALLOW); - }}; - - public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) - { - if (args.length < 2) - { - return false; - } - - final Player player = getPlayer(args[0]); - - if (player == null) - { - msg(FreedomCommand.PLAYER_NOT_FOUND); - return true; - } - - String name = args[1]; - - LocalSession session = plugin.web.getWorldEditPlugin().getSession(playerSender); - - Region selection; - - try - { - selection = session.getSelection(session.getSelectionWorld()); - } - catch (IncompleteRegionException e) - { - msg("Please make a WorldEdit selection", ChatColor.RED); - return true; - } - - if (selection == null) - { - msg("Please make a WorldEdit selection", ChatColor.RED); - return true; - } - - ProtectedRegion region = new ProtectedCuboidRegion(name, selection.getMinimumPoint(), selection.getMaximumPoint()); - - DefaultDomain owners = new DefaultDomain(); - owners.addPlayer(playerSender.getName()); - owners.addPlayer(player.getName()); - region.setOwners(owners); - region.setFlags(flags); - - for (Flag flag : flags.keySet()) - { - region.setFlag(flag.getRegionGroupFlag(), RegionGroup.MEMBERS); - } - - RegionManager regionManager = plugin.wgb.getRegionManager(playerSender.getWorld()); - - regionManager.addRegion(region); - - msg("Successfully created the region '" + name + "' for " + player.getName(), ChatColor.GREEN); - return true; - } -} \ No newline at end of file From 54cb0cfac42e43b4e5086a5edb247e7f1298e8a0 Mon Sep 17 00:00:00 2001 From: Video Date: Sun, 5 Sep 2021 07:51:43 -0600 Subject: [PATCH 54/73] FS-409 (#124) Co-authored-by: Ryan --- .../command/Command_eject.java | 38 ++++++++++------- .../command/Command_releaseparrots.java | 41 ------------------- 2 files changed, 24 insertions(+), 55 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_releaseparrots.java diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java index 9c72b8ad..693ae101 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_eject.java @@ -1,40 +1,50 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.List; import me.totalfreedom.totalfreedommod.rank.Rank; -import org.apache.commons.lang.StringUtils; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Eject players that are riding you.", usage = "/") +@CommandParameters(description = "Eject any entities that are riding you.", usage = "/") public class Command_eject extends FreedomCommand { + /* Player.getShoulderEntityLeft() and Player.getShoulderEntityRight() are deprecated, however unless + Player.getPassengers() also includes shoulders (which isn't likely, given the official documentation doesn't + state an alternative method to use instead), these methods will continue to be used here. */ + @SuppressWarnings("deprecation") @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { + // Uses the size of the return value of Player.getPassengers() as the starting number of entities ejected + int count = playerSender.getPassengers().size(); - List names = new ArrayList<>(); - - for (Entity entity : playerSender.getPassengers()) + // Removes any entities from the sender's shoulders + if (playerSender.getShoulderEntityLeft() != null) { - names.add(entity.getName()); + playerSender.setShoulderEntityLeft(null); + count++; + } + if (playerSender.getShoulderEntityRight() != null) + { + playerSender.setShoulderEntityLeft(null); + count++; } - if (names.isEmpty()) + // Removes anything riding the sender + playerSender.eject(); + + if (count != 0) + { + msg(count + " entit" + (count == 1 ? "y was" : "ies were") + " ejected.", ChatColor.GREEN); + } + else { msg("Nothing was ejected.", ChatColor.GREEN); - return true; } - msg("Ejecting " + StringUtils.join(names, ", ") + ".", ChatColor.GREEN); - playerSender.eject(); - return true; } } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_releaseparrots.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_releaseparrots.java deleted file mode 100644 index 16a25106..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_releaseparrots.java +++ /dev/null @@ -1,41 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import me.totalfreedom.totalfreedommod.rank.Rank; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME) -@CommandParameters(description = "Release parrots from your shoulders.", usage = "/", aliases = "removeparrots") -public class Command_releaseparrots extends FreedomCommand -{ - - @SuppressWarnings("deprecation") - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - Entity leftShoulderEntity = playerSender.getShoulderEntityLeft(); - Entity rightShoulderEntity = playerSender.getShoulderEntityRight(); - - if (rightShoulderEntity == null && leftShoulderEntity == null) - { - msg("No parrots were detected on either of your shoulders."); - return true; - } - - if (leftShoulderEntity != null && leftShoulderEntity.getType().equals(EntityType.PARROT)) - { - playerSender.setShoulderEntityLeft(null); - msg("Removed the parrot on your left shoulder."); - } - - if (rightShoulderEntity != null && rightShoulderEntity.getType().equals(EntityType.PARROT)) - { - playerSender.setShoulderEntityRight(null); - msg("Removed the parrot on your right shoulder."); - } - return true; - } -} From 032e54e2d4f2ad2096c0f2d6ad43a046718c3d92 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 6 Sep 2021 04:44:39 -0600 Subject: [PATCH 55/73] Multiple birds, one commit Here's a list of things I've fixed/mitigated: - Range bans in ban-related commands (FS-209) - Bug in /tempban where the duration in the broadcast is always wrong - Over-complicated handling of /tempban durations (instead of trying to process them and silently fail, it'll flat out say that an invalid duration is well, invalid) - Inconsistent "player not found" messages in banning commands - (Mitigates) weird issue with case-sensitive usernames in banning commands when the server has restarted since a player last joined - (Mitigates) banned IPs being inaccurate when a player was banned offline whilst containing multiple IPs in their playerdata - Redoing how MovementValidator handled positive and negative infinity exploit items, completely removing the need for Mojangson in the first place and allowing the plugin to run without Essentials once more in the process (related to FS-406) Here is what I've done in addition: - Merged /tban and /noob into /tempban, which now bans for 5 minutes by default (FS-205) --- pom.xml | 6 - .../totalfreedommod/MovementValidator.java | 82 +++++----- .../totalfreedommod/command/Command_ban.java | 50 +++--- .../totalfreedommod/command/Command_doom.java | 8 +- .../totalfreedommod/command/Command_tban.java | 143 ------------------ .../command/Command_tempban.java | 90 ++++++----- .../command/Command_unban.java | 48 +++--- 7 files changed, 144 insertions(+), 283 deletions(-) delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java diff --git a/pom.xml b/pom.xml index dc0dfbdb..d9f8224b 100644 --- a/pom.xml +++ b/pom.xml @@ -132,12 +132,6 @@ compile - - ca.momoperes - mojangson - 1.0-20210821.193420-1 - - org.bstats bstats-bukkit diff --git a/src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java b/src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java index c44d06c5..e2b621af 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/MovementValidator.java @@ -1,17 +1,16 @@ package me.totalfreedom.totalfreedommod; -import ca.momothereal.mojangson.ex.MojangsonParseException; -import ca.momothereal.mojangson.value.MojangsonCompound; -import ca.momothereal.mojangson.value.MojangsonValue; +import com.google.common.collect.Multimap; import io.papermc.lib.PaperLib; -import java.util.List; + +import java.util.Collection; +import java.util.Map; import java.util.Objects; -import net.minecraft.server.v1_16_R3.NBTTagCompound; -import net.minecraft.server.v1_16_R3.NBTTagList; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeModifier; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -20,6 +19,7 @@ import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; public class MovementValidator extends FreedomService { @@ -133,55 +133,49 @@ public class MovementValidator extends FreedomService private Boolean exploitItem(ItemStack item) { - net.minecraft.server.v1_16_R3.ItemStack nmsStack = CraftItemStack.asNMSCopy(item); - NBTTagList modifiers = getAttributeList(nmsStack); - MojangsonCompound compound = new MojangsonCompound(); - boolean foundNegative = false; - boolean foundPositive = false; - try + if (item == null) { - String mod = modifiers.toString(); - String fancy = ("{" + (mod.substring(1, mod.length() - 1).replace("{", "").replace("}", "")) + "}"); - compound.read(fancy); - for (String key : compound.keySet()) + return false; + } + + ItemMeta meta = item.getItemMeta(); + if (meta != null) + { + Multimap attributes = meta.getAttributeModifiers(); + if (attributes != null) { - if (Objects.equals(key, "Amount")) //null-safe .equals() + Map> attrMap = attributes.asMap(); + + // For every attribute... + for (Attribute attr : attributes.keySet()) { - @SuppressWarnings("rawtypes") - List values = compound.get(key); - for (MojangsonValue val : values) + // Default values + boolean posInf = false; + boolean negInf = false; + + // For every AttributeModifier... + for (AttributeModifier modifier : attrMap.get(attr)) { - if (val.getValue().toString().equals("Infinityd")) + // Are they ∞ or -∞? + if (modifier.getAmount() == Double.POSITIVE_INFINITY) { - foundPositive = true; + posInf = true; } - if (val.getValue().toString().equals("-Infinityd")) + else if (modifier.getAmount() == Double.NEGATIVE_INFINITY) { - foundNegative = true; + negInf = true; } } + + // Are both values set as true? + if (posInf && negInf) + { + return true; + } } } - } - catch (MojangsonParseException e) - { - e.printStackTrace(); - } - return foundNegative && foundPositive; - } - - private NBTTagList getAttributeList(net.minecraft.server.v1_16_R3.ItemStack stack) - { - if (stack.getTag() == null) - { - stack.setTag(new NBTTagCompound()); } - NBTTagList attr = stack.getTag().getList("AttributeModifiers", 10); - if (attr == null) - { - stack.getTag().set("AttributeModifiers", new NBTTagList()); - } - return stack.getTag().getList("AttributeModifiers", 10); + return false; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java index c6b38381..2b0c7cc4 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_ban.java @@ -1,8 +1,8 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.List; import java.util.Objects; + +import com.earth2me.essentials.User; import me.totalfreedom.totalfreedommod.banning.Ban; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.punishments.Punishment; @@ -60,28 +60,39 @@ public class Command_ban extends FreedomCommand } final String username; - final List ips = new ArrayList<>(); + final String ip; final Player player = getPlayer(args[0]); if (player == null) { - final PlayerData entry = plugin.pl.getData(args[0]); - - if (entry == null) + // Gets the IP using Essentials data if available + if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null) { - msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); - return true; + User essUser = plugin.esb.getEssentialsUser(args[0]); + // + username = essUser.getName(); + ip = essUser.getLastLoginAddress(); + } + // Last resort - Getting the first result from the username itself + else + { + PlayerData entry = plugin.pl.getData(args[0]); + if (entry == null) + { + msg(PLAYER_NOT_FOUND); + return true; + } + else + { + username = entry.getName(); + ip = entry.getIps().get(0); + } } - - username = entry.getName(); - ips.addAll(entry.getIps()); } else { - final PlayerData entry = plugin.pl.getData(player); username = player.getName(); - //ips.addAll(entry.getIps());/ - ips.add(FUtil.getIp(player)); + ip = FUtil.getIp(player); // Deop player.setOp(false); @@ -126,7 +137,6 @@ public class Command_ban extends FreedomCommand // Ban player Ban ban; - if (player != null) { ban = Ban.forPlayer(player, sender, null, reason); @@ -135,12 +145,8 @@ public class Command_ban extends FreedomCommand { ban = Ban.forPlayerName(username, sender, null, reason); } + ban.addIp(ip); - for (String ip : ips) - { - ban.addIp(ip); - ban.addIp(FUtil.getFuzzyIp(ip)); - } plugin.bm.addBan(ban); @@ -154,7 +160,7 @@ public class Command_ban extends FreedomCommand { bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason); } - msg(sender, ChatColor.GRAY + username + " has been banned and IP is: " + StringUtils.join(ips, ", ")); + msg(sender, ChatColor.GRAY + username + " has been banned and IP is: " + ip); FUtil.adminAction(sender.getName(), bcast.toString(), true); } @@ -172,7 +178,7 @@ public class Command_ban extends FreedomCommand } // Log ban - plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.BAN, reason)); + plugin.pul.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.BAN, reason)); return true; } diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java index d6711948..8e6f4187 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_doom.java @@ -1,6 +1,5 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.Objects; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.banning.Ban; import me.totalfreedom.totalfreedommod.config.ConfigEntry; @@ -43,7 +42,7 @@ public class Command_doom extends FreedomCommand FUtil.adminAction(sender.getName(), "Casting oblivion over " + player.getName(), true); FUtil.bcastMsg(player.getName() + " will be completely obliviated!", ChatColor.RED); - final String ip = Objects.requireNonNull(player.getAddress()).getAddress().getHostAddress().trim(); + final String ip = FUtil.getIp(player); // Remove from admin Admin admin = getAdmin(player); @@ -76,10 +75,7 @@ public class Command_doom extends FreedomCommand // Ban player Ban ban = Ban.forPlayer(player, sender); ban.setReason((reason == null ? "FUCKOFF" : reason)); - for (String playerIp : plugin.pl.getData(player).getIps()) - { - ban.addIp(playerIp); - } + ban.addIp(ip); plugin.bm.addBan(ban); // Set gamemode to survival diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java deleted file mode 100644 index c4c4c62f..00000000 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tban.java +++ /dev/null @@ -1,143 +0,0 @@ -package me.totalfreedom.totalfreedommod.command; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import me.totalfreedom.totalfreedommod.banning.Ban; -import me.totalfreedom.totalfreedommod.player.PlayerData; -import me.totalfreedom.totalfreedommod.punishments.Punishment; -import me.totalfreedom.totalfreedommod.punishments.PunishmentType; -import me.totalfreedom.totalfreedommod.rank.Rank; -import me.totalfreedom.totalfreedommod.util.FUtil; -import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH, blockHostConsole = true) -@CommandParameters(description = "Temporarily bans a player for five minutes.", usage = "/ [-q] [reason]", aliases = "noob") -public class Command_tban extends FreedomCommand -{ - - @Override - public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) - { - if (args.length == 0) - { - return false; - } - - boolean quiet = args[0].equalsIgnoreCase("-q"); - if (quiet) - { - args = org.apache.commons.lang3.ArrayUtils.subarray(args, 1, args.length); - - if (args.length < 1) - { - return false; - } - } - - final String username; - - final Player player = getPlayer(args[0]); - final PlayerData entry; - if (player == null) - { - entry = plugin.pl.getData(args[0]); - - if (entry == null) - { - 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(); - } - else - { - entry = plugin.pl.getData(player); - username = player.getName(); - } - final List ips = new ArrayList<>(entry.getIps()); - - String reason = null; - if (args.length > 1) - { - reason = StringUtils.join(args, " ", 1, args.length); - } - - StringBuilder kick = new StringBuilder() - .append(ChatColor.RED) - .append("You have been temporarily banned for five minutes. Please read totalfreedom.me for more info."); - - if (!quiet) - { - // Strike with lightning - if (player != null) - { - final Location targetPos = player.getLocation(); - for (int x = -1; x <= 1; x++) - { - 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()).strikeLightning(strike_pos); - } - } - - // Kill player - player.setHealth(0.0); - - if (reason != null) - { - FUtil.adminAction(sender.getName(), "Tempbanning " + player.getName() + " for 5 minutes - Reason: " + reason, true); - kick.append("\n") - .append(ChatColor.RED) - .append("Reason: ") - .append(ChatColor.GOLD) - .append(reason); - } - else - { - FUtil.adminAction(sender.getName(), "Tempbanning " + player.getName() + " for 5 minutes", true); - } - } - } - else - { - if (player != null) - { - if (reason != null) - { - msg("Quietly temporarily banned " + player.getName() + " for 5 minutes."); - kick.append("\n") - .append(ChatColor.RED) - .append("Reason: ") - .append(ChatColor.GOLD) - .append(reason); - } - } - } - - // Ban player - Ban ban = Ban.forPlayerName(username, sender, FUtil.parseDateOffset("5m"), reason); - for (String ip : ips) - { - ban.addIp(ip); - } - plugin.bm.addBan(ban); - - // Kick player - if (player != null) - { - player.kickPlayer(kick.toString()); - } - - // Log ban - 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_tempban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java index dfc412ce..3789f40b 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tempban.java @@ -1,10 +1,10 @@ package me.totalfreedom.totalfreedommod.command; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; -import java.util.List; import java.util.Objects; + +import com.earth2me.essentials.User; import me.totalfreedom.totalfreedommod.banning.Ban; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.punishments.Punishment; @@ -21,7 +21,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) -@CommandParameters(description = "Temporarily ban someone.", usage = "/ [-q] [duration] [reason]") +@CommandParameters(description = "Temporarily ban someone.", usage = "/ [-q] [duration] [reason]", aliases = "tban,noob") public class Command_tempban extends FreedomCommand { @@ -47,49 +47,72 @@ public class Command_tempban extends FreedomCommand } final String username; - final List ips = new ArrayList<>(); + final String ip; final Player player = getPlayer(args[0]); - final PlayerData entry; + PlayerData entry; if (player == null) { - entry = plugin.pl.getData(args[0]); - - if (entry == null) + // Gets the IP using Essentials data if available + if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null) { - msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); - return true; + User essUser = plugin.esb.getEssentialsUser(args[0]); + // + username = essUser.getName(); + ip = essUser.getLastLoginAddress(); + } + // Last resort - Getting the first result from the username itself + else + { + entry = plugin.pl.getData(args[0]); + if (entry == null) + { + msg(PLAYER_NOT_FOUND); + return true; + } + else + { + username = entry.getName(); + ip = entry.getIps().get(0); + } } - - username = entry.getName(); - ips.addAll(entry.getIps()); } else { - entry = plugin.pl.getData(player); username = player.getName(); - ips.add(FUtil.getIp(player)); + ip = FUtil.getIp(player); } final StringBuilder message = new StringBuilder("Temporarily banned " + username); - Date expires = FUtil.parseDateOffset("30m"); + // Default expiration date is 5 minutes + Date expires = FUtil.parseDateOffset("5m"); + + // Parses what comes after as a duration + if (args.length > 1) + { + try + { + expires = FUtil.parseDateOffset(args[1]); + } + catch (NumberFormatException error) + { + msg("Invalid duration: " + args[1], ChatColor.RED); + return true; + } + } + message.append(" until ").append(date_format.format(expires)); + // If a reason appears to exist, set it. String reason = null; - if (args.length >= 2) + if (args.length > 2) { - Date parsed_offset = FUtil.parseDateOffset(args[1]); - reason = StringUtils.join(ArrayUtils.subarray(args, parsed_offset == null ? 1 : 2, args.length), " ") + " (" + sender.getName() + ")"; - if (parsed_offset != null) - { - expires = parsed_offset; - } + reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " (" + sender.getName() + ")"; message.append(", Reason: \"").append(reason).append("\""); } Ban ban; - if (player != null) { ban = Ban.forPlayer(player, sender, expires, reason); @@ -98,11 +121,8 @@ public class Command_tempban extends FreedomCommand { ban = Ban.forPlayerName(username, sender, expires, reason); } + ban.addIp(ip); - for (String ip : ips) - { - ban.addIp(ip); - } plugin.bm.addBan(ban); if (!quiet) @@ -119,6 +139,8 @@ public class Command_tempban extends FreedomCommand Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos); } } + + player.kickPlayer(ban.bakeKickMessage()); } FUtil.adminAction(sender.getName(), message.toString(), true); @@ -128,19 +150,15 @@ public class Command_tempban extends FreedomCommand msg("Quietly temporarily banned " + username + "."); } - if (player != null) + for (Player p : Bukkit.getOnlinePlayers()) { - player.kickPlayer(ban.bakeKickMessage()); - for (Player p : Bukkit.getOnlinePlayers()) + if (FUtil.getIp(p).equals(ip)) { - if (FUtil.getIp(p).equals(FUtil.getIp(player))) - { - p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned."); - } + p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned."); } } - plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.TEMPBAN, reason)); + plugin.pul.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.TEMPBAN, reason)); return true; } } \ No newline at end of file diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java index b6ca9452..daf3b32c 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_unban.java @@ -1,12 +1,9 @@ package me.totalfreedom.totalfreedommod.command; -import java.util.ArrayList; -import java.util.List; -import me.totalfreedom.totalfreedommod.banning.Ban; +import com.earth2me.essentials.User; import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.util.FUtil; -import org.apache.commons.lang.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -22,20 +19,33 @@ public class Command_unban extends FreedomCommand if (args.length > 0) { String username; - final PlayerData entry = plugin.pl.getData(args[0]); + String ip; - if (entry == null) + // Gets the IP using Essentials data if available + if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null) { - msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly."); - return true; + User essUser = plugin.esb.getEssentialsUser(args[0]); + // + username = essUser.getName(); + ip = essUser.getLastLoginAddress(); + } + // Secondary method - using Essentials if available + else + { + final PlayerData entry = plugin.pl.getData(args[0]); + if (entry == null) + { + msg(PLAYER_NOT_FOUND); + return true; + } + username = entry.getName(); + ip = entry.getIps().get(0); } - username = entry.getName(); - final List ips = new ArrayList<>(entry.getIps()); - FUtil.adminAction(sender.getName(), "Unbanning " + username, true); - msg(username + " has been unbanned along with the following IPs: " + StringUtils.join(ips, ", ")); plugin.bm.removeBan(plugin.bm.getByUsername(username)); + plugin.bm.removeBan(plugin.bm.getByIp(ip)); + msg(username + " has been unbanned along with the IP: " + ip); if (args.length >= 2) { @@ -45,20 +55,6 @@ public class Command_unban extends FreedomCommand msg("Restored edits for: " + username); } } - - for (String ip : ips) - { - Ban ban = plugin.bm.getByIp(ip); - if (ban != null) - { - plugin.bm.removeBan(ban); - } - ban = plugin.bm.getByIp(FUtil.getFuzzyIp(ip)); - if (ban != null) - { - plugin.bm.removeBan(ban); - } - } return true; } return false; From 44ff621d73dd80cc4a9f414d5a83bd162f94d135 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Sep 2021 20:21:49 +0100 Subject: [PATCH 56/73] Bump bstats-bukkit from 1.8 to 2.2.1 (#99) Bumps [bstats-bukkit](https://github.com/Bastian/bStats-Metrics) from 1.8 to 2.2.1. - [Release notes](https://github.com/Bastian/bStats-Metrics/releases) - [Commits](https://github.com/Bastian/bStats-Metrics/commits/v2.2.1) --- updated-dependencies: - dependency-name: org.bstats:bstats-bukkit dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ryan Resolves FS-419 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dc0dfbdb..97ce81f0 100644 --- a/pom.xml +++ b/pom.xml @@ -141,7 +141,7 @@ org.bstats bstats-bukkit - 1.8 + 2.2.1 compile From 0a9b95bfceac84c0b9cd785806eb68894e20fe78 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 11 Sep 2021 01:19:08 +0100 Subject: [PATCH 57/73] Move to new ATLAS Nexus (#138) * Move to new ATLAS Nexus Turns out jFrog is super expensive and 10GB of Bandwidth doesn't go far, this should make things a lot better :) * Update pom.xml * Update pom.xml --- pom.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 97ce81f0..92f00dc3 100644 --- a/pom.xml +++ b/pom.xml @@ -41,8 +41,8 @@ - totalfreedom-development - https://atlasmedia.jfrog.io/artifactory/totalfreedom-development/ + atlas-nexus-01-totalfreedom-development + https://nexus-01.core.atlas-media.co.uk/repository/totalfreedom-development/ @@ -133,9 +133,9 @@ - ca.momoperes - mojangson - 1.0-20210821.193420-1 + com.github.speedxx + Mojangson + 1957eef8d6 @@ -230,10 +230,10 @@ - com.github.AtlasMediaGroup - TFGuilds - master-SNAPSHOT - provided + me.totalfreedom + tfguilds + 2021.06-RC2 + compile From e288668c92109593540ad66c775258961e963564 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Sep 2021 18:42:31 +0100 Subject: [PATCH 58/73] Bump maven-antrun-plugin from 1.8 to 3.0.0 (#102) Bumps [maven-antrun-plugin](https://github.com/apache/maven-antrun-plugin) from 1.8 to 3.0.0. - [Release notes](https://github.com/apache/maven-antrun-plugin/releases) - [Commits](https://github.com/apache/maven-antrun-plugin/compare/maven-antrun-plugin-1.8...maven-antrun-plugin-3.0.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-antrun-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 92f00dc3..928e5ca3 100644 --- a/pom.xml +++ b/pom.xml @@ -332,7 +332,7 @@ org.apache.maven.plugins maven-antrun-plugin - 1.8 + 3.0.0 default-cli From 2f332a8c42b8e339c71b64b2adec17515eb7f75f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Sep 2021 18:48:33 +0100 Subject: [PATCH 59/73] Bump annotations from 20.1.0 to 22.0.0 (#104) Bumps [annotations](https://github.com/JetBrains/java-annotations) from 20.1.0 to 22.0.0. - [Release notes](https://github.com/JetBrains/java-annotations/releases) - [Changelog](https://github.com/JetBrains/java-annotations/blob/master/CHANGELOG.md) - [Commits](https://github.com/JetBrains/java-annotations/compare/20.1.0...22.0.0) --- updated-dependencies: - dependency-name: org.jetbrains:annotations dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 928e5ca3..bfc6443d 100644 --- a/pom.xml +++ b/pom.xml @@ -239,7 +239,7 @@ org.jetbrains annotations - 20.1.0 + 22.0.0 compile From 02049618341b601f605f3a34c0189f030d27d138 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 11 Sep 2021 23:53:41 +0100 Subject: [PATCH 60/73] Bump commons-io from 2.8.0 to 2.11.0 (#117) Bumps commons-io from 2.8.0 to 2.11.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bfc6443d..a37c041e 100644 --- a/pom.xml +++ b/pom.xml @@ -114,7 +114,7 @@ commons-io commons-io - 2.8.0 + 2.11.0 compile From 6772333eb41e7ccc2ec95a7523f3f36055151ac2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Sep 2021 00:10:47 +0100 Subject: [PATCH 61/73] Bump junit-jupiter from 5.4.2 to 5.7.2 (#103) Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.4.2 to 5.7.2. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.4.2...r5.7.2) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a37c041e..23591220 100644 --- a/pom.xml +++ b/pom.xml @@ -253,7 +253,7 @@ org.junit.jupiter junit-jupiter - 5.4.2 + 5.7.2 compile From 0e12f5e792614df5430b0f510aac32a83bd8f9ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Sep 2021 09:09:28 +0100 Subject: [PATCH 62/73] Bump commons-lang3 from 3.11 to 3.12.0 (#111) Bumps commons-lang3 from 3.11 to 3.12.0. --- updated-dependencies: - dependency-name: org.apache.commons:commons-lang3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b5dfe221..b9355d7b 100644 --- a/pom.xml +++ b/pom.xml @@ -121,7 +121,7 @@ org.apache.commons commons-lang3 - 3.11 + 3.12.0 compile From 8a31b4c5c06893b7df28337541772c8c9b6a3051 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Sep 2021 11:33:52 +0100 Subject: [PATCH 63/73] Bump javassist from 3.27.0-GA to 3.28.0-GA (#110) Bumps [javassist](https://github.com/jboss-javassist/javassist) from 3.27.0-GA to 3.28.0-GA. - [Release notes](https://github.com/jboss-javassist/javassist/releases) - [Commits](https://github.com/jboss-javassist/javassist/commits) --- updated-dependencies: - dependency-name: org.javassist:javassist dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b9355d7b..71a48bc9 100644 --- a/pom.xml +++ b/pom.xml @@ -219,7 +219,7 @@ org.javassist javassist - 3.27.0-GA + 3.28.0-GA compile From 213a43380e49255c5d6195e032e82d4db501ed53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 12 Sep 2021 12:13:56 +0100 Subject: [PATCH 64/73] Bump git-commit-id-plugin from 4.0.2 to 4.9.10 (#113) Bumps git-commit-id-plugin from 4.0.2 to 4.9.10. --- updated-dependencies: - dependency-name: pl.project13.maven:git-commit-id-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 71a48bc9..53f437a8 100644 --- a/pom.xml +++ b/pom.xml @@ -285,7 +285,7 @@ pl.project13.maven git-commit-id-plugin - 4.0.2 + 4.9.10 get-the-git-infos From 180cd811328bed269be63cc62481fd625b24eb9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Sep 2021 09:58:54 +0100 Subject: [PATCH 65/73] Bump junit-jupiter from 5.7.2 to 5.8.0 (#139) Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.7.2 to 5.8.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.7.2...r5.8.0) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 53f437a8..7dfc2488 100644 --- a/pom.xml +++ b/pom.xml @@ -247,7 +247,7 @@ org.junit.jupiter junit-jupiter - 5.7.2 + 5.8.0 compile From e122c4c5fa2edf9f6be46db65938b7f1de0cc4b8 Mon Sep 17 00:00:00 2001 From: Wild1145 Date: Sun, 19 Sep 2021 17:32:05 +0100 Subject: [PATCH 66/73] Bump to 2021.09-RC01 Release --- SECURITY.md | 7 +++++-- pom.xml | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index adc91e1d..a18bd56e 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -11,20 +11,23 @@ These versions are currently actively supported by our team, and you should expe | Version | Supported | Support End: | | ------------------- | ------------------ | ------------------------------ | -| 2021.05 | :white_check_mark: | No Earlier than August 2021 | +| 2021.09 | :white_check_mark: | No Earlier than December 2021 | ### Legacy Supported These versions are no longer under active development, however we will look to release critical secuirty patches where appropriate. | Version | Supported | Support End: | | ------------------- | ------------------ | ------------ | -| 2021.04 | :white_check_mark: | July 2021 | +| 2021.06 | :white_check_mark: | October 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.05 | :white_check_mark: | September 2021 | +| 2021.04 | :white_check_mark: | July 2021 | | 2021.02 | :x: | 6 June 2021 | | 2020.11 | :x: | 3 May 2021 | | 6.0.x (Pre-Release) | :x: | December 2020 | diff --git a/pom.xml b/pom.xml index 7dfc2488..6d275ae7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 2021.06 + 2021.09-RC01 jar From 936f0b621e39b9e1783f6bdc10852e3c5efea8e6 Mon Sep 17 00:00:00 2001 From: Video Date: Sun, 3 Oct 2021 06:45:02 -0600 Subject: [PATCH 67/73] Stupid simple fix Fixes an oopsie I made and an oopsie someone else made which broke the entire plugin. --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7dfc2488..abec2727 100644 --- a/pom.xml +++ b/pom.xml @@ -429,8 +429,8 @@ org.reflections:reflections org.javassist:javassist io.papermc:paperlib - com.github.speedxx:Mojangson org.bstats:bstats-bukkit + org.bstats:bstats-base org.jetbrains:annotations From 4c287ca9b81a748750407bd1feb563376871a7c1 Mon Sep 17 00:00:00 2001 From: Ryan Wild Date: Sun, 3 Oct 2021 15:50:33 +0100 Subject: [PATCH 68/73] Bump to RC02 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ee78b3c4..07c1c073 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 2021.09-RC01 + 2021.09-RC02 jar From 4d469cdc0a529a5c3a8b916b82c4626e9c7859e7 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sun, 3 Oct 2021 15:57:47 +0100 Subject: [PATCH 69/73] Move from Java 16 to Java 17 (#149) * Move from Java 16 to Java 17 * Update java17-maven.yml --- .github/workflows/{java16-maven.yml => java17-maven.yml} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename .github/workflows/{java16-maven.yml => java17-maven.yml} (75%) diff --git a/.github/workflows/java16-maven.yml b/.github/workflows/java17-maven.yml similarity index 75% rename from .github/workflows/java16-maven.yml rename to .github/workflows/java17-maven.yml index 92896df8..43d090ab 100644 --- a/.github/workflows/java16-maven.yml +++ b/.github/workflows/java17-maven.yml @@ -1,9 +1,9 @@ -name: Java16-Maven-Build +name: Java17-Maven-Build on: [push] jobs: - build-java-16: + build-java-17: runs-on: ubuntu-latest @@ -12,10 +12,10 @@ jobs: - uses: actions/checkout@v1 # Java 16 Builds - - name: Set up JDK 16 + - name: Set up JDK 17 uses: actions/setup-java@v2.3.0 with: - java-version: 16 + java-version: 17 distribution: 'adopt' - name: Build with Maven run: mvn -B package --file pom.xml From 74a71b1843dc5410893c5e614b77a6271cae5518 Mon Sep 17 00:00:00 2001 From: Video Date: Mon, 4 Oct 2021 16:02:39 -0600 Subject: [PATCH 70/73] Important bugfix It appears someone had an extremely big brain moment. --- .../totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java index dc846cd1..30d51a9d 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java @@ -283,7 +283,6 @@ public class CoreProtectBridge extends FreedomService if (block != null) { event.setCancelled(true); - List lookup = coreProtect.blockLookup(block, -1); int cooldownTime = 3; @@ -298,6 +297,8 @@ public class CoreProtectBridge extends FreedomService } } + List lookup = coreProtect.blockLookup(block, -1); + if (!plugin.al.isAdmin(player)) { cooldown.put(player.getName(), System.currentTimeMillis()); From abfa3b977c92b7e179f1070692ecd97c86ba6071 Mon Sep 17 00:00:00 2001 From: Video Date: Sat, 13 Nov 2021 02:35:30 -0700 Subject: [PATCH 71/73] Whoops This commit fixes 2 things: 1. A redundant check that was completely unnecessary 2. A loophole in my original bugfix commit I didn't initially discover until afterwards which enables players to do the same thing except with right clicking instead The block inspector should be completely rewritten in the future, but for now it works. --- .../bridge/CoreProtectBridge.java | 157 ++++++++---------- 1 file changed, 72 insertions(+), 85 deletions(-) diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java index 30d51a9d..c0a00e39 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java @@ -276,27 +276,30 @@ public class CoreProtectBridge extends FreedomService Block block = event.getClickedBlock(); final CoreProtectAPI coreProtect = getCoreProtectAPI(); + // TODO: Rewrite this if (data.hasInspection()) { + int cooldownTime = 3; + + // Cooldown check + if ((event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) + && cooldown.containsKey(player.getName())) + { + long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime); + if (secondsLeft > 0L) + { + event.setCancelled(true); + player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query."); + return; + } + } + + // Actual lookup time if (event.getAction() == Action.LEFT_CLICK_BLOCK) { if (block != null) { event.setCancelled(true); - - int cooldownTime = 3; - - if (cooldown.containsKey(player.getName())) - { - long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime); - if (secondsLeft > 0L) - { - event.setCancelled(true); - player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query."); - return; - } - } - List lookup = coreProtect.blockLookup(block, -1); if (!plugin.al.isAdmin(player)) @@ -365,91 +368,75 @@ public class CoreProtectBridge extends FreedomService { if (block != null) { - if (data.hasInspection()) - { - BlockState blockState = block.getRelative(event.getBlockFace()).getState(); - Block placedBlock = blockState.getBlock(); - event.setCancelled(true); - List lookup = coreProtect.blockLookup(placedBlock, -1); + BlockState blockState = block.getRelative(event.getBlockFace()).getState(); + Block placedBlock = blockState.getBlock(); + event.setCancelled(true); + List lookup = coreProtect.blockLookup(placedBlock, -1); + if (lookup.isEmpty()) + { + lookup = coreProtect.blockLookup(block, -1); + } + + if (!plugin.al.isAdmin(player)) + { + cooldown.put(player.getName(), System.currentTimeMillis()); + } + + if (lookup != null) + { if (lookup.isEmpty()) { - lookup = coreProtect.blockLookup(block, -1); + player.sendMessage(net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector " + ChatColor.WHITE + "- " + "No block data found for this location"); + return; } - int cooldownTime = 3; + HISTORY_MAP.remove(event.getPlayer()); + HISTORY_MAP.put(event.getPlayer(), new FUtil.PaginationList<>(10)); + FUtil.PaginationList paged = HISTORY_MAP.get(event.getPlayer()); - if (cooldown.containsKey(player.getName())) + player.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- " + + ChatColor.GRAY + "(x" + block.getX() + "/" + "y" + block.getY() + "/" + "z" + block.getZ() + ")"); + + for (String[] value : lookup) { - long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime); - if (secondsLeft > 0L) + CoreProtectAPI.ParseResult result = coreProtect.parseResult(value); + BlockData bl = result.getBlockData(); + + String s; + String st = ""; + + if (result.getActionString().equals("Placement")) { - event.setCancelled(true); - player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query."); - return; + s = " placed "; } + else if (result.getActionString().equals("Removal")) + { + s = " broke "; + } + else + { + s = " interacted with "; + } + + if (result.isRolledBack()) + { + st += "§m"; + } + + int time = (int)(System.currentTimeMillis() / 1000L); + + paged.add(ChatColor.GRAY + getTimeAgo(result.getTime(), time) + ChatColor.WHITE + " - " + net.md_5.bungee.api.ChatColor.of("#30ade4") + + st + result.getPlayer() + ChatColor.WHITE + st + s + net.md_5.bungee.api.ChatColor.of("#30ade4") + st + bl.getMaterial().toString().toLowerCase()); } - if (!plugin.al.isAdmin(player)) + List page = paged.getPage(1); + for (String entries : page) { - cooldown.put(player.getName(), System.currentTimeMillis()); + player.sendMessage(entries); } - if (lookup != null) - { - if (lookup.isEmpty()) - { - player.sendMessage(net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector " + ChatColor.WHITE + "- " + "No block data found for this location"); - return; - } - - HISTORY_MAP.remove(event.getPlayer()); - HISTORY_MAP.put(event.getPlayer(), new FUtil.PaginationList<>(10)); - FUtil.PaginationList paged = HISTORY_MAP.get(event.getPlayer()); - - player.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- " + - ChatColor.GRAY + "(x" + block.getX() + "/" + "y" + block.getY() + "/" + "z" + block.getZ() + ")"); - - for (String[] value : lookup) - { - CoreProtectAPI.ParseResult result = coreProtect.parseResult(value); - BlockData bl = result.getBlockData(); - - String s; - String st = ""; - - if (result.getActionString().equals("Placement")) - { - s = " placed "; - } - else if (result.getActionString().equals("Removal")) - { - s = " broke "; - } - else - { - s = " interacted with "; - } - - if (result.isRolledBack()) - { - st += "§m"; - } - - int time = (int)(System.currentTimeMillis() / 1000L); - - paged.add(ChatColor.GRAY + getTimeAgo(result.getTime(), time) + ChatColor.WHITE + " - " + net.md_5.bungee.api.ChatColor.of("#30ade4") + - st + result.getPlayer() + ChatColor.WHITE + st + s + net.md_5.bungee.api.ChatColor.of("#30ade4") + st + bl.getMaterial().toString().toLowerCase()); - } - - List page = paged.getPage(1); - for (String entries : page) - { - player.sendMessage(entries); - } - - player.sendMessage("Page 1/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history "); - } + player.sendMessage("Page 1/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history "); } } } From 1e1367d08f9f13580efb19e2c440f9146c0b5ba4 Mon Sep 17 00:00:00 2001 From: Video Date: Sat, 13 Nov 2021 02:58:36 -0700 Subject: [PATCH 72/73] Bump to RC03 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 07c1c073..966d1c59 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 2021.09-RC02 + 2021.09-RC03 jar From 9155ac90b5003c4bb84464b492bff1129cc47e4a Mon Sep 17 00:00:00 2001 From: Paldiu Date: Mon, 22 Nov 2021 12:29:54 -0600 Subject: [PATCH 73/73] Official Release --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 966d1c59..77a1b10f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ me.totalfreedom TotalFreedomMod - 2021.09-RC03 + 2021.09 jar