mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-07-01 12:36:41 +00:00
Compare commits
32 Commits
2021.04-RC
...
2021.05
Author | SHA1 | Date | |
---|---|---|---|
86a8e21d06 | |||
da37ca52fa | |||
8c7bf365a0 | |||
eedb7a5375 | |||
d047cfc8ff | |||
9ff5da8d8f | |||
ac615f54f7 | |||
21af722e23 | |||
b1196fcf00 | |||
d170f6d323 | |||
9dd0298f56 | |||
bdf4ca84e0 | |||
7258d7f1bf | |||
8a504bff07 | |||
c00e64f736 | |||
9e73db0f24 | |||
951c061d77 | |||
579d3e0719 | |||
9777733d04 | |||
05e118dcb4 | |||
7a0d6f49f4 | |||
19f1b7f6bd | |||
b12afbdc1f | |||
49e77d4f93 | |||
eb9107bedf | |||
951c699ed0 | |||
9e676143b8 | |||
6895e46375 | |||
1cf46c7337 | |||
407b63e48b | |||
be562fe722 | |||
928ab41d7f |
14
pom.xml
14
pom.xml
@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>me.totalfreedom</groupId>
|
||||
<artifactId>TotalFreedomMod</artifactId>
|
||||
<version>2021.04-RC02</version>
|
||||
<version>2021.05</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
@ -252,9 +252,9 @@
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.TotalFreedomMC</groupId>
|
||||
<groupId>com.github.AtlasMediaGroup</groupId>
|
||||
<artifactId>TFGuilds</artifactId>
|
||||
<version>db036fb187</version>
|
||||
<version>master-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@ -277,6 +277,11 @@
|
||||
<version>5.4.2</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.sisu</groupId>
|
||||
<artifactId>org.eclipse.sisu.inject</artifactId>
|
||||
<version>0.3.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
@ -434,7 +439,8 @@
|
||||
<relocations>
|
||||
<relocation>
|
||||
<pattern>io.papermc.lib</pattern>
|
||||
<shadedPattern>me.totalfreedom.totalfreedommod.paperlib</shadedPattern> <!-- Replace this -->
|
||||
<shadedPattern>me.totalfreedom.totalfreedommod.paperlib
|
||||
</shadedPattern> <!-- Replace this -->
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>org.bstats</pattern>
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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<String> MUTE_COMMANDS = Arrays.asList(StringUtils.split("say,me,msg,tell,reply,mail", ","));
|
||||
public final List<String> 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);
|
||||
|
@ -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;
|
||||
|
@ -53,6 +53,6 @@ public class TFGuildsBridge extends FreedomService
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return Common.IN_GUILD_CHAT.contains(player);
|
||||
return Common.GUILD_CHAT.contains(player);
|
||||
}
|
||||
}
|
@ -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());
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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<>();
|
||||
|
||||
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();
|
||||
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedAdmins.size())
|
||||
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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 = "/<command> <player> [reason] [-c | -q]")
|
||||
@CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/<command> <player> [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;
|
||||
}
|
||||
|
@ -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<String> 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))
|
||||
{
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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<String> 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<String> 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,7 +88,26 @@ 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)
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
// Strike with lightning
|
||||
final Location targetPos = player.getLocation();
|
||||
@ -92,26 +119,28 @@ public class Command_tempban extends FreedomCommand
|
||||
Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FUtil.adminAction(sender.getName(), message.toString(), true);
|
||||
}
|
||||
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);
|
||||
}
|
||||
plugin.bm.addBan(ban);
|
||||
player.kickPlayer(ban.bakeKickMessage());
|
||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.TEMPBAN, reason));
|
||||
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.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.TEMPBAN, reason));
|
||||
return true;
|
||||
}
|
||||
}
|
@ -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<String> 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))
|
||||
{
|
||||
|
@ -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 = "/<command>")
|
||||
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;
|
||||
}
|
||||
}
|
@ -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 = "/<command>")
|
||||
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;
|
||||
}
|
||||
}
|
@ -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 = "/<command> <username | -a>")
|
||||
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;
|
||||
}
|
||||
}
|
@ -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 = "/<command> <world>")
|
||||
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<String> getAllWorldNames()
|
||||
{
|
||||
List<String> names = new ArrayList<>();
|
||||
for (World world : server.getWorlds())
|
||||
{
|
||||
names.add(world.getName());
|
||||
}
|
||||
return names;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args)
|
||||
{
|
||||
if (args.length == 1)
|
||||
{
|
||||
return getAllWorldNames();
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
@ -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 = "/<command>")
|
||||
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;
|
||||
}
|
||||
}
|
@ -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"),
|
||||
//
|
||||
@ -154,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"),
|
||||
|
@ -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())))
|
||||
{
|
||||
|
@ -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())))
|
||||
{
|
||||
|
@ -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());
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
@ -73,10 +57,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<String> DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix","abhithedev", "unsuperiordev", "videogamesm12");
|
||||
public static final List<String> DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix", "abhithedev", "NotInSync", "videogamesm12");
|
||||
public static final Map<String, ChatColor> CHAT_COLOR_NAMES = new HashMap<>();
|
||||
public static final List<ChatColor> CHAT_COLOR_POOL = Arrays.asList(
|
||||
ChatColor.DARK_RED,
|
||||
@ -274,7 +258,7 @@ public class FUtil
|
||||
public static Response sendRequest(String endpoint, String method, List<String> 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<String> regxList = new ArrayList<String>(){{
|
||||
private static final List<String> regxList = new ArrayList<String>()
|
||||
{{
|
||||
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<OfflinePlayer> players)
|
||||
{
|
||||
List<String> 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)
|
||||
@ -838,8 +836,22 @@ 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<T> extends ArrayList<T>
|
||||
{
|
||||
|
||||
private final int epp;
|
||||
|
||||
public PaginationList(int epp)
|
||||
@ -857,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<T> getPage(int page)
|
||||
|
@ -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 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)
|
||||
{
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
@ -228,46 +230,47 @@ 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...
|
||||
#
|
||||
# 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:_'
|
||||
|
||||
# Disabled commands
|
||||
- 'n:b:/essentials:_'
|
||||
- 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.'
|
||||
@ -290,7 +293,6 @@ blocked_commands:
|
||||
- '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:_'
|
||||
@ -309,7 +311,6 @@ blocked_commands:
|
||||
- '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:_'
|
||||
@ -319,7 +320,6 @@ blocked_commands:
|
||||
- 'n:b:/data:_'
|
||||
- 'n:b:/datapack:_'
|
||||
- 'n:b://regen:_'
|
||||
- 'n:b:/onlinemode:&cThis breaks UUIDs.'
|
||||
- 'n:b:/execute:_'
|
||||
- 'n:b:/killall:_'
|
||||
- 'n:b:/createdisguise:_'
|
||||
@ -403,14 +403,12 @@ blocked_commands:
|
||||
- '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:_'
|
||||
@ -436,6 +434,39 @@ blocked_commands:
|
||||
- 's:b:/viaver:_'
|
||||
- 's:b:/viaversion:_'
|
||||
- 's:b:/spark:_'
|
||||
- 's:b://g:_'
|
||||
|
||||
# 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
|
||||
|
Reference in New Issue
Block a user