mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-11-27 01:05:38 +00:00
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 <Wild1145@users.noreply.github.com>
This commit is contained in:
parent
bdf4ca84e0
commit
9dd0298f56
@ -1,13 +1,11 @@
|
|||||||
package me.totalfreedom.totalfreedommod;
|
package me.totalfreedom.totalfreedommod;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||||
import me.totalfreedom.totalfreedommod.util.FSync;
|
import me.totalfreedom.totalfreedommod.util.FSync;
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -20,7 +18,6 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
|||||||
public class Muter extends FreedomService
|
public class Muter extends FreedomService
|
||||||
{
|
{
|
||||||
|
|
||||||
public static final List<String> MUTE_COMMANDS = Arrays.asList(StringUtils.split("say,me,msg,tell,reply,mail", ","));
|
|
||||||
public final List<String> MUTED_PLAYERS = new ArrayList<>();
|
public final List<String> MUTED_PLAYERS = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -88,7 +85,7 @@ public class Muter extends FreedomService
|
|||||||
cmdName = command.getName().toLowerCase();
|
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.");
|
player.sendMessage(ChatColor.RED + "That command is blocked while you are muted.");
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -127,7 +127,6 @@ public class TotalFreedomMod extends JavaPlugin
|
|||||||
public Sitter st;
|
public Sitter st;
|
||||||
public VanishHandler vh;
|
public VanishHandler vh;
|
||||||
public Pterodactyl ptero;
|
public Pterodactyl ptero;
|
||||||
//public HubWorldRestrictions hwr;
|
|
||||||
//
|
//
|
||||||
// Bridges
|
// Bridges
|
||||||
public BukkitTelnetBridge btb;
|
public BukkitTelnetBridge btb;
|
||||||
|
@ -15,7 +15,6 @@ public class WorldGuardBridge extends FreedomService
|
|||||||
@Override
|
@Override
|
||||||
public void onStart()
|
public void onStart()
|
||||||
{
|
{
|
||||||
plugin.wr.protectWorld(plugin.wm.hubworld.getWorld());
|
|
||||||
plugin.wr.protectWorld(plugin.wm.masterBuilderWorld.getWorld());
|
plugin.wr.protectWorld(plugin.wm.masterBuilderWorld.getWorld());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 = "/<command> [time <morning | noon | evening | night> | weather <off | rain | storm>]",
|
|
||||||
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<String> 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -88,7 +88,7 @@ public class Command_list extends FreedomCommand
|
|||||||
|
|
||||||
List<String> n = new ArrayList<>();
|
List<String> 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<Admin> connectedAdmins = plugin.btb.getConnectedAdmins();
|
List<Admin> connectedAdmins = plugin.btb.getConnectedAdmins();
|
||||||
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedAdmins.size())
|
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedAdmins.size())
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
@ -19,9 +20,6 @@ import org.bukkit.entity.Player;
|
|||||||
public class Command_tag extends FreedomCommand
|
public class Command_tag extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
public static final List<String> FORBIDDEN_WORDS = Arrays.asList(
|
|
||||||
"admin", "owner", "moderator", "developer", "console", "dev", "staff", "mod", "sra", "tca", "sta", "sa");
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
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))
|
if (!plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
for (String word : FORBIDDEN_WORDS)
|
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||||
{
|
{
|
||||||
if (rawTag.contains(word))
|
if (rawTag.contains(word))
|
||||||
{
|
{
|
||||||
@ -261,7 +259,7 @@ public class Command_tag extends FreedomCommand
|
|||||||
|
|
||||||
if (!plugin.al.isAdmin(sender))
|
if (!plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
for (String word : FORBIDDEN_WORDS)
|
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||||
{
|
{
|
||||||
if (rawTag.contains(word))
|
if (rawTag.contains(word))
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
@ -43,7 +44,7 @@ public class Command_tagnyan extends FreedomCommand
|
|||||||
|
|
||||||
if (!plugin.al.isAdmin(sender))
|
if (!plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
for (String word : Command_tag.FORBIDDEN_WORDS)
|
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||||
{
|
{
|
||||||
if (rawTag.contains(word))
|
if (rawTag.contains(word))
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
@ -33,7 +34,7 @@ public class Command_tagrainbow extends FreedomCommand
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String word : Command_tag.FORBIDDEN_WORDS)
|
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||||
{
|
{
|
||||||
if (rawTag.contains(word))
|
if (rawTag.contains(word))
|
||||||
{
|
{
|
||||||
|
@ -13,6 +13,8 @@ import me.totalfreedom.totalfreedommod.rank.Rank;
|
|||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang.ArrayUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@ -44,6 +46,9 @@ public class Command_tempban extends FreedomCommand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final String username;
|
||||||
|
final List<String> ips = new ArrayList<>();
|
||||||
|
|
||||||
final Player player = getPlayer(args[0]);
|
final Player player = getPlayer(args[0]);
|
||||||
final PlayerData entry;
|
final PlayerData entry;
|
||||||
if (player == null)
|
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.");
|
msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
username = entry.getName();
|
||||||
|
ips.addAll(entry.getIps());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
entry = plugin.pl.getData(player);
|
entry = plugin.pl.getData(player);
|
||||||
|
username = player.getName();
|
||||||
|
ips.add(FUtil.getIp(player));
|
||||||
}
|
}
|
||||||
final List<String> ips = new ArrayList<>(entry.getIps());
|
|
||||||
|
|
||||||
assert player != null;
|
final StringBuilder message = new StringBuilder("Temporarily banned " + username);
|
||||||
final StringBuilder message = new StringBuilder("Temporarily banned " + player.getName());
|
|
||||||
|
|
||||||
Date expires = FUtil.parseDateOffset("30m");
|
Date expires = FUtil.parseDateOffset("30m");
|
||||||
message.append(" until ").append(date_format.format(expires));
|
message.append(" until ").append(date_format.format(expires));
|
||||||
@ -80,16 +88,36 @@ public class Command_tempban extends FreedomCommand
|
|||||||
message.append(", Reason: \"").append(reason).append("\"");
|
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)
|
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++)
|
// 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);
|
for (int z = -1; z <= 1; z++)
|
||||||
Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos);
|
{
|
||||||
|
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
|
else
|
||||||
{
|
{
|
||||||
msg("Quietly temporarily banned " + player.getName() + ".");
|
msg("Quietly temporarily banned " + username + ".");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (player != null)
|
||||||
Ban ban;
|
|
||||||
|
|
||||||
ban = Ban.forPlayer(player, sender, null, reason);
|
|
||||||
|
|
||||||
for (String ip : ips)
|
|
||||||
{
|
{
|
||||||
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(username, ips.get(0), sender.getName(), PunishmentType.TEMPBAN, reason));
|
||||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.TEMPBAN, reason));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,6 +3,8 @@ package me.totalfreedom.totalfreedommod.command;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -15,14 +17,6 @@ import org.bukkit.entity.Player;
|
|||||||
public class Command_wildcard extends FreedomCommand
|
public class Command_wildcard extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
public static final List<String> BLOCKED_COMMANDS = Arrays.asList(
|
|
||||||
"wildcard",
|
|
||||||
"gtfo",
|
|
||||||
"doom",
|
|
||||||
"slconfig",
|
|
||||||
"smite"
|
|
||||||
);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
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(","));
|
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))
|
if (blockedCommand.equals(args[0].toLowerCase()) || aliases.contains(blockedCommand))
|
||||||
{
|
{
|
||||||
|
@ -155,7 +155,10 @@ public enum ConfigEntry
|
|||||||
EXPLOSIVE_RADIUS(Double.class, "explosive_radius"),
|
EXPLOSIVE_RADIUS(Double.class, "explosive_radius"),
|
||||||
FREECAM_TRIGGER_COUNT(Integer.class, "freecam_trigger_count"),
|
FREECAM_TRIGGER_COUNT(Integer.class, "freecam_trigger_count"),
|
||||||
SERVICE_CHECKER_URL(String.class, "service_checker_url"),
|
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"),
|
HOST_SENDER_NAMES(List.class, "host_sender_names"),
|
||||||
FAMOUS_PLAYERS(List.class, "famous_players"),
|
FAMOUS_PLAYERS(List.class, "famous_players"),
|
||||||
ADMIN_ONLY_MODE(Boolean.class, "admin_only_mode"),
|
ADMIN_ONLY_MODE(Boolean.class, "admin_only_mode"),
|
||||||
|
@ -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)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -20,14 +20,12 @@ public class WorldManager extends FreedomService
|
|||||||
public Flatlands flatlands;
|
public Flatlands flatlands;
|
||||||
public AdminWorld adminworld;
|
public AdminWorld adminworld;
|
||||||
public MasterBuilderWorld masterBuilderWorld;
|
public MasterBuilderWorld masterBuilderWorld;
|
||||||
public HubWorld hubworld;
|
|
||||||
|
|
||||||
public WorldManager()
|
public WorldManager()
|
||||||
{
|
{
|
||||||
this.flatlands = new Flatlands();
|
this.flatlands = new Flatlands();
|
||||||
this.adminworld = new AdminWorld();
|
this.adminworld = new AdminWorld();
|
||||||
this.masterBuilderWorld = new MasterBuilderWorld();
|
this.masterBuilderWorld = new MasterBuilderWorld();
|
||||||
this.hubworld = new HubWorld();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -36,7 +34,6 @@ public class WorldManager extends FreedomService
|
|||||||
flatlands.getWorld();
|
flatlands.getWorld();
|
||||||
adminworld.getWorld();
|
adminworld.getWorld();
|
||||||
masterBuilderWorld.getWorld();
|
masterBuilderWorld.getWorld();
|
||||||
hubworld.getWorld();
|
|
||||||
|
|
||||||
// Disable weather
|
// Disable weather
|
||||||
if (ConfigEntry.DISABLE_WEATHER.getBoolean())
|
if (ConfigEntry.DISABLE_WEATHER.getBoolean())
|
||||||
@ -57,7 +54,6 @@ public class WorldManager extends FreedomService
|
|||||||
flatlands.getWorld().save();
|
flatlands.getWorld().save();
|
||||||
adminworld.getWorld().save();
|
adminworld.getWorld().save();
|
||||||
masterBuilderWorld.getWorld().save();
|
masterBuilderWorld.getWorld().save();
|
||||||
hubworld.getWorld().save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
@ -73,10 +69,6 @@ public class WorldManager extends FreedomService
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (event.getWorld().equals(hubworld.getWorld()) && hubworld.getWeatherMode() != WorldWeather.OFF)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ignored)
|
catch (Exception ignored)
|
||||||
{
|
{
|
||||||
@ -101,10 +93,6 @@ public class WorldManager extends FreedomService
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (event.getWorld().equals(hubworld.getWorld()) && hubworld.getWeatherMode() != WorldWeather.OFF)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ignored)
|
catch (Exception ignored)
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,7 @@ public class WorldRestrictions extends FreedomService
|
|||||||
{
|
{
|
||||||
if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getName()))
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -230,214 +230,242 @@ allow:
|
|||||||
auto_clear: false
|
auto_clear: false
|
||||||
gravity: 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:
|
blocked_commands:
|
||||||
# Core Protect Blocked and shows as an unknown command...
|
#
|
||||||
- 'a:u:/co:_'
|
# How globally blocked commands work:
|
||||||
- 'n:u:/co purge:_'
|
# All sections described below are delimited by colon characters.
|
||||||
- 'a:u:/coreprotect:_'
|
# Make sure that you block a command by its main command name, not an alias
|
||||||
- 'n:u:/coreprotect purge:_'
|
# as all aliases are blocked by default. Commands are case-insensitive.
|
||||||
- 'a:u:/core:_'
|
#
|
||||||
- 'n:u:/core purge:_'
|
# * The first section is a letter which indicates which rank may use this command
|
||||||
# Disabled commands
|
# Valid ranks:
|
||||||
- 'n:b:/essentials:_'
|
# n - Nobody (Completely disabled)
|
||||||
- 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.'
|
# a - Admins (Console)
|
||||||
- 'n:b:/disguiseradius:_'
|
# s - Senior Admins (Console)
|
||||||
- 'n:b:/undisguiseradius:_'
|
# o - Ops (Non-Ops won't be able to use it)
|
||||||
- 'n:b:/debug:_'
|
#
|
||||||
- 'n:b:/pardon:_'
|
# * The second section is a letter which indicates what to do when a player executes that command.
|
||||||
- 'n:b:/ban-ip:_'
|
# Valid actions:
|
||||||
- 'n:b:/pardon-ip:_'
|
# b - Block the command
|
||||||
- 'n:b:/toggledownfall:_'
|
# a - Block the command and auto-eject that player (for ops and below)
|
||||||
- 'n:b:/spreadplayers:_'
|
# u - Block the command and Return an "Unknown command" message (Used to hide commands)
|
||||||
- 'n:b:/blockdata:_'
|
#
|
||||||
- 'n:b:/clearhistory:_'
|
# * The third section is the command to be blocked, prefixed with a slash
|
||||||
- 'n:b:/save-on:_'
|
#
|
||||||
- 'n:b:/save-off:_'
|
# * The fourth section is the message to send to the player when executing that command.
|
||||||
- 'n:b:/packet:_'
|
# This should be omitted if unwanted. ChatColors are supported with the &-key. By default
|
||||||
- 'n:b://eval:_'
|
# the starting ChatColor is set to gray. You can use the default 'That command is blocked.' message
|
||||||
- 'n:b:/testvote:_'
|
# by using a single underscore.
|
||||||
- 'n:b:/nvreload:_'
|
#
|
||||||
- 'n:b:/bungeeguard:_'
|
# Examples:
|
||||||
- 'n:b:/buycraft:_'
|
# - 'n:b:/mail sendall:&4You can't send mails to everyone!'
|
||||||
- 'n:b:/spigot reload:_'
|
# - 's:a:/stop'
|
||||||
# - 'n:b:/setjail:_'
|
# - 'n:b:/ban:_'
|
||||||
- 'n:b:/mail sendall:Sending mail to all players is not allowed.'
|
#
|
||||||
- 'n:b:/entitydata:_'
|
global:
|
||||||
- 'n:b:/skins:_'
|
# CoreProtect Blocked and shows as an unknown command...
|
||||||
- 'n:b:/advancement:_'
|
- 'a:u:/co:_'
|
||||||
- 'n:b:/worldborder:The worldborder does not need to be changed. This command is disabled.'
|
- 'n:u:/co purge:_'
|
||||||
- 'n:b:/defaultgamemode:The default gamemode should not be changed.'
|
- 'a:u:/coreprotect:_'
|
||||||
- 'n:b:/thread:_'
|
- 'n:u:/coreprotect purge:_'
|
||||||
- 'n:b:/stacktrace:_'
|
- 'a:u:/core:_'
|
||||||
- 'n:b:/function:_'
|
- 'n:u:/core purge:_'
|
||||||
- '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:_'
|
|
||||||
|
|
||||||
# Admin commands
|
# Disabled commands
|
||||||
- 'a:b:/vive:_'
|
- 'n:b:/essentials:_'
|
||||||
- 'a:b:/vse:_'
|
- 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.'
|
||||||
- 'a:b:/lightning:_'
|
- 'n:b:/disguiseradius:_'
|
||||||
- 'a:b:/playsound:_'
|
- 'n:b:/undisguiseradius:_'
|
||||||
- 'a:b:/locatebiome:_'
|
- 'n:b:/debug:_'
|
||||||
- 'a:b:/delchunks:_'
|
- 'n:b:/pardon:_'
|
||||||
- 'a:b:/exploitfixer:_'
|
- 'n:b:/ban-ip:_'
|
||||||
- 'a:b:/massivelag:_'
|
- 'n:b:/pardon-ip:_'
|
||||||
- 'a:b:/ml:_'
|
- 'n:b:/toggledownfall:_'
|
||||||
- 'a:b:/createkit:_'
|
- 'n:b:/spreadplayers:_'
|
||||||
- 'a:b:/delkit:_'
|
- 'n:b:/blockdata:_'
|
||||||
- 'a:b:/region:_'
|
- 'n:b:/clearhistory:_'
|
||||||
- 'a:b:/clone:_'
|
- 'n:b:/save-on:_'
|
||||||
- 'a:b:/cap:_'
|
- 'n:b:/save-off:_'
|
||||||
- 'a:b:/gamemode:Use /gmc and /gms to set your gamemode.'
|
- 'n:b:/packet:_'
|
||||||
- 'a:b:/powernbt:_'
|
- 'n:b://eval:_'
|
||||||
- 'a:b:/nbt.:_'
|
- 'n:b:/testvote:_'
|
||||||
- 'a:b:/blockshub:_'
|
- 'n:b:/nvreload:_'
|
||||||
- 'a:b:/protocol:_'
|
- 'n:b:/bungeeguard:_'
|
||||||
- 'a:b:/libsdisguises reload:_'
|
- 'n:b:/buycraft:_'
|
||||||
- 'a:b://awe:_'
|
- 'n:b:/spigot reload:_'
|
||||||
- 'a:b:/stopfire:_'
|
- 'n:b:/mail sendall:Sending mail to all players is not allowed.'
|
||||||
- 'a:b:/allowfire'
|
- 'n:b:/entitydata:_'
|
||||||
- 'a:b:/stoplag:_'
|
- 'n:b:/skins:_'
|
||||||
- 'a:b:/worldguard:_'
|
- 'n:b:/advancement:_'
|
||||||
- 'a:b:/slay:_'
|
- 'n:b:/worldborder:The worldborder does not need to be changed. This command is disabled.'
|
||||||
- 'a:b:/save-all:_'
|
- 'n:b:/defaultgamemode:The default gamemode should not be changed.'
|
||||||
- 'a:b:/libsdisguises:_'
|
- 'n:b:/thread:_'
|
||||||
- 'a:b:/particle:Due to security reasons, the use of /particle has been disabled.'
|
- 'n:b:/stacktrace:_'
|
||||||
- 'a:b:/rainbowclear:_'
|
- 'n:b:/function:_'
|
||||||
- 'a:b:/rainbowspeed:_'
|
- 'n:b:/forceload:_'
|
||||||
- 'a:b:/kick:_'
|
- 'n:b:/fill:_'
|
||||||
- 'a:b:/difficulty:_'
|
- 'n:b:/paper:_'
|
||||||
- 'a:b:/captchafy:_'
|
- 'n:b:/locate:_'
|
||||||
- 'a:b:/socialspy:_'
|
- 'n:b:/vvbukkit:_'
|
||||||
- 'a:b:/sproxy:_'
|
- 'n:b:/plot area c:_'
|
||||||
- 'a:b:/replaceitem:_'
|
- 'n:b:/d minecart_command:_'
|
||||||
- 'a:b:/kill:_'
|
- 'n:b:/loot:_'
|
||||||
- 'a:b:/reaction:_'
|
- 'n:b:/plan:_'
|
||||||
- 'a:b:/setworldspawn:_'
|
- 'n:b://material:_'
|
||||||
- 'a:b:/scoreboard:_'
|
- 'n:b://mat:_'
|
||||||
- 'a:b:/setspawn:_'
|
- 'n:b:/mat:_'
|
||||||
- 'a:b:/forestgen:_'
|
- 'n:b:/vpnguard:_'
|
||||||
- 'a:b:/setidletimeout:_'
|
- 'n:b:/pcapi:_'
|
||||||
- 'a:b:/lrbuild:_'
|
- 'n:b://distr:&cNope.'
|
||||||
- 'a:b:/size:_'
|
- 'n:b:/data:_'
|
||||||
- 'a:b:/break:_'
|
- 'n:b:/datapack:_'
|
||||||
- 'a:b:/disentity:_'
|
- 'n:b://regen:_'
|
||||||
- 'a:b:/reload:_'
|
- 'n:b:/execute:_'
|
||||||
- 'a:b:/title:_'
|
- 'n:b:/killall:_'
|
||||||
- 'a:b:/weather:_'
|
- 'n:b:/createdisguise:_'
|
||||||
- 'a:b:/tpall:_'
|
- 'n:b:/attribute:_'
|
||||||
- 'a:b:/etpall:_'
|
|
||||||
- 'a:b:/setblock:_'
|
# Admin commands
|
||||||
- 'a:b:/gamerule:_'
|
- 'a:b:/vive:_'
|
||||||
- 'a:b:/togglejail:_'
|
- 'a:b:/vse:_'
|
||||||
- 'a:b:/range:_'
|
- 'a:b:/lightning:_'
|
||||||
- 'a:b:/stop:_'
|
- 'a:b:/playsound:_'
|
||||||
- 'a:b:/restart:_'
|
- 'a:b:/locatebiome:_'
|
||||||
- 'a:b:/sr:_'
|
- 'a:b:/delchunks:_'
|
||||||
- 'a:b:/tpo:_'
|
- 'a:b:/exploitfixer:_'
|
||||||
- 'a:b:/tpohere:_'
|
- 'a:b:/massivelag:_'
|
||||||
- 'a:b:/tphere:_'
|
- 'a:b:/ml:_'
|
||||||
- 'a:b:/rfchairs:_'
|
- 'a:b:/createkit:_'
|
||||||
- 'a:b:/ppo:_'
|
- 'a:b:/delkit:_'
|
||||||
- 'a:b:/vulnerabilitypatcher:_'
|
- 'a:b:/region:_'
|
||||||
- 'a:b:/crackshot config:_'
|
- 'a:b:/clone:_'
|
||||||
- 'a:b:/marry reload:_'
|
- 'a:b:/cap:_'
|
||||||
- 'a:b:/bh:_'
|
- 'a:b:/gamemode:Use /gmc and /gms to set your gamemode.'
|
||||||
- 'a:b:/tpaall:_'
|
- 'a:b:/powernbt:_'
|
||||||
- 'a:b:/paper heap:_'
|
- 'a:b:/nbt.:_'
|
||||||
- 'a:u:/burn:_'
|
- 'a:b:/blockshub:_'
|
||||||
- 'a:b:/summon:_'
|
- 'a:b:/protocol:_'
|
||||||
- 'a:b:/discord:_'
|
- 'a:b:/libsdisguises reload:_'
|
||||||
- 'a:b:/bossbar:_'
|
- 'a:b://awe:_'
|
||||||
- 'a:b:/team:_'
|
- 'a:b:/stopfire:_'
|
||||||
- 'a:b:/spawner:_'
|
- 'a:b:/allowfire'
|
||||||
# - 'a:b:/getpos:_'
|
- 'a:b:/stoplag:_'
|
||||||
- 's:b:/istack:_'
|
- 'a:b:/worldguard:_'
|
||||||
- 'a:b:/getloc:_'
|
- 'a:b:/slay:_'
|
||||||
- 'a:b:/holo:_'
|
- 'a:b:/save-all:_'
|
||||||
- 'a:b:/hd:_'
|
- 'a:b:/libsdisguises:_'
|
||||||
- 'a:b:/hologram:_'
|
- 'a:b:/particle:Due to security reasons, the use of /particle has been disabled.'
|
||||||
- 'a:b:/holograms:_'
|
- 'a:b:/rainbowclear:_'
|
||||||
# - '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?
|
- 'a:b:/rainbowspeed:_'
|
||||||
- 's:b:/awe toggle:_'
|
- 'a:b:/kick:_'
|
||||||
- 's:b:/tellraw:_'
|
- 'a:b:/difficulty:_'
|
||||||
- 's:b://awe toggle:_'
|
- 'a:b:/captchafy:_'
|
||||||
- 'a:b:/openinv:_'
|
- 'a:b:/socialspy:_'
|
||||||
- 'a:b:/oi:_'
|
- 'a:b:/sproxy:_'
|
||||||
- 'a:b:/open:_'
|
- 'a:b:/replaceitem:_'
|
||||||
- 'a:b:/openender:_'
|
- 'a:b:/kill:_'
|
||||||
- 'a:b:/oe:_'
|
- 'a:b:/reaction:_'
|
||||||
- 'a:b:/searchinv:_'
|
- 'a:b:/setworldspawn:_'
|
||||||
- 'a:b:/si:_'
|
- 'a:b:/scoreboard:_'
|
||||||
- 'a:b:/searchender:_'
|
- 'a:b:/setspawn:_'
|
||||||
- 'a:b:/se:_'
|
- 'a:b:/forestgen:_'
|
||||||
- 'a:b:/searchenchant:_'
|
- 'a:b:/setidletimeout:_'
|
||||||
- 'a:b:/searchenchants:_'
|
- 'a:b:/lrbuild:_'
|
||||||
- 'a:b:/anycontainer:_'
|
- 'a:b:/size:_'
|
||||||
- 'a:b:/anychest:_'
|
- 'a:b:/break:_'
|
||||||
- 'a:b:/sc:_'
|
- 'a:b:/disentity:_'
|
||||||
- 'a:b:/fawe:_'
|
- 'a:b:/reload:_'
|
||||||
- 'a:b:/wea:_'
|
- 'a:b:/title:_'
|
||||||
- 'a:b:/protocolsupport:_'
|
- 'a:b:/weather:_'
|
||||||
- 'a:b:/ps:_'
|
- 'a:b:/tpall:_'
|
||||||
- 'n:b:/wra:_'
|
- 'a:b:/etpall:_'
|
||||||
- 's:b:/viaver:_'
|
- 'a:b:/setblock:_'
|
||||||
- 's:b:/viaversion:_'
|
- 'a:b:/gamerule:_'
|
||||||
- 's:b:/spark:_'
|
- '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
|
# Automatically wipe dropped objects
|
||||||
auto_wipe: true
|
auto_wipe: true
|
||||||
|
Loading…
Reference in New Issue
Block a user