From 9dd0298f56951344177bbc8c45f3aa4398118bbb Mon Sep 17 00:00:00 2001 From: Video Date: Sun, 9 May 2021 09:42:31 -0600 Subject: [PATCH] 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