Merge vanish & coreprotect-switch into main

This commit is contained in:
Business Goose 2022-03-31 03:10:08 +01:00
parent 2a0244ddd4
commit 4782438bc8
No known key found for this signature in database
GPG key ID: 77DCA801362E9645
177 changed files with 12395 additions and 14092 deletions

View file

@ -3,105 +3,85 @@ package me.StevenLawson.TotalFreedomMod;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Log
{
private static final Logger FALLBACK_LOGGER = Logger.getLogger("Minecraft-Server");
private static Logger serverLogger = null;
private static Logger pluginLogger = null;
public class Log {
private Log()
{
throw new AssertionError();
}
private static final Logger FALLBACK_LOGGER = Logger.getLogger("Minecraft-Server");
private static Logger serverLogger = null;
private static Logger pluginLogger = null;
// Level.INFO:
public static void info(String message)
{
info(message, false);
}
private Log() {
throw new AssertionError();
}
public static void info(String message, Boolean raw)
{
log(Level.INFO, message, raw);
}
// Level.INFO:
public static void info(String message) {
info(message, false);
}
public static void info(Throwable ex)
{
log(Level.INFO, ex);
}
public static void info(String message, Boolean raw) {
log(Level.INFO, message, raw);
}
// Level.WARNING:
public static void warning(String message)
{
warning(message, false);
}
public static void info(Throwable ex) {
log(Level.INFO, ex);
}
public static void warning(String message, Boolean raw)
{
log(Level.WARNING, message, raw);
}
// Level.WARNING:
public static void warning(String message) {
warning(message, false);
}
public static void warning(Throwable ex)
{
log(Level.WARNING, ex);
}
public static void warning(String message, Boolean raw) {
log(Level.WARNING, message, raw);
}
// Level.SEVERE:
public static void severe(String message)
{
severe(message, false);
}
public static void warning(Throwable ex) {
log(Level.WARNING, ex);
}
public static void severe(String message, Boolean raw)
{
log(Level.SEVERE, message, raw);
}
// Level.SEVERE:
public static void severe(String message) {
severe(message, false);
}
public static void severe(Throwable ex)
{
log(Level.SEVERE, ex);
}
public static void severe(String message, Boolean raw) {
log(Level.SEVERE, message, raw);
}
// Utility
private static void log(Level level, String message, boolean raw)
{
getLogger(raw).log(level, message);
}
public static void severe(Throwable ex) {
log(Level.SEVERE, ex);
}
private static void log(Level level, Throwable throwable)
{
getLogger(false).log(level, null, throwable);
}
// Utility
private static void log(Level level, String message, boolean raw) {
getLogger(raw).log(level, message);
}
public static void setServerLogger(Logger logger)
{
serverLogger = logger;
}
private static void log(Level level, Throwable throwable) {
getLogger(false).log(level, null, throwable);
}
public static void setPluginLogger(Logger logger)
{
pluginLogger = logger;
}
private static Logger getLogger(boolean raw) {
if (raw || pluginLogger == null) {
return (serverLogger != null ? serverLogger : FALLBACK_LOGGER);
} else {
return pluginLogger;
}
}
private static Logger getLogger(boolean raw)
{
if (raw || pluginLogger == null)
{
return (serverLogger != null ? serverLogger : FALLBACK_LOGGER);
}
else
{
return pluginLogger;
}
}
public static Logger getPluginLogger() {
return (pluginLogger != null ? pluginLogger : FALLBACK_LOGGER);
}
public static Logger getPluginLogger()
{
return (pluginLogger != null ? pluginLogger : FALLBACK_LOGGER);
}
public static void setPluginLogger(Logger logger) {
pluginLogger = logger;
}
public static Logger getServerLogger()
{
return (serverLogger != null ? serverLogger : FALLBACK_LOGGER);
}
public static Logger getServerLogger() {
return (serverLogger != null ? serverLogger : FALLBACK_LOGGER);
}
public static void setServerLogger(Logger logger) {
serverLogger = logger;
}
}

View file

@ -1,6 +1,13 @@
package me.StevenLawson.TotalFreedomMod;
import static me.StevenLawson.TotalFreedomMod.listener.PlayerListener.DEFAULT_PORT;
import com.earth2me.essentials.utils.DateUtil;
import java.lang.management.ManagementFactory;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.regex.Pattern;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import me.StevenLawson.TotalFreedomMod.ban.Ban;
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
@ -19,254 +26,221 @@ import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.event.player.PlayerLoginEvent.Result;
import java.lang.management.ManagementFactory;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.regex.Pattern;
public class Server {
import static me.StevenLawson.TotalFreedomMod.listener.PlayerListener.DEFAULT_PORT;
public static final String COMPILE_NMS_VERSION = "v1_8_R2";
public static final Pattern USERNAME_REGEX = Pattern.compile("^[\\w\\d_]{3,20}$");
public class Server
{
public static final String COMPILE_NMS_VERSION = "v1_8_R2";
public static final Pattern USERNAME_REGEX = Pattern.compile("^[\\w\\d_]{3,20}$");
public static void setOnlineMode(boolean mode) {
final PropertyManager manager = MinecraftServer.getServer().getPropertyManager();
manager.setProperty("online-mode", mode);
manager.savePropertiesFile();
}
public static void setOnlineMode(boolean mode)
{
final PropertyManager manager = MinecraftServer.getServer().getPropertyManager();
manager.setProperty("online-mode", mode);
manager.savePropertiesFile();
}
public static int purgeWhitelist() {
String[] whitelisted = MinecraftServer.getServer().getPlayerList().getWhitelisted();
int size = whitelisted.length;
for (EntityPlayer player : MinecraftServer.getServer().getPlayerList().players) {
MinecraftServer.getServer().getPlayerList().getWhitelist().remove(player.getProfile());
}
public static int purgeWhitelist()
{
String[] whitelisted = MinecraftServer.getServer().getPlayerList().getWhitelisted();
int size = whitelisted.length;
for (EntityPlayer player : MinecraftServer.getServer().getPlayerList().players)
{
MinecraftServer.getServer().getPlayerList().getWhitelist().remove(player.getProfile());
}
try {
MinecraftServer.getServer().getPlayerList().getWhitelist().save();
} catch (Exception ex) {
Log.warning("Could not purge the whitelist!");
Log.warning(ex);
}
return size;
}
try
{
MinecraftServer.getServer().getPlayerList().getWhitelist().save();
}
catch (Exception ex)
{
Log.warning("Could not purge the whitelist!");
Log.warning(ex);
}
return size;
}
public static boolean isWhitelisted() {
return MinecraftServer.getServer().getPlayerList().getHasWhitelist();
}
public static boolean isWhitelisted()
{
return MinecraftServer.getServer().getPlayerList().getHasWhitelist();
}
public static List<?> getWhitelisted() {
return Arrays.asList(MinecraftServer.getServer().getPlayerList().getWhitelisted());
}
public static List<?> getWhitelisted()
{
return Arrays.asList(MinecraftServer.getServer().getPlayerList().getWhitelisted());
}
public static String getVersion() {
return MinecraftServer.getServer().getVersion();
}
public static String getVersion()
{
return MinecraftServer.getServer().getVersion();
}
public static void handlePlayerPreLogin(AsyncPlayerPreLoginEvent event) {
final String ip = event.getAddress().getHostAddress().trim();
final boolean isAdmin = AdminList.isSuperAdminSafe(null, ip);
public static void handlePlayerPreLogin(AsyncPlayerPreLoginEvent event)
{
final String ip = event.getAddress().getHostAddress().trim();
final boolean isAdmin = AdminList.isSuperAdminSafe(null, ip);
// Check if the player is already online
for (Player onlinePlayer : TotalFreedomMod.server.getOnlinePlayers()) {
if (!onlinePlayer.getName().equalsIgnoreCase(event.getName())) {
continue;
}
// Check if the player is already online
for (Player onlinePlayer : TotalFreedomMod.server.getOnlinePlayers())
{
if (!onlinePlayer.getName().equalsIgnoreCase(event.getName()))
{
continue;
}
if (!isAdmin) {
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER,
"Your username is already logged into this server.");
} else {
event.allow();
SynchronousUtil.playerKick(onlinePlayer,
"An admin just logged in with the username you are using.");
}
return;
}
}
if (!isAdmin) {
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "Your username is already logged into this server.");
} else {
event.allow();
SynchronousUtil.playerKick(onlinePlayer, "An admin just logged in with the username you are using.");
}
return;
}
}
public static void handlePlayerLogin(PlayerLoginEvent event) {
final org.bukkit.Server server = TotalFreedomMod.server;
final Player player = event.getPlayer();
final String username = player.getName();
final String ip = event.getAddress().getHostAddress().trim();
final UUID uuid = UUIDManager.newPlayer(player, ip);
public static void handlePlayerLogin(PlayerLoginEvent event)
{
final org.bukkit.Server server = TotalFreedomMod.server;
final Player player = event.getPlayer();
final String username = player.getName();
final String ip = event.getAddress().getHostAddress().trim();
final UUID uuid = UUIDManager.newPlayer(player, ip);
// Check username length
if (username.length() < 3 || username.length() > TotalFreedomMod.MAX_USERNAME_LENGTH) {
event.disallow(Result.KICK_OTHER,
"Your username is an invalid length (must be between 3 and 20 characters long).");
return;
}
// Check username length
if (username.length() < 3 || username.length() > TotalFreedomMod.MAX_USERNAME_LENGTH)
{
event.disallow(Result.KICK_OTHER, "Your username is an invalid length (must be between 3 and 20 characters long).");
return;
}
// Check username characters
if (!USERNAME_REGEX.matcher(username).find()) {
event.disallow(Result.KICK_OTHER, "Your username contains invalid characters.");
return;
}
// Check username characters
if (!USERNAME_REGEX.matcher(username).find())
{
event.disallow(Result.KICK_OTHER, "Your username contains invalid characters.");
return;
}
// Check force-IP match
if (ConfigurationEntry.FORCE_IP_ENABLED.getBoolean()) {
final String hostname = event.getHostname().replace("FML",
""); // Forge fix - https://github.com/TotalFreedom/TotalFreedomMod/issues/493
final String connectAddress = ConfigurationEntry.SERVER_ADDRESS.getString();
final int connectPort = TotalFreedomMod.server.getPort();
// Check force-IP match
if (ConfigurationEntry.FORCE_IP_ENABLED.getBoolean())
{
final String hostname = event.getHostname().replace("FML", ""); // Forge fix - https://github.com/TotalFreedom/TotalFreedomMod/issues/493
final String connectAddress = ConfigurationEntry.SERVER_ADDRESS.getString();
final int connectPort = TotalFreedomMod.server.getPort();
if (!hostname.equalsIgnoreCase(connectAddress + ":" + connectPort)
&& !hostname.equalsIgnoreCase(connectAddress + ".:" + connectPort)) {
final int forceIpPort = ConfigurationEntry.FORCE_IP_PORT.getInteger();
event.disallow(PlayerLoginEvent.Result.KICK_OTHER,
ConfigurationEntry.FORCE_IP_KICKMSG.getString()
.replace("%address%", ConfigurationEntry.SERVER_ADDRESS.getString() + (
forceIpPort == DEFAULT_PORT ? "" : ":" + forceIpPort)));
return;
}
if (!hostname.equalsIgnoreCase(connectAddress + ":" + connectPort) && !hostname.equalsIgnoreCase(connectAddress + ".:" + connectPort))
{
final int forceIpPort = ConfigurationEntry.FORCE_IP_PORT.getInteger();
event.disallow(PlayerLoginEvent.Result.KICK_OTHER,
ConfigurationEntry.FORCE_IP_KICKMSG.getString()
.replace("%address%", ConfigurationEntry.SERVER_ADDRESS.getString() + (forceIpPort == DEFAULT_PORT ? "" : ":" + forceIpPort)));
return;
}
}
}
// Check if player is admin
// Not safe to use Utilities.isSuperAdmin(player) because player.getAddress() will return a null until after player login.
final boolean isAdmin = AdminList.isSuperAdminSafe(uuid, ip);
// Check if player is admin
// Not safe to use Utilities.isSuperAdmin(player) because player.getAddress() will return a null until after player login.
final boolean isAdmin = AdminList.isSuperAdminSafe(uuid, ip);
// Validation below this point
if (isAdmin) // Player is superadmin
{
// Force-allow log in
event.allow();
// Validation below this point
if (isAdmin) // Player is superadmin
{
// Force-allow log in
event.allow();
int count = server.getOnlinePlayers().size();
if (count >= server.getMaxPlayers()) {
for (Player onlinePlayer : server.getOnlinePlayers()) {
if (!AdminList.isSuperAdmin(onlinePlayer)) {
onlinePlayer.kickPlayer(
"You have been kicked to free up room for an admin.");
count--;
}
int count = server.getOnlinePlayers().size();
if (count >= server.getMaxPlayers())
{
for (Player onlinePlayer : server.getOnlinePlayers())
{
if (!AdminList.isSuperAdmin(onlinePlayer))
{
onlinePlayer.kickPlayer("You have been kicked to free up room for an admin.");
count--;
}
if (count < server.getMaxPlayers()) {
break;
}
}
}
if (count < server.getMaxPlayers())
{
break;
}
}
}
if (count >= server.getMaxPlayers()) {
event.disallow(Result.KICK_OTHER,
"The server is full and a player could not be kicked, sorry!");
return;
}
if (count >= server.getMaxPlayers())
{
event.disallow(Result.KICK_OTHER, "The server is full and a player could not be kicked, sorry!");
return;
}
return;
}
return;
}
// Player is not an admin
// Server full check
if (server.getOnlinePlayers().size() >= server.getMaxPlayers()) {
event.disallow(Result.KICK_FULL, "Sorry, but this server is full.");
return;
}
// Player is not an admin
// Server full check
if (server.getOnlinePlayers().size() >= server.getMaxPlayers())
{
event.disallow(Result.KICK_FULL, "Sorry, but this server is full.");
return;
}
// Admin-only mode
if (ConfigurationEntry.ADMIN_ONLY_MODE.getBoolean()) {
event.disallow(Result.KICK_OTHER, "Server is temporarily open to admins only.");
return;
}
// Admin-only mode
if (ConfigurationEntry.ADMIN_ONLY_MODE.getBoolean())
{
event.disallow(Result.KICK_OTHER, "Server is temporarily open to admins only.");
return;
}
// Lockdown mode
if (TotalFreedomMod.lockdownEnabled) {
event.disallow(Result.KICK_OTHER, "Server is currently in lockdown mode.");
return;
}
// Lockdown mode
if (TotalFreedomMod.lockdownEnabled)
{
event.disallow(Result.KICK_OTHER, "Server is currently in lockdown mode.");
return;
}
// Whitelist
if (isWhitelisted()) {
if (!getWhitelisted().contains(username.toLowerCase())) {
event.disallow(Result.KICK_OTHER, "You are not whitelisted on this server.");
return;
}
}
// Whitelist
if (isWhitelisted())
{
if (!getWhitelisted().contains(username.toLowerCase()))
{
event.disallow(Result.KICK_OTHER, "You are not whitelisted on this server.");
return;
}
}
// UUID ban
if (BanManager.isUuidBanned(uuid)) {
final Ban ban = BanManager.getByUuid(uuid);
event.disallow(Result.KICK_OTHER, ban.getKickMessage());
return;
}
// UUID ban
if (BanManager.isUuidBanned(uuid))
{
final Ban ban = BanManager.getByUuid(uuid);
event.disallow(Result.KICK_OTHER, ban.getKickMessage());
return;
}
// IP ban
if (BanManager.isIpBanned(ip)) {
final Ban ban = BanManager.getByIp(ip);
event.disallow(Result.KICK_OTHER, ban.getKickMessage());
return;
}
// IP ban
if (BanManager.isIpBanned(ip))
{
final Ban ban = BanManager.getByIp(ip);
event.disallow(Result.KICK_OTHER, ban.getKickMessage());
return;
}
// Permbanned IPs
for (String testIp : PermbanList.getPermbannedIps()) {
if (Utilities.fuzzyIpMatch(testIp, ip, 4)) {
event.disallow(Result.KICK_OTHER,
ChatColor.RED + "Your IP address is permanently banned from this server.\n"
+ "Release procedures are available at\n"
+ ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString());
return;
}
}
// Permbanned IPs
for (String testIp : PermbanList.getPermbannedIps())
{
if (Utilities.fuzzyIpMatch(testIp, ip, 4))
{
event.disallow(Result.KICK_OTHER,
ChatColor.RED + "Your IP address is permanently banned from this server.\n"
+ "Release procedures are available at\n"
+ ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString());
return;
}
}
// Permbanned usernames
for (String testPlayer : PermbanList.getPermbannedPlayers()) {
if (testPlayer.equalsIgnoreCase(username)) {
event.disallow(Result.KICK_OTHER,
ChatColor.RED + "Your username is permanently banned from this server.\n"
+ "Release procedures are available at\n"
+ ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString());
return;
}
}
}
// Permbanned usernames
for (String testPlayer : PermbanList.getPermbannedPlayers())
{
if (testPlayer.equalsIgnoreCase(username))
{
event.disallow(Result.KICK_OTHER,
ChatColor.RED + "Your username is permanently banned from this server.\n"
+ "Release procedures are available at\n"
+ ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString());
return;
}
}
}
public static double getTPS() {
return EssentialsBridge.getEssentialsPlugin().getTimer().getAverageTPS();
}
public static double getTPS() {
return EssentialsBridge.getEssentialsPlugin().getTimer().getAverageTPS();
}
public static double getMaxMem() {
return Runtime.getRuntime().maxMemory() / 1024f / 1024f;
}
public static double getMaxMem() {
return Runtime.getRuntime().maxMemory() / 1024f / 1024f;
}
public static double getTotalMem() {
return Runtime.getRuntime().totalMemory() / 1024f / 1024f;
}
public static double getTotalMem() {
return Runtime.getRuntime().totalMemory() / 1024f / 1024f;
}
public static double getFreeMem() {
return Runtime.getRuntime().freeMemory() / 1024f / 1024f;
}
public static double getFreeMem() {
return Runtime.getRuntime().freeMemory() / 1024f / 1024f;
}
public static String getUptime() {
return DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime());
}
public static String getUptime() {
return DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime());
}
}

View file

@ -1,22 +1,34 @@
package me.StevenLawson.TotalFreedomMod;
import com.google.common.base.Function;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import me.StevenLawson.TotalFreedomMod.announcer.Announcer;
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
import me.StevenLawson.TotalFreedomMod.ban.PermbanList;
import me.StevenLawson.TotalFreedomMod.commands.Commands;
import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge;
import me.StevenLawson.TotalFreedomMod.command.CommandBlocker;
import me.StevenLawson.TotalFreedomMod.commands.Commands;
import me.StevenLawson.TotalFreedomMod.commands.FreedomCommand;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
import me.StevenLawson.TotalFreedomMod.deprecated.bridge.BukkitTelnetBridge;
import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge;
import me.StevenLawson.TotalFreedomMod.gamerule.GameRuleHandler;
import me.StevenLawson.TotalFreedomMod.httpd.HTTPDManager;
import me.StevenLawson.TotalFreedomMod.listener.*;
import me.StevenLawson.TotalFreedomMod.listener.BlockListener;
import me.StevenLawson.TotalFreedomMod.listener.EntityListener;
import me.StevenLawson.TotalFreedomMod.listener.PlayerListener;
import me.StevenLawson.TotalFreedomMod.listener.ServerListener;
import me.StevenLawson.TotalFreedomMod.listener.WeatherListener;
import me.StevenLawson.TotalFreedomMod.listener.WorldEditListener;
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
import me.StevenLawson.TotalFreedomMod.player.HeartBeat;
import me.StevenLawson.TotalFreedomMod.player.PlayerList;
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import me.StevenLawson.TotalFreedomMod.world.AdminWorld;
import me.StevenLawson.TotalFreedomMod.world.FlatlandsWorld;
@ -31,160 +43,173 @@ import org.bukkit.plugin.ServicePriority;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;
public class TotalFreedomMod extends JavaPlugin {
public static final long HEARTBEAT_RATE = 5L; // Seconds
public static final long SERVICE_CHECKER_RATE = 120L;
public static final int MAX_USERNAME_LENGTH = 20;
//
public static final String CONFIG_FILENAME = "config.yml";
public static final String SUPERADMIN_FILENAME = "superadmin.yml";
public static final String PERMBAN_FILENAME = "permban.yml";
public static final String PLAYERTAGS_FILENAME = "playerTags.yml";
public static final String UUID_FILENAME = "uuids.db";
public static final String PROTECTED_AREA_FILENAME = "protectedareas.dat";
public static final String SAVED_FLAGS_FILENAME = "savedflags.dat";
//
@Deprecated
public static final String YOU_ARE_NOT_OP = FreedomCommand.YOU_ARE_NOT_OP;
//
public static String buildNumber = "1";
public static String buildDate = Utilities.dateToString(new Date());
public static String buildCreator = "Unknown";
//
public static org.bukkit.Server server;
public static TotalFreedomMod plugin;
public static String pluginName;
public static String pluginVersion;
//
public static boolean lockdownEnabled = false;
public static Map<Player, Double> fuckoffEnabledFor = new HashMap<>();
public static Logger logger;
private FileConfiguration customConfig; // Custom configuration implementation by Eva
public static final long HEARTBEAT_RATE = 5L; // Seconds
public static final long SERVICE_CHECKER_RATE = 120L;
public static final int MAX_USERNAME_LENGTH = 20;
//
public static final String CONFIG_FILENAME = "config.yml";
public static final String SUPERADMIN_FILENAME = "superadmin.yml";
public static final String PERMBAN_FILENAME = "permban.yml";
public static final String PLAYERTAGS_FILENAME = "playerTags.yml";
public static final String UUID_FILENAME = "uuids.db";
public static final String PROTECTED_AREA_FILENAME = "protectedareas.dat";
public static final String SAVED_FLAGS_FILENAME = "savedflags.dat";
//
@Deprecated
public static final String YOU_ARE_NOT_OP = FreedomCommand.YOU_ARE_NOT_OP;
//
public static String buildNumber = "1";
public static String buildDate = Utilities.dateToString(new Date());
public static String buildCreator = "Unknown";
//
public static org.bukkit.Server server;
public static TotalFreedomMod plugin;
public static String pluginName;
public static String pluginVersion;
//
public static boolean lockdownEnabled = false;
public static Map<Player, Double> fuckoffEnabledFor = new HashMap<>();
public static Logger logger;
@Override
public void onLoad() {
TotalFreedomMod.plugin = this;
TotalFreedomMod.logger = this.getLogger();
TotalFreedomMod.server = plugin.getServer();
TotalFreedomMod.pluginName = plugin.getDescription().getName();
TotalFreedomMod.pluginVersion = plugin.getDescription().getVersion();
private FileConfiguration customConfig; // Custom configuration implementation by Eva
Log.setPluginLogger(plugin.getLogger());
Log.setServerLogger(server.getLogger());
private static void setAppProperties() {
try {
//final InputStream in = plugin.getResource("appinfo.properties");
Properties props = new Properties();
setAppProperties();
}
// in = plugin.getClass().getResourceAsStream("/appinfo.properties");
//props.load(in);
//in.close();
@Override
public void onEnable()
{
getConfig().options().copyDefaults(true);
//TotalFreedomMod.buildNumber = props.getProperty("program.buildnumber");
//TotalFreedomMod.buildDate = props.getProperty("program.builddate");
//TotalFreedomMod.buildCreator = props.getProperty("program.buildcreator");
TotalFreedomMod.buildNumber = "1337";
TotalFreedomMod.buildCreator = "You!";
} catch (Exception ex) {
Log.severe("Could not load App properties!");
Log.severe(ex);
}
}
Log.info("Made by Madgeek1450 and Prozza");
Log.info("Compiled " + buildDate + " by " + buildCreator);
@Override
public void onLoad() {
TotalFreedomMod.plugin = this;
TotalFreedomMod.logger = this.getLogger();
TotalFreedomMod.server = plugin.getServer();
TotalFreedomMod.pluginName = plugin.getDescription().getName();
TotalFreedomMod.pluginVersion = plugin.getDescription().getVersion();
final Utilities.MethodTimer timer = new Utilities.MethodTimer();
timer.start();
Log.setPluginLogger(plugin.getLogger());
Log.setServerLogger(server.getLogger());
if (!Server.COMPILE_NMS_VERSION.equals(Utilities.getNmsVersion()))
{
Log.warning(pluginName + " is compiled for " + Server.COMPILE_NMS_VERSION + " but the server is running "
+ "version " + Utilities.getNmsVersion() + "!");
Log.warning("This might result in unexpected behaviour!");
}
setAppProperties();
}
Utilities.deleteCoreDumps();
Utilities.deleteFolder(new File("./_deleteme"));
@Override
public void onEnable() {
getConfig().options().copyDefaults(true);
// Create backups
Utilities.createBackups(CONFIG_FILENAME, true);
Utilities.createBackups(SUPERADMIN_FILENAME);
Utilities.createBackups(PERMBAN_FILENAME);
Utilities.createBackups(PLAYERTAGS_FILENAME);
this.createCustomConfig();
// Load services
UUIDManager.load();
AdminList.load();
PermbanList.load();
PlayerList.load();
BanManager.load();
Announcer.load();
ProtectedArea.load();
DiscordBridge.load();
Log.info("Made by Madgeek1450 and Prozza");
Log.info("Compiled " + buildDate + " by " + buildCreator);
// Start SuperAdmin service
server.getServicesManager().register(Function.class, AdminList.SUPERADMIN_SERVICE, plugin, ServicePriority.Normal);
final Utilities.MethodTimer timer = new Utilities.MethodTimer();
timer.start();
final PluginManager pm = server.getPluginManager();
pm.registerEvents(new EntityListener(), plugin);
pm.registerEvents(new BlockListener(), plugin);
pm.registerEvents(new PlayerListener(), plugin);
pm.registerEvents(new WeatherListener(), plugin);
pm.registerEvents(new ServerListener(), plugin);
if (!Server.COMPILE_NMS_VERSION.equals(Utilities.getNmsVersion())) {
Log.warning(pluginName + " is compiled for " + Server.COMPILE_NMS_VERSION
+ " but the server is running "
+ "version " + Utilities.getNmsVersion() + "!");
Log.warning("This might result in unexpected behaviour!");
}
// Bridge
pm.registerEvents(new BukkitTelnetBridge(), plugin);
pm.registerEvents(new WorldEditListener(), plugin);
Utilities.deleteCoreDumps();
Utilities.deleteFolder(new File("./_deleteme"));
try {
FlatlandsWorld.getInstance().getWorld();
} catch (Exception ex) {
Log.warning("Could not load world: Flatlands");
}
// Create backups
Utilities.createBackups(CONFIG_FILENAME, true);
Utilities.createBackups(SUPERADMIN_FILENAME);
Utilities.createBackups(PERMBAN_FILENAME);
Utilities.createBackups(PLAYERTAGS_FILENAME);
this.createCustomConfig();
// Load services
UUIDManager.load();
AdminList.load();
PermbanList.load();
PlayerList.load();
BanManager.load();
Announcer.load();
ProtectedArea.load();
DiscordBridge.load();
try {
AdminWorld.getInstance().getWorld();
}
catch (Exception ex)
{
Log.warning("Could not load world: AdminWorld");
}
// Start SuperAdmin service
server.getServicesManager()
.register(Function.class, AdminList.SUPERADMIN_SERVICE, plugin, ServicePriority.Normal);
// Initialize game rules
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_DAYLIGHT_CYCLE, !ConfigurationEntry.DISABLE_NIGHT.getBoolean(), false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_FIRE_TICK, ConfigurationEntry.ALLOW_FIRE_SPREAD.getBoolean(), false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_LOOT, false, false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_SPAWNING, !ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean(), false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_TILE_DROPS, false, false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.MOB_GRIEFING, false, false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.NATURAL_REGENERATION, true, false);
GameRuleHandler.commitGameRules();
final PluginManager pm = server.getPluginManager();
pm.registerEvents(new EntityListener(), plugin);
pm.registerEvents(new BlockListener(), plugin);
pm.registerEvents(new PlayerListener(), plugin);
pm.registerEvents(new WeatherListener(), plugin);
pm.registerEvents(new ServerListener(), plugin);
// Disable weather
if (ConfigurationEntry.DISABLE_WEATHER.getBoolean())
{
for (World world : server.getWorlds())
{
world.setThundering(false);
world.setStorm(false);
world.setThunderDuration(0);
world.setWeatherDuration(0);
}
}
// Bridge
pm.registerEvents(new BukkitTelnetBridge(), plugin);
pm.registerEvents(new WorldEditListener(), plugin);
// Heartbeat
new HeartBeat(plugin).runTaskTimer(plugin, HEARTBEAT_RATE * 20L, HEARTBEAT_RATE * 20L);
try {
FlatlandsWorld.getInstance().getWorld();
} catch (Exception ex) {
Log.warning("Could not load world: Flatlands");
}
Commands.registerCommands(this);
try {
AdminWorld.getInstance().getWorld();
} catch (Exception ex) {
Log.warning("Could not load world: AdminWorld");
}
// Start services
HTTPDManager.start();
// Initialize game rules
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_DAYLIGHT_CYCLE,
!ConfigurationEntry.DISABLE_NIGHT.getBoolean(), false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_FIRE_TICK,
ConfigurationEntry.ALLOW_FIRE_SPREAD.getBoolean(), false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_LOOT, false, false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_SPAWNING,
!ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean(), false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_TILE_DROPS, false, false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.MOB_GRIEFING, false, false);
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.NATURAL_REGENERATION, true, false);
GameRuleHandler.commitGameRules();
timer.update();
// Disable weather
if (ConfigurationEntry.DISABLE_WEATHER.getBoolean()) {
for (World world : server.getWorlds()) {
world.setThundering(false);
world.setStorm(false);
world.setThunderDuration(0);
world.setWeatherDuration(0);
}
}
Log.info("Version " + pluginVersion + " for " + Server.COMPILE_NMS_VERSION + " enabled in " + timer.getTotal() + "ms");
// Heartbeat
new HeartBeat(plugin).runTaskTimer(plugin, HEARTBEAT_RATE * 20L, HEARTBEAT_RATE * 20L);
// Metrics @ http://mcstats.org/plugin/TotalFreedomMod
// No longer exist!
Commands.registerCommands(this);
// Start services
HTTPDManager.start();
timer.update();
Log.info("Version " + pluginVersion + " for " + Server.COMPILE_NMS_VERSION + " enabled in "
+ timer.getTotal() + "ms");
// Metrics @ http://mcstats.org/plugin/TotalFreedomMod
// No longer exist!
/*try
{
final Metrics metrics = new Metrics(plugin);
@ -195,72 +220,46 @@ public class TotalFreedomMod extends JavaPlugin {
Log.warning("Failed to submit metrics data: " + ex.getMessage());
}*/
new BukkitRunnable()
{
@Override
public void run()
{
CommandBlocker.load();
new BukkitRunnable() {
@Override
public void run() {
CommandBlocker.load();
// Add spawnpoints later - https://github.com/TotalFreedom/TotalFreedomMod/issues/438
ProtectedArea.autoAddSpawnpoints();
}
}.runTaskLater(plugin, 20L);
}
// Add spawnpoints later - https://github.com/TotalFreedom/TotalFreedomMod/issues/438
ProtectedArea.autoAddSpawnpoints();
}
}.runTaskLater(plugin, 20L);
}
@Override
public void onDisable()
{
HTTPDManager.stop();
BanManager.save();
UUIDManager.close();
DiscordBridge.stop();
@Override
public void onDisable() {
HTTPDManager.stop();
BanManager.save();
UUIDManager.close();
DiscordBridge.stop();
server.getScheduler().cancelTasks(plugin);
server.getScheduler().cancelTasks(plugin);
Log.info("Plugin disabled");
}
Log.info("Plugin disabled");
}
public FileConfiguration getCustomConfig() {
return this.customConfig;
}
//CustomConfig implementation by Eva
private void createCustomConfig() {
File customConfigFile = new File(getDataFolder(), "playerTags.yml");
if (!customConfigFile.exists()) {
customConfigFile.getParentFile().mkdirs();
saveResource("playerTags.yml", false);
}
public FileConfiguration getCustomConfig() {
return this.customConfig;
}
customConfig= new YamlConfiguration();
try {
customConfig.load(customConfigFile);
} catch (IOException | InvalidConfigurationException e) {
e.printStackTrace();
}
}
//CustomConfig implementation by Eva
private void createCustomConfig() {
File customConfigFile = new File(getDataFolder(), "playerTags.yml");
if (!customConfigFile.exists()) {
customConfigFile.getParentFile().mkdirs();
saveResource("playerTags.yml", false);
}
private static void setAppProperties()
{
try
{
//final InputStream in = plugin.getResource("appinfo.properties");
Properties props = new Properties();
// in = plugin.getClass().getResourceAsStream("/appinfo.properties");
//props.load(in);
//in.close();
//TotalFreedomMod.buildNumber = props.getProperty("program.buildnumber");
//TotalFreedomMod.buildDate = props.getProperty("program.builddate");
//TotalFreedomMod.buildCreator = props.getProperty("program.buildcreator");
TotalFreedomMod.buildNumber = "1337";
TotalFreedomMod.buildCreator = "You!";
}
catch (Exception ex)
{
Log.severe("Could not load App properties!");
Log.severe(ex);
}
}
customConfig = new YamlConfiguration();
try {
customConfig.load(customConfigFile);
} catch (IOException | InvalidConfigurationException e) {
e.printStackTrace();
}
}
}

View file

@ -1,168 +1,152 @@
package me.StevenLawson.TotalFreedomMod.admin;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
import me.StevenLawson.TotalFreedomMod.config.MainConfig;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.configuration.ConfigurationSection;
import java.util.*;
public class Admin {
public class Admin
{
private final UUID uuid;
private String lastLoginName;
private String loginMessage;
private final boolean isSeniorAdmin;
private final boolean isTelnetAdmin;
private final List<String> consoleAliases;
private final List<String> ips;
private Date lastLogin;
private boolean isActivated;
private final UUID uuid;
private final boolean isSeniorAdmin;
private final boolean isTelnetAdmin;
private final List<String> consoleAliases;
private final List<String> ips;
private String lastLoginName;
private String loginMessage;
private Date lastLogin;
private boolean isActivated;
public Admin(UUID uuid, String lastLoginName, Date lastLogin, String loginMessage, boolean isTelnetAdmin, boolean isSeniorAdmin, boolean isActivated)
{
this.uuid = uuid;
this.lastLoginName = lastLoginName;
this.ips = new ArrayList<String>();
this.lastLogin = lastLogin;
this.loginMessage = loginMessage;
this.isTelnetAdmin = isTelnetAdmin;
this.isSeniorAdmin = isSeniorAdmin;
this.consoleAliases = new ArrayList<String>();
this.isActivated = isActivated;
}
public Admin(UUID uuid, String lastLoginName, Date lastLogin, String loginMessage,
boolean isTelnetAdmin, boolean isSeniorAdmin, boolean isActivated) {
this.uuid = uuid;
this.lastLoginName = lastLoginName;
this.ips = new ArrayList<String>();
this.lastLogin = lastLogin;
this.loginMessage = loginMessage;
this.isTelnetAdmin = isTelnetAdmin;
this.isSeniorAdmin = isSeniorAdmin;
this.consoleAliases = new ArrayList<String>();
this.isActivated = isActivated;
}
public Admin(UUID uuid, ConfigurationSection section)
{
this.uuid = uuid;
this.lastLoginName = section.getString("last_login_name");
this.ips = section.getStringList("ips");
this.lastLogin = Utilities.stringToDate(section.getString("last_login", Utilities.dateToString(new Date(0L))));
this.loginMessage = section.getString("custom_login_message", "");
this.isSeniorAdmin = section.getBoolean("is_senior_admin", false);
this.isTelnetAdmin = section.getBoolean("is_telnet_admin", false);
this.consoleAliases = section.getStringList("console_aliases");
this.isActivated = section.getBoolean("is_activated", true);
public Admin(UUID uuid, ConfigurationSection section) {
this.uuid = uuid;
this.lastLoginName = section.getString("last_login_name");
this.ips = section.getStringList("ips");
this.lastLogin = Utilities.stringToDate(
section.getString("last_login", Utilities.dateToString(new Date(0L))));
this.loginMessage = section.getString("custom_login_message", "");
this.isSeniorAdmin = section.getBoolean("is_senior_admin", false);
this.isTelnetAdmin = section.getBoolean("is_telnet_admin", false);
this.consoleAliases = section.getStringList("console_aliases");
this.isActivated = section.getBoolean("is_activated", true);
for (Iterator<?> it = MainConfig.getList(ConfigurationEntry.NOADMIN_IPS).iterator(); it.hasNext();)
{
ips.remove((String) it.next());
}
}
for (Iterator<?> it = MainConfig.getList(ConfigurationEntry.NOADMIN_IPS).iterator();
it.hasNext(); ) {
ips.remove((String) it.next());
}
}
@Override
public String toString()
{
final StringBuilder output = new StringBuilder();
final ArrayList<String> fuzziedIps = new ArrayList<>();
@Override
public String toString() {
final StringBuilder output = new StringBuilder();
final ArrayList<String> fuzziedIps = new ArrayList<>();
for (String ip : ips)
{
fuzziedIps.add(Utilities.getFuzzyIp(ip));
}
for (String ip : ips) {
fuzziedIps.add(Utilities.getFuzzyIp(ip));
}
output.append("UUID: ").append(uuid.toString()).append("\n");
output.append("- Last Login Name: ").append(lastLoginName).append("\n");
output.append("- IPs: ").append(StringUtils.join(fuzziedIps, ", ")).append("\n");
output.append("- Last Login: ").append(Utilities.dateToString(lastLogin)).append("\n");
output.append("- Custom Login Message: ").append(loginMessage).append("\n");
output.append("- Is Senior Admin: ").append(isSeniorAdmin).append("\n");
output.append("- Is Telnet Admin: ").append(isTelnetAdmin).append("\n");
output.append("- Console Aliases: ").append(StringUtils.join(consoleAliases, ", ")).append("\n");
output.append("- Is Activated: ").append(isActivated);
output.append("UUID: ").append(uuid.toString()).append("\n");
output.append("- Last Login Name: ").append(lastLoginName).append("\n");
output.append("- IPs: ").append(StringUtils.join(fuzziedIps, ", ")).append("\n");
output.append("- Last Login: ").append(Utilities.dateToString(lastLogin)).append("\n");
output.append("- Custom Login Message: ").append(loginMessage).append("\n");
output.append("- Is Senior Admin: ").append(isSeniorAdmin).append("\n");
output.append("- Is Telnet Admin: ").append(isTelnetAdmin).append("\n");
output.append("- Console Aliases: ").append(StringUtils.join(consoleAliases, ", "))
.append("\n");
output.append("- Is Activated: ").append(isActivated);
return output.toString();
}
return output.toString();
}
public UUID getUniqueId()
{
return uuid;
}
public UUID getUniqueId() {
return uuid;
}
public void setLastLoginName(String lastLoginName)
{
this.lastLoginName = lastLoginName;
}
public String getLastLoginName() {
return lastLoginName;
}
public String getLastLoginName()
{
return lastLoginName;
}
public void setLastLoginName(String lastLoginName) {
this.lastLoginName = lastLoginName;
}
public List<String> getIps()
{
return Collections.unmodifiableList(ips);
}
public List<String> getIps() {
return Collections.unmodifiableList(ips);
}
public void addIp(String ip)
{
if (!ips.contains(ip))
{
ips.add(ip);
}
}
public void addIp(String ip) {
if (!ips.contains(ip)) {
ips.add(ip);
}
}
public void addIps(List<String> ips)
{
for (String ip : ips)
{
addIp(ip);
}
}
public void addIps(List<String> ips) {
for (String ip : ips) {
addIp(ip);
}
}
public void removeIp(String ip)
{
ips.remove(ip);
}
public void removeIp(String ip) {
ips.remove(ip);
}
public void clearIPs()
{
ips.clear();
}
public void clearIPs() {
ips.clear();
}
public void setCustomLoginMessage(String newLoginMessage)
{
this.loginMessage = newLoginMessage;
}
public Date getLastLogin() {
return lastLogin;
}
public Date getLastLogin()
{
return lastLogin;
}
public void setLastLogin(Date lastLogin) {
this.lastLogin = lastLogin;
}
public String getCustomLoginMessage()
{
return loginMessage;
}
public boolean isSeniorAdmin()
{
return isSeniorAdmin;
}
public String getCustomLoginMessage() {
return loginMessage;
}
public boolean isTelnetAdmin()
{
return isTelnetAdmin;
}
public void setCustomLoginMessage(String newLoginMessage) {
this.loginMessage = newLoginMessage;
}
public List<String> getConsoleAliases()
{
return Collections.unmodifiableList(consoleAliases);
}
public boolean isSeniorAdmin() {
return isSeniorAdmin;
}
public void setLastLogin(Date lastLogin)
{
this.lastLogin = lastLogin;
}
public boolean isTelnetAdmin() {
return isTelnetAdmin;
}
public boolean isActivated()
{
return isActivated;
}
public List<String> getConsoleAliases() {
return Collections.unmodifiableList(consoleAliases);
}
public void setActivated(boolean isActivated)
{
this.isActivated = isActivated;
}
public boolean isActivated() {
return isActivated;
}
public void setActivated(boolean isActivated) {
this.isActivated = isActivated;
}
}

View file

@ -1,115 +1,95 @@
package me.StevenLawson.TotalFreedomMod.announcer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Announcer {
public class Announcer
{
private static final List<String> ANNOUNCEMENTS = new ArrayList<String>();
private static boolean enabled;
private static long interval;
private static String prefix;
private static BukkitRunnable announcer;
private static final List<String> ANNOUNCEMENTS = new ArrayList<String>();
private static boolean enabled;
private static long interval;
private static String prefix;
private static BukkitRunnable announcer;
private Announcer()
{
throw new AssertionError();
}
private Announcer() {
throw new AssertionError();
}
public static boolean isEnabled()
{
return enabled;
}
public static boolean isEnabled() {
return enabled;
}
public static List<String> getAnnouncements()
{
return Collections.unmodifiableList(ANNOUNCEMENTS);
}
public static List<String> getAnnouncements() {
return Collections.unmodifiableList(ANNOUNCEMENTS);
}
public static long getTickInterval()
{
return interval;
}
public static long getTickInterval() {
return interval;
}
public static String getPrefix()
{
return prefix;
}
public static String getPrefix() {
return prefix;
}
public static void load()
{
stop();
public static void load() {
stop();
ANNOUNCEMENTS.clear();
ANNOUNCEMENTS.clear();
for (Object announcement : ConfigurationEntry.ANNOUNCER_ANNOUNCEMENTS.getList())
{
ANNOUNCEMENTS.add(Utilities.colorize((String) announcement));
}
for (Object announcement : ConfigurationEntry.ANNOUNCER_ANNOUNCEMENTS.getList()) {
ANNOUNCEMENTS.add(Utilities.colorize((String) announcement));
}
enabled = ConfigurationEntry.ANNOUNCER_ENABLED.getBoolean();
interval = ConfigurationEntry.ANNOUNCER_INTERVAL.getInteger() * 20L;
prefix = Utilities.colorize(ConfigurationEntry.ANNOUNCER_PREFIX.getString());
enabled = ConfigurationEntry.ANNOUNCER_ENABLED.getBoolean();
interval = ConfigurationEntry.ANNOUNCER_INTERVAL.getInteger() * 20L;
prefix = Utilities.colorize(ConfigurationEntry.ANNOUNCER_PREFIX.getString());
if (enabled)
{
start();
}
}
if (enabled) {
start();
}
}
public static boolean isStarted()
{
return announcer != null;
}
public static boolean isStarted() {
return announcer != null;
}
public static void start()
{
if (isStarted())
{
return;
}
public static void start() {
if (isStarted()) {
return;
}
announcer = new BukkitRunnable()
{
private int current = 0;
announcer = new BukkitRunnable() {
private int current = 0;
@Override
public void run()
{
current++;
@Override
public void run() {
current++;
if (current >= ANNOUNCEMENTS.size())
{
current = 0;
}
if (current >= ANNOUNCEMENTS.size()) {
current = 0;
}
Utilities.bcastMsg(prefix + ANNOUNCEMENTS.get(current), false);
}
};
Utilities.bcastMsg(prefix + ANNOUNCEMENTS.get(current), false);
}
};
announcer.runTaskTimer(TotalFreedomMod.plugin, interval, interval);
}
announcer.runTaskTimer(TotalFreedomMod.plugin, interval, interval);
}
public static void stop()
{
if (announcer == null)
{
return;
}
public static void stop() {
if (announcer == null) {
return;
}
try
{
announcer.cancel();
}
finally
{
announcer = null;
}
}
try {
announcer.cancel();
} finally {
announcer = null;
}
}
}

View file

@ -1,206 +1,186 @@
package me.StevenLawson.TotalFreedomMod.ban;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.bukkit.ChatColor;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.bukkit.ChatColor;
public class Ban
{
public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
public static final Pattern IP_BAN_REGEX;
public static final Pattern UUID_BAN_REGEX;
public class Ban {
static
{
// 192.168.1.254:LocalHost:Prozza:0:none
// 127.0.*.*:TestUserName:BannedByNotch:123567:Test reason
IP_BAN_REGEX = Pattern.compile(
"^((?:(?:\\*|(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\\.){3}(?:\\*|(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))"
+ ":([\\w\\s]+)"
+ ":([\\w]+)"
+ ":(\\d+)"
+ ":([\\s\\S]+)$");
// 245d2f30-61fb-4840-9cd3-298b3920f4a4:Cobrex:Prozza:0:Example reason
UUID_BAN_REGEX = Pattern.compile(
"^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"
+ ":([\\w\\s]+)"
+ ":([\\w]+)"
+ ":(\\d+)"
+ ":([\\s\\S]+)$");
}
private final BanType type;
private final boolean complete;
private String subject; // uuid or IP
private String lastLoginName;
private String by;
private long expireUnix;
private String reason;
public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(
"yyyy-MM-dd 'at' HH:mm:ss z");
public static final Pattern IP_BAN_REGEX;
public static final Pattern UUID_BAN_REGEX;
public Ban(String ip, String lastLoginName)
{
this(ip, lastLoginName, null, null, null);
}
static {
// 192.168.1.254:LocalHost:Prozza:0:none
// 127.0.*.*:TestUserName:BannedByNotch:123567:Test reason
IP_BAN_REGEX = Pattern.compile(
"^((?:(?:\\*|(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\\.){3}(?:\\*|(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))"
+ ":([\\w\\s]+)"
+ ":([\\w]+)"
+ ":(\\d+)"
+ ":([\\s\\S]+)$");
// 245d2f30-61fb-4840-9cd3-298b3920f4a4:Cobrex:Prozza:0:Example reason
UUID_BAN_REGEX = Pattern.compile(
"^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"
+ ":([\\w\\s]+)"
+ ":([\\w]+)"
+ ":(\\d+)"
+ ":([\\s\\S]+)$");
}
public Ban(String ip, String lastLoginName, String sender, Date expire, String reason)
{
this(ip, lastLoginName, sender, expire, reason, BanType.IP);
}
private final BanType type;
private final boolean complete;
private String subject; // uuid or IP
private String lastLoginName;
private String by;
private long expireUnix;
private String reason;
public Ban(UUID uuid, String lastLoginName)
{
this(uuid, lastLoginName, null, null, null);
}
public Ban(String ip, String lastLoginName) {
this(ip, lastLoginName, null, null, null);
}
public Ban(UUID uuid, String lastLoginName, String sender, Date expire, String reason)
{
this(uuid.toString(), lastLoginName, sender, expire, reason, BanType.UUID);
}
public Ban(String ip, String lastLoginName, String sender, Date expire, String reason) {
this(ip, lastLoginName, sender, expire, reason, BanType.IP);
}
private Ban(String subject, String lastLoginName, String sender, Date expire, String reason, BanType type)
{
this.type = type;
this.subject = subject;
this.lastLoginName = (lastLoginName == null ? "none" : lastLoginName);
this.by = (sender == null ? "none" : sender);
this.expireUnix = (expire == null ? 0 : Utilities.getUnixTime(expire));
this.reason = (reason == null ? "none" : reason);
complete = true;
}
public Ban(UUID uuid, String lastLoginName) {
this(uuid, lastLoginName, null, null, null);
}
public Ban(String banString, BanType type)
{
this.type = type;
public Ban(UUID uuid, String lastLoginName, String sender, Date expire, String reason) {
this(uuid.toString(), lastLoginName, sender, expire, reason, BanType.UUID);
}
final Matcher matcher = (type == BanType.IP ? IP_BAN_REGEX.matcher(banString) : UUID_BAN_REGEX.matcher(banString));
private Ban(String subject, String lastLoginName, String sender, Date expire, String reason,
BanType type) {
this.type = type;
this.subject = subject;
this.lastLoginName = (lastLoginName == null ? "none" : lastLoginName);
this.by = (sender == null ? "none" : sender);
this.expireUnix = (expire == null ? 0 : Utilities.getUnixTime(expire));
this.reason = (reason == null ? "none" : reason);
complete = true;
}
if (!matcher.find())
{
complete = false;
return;
}
public Ban(String banString, BanType type) {
this.type = type;
subject = matcher.group(1);
lastLoginName = matcher.group(2);
by = matcher.group(3);
expireUnix = Long.valueOf(matcher.group(4));
reason = Utilities.colorize(matcher.group(5));
complete = true;
}
final Matcher matcher = (type == BanType.IP ? IP_BAN_REGEX.matcher(banString)
: UUID_BAN_REGEX.matcher(banString));
public enum BanType
{
IP,
UUID
}
if (!matcher.find()) {
complete = false;
return;
}
public BanType getType()
{
return type;
}
subject = matcher.group(1);
lastLoginName = matcher.group(2);
by = matcher.group(3);
expireUnix = Long.valueOf(matcher.group(4));
reason = Utilities.colorize(matcher.group(5));
complete = true;
}
public String getSubject()
{
return subject;
}
public BanType getType() {
return type;
}
public String getLastLoginName()
{
return lastLoginName;
}
public String getSubject() {
return subject;
}
public String getBannedBy()
{
return by;
}
public String getLastLoginName() {
return lastLoginName;
}
public long getExpireUnix()
{
return expireUnix;
}
public String getBannedBy() {
return by;
}
public String getReason()
{
return reason;
}
public long getExpireUnix() {
return expireUnix;
}
public boolean isExpired()
{
return expireUnix != 0 && expireUnix < Utilities.getUnixTime();
}
public String getReason() {
return reason;
}
public boolean isComplete()
{
return complete;
}
public boolean isExpired() {
return expireUnix != 0 && expireUnix < Utilities.getUnixTime();
}
public String getKickMessage()
{
final StringBuilder message = new StringBuilder("You");
public boolean isComplete() {
return complete;
}
message.append(type == BanType.IP ? "r IP address is" : " are").append(" temporarily banned from this server.");
message.append("\nAppeal at ").append(ChatColor.GOLD).append(ConfigurationEntry.SERVER_BAN_URL.getString());
public String getKickMessage() {
final StringBuilder message = new StringBuilder("You");
if (!reason.equals("none"))
{
message.append("\nReason: ").append(reason);
}
message.append(type == BanType.IP ? "r IP address is" : " are")
.append(" temporarily banned from this server.");
message.append("\nAppeal at ").append(ChatColor.GOLD)
.append(ConfigurationEntry.SERVER_BAN_URL.getString());
if (getExpireUnix() != 0)
{
message.append("\nYour ban will be removed on ").append(DATE_FORMAT.format(Utilities.getUnixDate(expireUnix)));
}
if (!reason.equals("none")) {
message.append("\nReason: ").append(reason);
}
return message.toString();
}
if (getExpireUnix() != 0) {
message.append("\nYour ban will be removed on ")
.append(DATE_FORMAT.format(Utilities.getUnixDate(expireUnix)));
}
// subject:lastLoginName:bannedBy:expireUnix:reason
@Override
public String toString()
{
return subject + ":" + lastLoginName + ":" + by + ":" + expireUnix + ":" + Utilities.decolorize(reason);
}
return message.toString();
}
@Override
public boolean equals(Object object)
{
if (object == null)
{
return false;
}
// subject:lastLoginName:bannedBy:expireUnix:reason
@Override
public String toString() {
return subject + ":" + lastLoginName + ":" + by + ":" + expireUnix + ":"
+ Utilities.decolorize(reason);
}
if (!(object instanceof Ban))
{
return false;
}
@Override
public boolean equals(Object object) {
if (object == null) {
return false;
}
final Ban ban = (Ban) object;
if (!(object instanceof Ban)) {
return false;
}
if (toString().equals(ban.toString()))
{
return true;
}
final Ban ban = (Ban) object;
if (getType() != ban.getType())
{
return false;
}
if (toString().equals(ban.toString())) {
return true;
}
return getSubject().equals(ban.getSubject());
}
if (getType() != ban.getType()) {
return false;
}
@Override
public int hashCode()
{
final int prime = 37;
int result = 1;
result = prime * result + getType().hashCode();
result = prime * result + getSubject().hashCode();
return result;
}
return getSubject().equals(ban.getSubject());
}
@Override
public int hashCode() {
final int prime = 37;
int result = 1;
result = prime * result + getType().hashCode();
result = prime * result + getSubject().hashCode();
return result;
}
public enum BanType {
IP,
UUID
}
}

View file

@ -1,5 +1,10 @@
package me.StevenLawson.TotalFreedomMod.ban;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import me.StevenLawson.TotalFreedomMod.Log;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import me.StevenLawson.TotalFreedomMod.ban.Ban.BanType;
@ -10,290 +15,235 @@ import me.StevenLawson.TotalFreedomMod.manager.UUIDManager.TFM_UuidResolver;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.bukkit.entity.Player;
import java.util.*;
public class BanManager {
public class BanManager
{
private static final List<Ban> ipBans;
private static final List<Ban> uuidBans;
private static final List<UUID> unbannableUUIDs;
private static final List<Ban> ipBans;
private static final List<Ban> uuidBans;
private static final List<UUID> unbannableUUIDs;
static
{
ipBans = new ArrayList<Ban>();
uuidBans = new ArrayList<Ban>();
unbannableUUIDs = new ArrayList<UUID>();
}
static {
ipBans = new ArrayList<Ban>();
uuidBans = new ArrayList<Ban>();
unbannableUUIDs = new ArrayList<UUID>();
}
private BanManager()
{
throw new AssertionError();
}
private BanManager() {
throw new AssertionError();
}
public static void load()
{
ipBans.clear();
uuidBans.clear();
unbannableUUIDs.clear();
public static void load() {
ipBans.clear();
uuidBans.clear();
unbannableUUIDs.clear();
final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true);
config.load();
final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true);
config.load();
for (String banString : config.getStringList("ips"))
{
try
{
addIpBan(new Ban(banString, BanType.IP));
}
catch (RuntimeException ex)
{
Log.warning("Could not load IP ban: " + banString);
}
}
for (String banString : config.getStringList("ips")) {
try {
addIpBan(new Ban(banString, BanType.IP));
} catch (RuntimeException ex) {
Log.warning("Could not load IP ban: " + banString);
}
}
for (String banString : config.getStringList("uuids"))
{
try
{
addUuidBan(new Ban(banString, BanType.UUID));
}
catch (RuntimeException ex)
{
Log.warning("Could not load UUID ban: " + banString);
}
}
for (String banString : config.getStringList("uuids")) {
try {
addUuidBan(new Ban(banString, BanType.UUID));
} catch (RuntimeException ex) {
Log.warning("Could not load UUID ban: " + banString);
}
}
// Save the config
save();
Log.info("Loaded " + ipBans.size() + " IP bans and " + uuidBans.size() + " UUID bans");
// Save the config
save();
Log.info("Loaded " + ipBans.size() + " IP bans and " + uuidBans.size() + " UUID bans");
@SuppressWarnings("unchecked")
final TFM_UuidResolver resolver = new TFM_UuidResolver((List<String>) ConfigurationEntry.UNBANNABLE_USERNAMES.getList());
@SuppressWarnings("unchecked") final TFM_UuidResolver resolver = new TFM_UuidResolver(
(List<String>) ConfigurationEntry.UNBANNABLE_USERNAMES.getList());
for (UUID uuid : resolver.call().values())
{
unbannableUUIDs.add(uuid);
}
for (UUID uuid : resolver.call().values()) {
unbannableUUIDs.add(uuid);
}
Log.info("Loaded " + unbannableUUIDs.size() + " unbannable UUIDs");
}
Log.info("Loaded " + unbannableUUIDs.size() + " unbannable UUIDs");
}
public static void save()
{
final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true);
config.load();
public static void save() {
final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true);
config.load();
final List<String> newIpBans = new ArrayList<String>();
final List<String> newUuidBans = new ArrayList<String>();
final List<String> newIpBans = new ArrayList<String>();
final List<String> newUuidBans = new ArrayList<String>();
for (Ban savedBan : ipBans)
{
if (!savedBan.isExpired())
{
newIpBans.add(savedBan.toString());
}
}
for (Ban savedBan : ipBans) {
if (!savedBan.isExpired()) {
newIpBans.add(savedBan.toString());
}
}
for (Ban savedBan : uuidBans)
{
if (!savedBan.isExpired() && !unbannableUUIDs.contains(UUID.fromString(savedBan.getSubject())))
{
newUuidBans.add(savedBan.toString());
}
}
for (Ban savedBan : uuidBans) {
if (!savedBan.isExpired() && !unbannableUUIDs.contains(
UUID.fromString(savedBan.getSubject()))) {
newUuidBans.add(savedBan.toString());
}
}
config.set("ips", newIpBans);
config.set("uuids", newUuidBans);
config.set("ips", newIpBans);
config.set("uuids", newUuidBans);
// Save config
config.save();
}
// Save config
config.save();
}
public static List<Ban> getIpBanList()
{
return Collections.unmodifiableList(ipBans);
}
public static List<Ban> getIpBanList() {
return Collections.unmodifiableList(ipBans);
}
public static List<Ban> getUuidBanList()
{
return Collections.unmodifiableList(uuidBans);
}
public static List<Ban> getUuidBanList() {
return Collections.unmodifiableList(uuidBans);
}
public static Ban getByIp(String ip)
{
for (Ban ban : ipBans)
{
if (ban.isExpired())
{
continue;
}
public static Ban getByIp(String ip) {
for (Ban ban : ipBans) {
if (ban.isExpired()) {
continue;
}
wildcardCheck:
if (ban.getSubject().contains("*"))
{
final String[] subjectParts = ban.getSubject().split("\\.");
final String[] ipParts = ip.split("\\.");
wildcardCheck:
if (ban.getSubject().contains("*")) {
final String[] subjectParts = ban.getSubject().split("\\.");
final String[] ipParts = ip.split("\\.");
for (int i = 0; i < 4; i++)
{
if (!(subjectParts[i].equals("*") || subjectParts[i].equals(ipParts[i])))
{
break wildcardCheck;
}
}
for (int i = 0; i < 4; i++) {
if (!(subjectParts[i].equals("*") || subjectParts[i].equals(ipParts[i]))) {
break wildcardCheck;
}
}
return ban;
}
return ban;
}
if (ban.getSubject().equals(ip))
{
return ban;
}
}
return null;
}
if (ban.getSubject().equals(ip)) {
return ban;
}
}
return null;
}
public static Ban getByUuid(UUID uuid)
{
for (Ban ban : uuidBans)
{
if (ban.getSubject().equalsIgnoreCase(uuid.toString()))
{
if (ban.isExpired())
{
continue;
}
public static Ban getByUuid(UUID uuid) {
for (Ban ban : uuidBans) {
if (ban.getSubject().equalsIgnoreCase(uuid.toString())) {
if (ban.isExpired()) {
continue;
}
return ban;
}
}
return null;
}
return ban;
}
}
return null;
}
public static void unbanIp(String ip)
{
final Ban ban = getByIp(ip);
public static void unbanIp(String ip) {
final Ban ban = getByIp(ip);
if (ban == null)
{
return;
}
if (ban == null) {
return;
}
removeBan(ban);
save();
}
removeBan(ban);
save();
}
public static void unbanUuid(UUID uuid)
{
final Ban ban = getByUuid(uuid);
public static void unbanUuid(UUID uuid) {
final Ban ban = getByUuid(uuid);
if (ban == null)
{
return;
}
if (ban == null) {
return;
}
removeBan(ban);
}
removeBan(ban);
}
public static boolean isIpBanned(String ip)
{
return getByIp(ip) != null;
}
public static boolean isIpBanned(String ip) {
return getByIp(ip) != null;
}
public static boolean isUuidBanned(UUID uuid)
{
return getByUuid(uuid) != null;
}
public static boolean isUuidBanned(UUID uuid) {
return getByUuid(uuid) != null;
}
public static void addUuidBan(Player player)
{
addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName()));
}
public static void addUuidBan(Player player) {
addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName()));
}
public static void addUuidBan(Ban ban)
{
if (!ban.isComplete())
{
throw new RuntimeException("Could not add UUID ban, Invalid format!");
}
public static void addUuidBan(Ban ban) {
if (!ban.isComplete()) {
throw new RuntimeException("Could not add UUID ban, Invalid format!");
}
if (ban.isExpired())
{
return;
}
if (ban.isExpired()) {
return;
}
if (uuidBans.contains(ban))
{
return;
}
if (uuidBans.contains(ban)) {
return;
}
if (unbannableUUIDs.contains(UUID.fromString(ban.getSubject())))
{
return;
}
if (unbannableUUIDs.contains(UUID.fromString(ban.getSubject()))) {
return;
}
uuidBans.add(ban);
save();
}
uuidBans.add(ban);
save();
}
public static void addIpBan(Player player)
{
addIpBan(new Ban(Utilities.getIp(player), player.getName()));
}
public static void addIpBan(Player player) {
addIpBan(new Ban(Utilities.getIp(player), player.getName()));
}
public static void addIpBan(Ban ban)
{
if (!ban.isComplete())
{
throw new RuntimeException("Could not add IP ban, Invalid format!");
}
public static void addIpBan(Ban ban) {
if (!ban.isComplete()) {
throw new RuntimeException("Could not add IP ban, Invalid format!");
}
if (ban.isExpired())
{
return;
}
if (ban.isExpired()) {
return;
}
if (ipBans.contains(ban))
{
return;
}
if (ipBans.contains(ban)) {
return;
}
ipBans.add(ban);
save();
}
ipBans.add(ban);
save();
}
public static void removeBan(Ban ban)
{
final Iterator<Ban> ips = ipBans.iterator();
while (ips.hasNext())
{
if (ips.next().getSubject().equalsIgnoreCase(ban.getSubject()))
{
ips.remove();
}
}
public static void removeBan(Ban ban) {
final Iterator<Ban> ips = ipBans.iterator();
while (ips.hasNext()) {
if (ips.next().getSubject().equalsIgnoreCase(ban.getSubject())) {
ips.remove();
}
}
final Iterator<Ban> uuids = uuidBans.iterator();
while (uuids.hasNext())
{
if (uuids.next().getSubject().equalsIgnoreCase(ban.getSubject()))
{
uuids.remove();
}
}
final Iterator<Ban> uuids = uuidBans.iterator();
while (uuids.hasNext()) {
if (uuids.next().getSubject().equalsIgnoreCase(ban.getSubject())) {
uuids.remove();
}
}
save();
}
save();
}
public static void purgeIpBans()
{
ipBans.clear();
save();
}
public static void purgeIpBans() {
ipBans.clear();
save();
}
public static void purgeUuidBans()
{
uuidBans.clear();
save();
}
public static void purgeUuidBans() {
uuidBans.clear();
save();
}
}

View file

@ -1,63 +1,55 @@
package me.StevenLawson.TotalFreedomMod.ban;
import me.StevenLawson.TotalFreedomMod.Log;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import me.StevenLawson.TotalFreedomMod.config.Configuration;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.Log;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import me.StevenLawson.TotalFreedomMod.config.Configuration;
public class PermbanList
{
public class PermbanList {
private static final List<String> PERMBANNED_PLAYERS;
private static final List<String> PERMBANNED_IPS;
private static final List<String> PERMBANNED_PLAYERS;
private static final List<String> PERMBANNED_IPS;
static
{
PERMBANNED_PLAYERS = new ArrayList<String>();
PERMBANNED_IPS = new ArrayList<String>();
}
static {
PERMBANNED_PLAYERS = new ArrayList<String>();
PERMBANNED_IPS = new ArrayList<String>();
}
private PermbanList()
{
throw new AssertionError();
}
private PermbanList() {
throw new AssertionError();
}
public static List<String> getPermbannedPlayers()
{
return Collections.unmodifiableList(PERMBANNED_PLAYERS);
}
public static List<String> getPermbannedPlayers() {
return Collections.unmodifiableList(PERMBANNED_PLAYERS);
}
public static List<String> getPermbannedIps()
{
return Collections.unmodifiableList(PERMBANNED_IPS);
}
public static List<String> getPermbannedIps() {
return Collections.unmodifiableList(PERMBANNED_IPS);
}
public static void load()
{
PERMBANNED_PLAYERS.clear();
PERMBANNED_IPS.clear();
public static void load() {
PERMBANNED_PLAYERS.clear();
PERMBANNED_IPS.clear();
final Configuration config = new Configuration(TotalFreedomMod.plugin, TotalFreedomMod.PERMBAN_FILENAME, true);
config.load();
final Configuration config = new Configuration(TotalFreedomMod.plugin,
TotalFreedomMod.PERMBAN_FILENAME, true);
config.load();
for (String playername : config.getKeys(false))
{
PERMBANNED_PLAYERS.add(playername.toLowerCase().trim());
for (String playername : config.getKeys(false)) {
PERMBANNED_PLAYERS.add(playername.toLowerCase().trim());
List<String> playerIps = config.getStringList(playername);
for (String ip : playerIps)
{
ip = ip.trim();
if (!PERMBANNED_IPS.contains(ip))
{
PERMBANNED_IPS.add(ip);
}
}
}
List<String> playerIps = config.getStringList(playername);
for (String ip : playerIps) {
ip = ip.trim();
if (!PERMBANNED_IPS.contains(ip)) {
PERMBANNED_IPS.add(ip);
}
}
}
Log.info("Loaded " + PERMBANNED_PLAYERS.size() + " permanently banned players and " + PERMBANNED_IPS.size() + " permanently banned IPs.");
}
Log.info("Loaded " + PERMBANNED_PLAYERS.size() + " permanently banned players and "
+ PERMBANNED_IPS.size() + " permanently banned IPs.");
}
}

View file

@ -8,116 +8,87 @@ import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
public class EssentialsBridge {
private static Essentials essentialsPlugin = null;
private EssentialsBridge() {
throw new AssertionError();
}
private static Essentials essentialsPlugin = null;
public static Essentials getEssentialsPlugin() {
if (essentialsPlugin == null)
{
try
{
final Plugin essentials = Bukkit.getServer().getPluginManager().getPlugin("Essentials");
if (essentials != null)
{
if (essentials instanceof Essentials)
{
essentialsPlugin = (Essentials) essentials;
}
}
}
catch (Exception ex)
{
Log.severe(ex);
}
}
return essentialsPlugin;
}
private EssentialsBridge() {
throw new AssertionError();
}
public static User getEssentialsUser(String username)
{
try
{
final Essentials essentials = getEssentialsPlugin();
if (essentials != null)
{
return essentials.getUserMap().getUser(username);
}
}
catch (Exception ex)
{
Log.severe(ex);
}
return null;
}
public static Essentials getEssentialsPlugin() {
if (essentialsPlugin == null) {
try {
final Plugin essentials = Bukkit.getServer().getPluginManager()
.getPlugin("Essentials");
if (essentials != null) {
if (essentials instanceof Essentials) {
essentialsPlugin = (Essentials) essentials;
}
}
} catch (Exception ex) {
Log.severe(ex);
}
}
return essentialsPlugin;
}
public static void setNickname(String username, String nickname)
{
try
{
final User user = getEssentialsUser(username);
if (user != null)
{
user.setNickname(nickname);
user.setDisplayNick();
}
}
catch (Exception ex)
{
Log.severe(ex);
}
}
public static User getEssentialsUser(String username) {
try {
final Essentials essentials = getEssentialsPlugin();
if (essentials != null) {
return essentials.getUserMap().getUser(username);
}
} catch (Exception ex) {
Log.severe(ex);
}
return null;
}
public static String getNickname(String username)
{
try
{
final User user = getEssentialsUser(username);
if (user != null)
{
return user.getNickname();
}
}
catch (Exception ex)
{
Log.severe(ex);
}
return null;
}
public static void setNickname(String username, String nickname) {
try {
final User user = getEssentialsUser(username);
if (user != null) {
user.setNickname(nickname);
user.setDisplayNick();
}
} catch (Exception ex) {
Log.severe(ex);
}
}
public static long getLastActivity(String username)
{
try
{
final User user = getEssentialsUser(username);
if (user != null)
{
return Utilities.<Long>getField(user, "lastActivity"); // This is weird
}
}
catch (Exception ex)
{
Log.severe(ex);
}
return 0L;
}
public static String getNickname(String username) {
try {
final User user = getEssentialsUser(username);
if (user != null) {
return user.getNickname();
}
} catch (Exception ex) {
Log.severe(ex);
}
return null;
}
public static boolean isEssentialsEnabled()
{
try
{
final Essentials essentials = getEssentialsPlugin();
if (essentials != null)
{
return essentials.isEnabled();
}
}
catch (Exception ex)
{
Log.severe(ex);
}
return false;
}
public static long getLastActivity(String username) {
try {
final User user = getEssentialsUser(username);
if (user != null) {
return Utilities.<Long>getField(user, "lastActivity"); // This is weird
}
} catch (Exception ex) {
Log.severe(ex);
}
return 0L;
}
public static boolean isEssentialsEnabled() {
try {
final Essentials essentials = getEssentialsPlugin();
if (essentials != null) {
return essentials.isEnabled();
}
} catch (Exception ex) {
Log.severe(ex);
}
return false;
}
}

View file

@ -9,104 +9,77 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
public class WorldEditBridge {
private static WorldEditPlugin worldEditPlugin = null;
private WorldEditBridge() {
throw new AssertionError();
}
private static WorldEditPlugin worldEditPlugin = null;
private static WorldEditPlugin getWorldEditPlugin() {
if (worldEditPlugin == null)
{
try
{
Plugin we = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
if (we != null)
{
if (we instanceof WorldEditPlugin)
{
worldEditPlugin = (WorldEditPlugin) we;
}
}
}
catch (Exception ex)
{
Log.severe(ex);
}
}
return worldEditPlugin;
}
private WorldEditBridge() {
throw new AssertionError();
}
private static LocalSession getPlayerSession(Player player)
{
try
{
final WorldEditPlugin wep = getWorldEditPlugin();
if (wep != null)
{
return wep.getSession(player);
}
}
catch (Exception ex)
{
Log.severe(ex);
}
return null;
}
private static WorldEditPlugin getWorldEditPlugin() {
if (worldEditPlugin == null) {
try {
Plugin we = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
if (we != null) {
if (we instanceof WorldEditPlugin) {
worldEditPlugin = (WorldEditPlugin) we;
}
}
} catch (Exception ex) {
Log.severe(ex);
}
}
return worldEditPlugin;
}
private static BukkitPlayer getBukkitPlayer(Player player)
{
try
{
final WorldEditPlugin wep = getWorldEditPlugin();
if (wep != null)
{
return wep.wrapPlayer(player);
}
}
catch (Exception ex)
{
Log.severe(ex);
}
return null;
}
private static LocalSession getPlayerSession(Player player) {
try {
final WorldEditPlugin wep = getWorldEditPlugin();
if (wep != null) {
return wep.getSession(player);
}
} catch (Exception ex) {
Log.severe(ex);
}
return null;
}
public static void undo(Player player, int count)
{
try
{
LocalSession session = getPlayerSession(player);
if (session != null)
{
final BukkitPlayer bukkitPlayer = getBukkitPlayer(player);
if (bukkitPlayer != null)
{
for (int i = 0; i < count; i++)
{
session.undo(session.getBlockBag(bukkitPlayer), bukkitPlayer);
}
}
}
}
catch (Exception ex)
{
Log.severe(ex);
}
}
private static BukkitPlayer getBukkitPlayer(Player player) {
try {
final WorldEditPlugin wep = getWorldEditPlugin();
if (wep != null) {
return wep.wrapPlayer(player);
}
} catch (Exception ex) {
Log.severe(ex);
}
return null;
}
public static void setLimit(Player player, int limit)
{
try
{
final LocalSession session = getPlayerSession(player);
if (session != null)
{
session.setBlockChangeLimit(limit);
}
}
catch (Exception ex)
{
Log.severe(ex);
}
}
public static void undo(Player player, int count) {
try {
LocalSession session = getPlayerSession(player);
if (session != null) {
final BukkitPlayer bukkitPlayer = getBukkitPlayer(player);
if (bukkitPlayer != null) {
for (int i = 0; i < count; i++) {
session.undo(session.getBlockBag(bukkitPlayer), bukkitPlayer);
}
}
}
} catch (Exception ex) {
Log.severe(ex);
}
}
public static void setLimit(Player player, int limit) {
try {
final LocalSession session = getPlayerSession(player);
if (session != null) {
session.setBlockChangeLimit(limit);
}
} catch (Exception ex) {
Log.severe(ex);
}
}
}

View file

@ -1,5 +1,8 @@
package me.StevenLawson.TotalFreedomMod.command;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import me.StevenLawson.TotalFreedomMod.Log;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
@ -12,311 +15,263 @@ import org.bukkit.command.CommandMap;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CommandBlocker {
public class CommandBlocker
{
private static final Map<String, CommandBlockerEntry> BLOCKED_COMMANDS;
private static final Map<String, CommandBlockerEntry> BLOCKED_COMMANDS;
static
{
BLOCKED_COMMANDS = new HashMap<String, CommandBlockerEntry>();
}
static {
BLOCKED_COMMANDS = new HashMap<String, CommandBlockerEntry>();
}
private CommandBlocker()
{
throw new AssertionError();
}
private CommandBlocker() {
throw new AssertionError();
}
public static void load()
{
BLOCKED_COMMANDS.clear();
public static void load() {
BLOCKED_COMMANDS.clear();
final CommandMap commandMap = Utilities.getField(Bukkit.getServer().getPluginManager(), "commandMap");
if (commandMap == null)
{
Log.severe("Error loading commandMap.");
return;
}
final CommandMap commandMap = Utilities.getField(Bukkit.getServer().getPluginManager(),
"commandMap");
if (commandMap == null) {
Log.severe("Error loading commandMap.");
return;
}
@SuppressWarnings("unchecked")
List<String> blockedCommands = (List<String>) ConfigurationEntry.BLOCKED_COMMANDS.getList();
for (String rawEntry : blockedCommands)
{
final String[] parts = rawEntry.split(":");
if (parts.length < 3 || parts.length > 4)
{
Log.warning("Invalid command blocker entry: " + rawEntry);
continue;
}
@SuppressWarnings("unchecked")
List<String> blockedCommands = (List<String>) ConfigurationEntry.BLOCKED_COMMANDS.getList();
for (String rawEntry : blockedCommands) {
final String[] parts = rawEntry.split(":");
if (parts.length < 3 || parts.length > 4) {
Log.warning("Invalid command blocker entry: " + rawEntry);
continue;
}
final CommandBlockerRank rank = CommandBlockerRank.fromToken(parts[0]);
final CommandBlockerAction action = CommandBlockerAction.fromToken(parts[1]);
String commandName = parts[2].toLowerCase().substring(1);
final String message = (parts.length > 3 ? parts[3] : null);
final CommandBlockerRank rank = CommandBlockerRank.fromToken(parts[0]);
final CommandBlockerAction action = CommandBlockerAction.fromToken(parts[1]);
String commandName = parts[2].toLowerCase().substring(1);
final String message = (parts.length > 3 ? parts[3] : null);
if (rank == null || action == null || commandName == null || commandName.isEmpty())
{
Log.warning("Invalid command blocker entry: " + rawEntry);
continue;
}
if (rank == null || action == null || commandName == null || commandName.isEmpty()) {
Log.warning("Invalid command blocker entry: " + rawEntry);
continue;
}
final String[] commandParts = commandName.split(" ");
String subCommand = null;
if (commandParts.length > 1)
{
commandName = commandParts[0];
subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).trim().toLowerCase();
}
final String[] commandParts = commandName.split(" ");
String subCommand = null;
if (commandParts.length > 1) {
commandName = commandParts[0];
subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).trim()
.toLowerCase();
}
final Command command = commandMap.getCommand(commandName);
final Command command = commandMap.getCommand(commandName);
// Obtain command from alias
if (command == null)
{
Log.info("Blocking unknown command: /" + commandName);
}
else
{
commandName = command.getName().toLowerCase();
}
// Obtain command from alias
if (command == null) {
Log.info("Blocking unknown command: /" + commandName);
} else {
commandName = command.getName().toLowerCase();
}
if (BLOCKED_COMMANDS.containsKey(commandName))
{
Log.warning("Not blocking: /" + commandName + " - Duplicate entry exists!");
continue;
}
if (BLOCKED_COMMANDS.containsKey(commandName)) {
Log.warning("Not blocking: /" + commandName + " - Duplicate entry exists!");
continue;
}
final CommandBlockerEntry blockedCommandEntry = new CommandBlockerEntry(rank, action, commandName, subCommand, message);
BLOCKED_COMMANDS.put(blockedCommandEntry.getCommand(), blockedCommandEntry);
final CommandBlockerEntry blockedCommandEntry = new CommandBlockerEntry(rank, action,
commandName, subCommand, message);
BLOCKED_COMMANDS.put(blockedCommandEntry.getCommand(), blockedCommandEntry);
if (command != null)
{
for (String alias : command.getAliases())
{
BLOCKED_COMMANDS.put(alias.toLowerCase(), blockedCommandEntry);
}
}
}
if (command != null) {
for (String alias : command.getAliases()) {
BLOCKED_COMMANDS.put(alias.toLowerCase(), blockedCommandEntry);
}
}
}
Log.info("Loaded " + BLOCKED_COMMANDS.size() + " blocked commands");
}
Log.info("Loaded " + BLOCKED_COMMANDS.size() + " blocked commands");
}
public static boolean isCommandBlocked(String command, CommandSender sender)
{
return isCommandBlocked(command, sender, false);
}
public static boolean isCommandBlocked(String command, CommandSender sender) {
return isCommandBlocked(command, sender, false);
}
public static boolean isCommandBlocked(String command, CommandSender sender, boolean doAction)
{
if (command == null || command.isEmpty())
{
return false;
}
public static boolean isCommandBlocked(String command, CommandSender sender, boolean doAction) {
if (command == null || command.isEmpty()) {
return false;
}
command = command.toLowerCase().trim();
command = command.toLowerCase().trim();
if (command.split(" ")[0].contains(":"))
{
Utilities.playerMsg(sender, "Plugin-specific commands are disabled.");
return true;
}
if (command.split(" ")[0].contains(":")) {
Utilities.playerMsg(sender, "Plugin-specific commands are disabled.");
return true;
}
if (command.startsWith("/"))
{
command = command.substring(1);
}
if (command.startsWith("/")) {
command = command.substring(1);
}
final String[] commandParts = command.split(" ");
String subCommand = null;
if (commandParts.length > 1)
{
subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).toLowerCase();
}
final String[] commandParts = command.split(" ");
String subCommand = null;
if (commandParts.length > 1) {
subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).toLowerCase();
}
final CommandBlockerEntry entry = BLOCKED_COMMANDS.get(commandParts[0]);
final CommandBlockerEntry entry = BLOCKED_COMMANDS.get(commandParts[0]);
if (entry == null)
{
return false;
}
if (entry == null) {
return false;
}
if (entry.getSubCommand() != null)
{
if (subCommand == null || !subCommand.startsWith(entry.getSubCommand()))
{
return false;
}
}
if (entry.getSubCommand() != null) {
if (subCommand == null || !subCommand.startsWith(entry.getSubCommand())) {
return false;
}
}
if (entry.getRank().hasPermission(sender))
{
return false;
}
if (entry.getRank().hasPermission(sender)) {
return false;
}
if (doAction)
{
entry.doActions(sender);
}
if (doAction) {
entry.doActions(sender);
}
return true;
}
return true;
}
public enum CommandBlockerRank
{
ANYONE("a", 0),
OP("o", 1),
SUPER("s", 2),
TELNET("t", 3),
SENIOR("c", 4),
NOBODY("n", 5);
//
private final String token;
private final int level;
public enum CommandBlockerRank {
ANYONE("a", 0),
OP("o", 1),
SUPER("s", 2),
TELNET("t", 3),
SENIOR("c", 4),
NOBODY("n", 5);
//
private final String token;
private final int level;
CommandBlockerRank(String token, int level)
{
this.token = token;
this.level = level;
}
CommandBlockerRank(String token, int level) {
this.token = token;
this.level = level;
}
public String getToken()
{
return this.token;
}
public static CommandBlockerRank fromSender(CommandSender sender) {
if (!(sender instanceof Player)) {
return TELNET;
}
public boolean hasPermission(CommandSender sender)
{
return fromSender(sender).level >= this.level;
}
if (AdminList.isSuperAdmin(sender)) {
if (AdminList.isSeniorAdmin(sender)) {
return SENIOR;
}
return SUPER;
}
public static CommandBlockerRank fromSender(CommandSender sender)
{
if (!(sender instanceof Player))
{
return TELNET;
}
if (sender.isOp()) {
return OP;
}
if (AdminList.isSuperAdmin(sender))
{
if (AdminList.isSeniorAdmin(sender))
{
return SENIOR;
}
return SUPER;
}
return ANYONE;
if (sender.isOp())
{
return OP;
}
}
return ANYONE;
public static CommandBlockerRank fromToken(String token) {
for (CommandBlockerRank rank : CommandBlockerRank.values()) {
if (rank.getToken().equalsIgnoreCase(token)) {
return rank;
}
}
return ANYONE;
}
}
public String getToken() {
return this.token;
}
public static CommandBlockerRank fromToken(String token)
{
for (CommandBlockerRank rank : CommandBlockerRank.values())
{
if (rank.getToken().equalsIgnoreCase(token))
{
return rank;
}
}
return ANYONE;
}
}
public boolean hasPermission(CommandSender sender) {
return fromSender(sender).level >= this.level;
}
}
public enum CommandBlockerAction
{
BLOCK("b"),
BLOCK_AND_EJECT("a"),
BLOCK_UNKNOWN("u");
private final String token;
public enum CommandBlockerAction {
BLOCK("b"),
BLOCK_AND_EJECT("a"),
BLOCK_UNKNOWN("u");
private final String token;
CommandBlockerAction(String token)
{
this.token = token;
}
CommandBlockerAction(String token) {
this.token = token;
}
public String getToken()
{
return this.token;
}
public static CommandBlockerAction fromToken(String token) {
for (CommandBlockerAction action : CommandBlockerAction.values()) {
if (action.getToken().equalsIgnoreCase(token)) {
return action;
}
}
return null;
}
public static CommandBlockerAction fromToken(String token)
{
for (CommandBlockerAction action : CommandBlockerAction.values())
{
if (action.getToken().equalsIgnoreCase(token))
{
return action;
}
}
return null;
}
}
public String getToken() {
return this.token;
}
}
public static class CommandBlockerEntry
{
private final CommandBlockerRank rank;
private final CommandBlockerAction action;
private final String command;
private final String subCommand;
private final String message;
public static class CommandBlockerEntry {
private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action, String command, String message)
{
this(rank, action, command, null, message);
}
private final CommandBlockerRank rank;
private final CommandBlockerAction action;
private final String command;
private final String subCommand;
private final String message;
private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action, String command, String subCommand, String message)
{
this.rank = rank;
this.action = action;
this.command = command;
this.subCommand = (subCommand == null ? null : subCommand.toLowerCase().trim());
this.message = (message == null || message.equals("_") ? "That command is blocked." : message);
}
private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action,
String command, String message) {
this(rank, action, command, null, message);
}
public CommandBlockerAction getAction()
{
return this.action;
}
private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action,
String command, String subCommand, String message) {
this.rank = rank;
this.action = action;
this.command = command;
this.subCommand = (subCommand == null ? null : subCommand.toLowerCase().trim());
this.message = (message == null || message.equals("_") ? "That command is blocked."
: message);
}
public String getCommand()
{
return this.command;
}
public CommandBlockerAction getAction() {
return this.action;
}
public String getSubCommand()
{
return this.subCommand;
}
public String getCommand() {
return this.command;
}
public String getMessage()
{
return this.message;
}
public String getSubCommand() {
return this.subCommand;
}
public CommandBlockerRank getRank()
{
return this.rank;
}
public String getMessage() {
return this.message;
}
private void doActions(CommandSender sender)
{
if (action == CommandBlockerAction.BLOCK_AND_EJECT && sender instanceof Player)
{
Utilities.autoEject((Player) sender, "You used a prohibited command: " + command);
Utilities.bcastMsg(sender.getName() + " was automatically kicked for using harmful commands.", ChatColor.RED);
return;
}
public CommandBlockerRank getRank() {
return this.rank;
}
Utilities.playerMsg(sender, Utilities.colorize(message));
}
}
private void doActions(CommandSender sender) {
if (action == CommandBlockerAction.BLOCK_AND_EJECT && sender instanceof Player) {
Utilities.autoEject((Player) sender, "You used a prohibited command: " + command);
Utilities.bcastMsg(
sender.getName() + " was automatically kicked for using harmful commands.",
ChatColor.RED);
return;
}
Utilities.playerMsg(sender, Utilities.colorize(message));
}
}
}

View file

@ -1,16 +1,16 @@
package me.StevenLawson.TotalFreedomMod.commands;
public enum AdminLevel {
ALL("All Player Commands"), OP("OP Commands"), SUPER("SuperAdmin Commands"), SENIOR("Senior Admin Commands");
//
private final String friendlyName;
ALL("All Player Commands"), OP("OP Commands"), SUPER("SuperAdmin Commands"), SENIOR(
"Senior Admin Commands");
//
private final String friendlyName;
AdminLevel(String friendlyName) {
this.friendlyName = friendlyName;
}
AdminLevel(String friendlyName) {
this.friendlyName = friendlyName;
}
public String getFriendlyName()
{
return friendlyName;
}
public String getFriendlyName() {
return friendlyName;
}
}

View file

@ -2,9 +2,9 @@ package me.StevenLawson.TotalFreedomMod.commands;
// This is only here because of Command_tfm
public @interface CommandParameters
{
String description();
public @interface CommandParameters {
String usage();
String description();
String usage();
}

View file

@ -4,11 +4,11 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface CommandPermissions
{
AdminLevel level();
public @interface CommandPermissions {
SourceType source();
AdminLevel level();
boolean blockHostConsole() default false;
SourceType source();
boolean blockHostConsole() default false;
}

View file

@ -9,31 +9,29 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true)
public class Command_adminmode extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if (args[0].equalsIgnoreCase("off")) {
ConfigurationEntry.ADMIN_ONLY_MODE.setBoolean(false);
Utilities.adminAction(sender.getName(), "Deactivating adminmode.", true);
return true;
}
else if (args[0].equalsIgnoreCase("on"))
{
ConfigurationEntry.ADMIN_ONLY_MODE.setBoolean(true);
Utilities.adminAction(sender.getName(), "Activating adminmode.", true);
for (Player player : server.getOnlinePlayers())
{
if (!AdminList.isSuperAdmin(player))
{
player.kickPlayer("Server is now in adminmode.");
}
}
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
return false;
}
if (args[0].equalsIgnoreCase("off")) {
ConfigurationEntry.ADMIN_ONLY_MODE.setBoolean(false);
Utilities.adminAction(sender.getName(), "Deactivating adminmode.", true);
return true;
} else if (args[0].equalsIgnoreCase("on")) {
ConfigurationEntry.ADMIN_ONLY_MODE.setBoolean(true);
Utilities.adminAction(sender.getName(), "Activating adminmode.", true);
for (Player player : server.getOnlinePlayers()) {
if (!AdminList.isSuperAdmin(player)) {
player.kickPlayer("Server is now in adminmode.");
}
}
return true;
}
return false;
}
}

View file

@ -10,213 +10,165 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
public class Command_adminworld extends FreedomCommand {
private enum CommandMode {
TELEPORT, GUEST, TIME, WEATHER
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
CommandMode commandMode = null;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
CommandMode commandMode = null;
if (args.length == 0) {
commandMode = CommandMode.TELEPORT;
} else if (args.length >= 2) {
if ("guest".equalsIgnoreCase(args[0]))
{
commandMode = CommandMode.GUEST;
}
else if ("time".equalsIgnoreCase(args[0]))
{
commandMode = CommandMode.TIME;
}
else if ("weather".equalsIgnoreCase(args[0]))
{
commandMode = CommandMode.WEATHER;
}
}
if (args.length == 0) {
commandMode = CommandMode.TELEPORT;
} else if (args.length >= 2) {
if ("guest".equalsIgnoreCase(args[0])) {
commandMode = CommandMode.GUEST;
} else if ("time".equalsIgnoreCase(args[0])) {
commandMode = CommandMode.TIME;
} else if ("weather".equalsIgnoreCase(args[0])) {
commandMode = CommandMode.WEATHER;
}
}
if (commandMode == null)
{
return false;
}
if (commandMode == null) {
return false;
}
try
{
switch (commandMode)
{
case TELEPORT:
{
if (!(sender instanceof Player) || sender_p == null)
{
return true;
}
try {
switch (commandMode) {
case TELEPORT: {
if (!(sender instanceof Player) || sender_p == null) {
return true;
}
World adminWorld = null;
try
{
adminWorld = AdminWorld.getInstance().getWorld();
}
catch (Exception ex)
{
}
World adminWorld = null;
try {
adminWorld = AdminWorld.getInstance().getWorld();
} catch (Exception ex) {
}
if (adminWorld == null || sender_p.getWorld() == adminWorld)
{
playerMsg(sender, "Going to the main world.");
sender_p.teleport(server.getWorlds().get(0).getSpawnLocation());
}
else
{
if (AdminWorld.getInstance().canAccessWorld(sender_p))
{
playerMsg(sender, "Going to the AdminWorld.");
AdminWorld.getInstance().sendToWorld(sender_p);
}
else
{
playerMsg(sender, "You don't have permission to access the AdminWorld.");
}
}
if (adminWorld == null || sender_p.getWorld() == adminWorld) {
playerMsg(sender, "Going to the main world.");
sender_p.teleport(server.getWorlds().get(0).getSpawnLocation());
} else {
if (AdminWorld.getInstance().canAccessWorld(sender_p)) {
playerMsg(sender, "Going to the AdminWorld.");
AdminWorld.getInstance().sendToWorld(sender_p);
} else {
playerMsg(sender,
"You don't have permission to access the AdminWorld.");
}
}
break;
}
case GUEST:
{
if (args.length == 2)
{
if ("list".equalsIgnoreCase(args[1]))
{
playerMsg(sender, "AdminWorld guest list: " + AdminWorld.getInstance().guestListToString());
}
else if ("purge".equalsIgnoreCase(args[1]))
{
assertCommandPerms(sender, sender_p);
AdminWorld.getInstance().purgeGuestList();
Utilities.adminAction(sender.getName(), "AdminWorld guest list purged.", false);
}
else
{
return false;
}
}
else if (args.length == 3)
{
assertCommandPerms(sender, sender_p);
break;
}
case GUEST: {
if (args.length == 2) {
if ("list".equalsIgnoreCase(args[1])) {
playerMsg(sender, "AdminWorld guest list: " + AdminWorld.getInstance()
.guestListToString());
} else if ("purge".equalsIgnoreCase(args[1])) {
assertCommandPerms(sender, sender_p);
AdminWorld.getInstance().purgeGuestList();
Utilities.adminAction(sender.getName(), "AdminWorld guest list purged.",
false);
} else {
return false;
}
} else if (args.length == 3) {
assertCommandPerms(sender, sender_p);
if ("add".equalsIgnoreCase(args[1]))
{
final Player player = getPlayer(args[2]);
if ("add".equalsIgnoreCase(args[1])) {
final Player player = getPlayer(args[2]);
if (player == null)
{
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
if (AdminWorld.getInstance().addGuest(player, sender_p))
{
Utilities.adminAction(sender.getName(), "AdminWorld guest added: " + player.getName(), false);
}
else
{
playerMsg(sender, "Could not add player to guest list.");
}
}
else if ("remove".equals(args[1]))
{
final Player player = AdminWorld.getInstance().removeGuest(args[2]);
if (player != null)
{
Utilities.adminAction(sender.getName(), "AdminWorld guest removed: " + player.getName(), false);
}
else
{
playerMsg(sender, "Can't find guest entry for: " + args[2]);
}
}
else
{
return false;
}
}
if (AdminWorld.getInstance().addGuest(player, sender_p)) {
Utilities.adminAction(sender.getName(),
"AdminWorld guest added: " + player.getName(), false);
} else {
playerMsg(sender, "Could not add player to guest list.");
}
} else if ("remove".equals(args[1])) {
final Player player = AdminWorld.getInstance().removeGuest(args[2]);
if (player != null) {
Utilities.adminAction(sender.getName(),
"AdminWorld guest removed: " + player.getName(), false);
} else {
playerMsg(sender, "Can't find guest entry for: " + args[2]);
}
} else {
return false;
}
}
break;
}
case TIME:
{
assertCommandPerms(sender, sender_p);
break;
}
case TIME: {
assertCommandPerms(sender, sender_p);
if (args.length == 2)
{
AdminWorld.TimeOfDay timeOfDay = AdminWorld.TimeOfDay.getByAlias(args[1]);
if (timeOfDay != null)
{
AdminWorld.getInstance().setTimeOfDay(timeOfDay);
playerMsg(sender, "AdminWorld time set to: " + timeOfDay.name());
}
else
{
playerMsg(sender, "Invalid time of day. Can be: sunrise, noon, sunset, midnight");
}
}
else
{
return false;
}
if (args.length == 2) {
AdminWorld.TimeOfDay timeOfDay = AdminWorld.TimeOfDay.getByAlias(args[1]);
if (timeOfDay != null) {
AdminWorld.getInstance().setTimeOfDay(timeOfDay);
playerMsg(sender, "AdminWorld time set to: " + timeOfDay.name());
} else {
playerMsg(sender,
"Invalid time of day. Can be: sunrise, noon, sunset, midnight");
}
} else {
return false;
}
break;
}
case WEATHER:
{
assertCommandPerms(sender, sender_p);
break;
}
case WEATHER: {
assertCommandPerms(sender, sender_p);
if (args.length == 2)
{
AdminWorld.WeatherMode weatherMode = AdminWorld.WeatherMode.getByAlias(args[1]);
if (weatherMode != null)
{
AdminWorld.getInstance().setWeatherMode(weatherMode);
playerMsg(sender, "AdminWorld weather set to: " + weatherMode.name());
}
else
{
playerMsg(sender, "Invalid weather mode. Can be: off, rain, storm");
}
}
else
{
return false;
}
if (args.length == 2) {
AdminWorld.WeatherMode weatherMode = AdminWorld.WeatherMode.getByAlias(
args[1]);
if (weatherMode != null) {
AdminWorld.getInstance().setWeatherMode(weatherMode);
playerMsg(sender, "AdminWorld weather set to: " + weatherMode.name());
} else {
playerMsg(sender, "Invalid weather mode. Can be: off, rain, storm");
}
} else {
return false;
}
break;
}
default:
{
return false;
}
}
}
catch (PermissionDeniedException ex)
{
sender.sendMessage(ex.getMessage());
}
break;
}
default: {
return false;
}
}
} catch (PermissionDeniedException ex) {
sender.sendMessage(ex.getMessage());
}
return true;
}
return true;
}
private void assertCommandPerms(CommandSender sender, org.bukkit.entity.Player sender_p) throws PermissionDeniedException {
if (!(sender instanceof Player) || sender_p == null || !AdminList.isSuperAdmin(sender)) {
throw new PermissionDeniedException(FreedomCommand.MSG_NO_PERMS);
}
}
private void assertCommandPerms(CommandSender sender, org.bukkit.entity.Player sender_p)
throws PermissionDeniedException {
if (!(sender instanceof Player) || sender_p == null || !AdminList.isSuperAdmin(sender)) {
throw new PermissionDeniedException(FreedomCommand.MSG_NO_PERMS);
}
}
private class PermissionDeniedException extends Exception
{
private static final long serialVersionUID = 1L;
private enum CommandMode {
TELEPORT, GUEST, TIME, WEATHER
}
private PermissionDeniedException(String string)
{
super(string);
}
}
private class PermissionDeniedException extends Exception {
private static final long serialVersionUID = 1L;
private PermissionDeniedException(String string) {
super(string);
}
}
}

View file

@ -9,49 +9,50 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_blockcmd extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if (args[0].equalsIgnoreCase("purge")) {
Utilities.adminAction(sender.getName(), "Unblocking commands for all players", true);
int counter = 0;
for (Player player : server.getOnlinePlayers())
{
PlayerData playerdata = PlayerData.getPlayerData(player);
if (playerdata.allCommandsBlocked())
{
counter += 1;
playerdata.setCommandsBlocked(false);
}
}
playerMsg(sender, "Unblocked commands for " + counter + " players.");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
final Player player = getPlayer(args[0]);
if (args[0].equalsIgnoreCase("purge")) {
Utilities.adminAction(sender.getName(), "Unblocking commands for all players", true);
int counter = 0;
for (Player player : server.getOnlinePlayers()) {
PlayerData playerdata = PlayerData.getPlayerData(player);
if (playerdata.allCommandsBlocked()) {
counter += 1;
playerdata.setCommandsBlocked(false);
}
}
playerMsg(sender, "Unblocked commands for " + counter + " players.");
return true;
}
if (player == null)
{
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
final Player player = getPlayer(args[0]);
if (AdminList.isSuperAdmin(player))
{
playerMsg(sender, player.getName() + " is a Superadmin, and cannot have their commands blocked.");
return true;
}
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
PlayerData playerdata = PlayerData.getPlayerData(player);
if (AdminList.isSuperAdmin(player)) {
playerMsg(sender,
player.getName() + " is a Superadmin, and cannot have their commands blocked.");
return true;
}
playerdata.setCommandsBlocked(!playerdata.allCommandsBlocked());
PlayerData playerdata = PlayerData.getPlayerData(player);
Utilities.adminAction(sender.getName(), (playerdata.allCommandsBlocked() ? "B" : "Unb") + "locking all commands for " + player.getName(), true);
playerMsg(sender, (playerdata.allCommandsBlocked() ? "B" : "Unb") + "locked all commands.");
playerdata.setCommandsBlocked(!playerdata.allCommandsBlocked());
return true;
}
Utilities.adminAction(sender.getName(),
(playerdata.allCommandsBlocked() ? "B" : "Unb") + "locking all commands for "
+ player.getName(), true);
playerMsg(sender, (playerdata.allCommandsBlocked() ? "B" : "Unb") + "locked all commands.");
return true;
}
}

View file

@ -11,106 +11,91 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_cage extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
if ("off".equals(args[0]) && sender instanceof Player) {
Utilities.adminAction(sender.getName(), "Uncaging " + sender.getName(), true);
PlayerData playerdata = PlayerData.getPlayerData(sender_p);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
playerdata.setCaged(false);
playerdata.regenerateHistory();
playerdata.clearHistory();
if ("off".equals(args[0]) && sender instanceof Player) {
Utilities.adminAction(sender.getName(), "Uncaging " + sender.getName(), true);
PlayerData playerdata = PlayerData.getPlayerData(sender_p);
return true;
}
else if ("purge".equals(args[0]))
{
Utilities.adminAction(sender.getName(), "Uncaging all players", true);
playerdata.setCaged(false);
playerdata.regenerateHistory();
playerdata.clearHistory();
for (Player player : server.getOnlinePlayers())
{
PlayerData playerdata = PlayerData.getPlayerData(player);
playerdata.setCaged(false);
playerdata.regenerateHistory();
playerdata.clearHistory();
}
return true;
} else if ("purge".equals(args[0])) {
Utilities.adminAction(sender.getName(), "Uncaging all players", true);
return true;
}
for (Player player : server.getOnlinePlayers()) {
PlayerData playerdata = PlayerData.getPlayerData(player);
playerdata.setCaged(false);
playerdata.regenerateHistory();
playerdata.clearHistory();
}
final Player player = getPlayer(args[0]);
return true;
}
if (player == null)
{
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
final Player player = getPlayer(args[0]);
PlayerData playerdata = PlayerData.getPlayerData(player);
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
Material outerMaterial = Material.GLASS;
Material innerMaterial = Material.AIR;
PlayerData playerdata = PlayerData.getPlayerData(player);
if (args.length >= 2)
{
if ("off".equals(args[1]))
{
Utilities.adminAction(sender.getName(), "Uncaging " + player.getName(), true);
Material outerMaterial = Material.GLASS;
Material innerMaterial = Material.AIR;
playerdata.setCaged(false);
playerdata.regenerateHistory();
playerdata.clearHistory();
if (args.length >= 2) {
if ("off".equals(args[1])) {
Utilities.adminAction(sender.getName(), "Uncaging " + player.getName(), true);
return true;
}
else
{
if ("darth".equalsIgnoreCase(args[1]))
{
outerMaterial = Material.SKULL;
}
else if (Material.matchMaterial(args[1]) != null)
{
outerMaterial = Material.matchMaterial(args[1]);
}
}
}
playerdata.setCaged(false);
playerdata.regenerateHistory();
playerdata.clearHistory();
if (args.length >= 3)
{
if (args[2].equalsIgnoreCase("water"))
{
innerMaterial = Material.STATIONARY_WATER;
}
else if (args[2].equalsIgnoreCase("lava"))
{
innerMaterial = Material.STATIONARY_LAVA;
}
}
return true;
} else {
if ("darth".equalsIgnoreCase(args[1])) {
outerMaterial = Material.SKULL;
} else if (Material.matchMaterial(args[1]) != null) {
outerMaterial = Material.matchMaterial(args[1]);
}
}
}
Location targetPos = player.getLocation().clone().add(0, 1, 0);
playerdata.setCaged(true, targetPos, outerMaterial, innerMaterial);
playerdata.regenerateHistory();
playerdata.clearHistory();
Utilities.buildHistory(targetPos, 2, playerdata);
Utilities.generateHollowCube(targetPos, 2, outerMaterial);
Utilities.generateCube(targetPos, 1, innerMaterial);
if (args.length >= 3) {
if (args[2].equalsIgnoreCase("water")) {
innerMaterial = Material.STATIONARY_WATER;
} else if (args[2].equalsIgnoreCase("lava")) {
innerMaterial = Material.STATIONARY_LAVA;
}
}
player.setGameMode(GameMode.SURVIVAL);
Location targetPos = player.getLocation().clone().add(0, 1, 0);
playerdata.setCaged(true, targetPos, outerMaterial, innerMaterial);
playerdata.regenerateHistory();
playerdata.clearHistory();
Utilities.buildHistory(targetPos, 2, playerdata);
Utilities.generateHollowCube(targetPos, 2, outerMaterial);
Utilities.generateCube(targetPos, 1, innerMaterial);
if (outerMaterial != Material.SKULL)
{
Utilities.adminAction(sender.getName(), "Caging " + player.getName(), true);
}
else
{
Utilities.adminAction(sender.getName(), "Caging " + player.getName() + " in PURE_DARTH", true);
}
player.setGameMode(GameMode.SURVIVAL);
return true;
}
if (outerMaterial != Material.SKULL) {
Utilities.adminAction(sender.getName(), "Caging " + player.getName(), true);
} else {
Utilities.adminAction(sender.getName(), "Caging " + player.getName() + " in PURE_DARTH",
true);
}
return true;
}
}

View file

@ -1,5 +1,6 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.Random;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.bukkit.Achievement;
import org.bukkit.ChatColor;
@ -10,40 +11,41 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.Random;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_cake extends FreedomCommand {
public static final String CAKE_LYRICS = "But there's no sense crying over every mistake. You just keep on trying till you run out of cake.";
private final Random random = new Random();
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
final StringBuilder output = new StringBuilder();
public static final String CAKE_LYRICS = "But there's no sense crying over every mistake. You just keep on trying till you run out of cake.";
private final Random random = new Random();
final String[] words = CAKE_LYRICS.split(" ");
for (final String word : words) {
output.append(ChatColor.COLOR_CHAR).append(Integer.toHexString(1 + random.nextInt(14))).append(word).append(" ");
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
final StringBuilder output = new StringBuilder();
final ItemStack heldItem = new ItemStack(Material.CAKE);
final ItemMeta heldItemMeta = heldItem.getItemMeta();
heldItemMeta.setDisplayName((new StringBuilder()).append(ChatColor.WHITE).append("The ").append(ChatColor.DARK_GRAY).append("Lie").toString());
heldItem.setItemMeta(heldItemMeta);
final String[] words = CAKE_LYRICS.split(" ");
for (final String word : words) {
output.append(ChatColor.COLOR_CHAR).append(Integer.toHexString(1 + random.nextInt(14)))
.append(word).append(" ");
}
for (final Player player : server.getOnlinePlayers())
{
final int firstEmpty = player.getInventory().firstEmpty();
if (firstEmpty >= 0)
{
player.getInventory().setItem(firstEmpty, heldItem);
}
final ItemStack heldItem = new ItemStack(Material.CAKE);
final ItemMeta heldItemMeta = heldItem.getItemMeta();
heldItemMeta.setDisplayName(
(new StringBuilder()).append(ChatColor.WHITE).append("The ").append(ChatColor.DARK_GRAY)
.append("Lie").toString());
heldItem.setItemMeta(heldItemMeta);
player.awardAchievement(Achievement.BAKE_CAKE);
}
for (final Player player : server.getOnlinePlayers()) {
final int firstEmpty = player.getInventory().firstEmpty();
if (firstEmpty >= 0) {
player.getInventory().setItem(firstEmpty, heldItem);
}
Utilities.bcastMsg(output.toString());
player.awardAchievement(Achievement.BAKE_CAKE);
}
return true;
}
Utilities.bcastMsg(output.toString());
return true;
}
}

View file

@ -8,69 +8,58 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
public class Command_cartsit extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Player targetPlayer = sender_p;
if (args.length == 1) {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Player targetPlayer = sender_p;
targetPlayer = getPlayer(args[0]);
if (args.length == 1) {
if (targetPlayer == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
}
targetPlayer = getPlayer(args[0]);
if (senderIsConsole)
{
if (targetPlayer == null)
{
sender.sendMessage("When used from the console, you must define a target player: /cartsit <player>");
return true;
}
}
else if (targetPlayer != sender_p && !AdminList.isSuperAdmin(sender))
{
sender.sendMessage("Only superadmins can select another player as a /cartsit target.");
return true;
}
if (targetPlayer == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
}
if (targetPlayer.isInsideVehicle())
{
targetPlayer.getVehicle().eject();
}
else
{
Minecart nearest_cart = null;
for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class))
{
if (cart.isEmpty())
{
if (nearest_cart == null)
{
nearest_cart = cart;
}
else
{
if (cart.getLocation().distanceSquared(targetPlayer.getLocation()) < nearest_cart.getLocation().distanceSquared(targetPlayer.getLocation()))
{
nearest_cart = cart;
}
}
}
}
if (senderIsConsole) {
if (targetPlayer == null) {
sender.sendMessage(
"When used from the console, you must define a target player: /cartsit <player>");
return true;
}
} else if (targetPlayer != sender_p && !AdminList.isSuperAdmin(sender)) {
sender.sendMessage("Only superadmins can select another player as a /cartsit target.");
return true;
}
if (nearest_cart != null)
{
nearest_cart.setPassenger(targetPlayer);
}
else
{
sender.sendMessage("There are no empty minecarts in the target world.");
}
}
if (targetPlayer.isInsideVehicle()) {
targetPlayer.getVehicle().eject();
} else {
Minecart nearest_cart = null;
for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class)) {
if (cart.isEmpty()) {
if (nearest_cart == null) {
nearest_cart = cart;
} else {
if (cart.getLocation().distanceSquared(targetPlayer.getLocation())
< nearest_cart.getLocation()
.distanceSquared(targetPlayer.getLocation())) {
nearest_cart = cart;
}
}
}
}
return true;
}
if (nearest_cart != null) {
nearest_cart.setPassenger(targetPlayer);
} else {
sender.sendMessage("There are no empty minecarts in the target world.");
}
}
return true;
}
}

View file

@ -1,5 +1,8 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import me.StevenLawson.TotalFreedomMod.Log;
import me.StevenLawson.TotalFreedomMod.command.CommandBlocker;
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
@ -13,197 +16,159 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
public class Command_cbtool extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
if ("targetblock".equalsIgnoreCase(args[0]) && sender instanceof Player) {
Block targetBlock = DeprecationUtil.getTargetBlock(sender_p, null, 100);
playerMsg(sender, "Your target block: " + targetBlock.getLocation().toString());
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
try
{
final StringBuffer generatedCommand = new StringBuffer();
if ("targetblock".equalsIgnoreCase(args[0]) && sender instanceof Player) {
Block targetBlock = DeprecationUtil.getTargetBlock(sender_p, null, 100);
playerMsg(sender, "Your target block: " + targetBlock.getLocation().toString());
return true;
}
final Matcher matcher = Pattern.compile("\\[(.+?)\\]").matcher(StringUtils.join(args, " ").trim());
while (matcher.find())
{
matcher.appendReplacement(generatedCommand, processSubCommand(matcher.group(1)));
}
matcher.appendTail(generatedCommand);
try {
final StringBuffer generatedCommand = new StringBuffer();
if (CommandBlocker.isCommandBlocked(generatedCommand.toString(), sender, false))
{
return true;
}
final Matcher matcher = Pattern.compile("\\[(.+?)\\]")
.matcher(StringUtils.join(args, " ").trim());
while (matcher.find()) {
matcher.appendReplacement(generatedCommand, processSubCommand(matcher.group(1)));
}
matcher.appendTail(generatedCommand);
server.dispatchCommand(sender, generatedCommand.toString());
}
catch (SubCommandFailureException ex)
{
}
catch (Exception ex)
{
Log.severe(ex);
}
if (CommandBlocker.isCommandBlocked(generatedCommand.toString(), sender, false)) {
return true;
}
return true;
}
server.dispatchCommand(sender, generatedCommand.toString());
} catch (SubCommandFailureException ex) {
} catch (Exception ex) {
Log.severe(ex);
}
private String processSubCommand(final String subcommand) throws SubCommandFailureException
{
final String[] args = StringUtils.split(subcommand, " ");
return true;
}
if (args.length == 1)
{
throw new SubCommandFailureException("Invalid subcommand name.");
}
private String processSubCommand(final String subcommand) throws SubCommandFailureException {
final String[] args = StringUtils.split(subcommand, " ");
return SubCommand.getByName(args[0]).getExecutable().execute(ArrayUtils.remove(args, 0));
}
if (args.length == 1) {
throw new SubCommandFailureException("Invalid subcommand name.");
}
private enum SubCommand
{
PLAYER_DETECT("playerdetect", new SubCommandExecutable()
{
@Override
public String execute(String[] args) throws SubCommandFailureException
{
if (args.length != 5)
{
throw new SubCommandFailureException("Invalid # of arguments.");
}
return SubCommand.getByName(args[0]).getExecutable().execute(ArrayUtils.remove(args, 0));
}
double x, y, z;
try
{
x = Double.parseDouble(args[0].trim());
y = Double.parseDouble(args[1].trim());
z = Double.parseDouble(args[2].trim());
}
catch (NumberFormatException ex)
{
throw new SubCommandFailureException("Invalid coordinates.");
}
private enum SubCommand {
PLAYER_DETECT("playerdetect", new SubCommandExecutable() {
@Override
public String execute(String[] args) throws SubCommandFailureException {
if (args.length != 5) {
throw new SubCommandFailureException("Invalid # of arguments.");
}
World world = null;
final String needleWorldName = args[3].trim();
final List<World> worlds = Bukkit.getWorlds();
for (final World testWorld : worlds)
{
if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName))
{
world = testWorld;
break;
}
}
double x, y, z;
try {
x = Double.parseDouble(args[0].trim());
y = Double.parseDouble(args[1].trim());
z = Double.parseDouble(args[2].trim());
} catch (NumberFormatException ex) {
throw new SubCommandFailureException("Invalid coordinates.");
}
if (world == null)
{
throw new SubCommandFailureException("Invalid world name.");
}
World world = null;
final String needleWorldName = args[3].trim();
final List<World> worlds = Bukkit.getWorlds();
for (final World testWorld : worlds) {
if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName)) {
world = testWorld;
break;
}
}
final Location testLocation = new Location(world, x, y, z);
if (world == null) {
throw new SubCommandFailureException("Invalid world name.");
}
double radius;
try
{
radius = Double.parseDouble(args[4].trim());
}
catch (NumberFormatException ex)
{
throw new SubCommandFailureException("Invalid radius.");
}
final Location testLocation = new Location(world, x, y, z);
final double radiusSq = radius * radius;
double radius;
try {
radius = Double.parseDouble(args[4].trim());
} catch (NumberFormatException ex) {
throw new SubCommandFailureException("Invalid radius.");
}
final List<Player> worldPlayers = testLocation.getWorld().getPlayers();
for (final Player testPlayer : worldPlayers)
{
if (testPlayer.getLocation().distanceSquared(testLocation) < radiusSq)
{
return testPlayer.getName();
}
}
final double radiusSq = radius * radius;
throw new SubCommandFailureException("No player found in range.");
}
}),
PLAYER_DETECT_BOOLEAN("playerdetectboolean", new SubCommandExecutable()
{
@Override
public String execute(String[] args) throws SubCommandFailureException
{
try
{
PLAYER_DETECT.getExecutable().execute(args);
}
catch (SubCommandFailureException ex)
{
return "0";
}
final List<Player> worldPlayers = testLocation.getWorld().getPlayers();
for (final Player testPlayer : worldPlayers) {
if (testPlayer.getLocation().distanceSquared(testLocation) < radiusSq) {
return testPlayer.getName();
}
}
return "1";
}
});
//
private final String name;
private final SubCommandExecutable executable;
throw new SubCommandFailureException("No player found in range.");
}
}),
PLAYER_DETECT_BOOLEAN("playerdetectboolean", new SubCommandExecutable() {
@Override
public String execute(String[] args) throws SubCommandFailureException {
try {
PLAYER_DETECT.getExecutable().execute(args);
} catch (SubCommandFailureException ex) {
return "0";
}
SubCommand(String subCommandName, SubCommandExecutable subCommandImpl)
{
this.name = subCommandName;
this.executable = subCommandImpl;
}
return "1";
}
});
//
private final String name;
private final SubCommandExecutable executable;
public SubCommandExecutable getExecutable()
{
return executable;
}
SubCommand(String subCommandName, SubCommandExecutable subCommandImpl) {
this.name = subCommandName;
this.executable = subCommandImpl;
}
public String getName()
{
return name;
}
public static SubCommand getByName(String needle) throws SubCommandFailureException {
needle = needle.trim();
for (SubCommand subCommand : values()) {
if (subCommand.getName().equalsIgnoreCase(needle)) {
return subCommand;
}
}
throw new SubCommandFailureException("Invalid subcommand name.");
}
public static SubCommand getByName(String needle) throws SubCommandFailureException
{
needle = needle.trim();
for (SubCommand subCommand : values())
{
if (subCommand.getName().equalsIgnoreCase(needle))
{
return subCommand;
}
}
throw new SubCommandFailureException("Invalid subcommand name.");
}
}
public SubCommandExecutable getExecutable() {
return executable;
}
private interface SubCommandExecutable
{
String execute(String[] args) throws SubCommandFailureException;
}
public String getName() {
return name;
}
}
private static class SubCommandFailureException extends Exception
{
public SubCommandFailureException()
{
}
private interface SubCommandExecutable {
public SubCommandFailureException(String message)
{
super(message);
}
}
String execute(String[] args) throws SubCommandFailureException;
}
private static class SubCommandFailureException extends Exception {
public SubCommandFailureException() {
}
public SubCommandFailureException(String message) {
super(message);
}
}
}

View file

@ -1,46 +1,43 @@
package me.StevenLawson.TotalFreedomMod.commands;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
public class Command_cmdlist extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
List<String> commands = new ArrayList<String>();
for (Plugin targetPlugin : server.getPluginManager().getPlugins()) {
try {
PluginDescriptionFile desc = targetPlugin.getDescription();
Map<String, Map<String, Object>> map = desc.getCommands();
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
List<String> commands = new ArrayList<String>();
if (map != null)
{
for (Entry<String, Map<String, Object>> entry : map.entrySet())
{
String command_name = entry.getKey();
commands.add(command_name);
}
}
}
catch (Throwable ex)
{
}
}
for (Plugin targetPlugin : server.getPluginManager().getPlugins()) {
try {
PluginDescriptionFile desc = targetPlugin.getDescription();
Map<String, Map<String, Object>> map = desc.getCommands();
Collections.sort(commands);
if (map != null) {
for (Entry<String, Map<String, Object>> entry : map.entrySet()) {
String command_name = entry.getKey();
commands.add(command_name);
}
}
} catch (Throwable ex) {
}
}
sender.sendMessage(StringUtils.join(commands, ","));
Collections.sort(commands);
return true;
}
sender.sendMessage(StringUtils.join(commands, ","));
return true;
}
}

View file

@ -6,13 +6,15 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
public class Command_cmdspy extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
PlayerData playerdata = PlayerData.getPlayerData(sender_p);
playerdata.setCommandSpy(!playerdata.cmdspyEnabled());
playerMsg(sender, "CommandSpy " + (playerdata.cmdspyEnabled() ? "enabled." : "disabled."));
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
return true;
}
PlayerData playerdata = PlayerData.getPlayerData(sender_p);
playerdata.setCommandSpy(!playerdata.cmdspyEnabled());
playerMsg(sender, "CommandSpy " + (playerdata.cmdspyEnabled() ? "enabled." : "disabled."));
return true;
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.Iterator;
import java.util.Map;
import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.apache.commons.lang3.StringUtils;
@ -7,47 +9,47 @@ import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import java.util.Iterator;
import java.util.Map;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
public class Command_colorme extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if ("list".equalsIgnoreCase(args[0])) {
playerMsg(sender, "Colors: " + StringUtils.join(Utilities.CHAT_COLOR_NAMES.keySet(), ", "));
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
final String needle = args[0].trim().toLowerCase();
ChatColor color = null;
final Iterator<Map.Entry<String, ChatColor>> it = Utilities.CHAT_COLOR_NAMES.entrySet().iterator();
while (it.hasNext())
{
final Map.Entry<String, ChatColor> entry = it.next();
if (entry.getKey().contains(needle))
{
color = entry.getValue();
break;
}
}
if ("list".equalsIgnoreCase(args[0])) {
playerMsg(sender,
"Colors: " + StringUtils.join(Utilities.CHAT_COLOR_NAMES.keySet(), ", "));
return true;
}
if (color == null)
{
playerMsg(sender, "Invalid color: " + needle + " - Use \"/colorme list\" to list colors.");
return true;
}
final String needle = args[0].trim().toLowerCase();
ChatColor color = null;
final Iterator<Map.Entry<String, ChatColor>> it = Utilities.CHAT_COLOR_NAMES.entrySet()
.iterator();
while (it.hasNext()) {
final Map.Entry<String, ChatColor> entry = it.next();
if (entry.getKey().contains(needle)) {
color = entry.getValue();
break;
}
}
final String newNick = color + ChatColor.stripColor(sender_p.getDisplayName()).trim() + ChatColor.WHITE;
if (color == null) {
playerMsg(sender,
"Invalid color: " + needle + " - Use \"/colorme list\" to list colors.");
return true;
}
EssentialsBridge.setNickname(sender.getName(), newNick);
final String newNick =
color + ChatColor.stripColor(sender_p.getDisplayName()).trim() + ChatColor.WHITE;
playerMsg(sender, "Your nickname is now: " + newNick);
EssentialsBridge.setNickname(sender.getName(), newNick);
return true;
}
playerMsg(sender, "Your nickname is now: " + newNick);
return true;
}
}

View file

@ -9,59 +9,55 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
public class Command_creative extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (senderIsConsole) {
if (args.length == 0) {
sender.sendMessage("When used from the console, you must define a target user to change gamemode on.");
return true;
}
}
Player player;
if (args.length == 0)
{
player = sender_p;
}
else
{
if (args[0].equalsIgnoreCase("-a"))
{
if (!AdminList.isSuperAdmin(sender))
{
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (senderIsConsole) {
if (args.length == 0) {
sender.sendMessage(
"When used from the console, you must define a target user to change gamemode on.");
return true;
}
}
for (Player targetPlayer : server.getOnlinePlayers())
{
targetPlayer.setGameMode(GameMode.CREATIVE);
}
Player player;
if (args.length == 0) {
player = sender_p;
} else {
if (args[0].equalsIgnoreCase("-a")) {
if (!AdminList.isSuperAdmin(sender)) {
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
return true;
}
Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to creative", false);
return true;
}
for (Player targetPlayer : server.getOnlinePlayers()) {
targetPlayer.setGameMode(GameMode.CREATIVE);
}
if (!(senderIsConsole || AdminList.isSuperAdmin(sender)))
{
playerMsg(sender, "Only superadmins can change other user's gamemode.");
return true;
}
Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to creative",
false);
return true;
}
player = getPlayer(args[0]);
if (!(senderIsConsole || AdminList.isSuperAdmin(sender))) {
playerMsg(sender, "Only superadmins can change other user's gamemode.");
return true;
}
if (player == null)
{
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
player = getPlayer(args[0]);
}
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
playerMsg(sender, "Setting " + player.getName() + " to game mode 'Creative'.");
playerMsg(player, sender.getName() + " set your game mode to 'Creative'.");
player.setGameMode(GameMode.CREATIVE);
}
return true;
}
playerMsg(sender, "Setting " + player.getName() + " to game mode 'Creative'.");
playerMsg(player, sender.getName() + " set your game mode to 'Creative'.");
player.setGameMode(GameMode.CREATIVE);
return true;
}
}

View file

@ -7,11 +7,14 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_CONSOLE)
public class Command_csay extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length > 0) {
Utilities.bcastMsg(String.format("§7[CONSOLE] §f<§c%s§f> %s", sender.getName(), StringUtils.join(args, " ")));
}
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length > 0) {
Utilities.bcastMsg(String.format("§7[CONSOLE] §f<§c%s§f> %s", sender.getName(),
StringUtils.join(args, " ")));
}
return true;
}
}

View file

@ -1,5 +1,6 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.Random;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.command.Command;
@ -7,39 +8,39 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.Random;
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH, blockHostConsole = true)
public class Command_deafen extends FreedomCommand {
private static final Random random = new Random();
public static final double STEPS = 10.0;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
for (final Player player : server.getOnlinePlayers()) {
for (double percent = 0.0; percent <= 1.0; percent += (1.0 / STEPS)) {
final float pitch = (float) (percent * 2.0);
public static final double STEPS = 10.0;
private static final Random random = new Random();
new BukkitRunnable() {
@Override
public void run()
{
player.playSound(randomOffset(player.getLocation(), 5.0), Sound.values()[random.nextInt(Sound.values().length)], 100.0f, pitch);
}
}.runTaskLater(plugin, Math.round(20.0 * percent * 2.0));
}
}
private static Location randomOffset(Location a, double magnitude) {
return a.clone()
.add(randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude,
randomDoubleRange(-1.0, 1.0) * magnitude);
}
return true;
}
private static Double randomDoubleRange(double min, double max) {
return min + (random.nextDouble() * ((max - min) + 1.0));
}
private static Location randomOffset(Location a, double magnitude)
{
return a.clone().add(randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude);
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
for (final Player player : server.getOnlinePlayers()) {
for (double percent = 0.0; percent <= 1.0; percent += (1.0 / STEPS)) {
final float pitch = (float) (percent * 2.0);
private static Double randomDoubleRange(double min, double max)
{
return min + (random.nextDouble() * ((max - min) + 1.0));
}
new BukkitRunnable() {
@Override
public void run() {
player.playSound(randomOffset(player.getLocation(), 5.0),
Sound.values()[random.nextInt(Sound.values().length)], 100.0f, pitch);
}
}.runTaskLater(plugin, Math.round(20.0 * percent * 2.0));
}
}
return true;
}
}

View file

@ -1,106 +1,82 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.lang.reflect.Field;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import java.lang.reflect.Field;
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE)
public class Command_debug extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 3) {
return false;
}
try {
String className = args[0];
String fieldName = args[1];
String newValue = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ");
public static void setStaticValue(final String className, final String fieldName,
final String newValueString) throws Exception {
Class<?> forName = Class.forName(className);
if (forName != null) {
final Field field = forName.getDeclaredField(fieldName);
if (field != null) {
Object newValue;
if (className.equalsIgnoreCase("_"))
{
className = "me.StevenLawson.TotalFreedomMod.TotalFreedomMod";
}
Class<?> type = field.getType();
if (type.isPrimitive()) {
if (type.getName().equals("int")) {
newValue = Integer.parseInt(newValueString);
} else if (type.getName().equals("double")) {
newValue = Double.parseDouble(newValueString);
} else if (type.getName().equals("boolean")) {
newValue = Boolean.parseBoolean(newValueString);
} else {
throw new Exception("Unknown primitive field type.");
}
} else {
if (type.isAssignableFrom(Integer.class)) {
newValue = new Integer(newValueString);
} else if (type.isAssignableFrom(Double.class)) {
newValue = new Double(newValueString);
} else if (type.isAssignableFrom(Boolean.class)) {
newValue = Boolean.valueOf(newValueString);
} else if (type.isAssignableFrom(String.class)) {
newValue = newValueString;
} else {
throw new Exception("Unknown complex field type.");
}
}
setStaticValue(className, fieldName, newValue);
field.setAccessible(true);
sender.sendMessage("Debug: OK");
}
catch (Exception ex)
{
sender.sendMessage(ex.getMessage());
}
final Object oldValue = field.get(Class.forName(className));
if (oldValue != null) {
field.set(oldValue, newValue);
}
return true;
}
field.setAccessible(false);
}
}
}
public static void setStaticValue(final String className, final String fieldName, final String newValueString) throws Exception
{
Class<?> forName = Class.forName(className);
if (forName != null)
{
final Field field = forName.getDeclaredField(fieldName);
if (field != null)
{
Object newValue;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 3) {
return false;
}
Class<?> type = field.getType();
if (type.isPrimitive())
{
if (type.getName().equals("int"))
{
newValue = Integer.parseInt(newValueString);
}
else if (type.getName().equals("double"))
{
newValue = Double.parseDouble(newValueString);
}
else if (type.getName().equals("boolean"))
{
newValue = Boolean.parseBoolean(newValueString);
}
else
{
throw new Exception("Unknown primitive field type.");
}
}
else
{
if (type.isAssignableFrom(Integer.class))
{
newValue = new Integer(newValueString);
}
else if (type.isAssignableFrom(Double.class))
{
newValue = new Double(newValueString);
}
else if (type.isAssignableFrom(Boolean.class))
{
newValue = Boolean.valueOf(newValueString);
}
else if (type.isAssignableFrom(String.class))
{
newValue = newValueString;
}
else
{
throw new Exception("Unknown complex field type.");
}
}
try {
String className = args[0];
String fieldName = args[1];
String newValue = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ");
field.setAccessible(true);
if (className.equalsIgnoreCase("_")) {
className = "me.StevenLawson.TotalFreedomMod.TotalFreedomMod";
}
final Object oldValue = field.get(Class.forName(className));
if (oldValue != null)
{
field.set(oldValue, newValue);
}
setStaticValue(className, fieldName, newValue);
field.setAccessible(false);
}
}
}
sender.sendMessage("Debug: OK");
} catch (Exception ex) {
sender.sendMessage(ex.getMessage());
}
return true;
}
}

View file

@ -8,14 +8,16 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_denick extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Removing all nicknames", false);
for (Player player : server.getOnlinePlayers()) {
EssentialsBridge.setNickname(player.getName(), null);
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Removing all nicknames", false);
return true;
}
for (Player player : server.getOnlinePlayers()) {
EssentialsBridge.setNickname(player.getName(), null);
}
return true;
}
}

View file

@ -9,31 +9,31 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_deop extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
OfflinePlayer player = null;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
for (Player onlinePlayer : server.getOnlinePlayers()) {
if (args[0].equalsIgnoreCase(onlinePlayer.getName()))
{
player = onlinePlayer;
}
}
OfflinePlayer player = null;
// if the player is not online
if (player == null)
{
player = DeprecationUtil.getOfflinePlayer(server, args[0]);
}
for (Player onlinePlayer : server.getOnlinePlayers()) {
if (args[0].equalsIgnoreCase(onlinePlayer.getName())) {
player = onlinePlayer;
}
}
Utilities.adminAction(sender.getName(), "De-opping " + player.getName(), false);
// if the player is not online
if (player == null) {
player = DeprecationUtil.getOfflinePlayer(server, args[0]);
}
player.setOp(false);
Utilities.adminAction(sender.getName(), "De-opping " + player.getName(), false);
return true;
}
player.setOp(false);
return true;
}
}

View file

@ -7,15 +7,17 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_deopall extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "De-opping all players on the server", true);
for (Player player : server.getOnlinePlayers()) {
player.setOp(false);
player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "De-opping all players on the server", true);
return true;
}
for (Player player : server.getOnlinePlayers()) {
player.setOp(false);
player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
}
return true;
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.apache.commons.lang3.StringUtils;
@ -12,93 +14,78 @@ import org.bukkit.command.CommandSender;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.List;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
public class Command_dispfill extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 2) {
int radius;
try {
radius = Math.max(5, Math.min(25, Integer.parseInt(args[0])));
} catch (NumberFormatException ex)
{
sender.sendMessage("Invalid radius.");
return true;
}
private static void setDispenserContents(final Block targetBlock, final ItemStack[] items) {
if (targetBlock.getType() == Material.DISPENSER) {
final Inventory dispenserInv = ((Dispenser) targetBlock.getState()).getInventory();
dispenserInv.clear();
dispenserInv.addItem(items);
}
}
final List<ItemStack> items = new ArrayList<ItemStack>();
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 2) {
int radius;
final String[] itemsRaw = StringUtils.split(args[1], ",");
for (final String searchItem : itemsRaw)
{
Material material = Material.matchMaterial(searchItem);
if (material == null)
{
try
{
material = DeprecationUtil.getMaterial(Integer.parseInt(searchItem));
}
catch (NumberFormatException ex)
{
}
}
try {
radius = Math.max(5, Math.min(25, Integer.parseInt(args[0])));
} catch (NumberFormatException ex) {
sender.sendMessage("Invalid radius.");
return true;
}
if (material != null)
{
items.add(new ItemStack(material, 64));
}
else
{
sender.sendMessage("Skipping invalid item: " + searchItem);
}
}
final List<ItemStack> items = new ArrayList<ItemStack>();
final ItemStack[] itemsArray = items.toArray(new ItemStack[items.size()]);
final String[] itemsRaw = StringUtils.split(args[1], ",");
for (final String searchItem : itemsRaw) {
Material material = Material.matchMaterial(searchItem);
if (material == null) {
try {
material = DeprecationUtil.getMaterial(Integer.parseInt(searchItem));
} catch (NumberFormatException ex) {
}
}
int affected = 0;
final Location centerLocation = sender_p.getLocation();
final Block centerBlock = centerLocation.getBlock();
for (int xOffset = -radius; xOffset <= radius; xOffset++)
{
for (int yOffset = -radius; yOffset <= radius; yOffset++)
{
for (int zOffset = -radius; zOffset <= radius; zOffset++)
{
final Block targetBlock = centerBlock.getRelative(xOffset, yOffset, zOffset);
if (targetBlock.getLocation().distanceSquared(centerLocation) < (radius * radius))
{
if (targetBlock.getType().equals(Material.DISPENSER))
{
sender.sendMessage("Filling dispenser @ " + Utilities.formatLocation(targetBlock.getLocation()));
setDispenserContents(targetBlock, itemsArray);
affected++;
}
}
}
}
}
if (material != null) {
items.add(new ItemStack(material, 64));
} else {
sender.sendMessage("Skipping invalid item: " + searchItem);
}
}
sender.sendMessage("Done. " + affected + " dispenser(s) filled.");
}
else
{
return false;
}
final ItemStack[] itemsArray = items.toArray(new ItemStack[items.size()]);
return true;
}
int affected = 0;
final Location centerLocation = sender_p.getLocation();
final Block centerBlock = centerLocation.getBlock();
for (int xOffset = -radius; xOffset <= radius; xOffset++) {
for (int yOffset = -radius; yOffset <= radius; yOffset++) {
for (int zOffset = -radius; zOffset <= radius; zOffset++) {
final Block targetBlock = centerBlock.getRelative(xOffset, yOffset,
zOffset);
if (targetBlock.getLocation().distanceSquared(centerLocation) < (radius
* radius)) {
if (targetBlock.getType().equals(Material.DISPENSER)) {
sender.sendMessage(
"Filling dispenser @ " + Utilities.formatLocation(
targetBlock.getLocation()));
setDispenserContents(targetBlock, itemsArray);
affected++;
}
}
}
}
}
private static void setDispenserContents(final Block targetBlock, final ItemStack[] items)
{
if (targetBlock.getType() == Material.DISPENSER)
{
final Inventory dispenserInv = ((Dispenser) targetBlock.getState()).getInventory();
dispenserInv.clear();
dispenserInv.addItem(items);
}
}
sender.sendMessage("Done. " + affected + " dispenser(s) filled.");
} else {
return false;
}
return true;
}
}

View file

@ -8,114 +8,90 @@ import org.bukkit.inventory.ItemStack;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
public class Command_enchant extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
ItemStack itemInHand = sender_p.getItemInHand();
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
if (itemInHand == null) {
playerMsg(sender, "You are holding an invalid item.");
return true;
}
ItemStack itemInHand = sender_p.getItemInHand();
if (args[0].equalsIgnoreCase("list"))
{
boolean has_enchantments = false;
if (itemInHand == null) {
playerMsg(sender, "You are holding an invalid item.");
return true;
}
StringBuilder possible_ench = new StringBuilder("Possible enchantments for held item: ");
for (Enchantment ench : Enchantment.values())
{
if (ench.canEnchantItem(itemInHand))
{
has_enchantments = true;
possible_ench.append(ench.getName()).append(", ");
}
}
if (args[0].equalsIgnoreCase("list")) {
boolean has_enchantments = false;
if (has_enchantments)
{
playerMsg(sender, possible_ench.toString());
}
else
{
playerMsg(sender, "The held item has no enchantments.");
}
}
else if (args[0].equalsIgnoreCase("addall"))
{
for (Enchantment ench : Enchantment.values())
{
try
{
if (ench.canEnchantItem(itemInHand))
{
itemInHand.addEnchantment(ench, ench.getMaxLevel());
}
}
catch (Exception ex)
{
Log.info("Error using " + ench.getName() + " on " + itemInHand.getType().name() + " held by " + sender_p.getName() + ".");
}
}
StringBuilder possible_ench = new StringBuilder(
"Possible enchantments for held item: ");
for (Enchantment ench : Enchantment.values()) {
if (ench.canEnchantItem(itemInHand)) {
has_enchantments = true;
possible_ench.append(ench.getName()).append(", ");
}
}
playerMsg(sender, "Added all possible enchantments for this item.");
}
else if (args[0].equalsIgnoreCase("reset"))
{
for (Enchantment ench : itemInHand.getEnchantments().keySet())
{
itemInHand.removeEnchantment(ench);
}
if (has_enchantments) {
playerMsg(sender, possible_ench.toString());
} else {
playerMsg(sender, "The held item has no enchantments.");
}
} else if (args[0].equalsIgnoreCase("addall")) {
for (Enchantment ench : Enchantment.values()) {
try {
if (ench.canEnchantItem(itemInHand)) {
itemInHand.addEnchantment(ench, ench.getMaxLevel());
}
} catch (Exception ex) {
Log.info("Error using " + ench.getName() + " on " + itemInHand.getType().name()
+ " held by " + sender_p.getName() + ".");
}
}
playerMsg(sender, "Removed all enchantments.");
}
else
{
if (args.length < 2)
{
return false;
}
playerMsg(sender, "Added all possible enchantments for this item.");
} else if (args[0].equalsIgnoreCase("reset")) {
for (Enchantment ench : itemInHand.getEnchantments().keySet()) {
itemInHand.removeEnchantment(ench);
}
Enchantment ench = null;
playerMsg(sender, "Removed all enchantments.");
} else {
if (args.length < 2) {
return false;
}
try
{
ench = Enchantment.getByName(args[1]);
}
catch (Exception ex)
{
}
Enchantment ench = null;
if (ench == null)
{
playerMsg(sender, args[1] + " is an invalid enchantment for the held item. Type \"/enchant list\" for valid enchantments for this item.");
return true;
}
try {
ench = Enchantment.getByName(args[1]);
} catch (Exception ex) {
}
if (args[0].equalsIgnoreCase("add"))
{
if (ench.canEnchantItem(itemInHand))
{
itemInHand.addEnchantment(ench, ench.getMaxLevel());
if (ench == null) {
playerMsg(sender, args[1]
+ " is an invalid enchantment for the held item. Type \"/enchant list\" for valid enchantments for this item.");
return true;
}
playerMsg(sender, "Added enchantment: " + ench.getName());
}
else
{
playerMsg(sender, "Can't use this enchantment on held item.");
}
}
else if (args[0].equals("remove"))
{
itemInHand.removeEnchantment(ench);
if (args[0].equalsIgnoreCase("add")) {
if (ench.canEnchantItem(itemInHand)) {
itemInHand.addEnchantment(ench, ench.getMaxLevel());
playerMsg(sender, "Removed enchantment: " + ench.getName());
}
}
playerMsg(sender, "Added enchantment: " + ench.getName());
} else {
playerMsg(sender, "Can't use this enchantment on held item.");
}
} else if (args[0].equals("remove")) {
itemInHand.removeEnchantment(ench);
return true;
}
playerMsg(sender, "Removed enchantment: " + ench.getName());
}
}
return true;
}
}

View file

@ -6,9 +6,11 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
public class Command_ender extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_the_end");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_the_end");
return true;
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.Location;
@ -8,77 +10,63 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.List;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
public class Command_expel extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
double radius = 20.0;
double strength = 5.0;
if (args.length >= 1) {
try {
radius = Math.max(1.0, Math.min(100.0, Double.parseDouble(args[0])));
}
catch (NumberFormatException ex)
{
}
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
double radius = 20.0;
double strength = 5.0;
if (args.length >= 2)
{
try
{
strength = Math.max(0.0, Math.min(50.0, Double.parseDouble(args[1])));
}
catch (NumberFormatException ex)
{
}
}
if (args.length >= 1) {
try {
radius = Math.max(1.0, Math.min(100.0, Double.parseDouble(args[0])));
} catch (NumberFormatException ex) {
}
}
List<String> pushedPlayers = new ArrayList<String>();
if (args.length >= 2) {
try {
strength = Math.max(0.0, Math.min(50.0, Double.parseDouble(args[1])));
} catch (NumberFormatException ex) {
}
}
final Vector senderPos = sender_p.getLocation().toVector();
final List<Player> players = sender_p.getWorld().getPlayers();
for (final Player player : players)
{
if (player.equals(sender_p))
{
continue;
}
List<String> pushedPlayers = new ArrayList<String>();
final Location targetPos = player.getLocation();
final Vector targetPosVec = targetPos.toVector();
final Vector senderPos = sender_p.getLocation().toVector();
final List<Player> players = sender_p.getWorld().getPlayers();
for (final Player player : players) {
if (player.equals(sender_p)) {
continue;
}
boolean inRange = false;
try
{
inRange = targetPosVec.distanceSquared(senderPos) < (radius * radius);
}
catch (IllegalArgumentException ex)
{
}
final Location targetPos = player.getLocation();
final Vector targetPosVec = targetPos.toVector();
if (inRange)
{
player.getWorld().createExplosion(targetPos, 0.0f, false);
Utilities.setFlying(player, false);
player.setVelocity(targetPosVec.subtract(senderPos).normalize().multiply(strength));
pushedPlayers.add(player.getName());
}
}
boolean inRange = false;
try {
inRange = targetPosVec.distanceSquared(senderPos) < (radius * radius);
} catch (IllegalArgumentException ex) {
}
if (pushedPlayers.isEmpty())
{
playerMsg(sender, "No players pushed.");
}
else
{
playerMsg(sender, "Pushed " + pushedPlayers.size() + " players: " + StringUtils.join(pushedPlayers, ", "));
}
if (inRange) {
player.getWorld().createExplosion(targetPos, 0.0f, false);
Utilities.setFlying(player, false);
player.setVelocity(targetPosVec.subtract(senderPos).normalize().multiply(strength));
pushedPlayers.add(player.getName());
}
}
return true;
}
if (pushedPlayers.isEmpty()) {
playerMsg(sender, "No players pushed.");
} else {
playerMsg(sender,
"Pushed " + pushedPlayers.size() + " players: " + StringUtils.join(pushedPlayers,
", "));
}
return true;
}
}

View file

@ -1,5 +1,6 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.player.PlayerList;
import me.StevenLawson.TotalFreedomMod.player.PlayerRank;
import org.apache.commons.lang3.StringUtils;
@ -7,37 +8,36 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_findip extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
final Player player = getPlayer(args[0]);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if (player == null) {
final Player player = getPlayer(args[0]);
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
if (player == null) {
PlayerRank rank = PlayerRank.fromSender(sender);
PlayerRank targetRank = PlayerRank.fromSender(player);
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
List<String> ipsToShow = PlayerList.getEntry(player).getIps();
PlayerRank rank = PlayerRank.fromSender(sender);
PlayerRank targetRank = PlayerRank.fromSender(player);
if(rank.getOrdinal() < PlayerRank.SENIOR.getOrdinal() || targetRank.getOrdinal() >= rank.getOrdinal()) {
ipsToShow = PlayerList.getEntry(player).getFuzziedIps();
}
List<String> ipsToShow = PlayerList.getEntry(player).getIps();
if (rank.getOrdinal() < PlayerRank.SENIOR.getOrdinal()
|| targetRank.getOrdinal() >= rank.getOrdinal()) {
ipsToShow = PlayerList.getEntry(player).getFuzziedIps();
}
playerMsg(sender, "Player IPs: " + StringUtils.join(ipsToShow, ", "));
playerMsg(sender, "Player IPs: " + StringUtils.join(ipsToShow, ", "));
return true;
}
return true;
}
}

View file

@ -7,13 +7,15 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
public class Command_flatlands extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (ConfigurationEntry.FLATLANDS_GENERATE.getBoolean()) {
FlatlandsWorld.getInstance().sendToWorld(sender_p);
} else {
playerMsg(sender, "Flatlands is currently disabled.");
}
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (ConfigurationEntry.FLATLANDS_GENERATE.getBoolean()) {
FlatlandsWorld.getInstance().sendToWorld(sender_p);
} else {
playerMsg(sender, "Flatlands is currently disabled.");
}
return true;
}
}

View file

@ -11,68 +11,64 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_fr extends FreedomCommand {
private static boolean allFrozen = false;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
allFrozen = !allFrozen;
private static boolean allFrozen = false;
if (allFrozen) {
Utilities.adminAction(sender.getName(), "Freezing all players", false);
public static void setAllFrozen(boolean freeze) {
allFrozen = freeze;
for (PlayerData data : PlayerData.PLAYER_DATA.values()) {
data.setFrozen(freeze);
}
}
setAllFrozen(true);
playerMsg(sender, "Players are now frozen.");
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
allFrozen = !allFrozen;
for (Player player : Bukkit.getOnlinePlayers())
{
if (!AdminList.isSuperAdmin(player))
{
playerMsg(player, "You have been frozen due to rulebreakers, you will be unfrozen soon.", ChatColor.RED);
}
}
}
else
{
Utilities.adminAction(sender.getName(), "Unfreezing all players", false);
setAllFrozen(false);
playerMsg(sender, "Players are now free to move.");
}
}
else
{
if (args[0].equalsIgnoreCase("purge"))
{
setAllFrozen(false);
Utilities.adminAction(sender.getName(), "Unfreezing all players", false);
}
else
{
final Player player = getPlayer(args[0]);
if (allFrozen) {
Utilities.adminAction(sender.getName(), "Freezing all players", false);
if (player == null)
{
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
setAllFrozen(true);
playerMsg(sender, "Players are now frozen.");
final PlayerData playerdata = PlayerData.getPlayerData(player);
playerdata.setFrozen(!playerdata.isFrozen());
for (Player player : Bukkit.getOnlinePlayers()) {
if (!AdminList.isSuperAdmin(player)) {
playerMsg(player,
"You have been frozen due to rulebreakers, you will be unfrozen soon.",
ChatColor.RED);
}
}
} else {
Utilities.adminAction(sender.getName(), "Unfreezing all players", false);
setAllFrozen(false);
playerMsg(sender, "Players are now free to move.");
}
} else {
if (args[0].equalsIgnoreCase("purge")) {
setAllFrozen(false);
Utilities.adminAction(sender.getName(), "Unfreezing all players", false);
} else {
final Player player = getPlayer(args[0]);
playerMsg(sender, player.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
playerMsg(player, "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".", ChatColor.AQUA);
}
}
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
return true;
}
final PlayerData playerdata = PlayerData.getPlayerData(player);
playerdata.setFrozen(!playerdata.isFrozen());
public static void setAllFrozen(boolean freeze)
{
allFrozen = freeze;
for (PlayerData data : PlayerData.PLAYER_DATA.values())
{
data.setFrozen(freeze);
}
}
playerMsg(sender,
player.getName() + " has been " + (playerdata.isFrozen() ? "frozen"
: "unfrozen") + ".");
playerMsg(player,
"You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".",
ChatColor.AQUA);
}
}
return true;
}
}

View file

@ -6,40 +6,37 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_IN_GAME)
public class Command_fuckoff extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
boolean fuckoff_enabled = false;
double fuckoff_range = 25.0;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
if (args[0].equalsIgnoreCase("on"))
{
fuckoff_enabled = true;
boolean fuckoff_enabled = false;
double fuckoff_range = 25.0;
if (args.length >= 2)
{
try
{
fuckoff_range = Math.max(5.0, Math.min(100.0, Double.parseDouble(args[1])));
}
catch (NumberFormatException ex)
{
}
}
}
if (args[0].equalsIgnoreCase("on")) {
fuckoff_enabled = true;
TotalFreedomMod.fuckoffEnabledFor.remove(sender_p);
if (args.length >= 2) {
try {
fuckoff_range = Math.max(5.0, Math.min(100.0, Double.parseDouble(args[1])));
} catch (NumberFormatException ex) {
}
}
}
if (fuckoff_enabled)
{
TotalFreedomMod.fuckoffEnabledFor.put(sender_p, new Double(fuckoff_range));
}
TotalFreedomMod.fuckoffEnabledFor.remove(sender_p);
playerMsg(sender, "Fuckoff " + (fuckoff_enabled ? ("enabled. Range: " + fuckoff_range + ".") : "disabled."));
if (fuckoff_enabled) {
TotalFreedomMod.fuckoffEnabledFor.put(sender_p, new Double(fuckoff_range));
}
return true;
}
playerMsg(sender, "Fuckoff " + (fuckoff_enabled ? ("enabled. Range: " + fuckoff_range + ".")
: "disabled."));
return true;
}
}

View file

@ -1,196 +1,183 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.Iterator;
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
import me.StevenLawson.TotalFreedomMod.player.PlayerData;
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
import me.StevenLawson.TotalFreedomMod.player.PlayerData;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.Iterator;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_gadmin extends FreedomCommand {
private enum GadminMode {
LIST("list"),
KICK("kick"),
NAMEBAN("nameban"),
IPBAN("ipban"),
BAN("ban"),
OP("op"),
DEOP("deop"),
CI("ci"),
FR("fr"),
SMITE("smite");
private final String modeName;
GadminMode(String command)
{
this.modeName = command;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
public String getModeName()
{
return modeName;
}
final GadminMode mode = GadminMode.findMode(args[0].toLowerCase());
if (mode == null) {
playerMsg(sender, "Invalid mode: " + args[0], ChatColor.RED);
return true;
}
public static GadminMode findMode(String needle)
{
for (final GadminMode mode : GadminMode.values())
{
if (needle.equalsIgnoreCase(mode.getModeName()))
{
return mode;
}
}
return null;
}
}
final Iterator<? extends Player> it = server.getOnlinePlayers().iterator();
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
if (mode == GadminMode.LIST) {
playerMsg(sender, "[ Real Name ] : [ Display Name ] - Hash:");
while (it.hasNext()) {
final Player player = it.next();
final String hash = UUIDManager.getUniqueId(player).toString().substring(0, 4);
sender.sendMessage(ChatColor.GRAY + String.format("[ %s ] : [ %s ] - %s",
player.getName(),
ChatColor.stripColor(player.getDisplayName()),
hash));
}
return true;
}
final GadminMode mode = GadminMode.findMode(args[0].toLowerCase());
if (mode == null) {
playerMsg(sender, "Invalid mode: " + args[0], ChatColor.RED);
return true;
}
if (args.length < 2) {
return false;
}
final Iterator<? extends Player> it = server.getOnlinePlayers().iterator();
Player target = null;
while (it.hasNext() && target == null) {
final Player player = it.next();
final String hash = UUIDManager.getUniqueId(player).toString().substring(0, 4);
if (mode == GadminMode.LIST)
{
playerMsg(sender, "[ Real Name ] : [ Display Name ] - Hash:");
while (it.hasNext())
{
final Player player = it.next();
final String hash = UUIDManager.getUniqueId(player).toString().substring(0, 4);
sender.sendMessage(ChatColor.GRAY + String.format("[ %s ] : [ %s ] - %s",
player.getName(),
ChatColor.stripColor(player.getDisplayName()),
hash));
}
return true;
}
if (hash.equalsIgnoreCase(args[1])) {
target = player;
}
}
if (args.length < 2)
{
return false;
}
if (target == null) {
playerMsg(sender, "Invalid player hash: " + args[1], ChatColor.RED);
return true;
}
Player target = null;
while (it.hasNext() && target == null)
{
final Player player = it.next();
final String hash = UUIDManager.getUniqueId(player).toString().substring(0, 4);
switch (mode) {
case KICK: {
Utilities.adminAction(sender.getName(),
String.format("Kicking: %s.", target.getName()), false);
target.kickPlayer("Kicked by Administrator");
if (hash.equalsIgnoreCase(args[1]))
{
target = player;
}
}
break;
}
case NAMEBAN: {
BanManager.addUuidBan(target);
if (target == null)
{
playerMsg(sender, "Invalid player hash: " + args[1], ChatColor.RED);
return true;
}
Utilities.adminAction(sender.getName(),
String.format("Banning Name: %s.", target.getName()), true);
target.kickPlayer("Username banned by Administrator.");
switch (mode)
{
case KICK:
{
Utilities.adminAction(sender.getName(), String.format("Kicking: %s.", target.getName()), false);
target.kickPlayer("Kicked by Administrator");
break;
}
case IPBAN: {
String ip = target.getAddress().getAddress().getHostAddress();
String[] ip_parts = ip.split("\\.");
if (ip_parts.length == 4) {
ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
}
Utilities.adminAction(sender.getName(), String.format("Banning IP: %s.", ip), true);
BanManager.addIpBan(target);
break;
}
case NAMEBAN:
{
BanManager.addUuidBan(target);
target.kickPlayer("IP address banned by Administrator.");
Utilities.adminAction(sender.getName(), String.format("Banning Name: %s.", target.getName()), true);
target.kickPlayer("Username banned by Administrator.");
break;
}
case BAN: {
String ip = target.getAddress().getAddress().getHostAddress();
String[] ip_parts = ip.split("\\.");
if (ip_parts.length == 4) {
ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
}
Utilities.adminAction(sender.getName(),
String.format("Banning Name: %s, IP: %s.", target.getName(), ip), true);
break;
}
case IPBAN:
{
String ip = target.getAddress().getAddress().getHostAddress();
String[] ip_parts = ip.split("\\.");
if (ip_parts.length == 4)
{
ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
}
Utilities.adminAction(sender.getName(), String.format("Banning IP: %s.", ip), true);
BanManager.addIpBan(target);
BanManager.addUuidBan(target);
BanManager.addIpBan(target);
target.kickPlayer("IP address banned by Administrator.");
target.kickPlayer("IP and username banned by Administrator.");
break;
}
case BAN:
{
String ip = target.getAddress().getAddress().getHostAddress();
String[] ip_parts = ip.split("\\.");
if (ip_parts.length == 4)
{
ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
}
Utilities.adminAction(sender.getName(), String.format("Banning Name: %s, IP: %s.", target.getName(), ip), true);
break;
}
case OP: {
Utilities.adminAction(sender.getName(),
String.format("Opping %s.", target.getName()), false);
target.setOp(false);
target.sendMessage(FreedomCommand.YOU_ARE_OP);
BanManager.addUuidBan(target);
BanManager.addIpBan(target);
break;
}
case DEOP: {
Utilities.adminAction(sender.getName(),
String.format("Deopping %s.", target.getName()), false);
target.setOp(false);
target.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
target.kickPlayer("IP and username banned by Administrator.");
break;
}
case CI: {
target.getInventory().clear();
break;
}
case OP:
{
Utilities.adminAction(sender.getName(), String.format("Opping %s.", target.getName()), false);
target.setOp(false);
target.sendMessage(FreedomCommand.YOU_ARE_OP);
break;
}
case FR: {
PlayerData playerdata = PlayerData.getPlayerData(target);
playerdata.setFrozen(!playerdata.isFrozen());
break;
}
case DEOP:
{
Utilities.adminAction(sender.getName(), String.format("Deopping %s.", target.getName()), false);
target.setOp(false);
target.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
playerMsg(sender,
target.getName() + " has been " + (playerdata.isFrozen() ? "frozen"
: "unfrozen") + ".");
target.sendMessage(
ChatColor.AQUA + "You have been " + (playerdata.isFrozen() ? "frozen"
: "unfrozen") + ".");
break;
}
case CI:
{
target.getInventory().clear();
break;
}
case SMITE: {
Command_smite.smite(target);
break;
}
case FR:
{
PlayerData playerdata = PlayerData.getPlayerData(target);
playerdata.setFrozen(!playerdata.isFrozen());
break;
}
}
playerMsg(sender, target.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
target.sendMessage(ChatColor.AQUA + "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
return true;
}
break;
}
case SMITE:
{
Command_smite.smite(target);
private enum GadminMode {
LIST("list"),
KICK("kick"),
NAMEBAN("nameban"),
IPBAN("ipban"),
BAN("ban"),
OP("op"),
DEOP("deop"),
CI("ci"),
FR("fr"),
SMITE("smite");
private final String modeName;
break;
}
}
GadminMode(String command) {
this.modeName = command;
}
return true;
}
public static GadminMode findMode(String needle) {
for (final GadminMode mode : GadminMode.values()) {
if (needle.equalsIgnoreCase(mode.getModeName())) {
return mode;
}
}
return null;
}
public String getModeName() {
return modeName;
}
}
}

View file

@ -1,121 +1,107 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import me.StevenLawson.TotalFreedomMod.ban.Ban;
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
import me.StevenLawson.TotalFreedomMod.player.Player;
import me.StevenLawson.TotalFreedomMod.player.PlayerList;
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import java.util.ArrayList;
import java.util.List;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_glist extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("purge")) {
if (AdminList.isSeniorAdmin(sender))
{
PlayerList.purgeAll();
playerMsg(sender, "Purged playerbase");
}
else
{
playerMsg(sender, "Only Senior Admins may purge the userlist.");
}
return true;
}
else
{
return false;
}
}
else if (args.length == 2)
{
String username;
final List<String> ips = new ArrayList<String>();
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
final org.bukkit.entity.Player player = getPlayer(args[1]);
if (args.length == 1) {
if (args[0].equalsIgnoreCase("purge")) {
if (AdminList.isSeniorAdmin(sender)) {
PlayerList.purgeAll();
playerMsg(sender, "Purged playerbase");
} else {
playerMsg(sender, "Only Senior Admins may purge the userlist.");
}
return true;
} else {
return false;
}
} else if (args.length == 2) {
String username;
final List<String> ips = new ArrayList<String>();
if (player == null)
{
final me.StevenLawson.TotalFreedomMod.player.Player entry = PlayerList.getEntry(UUIDManager.getUniqueId(args[1]));
final org.bukkit.entity.Player player = getPlayer(args[1]);
if (entry == null) {
playerMsg(sender, "Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
return true;
}
if (player == null) {
final me.StevenLawson.TotalFreedomMod.player.Player entry = PlayerList.getEntry(
UUIDManager.getUniqueId(args[1]));
username = entry.getLastLoginName();
for (String ip : entry.getIps()) {
ips.add(Utilities.getFuzzyIp(ip));
}
}
else
{
username = player.getName();
final Player entry = PlayerList.getEntry(UUIDManager.getUniqueId(player));
if (entry == null) {
playerMsg(sender,
"Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
return true;
}
for (String ip : entry.getIps()) {
ips.add(Utilities.getFuzzyIp(ip));
}
username = entry.getLastLoginName();
for (String ip : entry.getIps()) {
ips.add(Utilities.getFuzzyIp(ip));
}
} else {
username = player.getName();
final Player entry = PlayerList.getEntry(UUIDManager.getUniqueId(player));
}
for (String ip : entry.getIps()) {
ips.add(Utilities.getFuzzyIp(ip));
}
String mode = args[0].toLowerCase();
if (mode.equalsIgnoreCase("ban"))
{
Utilities.adminAction(sender.getName(), "Banning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
}
final org.bukkit.entity.Player target = getPlayer(username, true);
if (target != null)
{
BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(target), target.getName()));
target.kickPlayer("You have been banned by " + sender.getName() + "\n If you think you have been banned wrongly, appeal here: " + ConfigurationEntry.SERVER_BAN_URL.getString());
}
else
{
BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(username), username));
}
String mode = args[0].toLowerCase();
if (mode.equalsIgnoreCase("ban")) {
Utilities.adminAction(sender.getName(),
"Banning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
for (String ip : ips)
{
BanManager.addIpBan(new Ban(ip, username));
BanManager.addIpBan(new Ban(Utilities.getFuzzyIp(ip), username));
}
}
else if (mode.equalsIgnoreCase("unban"))
{
Utilities.adminAction(sender.getName(), "Unbanning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
BanManager.unbanUuid(UUIDManager.getUniqueId(username));
for (String ip : ips)
{
final org.bukkit.entity.Player target = getPlayer(username, true);
if (target != null) {
BanManager.addUuidBan(
new Ban(UUIDManager.getUniqueId(target), target.getName()));
target.kickPlayer("You have been banned by " + sender.getName()
+ "\n If you think you have been banned wrongly, appeal here: "
+ ConfigurationEntry.SERVER_BAN_URL.getString());
} else {
BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(username), username));
}
BanManager.unbanIp(ip);
BanManager.unbanIp(Utilities.getFuzzyIp(ip));
}
}
else
{
return false;
}
for (String ip : ips) {
BanManager.addIpBan(new Ban(ip, username));
BanManager.addIpBan(new Ban(Utilities.getFuzzyIp(ip), username));
}
} else if (mode.equalsIgnoreCase("unban")) {
Utilities.adminAction(sender.getName(),
"Unbanning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
BanManager.unbanUuid(UUIDManager.getUniqueId(username));
for (String ip : ips) {
return true;
}
else
{
return false;
}
}
BanManager.unbanIp(ip);
BanManager.unbanIp(Utilities.getFuzzyIp(ip));
}
} else {
return false;
}
return true;
} else {
return false;
}
}
}

View file

@ -16,85 +16,86 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_gtfo extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
final Player player = getPlayer(args[0]);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
final Player player = getPlayer(args[0]);
String reason = null;
if (args.length >= 2)
{
reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
}
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
Utilities.bcastMsg(player.getName() + " has been a VERY naughty, naughty boy.", ChatColor.RED);
String reason = null;
if (args.length >= 2) {
reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
}
// Undo WorldEdits:
try
{
WorldEditBridge.undo(player, 15);
}
catch (NoClassDefFoundError ex)
{
}
Utilities.bcastMsg(player.getName() + " has been a VERY naughty, naughty boy.",
ChatColor.RED);
// rollback
// RollbackManager.rollback(player.getName());
// TODO: Use coreprotect API calls
// Undo WorldEdits:
try {
WorldEditBridge.undo(player, 15);
} catch (NoClassDefFoundError ex) {
}
// deop
player.setOp(false);
// rollback
// RollbackManager.rollback(player.getName());
// TODO: Use coreprotect API calls
// set gamemode to survival:
player.setGameMode(GameMode.SURVIVAL);
// deop
player.setOp(false);
// clear inventory:
player.getInventory().clear();
// set gamemode to survival:
player.setGameMode(GameMode.SURVIVAL);
// strike with lightning effect:
final Location targetPos = player.getLocation();
for (int x = -1; x <= 1; x++)
{
for (int z = -1; z <= 1; z++)
{
final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
targetPos.getWorld().strikeLightning(strike_pos);
}
}
// clear inventory:
player.getInventory().clear();
// ban IP address:
String ip = Utilities.getFuzzyIp(player.getAddress().getAddress().getHostAddress());
// strike with lightning effect:
final Location targetPos = player.getLocation();
for (int x = -1; x <= 1; x++) {
for (int z = -1; z <= 1; z++) {
final Location strike_pos = new Location(targetPos.getWorld(),
targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
targetPos.getWorld().strikeLightning(strike_pos);
}
}
final StringBuilder bcast = new StringBuilder()
.append(ChatColor.RED)
.append("Banning: ")
.append(player.getName())
.append(", IP: ")
.append(ip);
// ban IP address:
String ip = Utilities.getFuzzyIp(player.getAddress().getAddress().getHostAddress());
if (reason != null)
{
bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason);
}
final StringBuilder bcast = new StringBuilder()
.append(ChatColor.RED)
.append("Banning: ")
.append(player.getName())
.append(", IP: ")
.append(ip);
Utilities.bcastMsg(bcast.toString());
if (reason != null) {
bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason);
}
BanManager.addIpBan(new Ban(ip, player.getName(), sender.getName(), null, reason));
Utilities.bcastMsg(bcast.toString());
// ban username:
BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), null, reason));
BanManager.addIpBan(new Ban(ip, player.getName(), sender.getName(), null, reason));
// kick Player:
player.kickPlayer(ChatColor.RED + "GTFO" + (reason != null ? ("\nReason: " + ChatColor.YELLOW + reason) : ""));
// ban username:
BanManager.addUuidBan(
new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), null,
reason));
return true;
}
// kick Player:
player.kickPlayer(
ChatColor.RED + "GTFO" + (reason != null ? ("\nReason: " + ChatColor.YELLOW + reason)
: ""));
return true;
}
}

View file

@ -9,88 +9,76 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_halt extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if (args[0].equalsIgnoreCase("all")) {
Utilities.adminAction(sender.getName(), "Halting all non-superadmins.", true);
int counter = 0;
for (Player player : server.getOnlinePlayers())
{
if (!AdminList.isSuperAdmin(player))
{
PlayerData.getPlayerData(player).setHalted(true);
counter++;
}
}
playerMsg(sender, "Halted " + counter + " players.");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if (args[0].equalsIgnoreCase("purge"))
{
Utilities.adminAction(sender.getName(), "Unhalting all players.", true);
int counter = 0;
for (Player player : server.getOnlinePlayers())
{
PlayerData playerdata = PlayerData.getPlayerData(player);
if (PlayerData.getPlayerData(player).isHalted())
{
playerdata.setHalted(false);
counter++;
}
}
playerMsg(sender, "Unhalted " + counter + " players.");
return true;
}
if (args[0].equalsIgnoreCase("all")) {
Utilities.adminAction(sender.getName(), "Halting all non-superadmins.", true);
int counter = 0;
for (Player player : server.getOnlinePlayers()) {
if (!AdminList.isSuperAdmin(player)) {
PlayerData.getPlayerData(player).setHalted(true);
counter++;
}
}
playerMsg(sender, "Halted " + counter + " players.");
return true;
}
if (args[0].equalsIgnoreCase("list"))
{
PlayerData info;
int count = 0;
for (Player hp : server.getOnlinePlayers())
{
info = PlayerData.getPlayerData(hp);
if (info.isHalted())
{
if (count == 0)
{
playerMsg(sender, "Halted players:");
}
playerMsg(sender, "- " + hp.getName());
count++;
}
}
if (count == 0)
{
playerMsg(sender, "There are currently no halted players.");
}
return true;
}
if (args[0].equalsIgnoreCase("purge")) {
Utilities.adminAction(sender.getName(), "Unhalting all players.", true);
int counter = 0;
for (Player player : server.getOnlinePlayers()) {
PlayerData playerdata = PlayerData.getPlayerData(player);
if (PlayerData.getPlayerData(player).isHalted()) {
playerdata.setHalted(false);
counter++;
}
}
playerMsg(sender, "Unhalted " + counter + " players.");
return true;
}
final Player player = getPlayer(args[0]);
if (args[0].equalsIgnoreCase("list")) {
PlayerData info;
int count = 0;
for (Player hp : server.getOnlinePlayers()) {
info = PlayerData.getPlayerData(hp);
if (info.isHalted()) {
if (count == 0) {
playerMsg(sender, "Halted players:");
}
playerMsg(sender, "- " + hp.getName());
count++;
}
}
if (count == 0) {
playerMsg(sender, "There are currently no halted players.");
}
return true;
}
if (player == null)
{
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
final Player player = getPlayer(args[0]);
PlayerData playerdata = PlayerData.getPlayerData(player);
if (!playerdata.isHalted())
{
Utilities.adminAction(sender.getName(), "Halting " + player.getName(), true);
playerdata.setHalted(true);
return true;
}
else
{
Utilities.adminAction(sender.getName(), "Unhalting " + player.getName(), true);
playerdata.setHalted(false);
return true;
}
}
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
PlayerData playerdata = PlayerData.getPlayerData(player);
if (!playerdata.isHalted()) {
Utilities.adminAction(sender.getName(), "Halting " + player.getName(), true);
playerdata.setHalted(true);
return true;
} else {
Utilities.adminAction(sender.getName(), "Unhalting " + player.getName(), true);
playerdata.setHalted(false);
return true;
}
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.text.DecimalFormat;
import java.util.concurrent.atomic.AtomicInteger;
import me.StevenLawson.TotalFreedomMod.Log;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.apache.commons.lang.math.DoubleRange;
@ -9,89 +11,82 @@ import org.bukkit.command.CommandSender;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
import java.text.DecimalFormat;
import java.util.concurrent.atomic.AtomicInteger;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_health extends FreedomCommand {
private static final int BYTES_PER_MB = 1024 * 1024;
private static final DoubleRange TPS_RANGE = new DoubleRange(20.0 - 0.1, 20.0 + 0.1);
@Override
public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Runtime runtime = Runtime.getRuntime();
long usedMem = runtime.totalMemory() - runtime.freeMemory();
private static final int BYTES_PER_MB = 1024 * 1024;
private static final DoubleRange TPS_RANGE = new DoubleRange(20.0 - 0.1, 20.0 + 0.1);
playerMsg(sender, "Reserved Memory: " + (double) runtime.totalMemory() / (double) BYTES_PER_MB + "mb");
playerMsg(sender, "Used Memory: " + new DecimalFormat("#").format((double) usedMem / (double) BYTES_PER_MB) + "mb (" + new DecimalFormat("#").format(((double) usedMem / (double) runtime.totalMemory()) * 100.0) + "%)");
playerMsg(sender, "Max Memory: " + (double) runtime.maxMemory() / (double) BYTES_PER_MB + "mb");
playerMsg(sender, "Calculating ticks per second, please wait...");
@Override
public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Runtime runtime = Runtime.getRuntime();
long usedMem = runtime.totalMemory() - runtime.freeMemory();
new BukkitRunnable()
{
@Override
public void run()
{
try
{
TFM_TickMeter tickMeter = new TFM_TickMeter(plugin);
tickMeter.startTicking();
Thread.sleep(2500);
final double ticksPerSecond = tickMeter.stopTicking();
playerMsg(sender,
"Reserved Memory: " + (double) runtime.totalMemory() / (double) BYTES_PER_MB + "mb");
playerMsg(sender, "Used Memory: " + new DecimalFormat("#").format(
(double) usedMem / (double) BYTES_PER_MB) + "mb (" + new DecimalFormat("#").format(
((double) usedMem / (double) runtime.totalMemory()) * 100.0) + "%)");
playerMsg(sender,
"Max Memory: " + (double) runtime.maxMemory() / (double) BYTES_PER_MB + "mb");
playerMsg(sender, "Calculating ticks per second, please wait...");
new BukkitRunnable()
{
@Override
public void run()
{
playerMsg(sender, "Ticks per second: " + (TPS_RANGE.containsDouble(ticksPerSecond) ? ChatColor.GREEN : ChatColor.RED) + ticksPerSecond);
}
}.runTask(plugin);
}
catch (Exception ex)
{
Log.severe(ex);
}
}
}.runTaskAsynchronously(plugin);
new BukkitRunnable() {
@Override
public void run() {
try {
TFM_TickMeter tickMeter = new TFM_TickMeter(plugin);
tickMeter.startTicking();
Thread.sleep(2500);
final double ticksPerSecond = tickMeter.stopTicking();
return true;
}
new BukkitRunnable() {
@Override
public void run() {
playerMsg(sender,
"Ticks per second: " + (TPS_RANGE.containsDouble(ticksPerSecond)
? ChatColor.GREEN : ChatColor.RED) + ticksPerSecond);
}
}.runTask(plugin);
} catch (Exception ex) {
Log.severe(ex);
}
}
}.runTaskAsynchronously(plugin);
private class TFM_TickMeter
{
private final AtomicInteger ticks = new AtomicInteger();
private final TotalFreedomMod plugin;
private long startTime;
private BukkitTask task;
return true;
}
public TFM_TickMeter(TotalFreedomMod plugin)
{
this.plugin = plugin;
}
private class TFM_TickMeter {
public void startTicking()
{
startTime = System.currentTimeMillis();
ticks.set(0);
private final AtomicInteger ticks = new AtomicInteger();
private final TotalFreedomMod plugin;
private long startTime;
private BukkitTask task;
task = new BukkitRunnable()
{
@Override
public void run()
{
ticks.incrementAndGet();
}
}.runTaskTimer(plugin, 0L, 1L);
}
public TFM_TickMeter(TotalFreedomMod plugin) {
this.plugin = plugin;
}
public double stopTicking()
{
task.cancel();
long elapsed = System.currentTimeMillis() - startTime;
int tickCount = ticks.get();
public void startTicking() {
startTime = System.currentTimeMillis();
ticks.set(0);
return (double) tickCount / ((double) elapsed / 1000.0);
}
}
task = new BukkitRunnable() {
@Override
public void run() {
ticks.incrementAndGet();
}
}.runTaskTimer(plugin, 0L, 1L);
}
public double stopTicking() {
task.cancel();
long elapsed = System.currentTimeMillis() - startTime;
int tickCount = ticks.get();
return (double) tickCount / ((double) elapsed / 1000.0);
}
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.apache.commons.lang3.StringUtils;
@ -8,55 +10,47 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
import java.util.ArrayList;
import java.util.List;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_invis extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
boolean smite = false;
if (args.length >= 1) {
if (args[0].equalsIgnoreCase("smite")) {
Utilities.adminAction(sender.getName(), "Smiting all invisible players", true);
smite = true;
} else
{
return false;
}
}
List<String> players = new ArrayList<String>();
int smites = 0;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
boolean smite = false;
if (args.length >= 1) {
if (args[0].equalsIgnoreCase("smite")) {
Utilities.adminAction(sender.getName(), "Smiting all invisible players", true);
smite = true;
} else {
return false;
}
}
for (Player player : server.getOnlinePlayers())
{
if (player.hasPotionEffect(PotionEffectType.INVISIBILITY))
{
players.add(player.getName());
if (smite && !AdminList.isSuperAdmin(player))
{
player.setHealth(0.0);
smites++;
}
}
}
List<String> players = new ArrayList<String>();
int smites = 0;
if (players.isEmpty())
{
playerMsg(sender, "There are no invisible players");
return true;
}
for (Player player : server.getOnlinePlayers()) {
if (player.hasPotionEffect(PotionEffectType.INVISIBILITY)) {
players.add(player.getName());
if (smite && !AdminList.isSuperAdmin(player)) {
player.setHealth(0.0);
smites++;
}
}
}
if (smite)
{
playerMsg(sender, "Smitten " + smites + " players");
}
else
{
playerMsg(sender, "Invisble players (" + players.size() + "): " + StringUtils.join(players, ", "));
}
if (players.isEmpty()) {
playerMsg(sender, "There are no invisible players");
return true;
}
return true;
}
if (smite) {
playerMsg(sender, "Smitten " + smites + " players");
} else {
playerMsg(sender,
"Invisble players (" + players.size() + "): " + StringUtils.join(players, ", "));
}
return true;
}
}

View file

@ -8,80 +8,72 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_jumppads extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0 || args.length > 2) {
return false;
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("info")) {
playerMsg(sender, "Jumppads: " + (JumpPads.getMode().isOn() ? "Enabled" : "Disabled"), ChatColor.BLUE);
playerMsg(sender, "Sideways: " + (JumpPads.getMode() == JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS ? "Enabled" : "Disabled"), ChatColor.BLUE);
playerMsg(sender, "Strength: " + (JumpPads.getStrength() * 10 - 1), ChatColor.BLUE);
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0 || args.length > 2) {
return false;
}
if ("off".equals(args[0]))
{
Utilities.adminAction(sender.getName(), "Disabling Jumppads", false);
JumpPads.setMode(JumpPads.JumpPadMode.OFF);
}
else
{
Utilities.adminAction(sender.getName(), "Enabling Jumppads", false);
JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK);
}
}
else
{
if (JumpPads.getMode() == JumpPads.JumpPadMode.OFF)
{
playerMsg(sender, "Jumppads are currently disabled, please enable them before changing jumppads settings.");
return true;
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("info")) {
playerMsg(sender,
"Jumppads: " + (JumpPads.getMode().isOn() ? "Enabled" : "Disabled"),
ChatColor.BLUE);
playerMsg(sender,
"Sideways: " + (JumpPads.getMode() == JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS
? "Enabled" : "Disabled"), ChatColor.BLUE);
playerMsg(sender, "Strength: " + (JumpPads.getStrength() * 10 - 1), ChatColor.BLUE);
return true;
}
if (args[0].equalsIgnoreCase("sideways"))
{
if ("off".equals(args[1]))
{
Utilities.adminAction(sender.getName(), "Setting Jumppads mode to: Madgeek", false);
JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK);
}
else
{
Utilities.adminAction(sender.getName(), "Setting Jumppads mode to: Normal and Sideways", false);
JumpPads.setMode(JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS);
}
}
else if (args[0].equalsIgnoreCase("strength"))
{
final float strength;
try
{
strength = Float.parseFloat(args[1]);
}
catch (NumberFormatException ex)
{
playerMsg(sender, "Invalid Strength");
return true;
}
if ("off".equals(args[0])) {
Utilities.adminAction(sender.getName(), "Disabling Jumppads", false);
JumpPads.setMode(JumpPads.JumpPadMode.OFF);
} else {
Utilities.adminAction(sender.getName(), "Enabling Jumppads", false);
JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK);
}
} else {
if (JumpPads.getMode() == JumpPads.JumpPadMode.OFF) {
playerMsg(sender,
"Jumppads are currently disabled, please enable them before changing jumppads settings.");
return true;
}
if (strength > 10 || strength < 1)
{
playerMsg(sender, "Invalid Strength: The strength may be 1 through 10.");
return true;
}
if (args[0].equalsIgnoreCase("sideways")) {
if ("off".equals(args[1])) {
Utilities.adminAction(sender.getName(), "Setting Jumppads mode to: Madgeek",
false);
JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK);
} else {
Utilities.adminAction(sender.getName(),
"Setting Jumppads mode to: Normal and Sideways", false);
JumpPads.setMode(JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS);
}
} else if (args[0].equalsIgnoreCase("strength")) {
final float strength;
try {
strength = Float.parseFloat(args[1]);
} catch (NumberFormatException ex) {
playerMsg(sender, "Invalid Strength");
return true;
}
Utilities.adminAction(sender.getName(), "Setting Jumppads strength to: " + strength, false);
JumpPads.setStrength((strength / 10) + 0.1F);
}
else
{
return false;
}
}
if (strength > 10 || strength < 1) {
playerMsg(sender, "Invalid Strength: The strength may be 1 through 10.");
return true;
}
return true;
}
Utilities.adminAction(sender.getName(), "Setting Jumppads strength to: " + strength,
false);
JumpPads.setStrength((strength / 10) + 0.1F);
} else {
return false;
}
}
return true;
}
}

View file

@ -9,16 +9,18 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH, blockHostConsole = true)
public class Command_kicknoob extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Disconnecting all non-superadmins.", true);
for (Player player : server.getOnlinePlayers()) {
if (!AdminList.isSuperAdmin(player)) {
player.kickPlayer(ChatColor.RED + "Disconnected by admin.");
}
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Disconnecting all non-superadmins.", true);
return true;
}
for (Player player : server.getOnlinePlayers()) {
if (!AdminList.isSuperAdmin(player)) {
player.kickPlayer(ChatColor.RED + "Disconnected by admin.");
}
}
return true;
}
}

View file

@ -1,5 +1,8 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
import org.bukkit.ChatColor;
import org.bukkit.Location;
@ -10,74 +13,65 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
public class Command_landmine extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (!ConfigurationEntry.LANDMINES_ENABLED.getBoolean()) {
playerMsg(sender, "The landmine is currently disabled.", ChatColor.GREEN);
return true;
}
if (!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) {
playerMsg(sender, "Explosions are currently disabled.", ChatColor.GREEN);
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (!ConfigurationEntry.LANDMINES_ENABLED.getBoolean()) {
playerMsg(sender, "The landmine is currently disabled.", ChatColor.GREEN);
return true;
}
double radius = 2.0;
if (!ConfigurationEntry.ALLOW_EXPLOSIONS.getBoolean()) {
playerMsg(sender, "Explosions are currently disabled.", ChatColor.GREEN);
return true;
}
if (args.length >= 1)
{
if ("list".equalsIgnoreCase(args[0]))
{
final Iterator<TFM_LandmineData> landmines = TFM_LandmineData.landmines.iterator();
while (landmines.hasNext())
{
playerMsg(sender, landmines.next().toString());
}
return true;
}
double radius = 2.0;
try
{
radius = Math.max(2.0, Math.min(6.0, Double.parseDouble(args[0])));
}
catch (NumberFormatException ex)
{
}
}
if (args.length >= 1) {
if ("list".equalsIgnoreCase(args[0])) {
final Iterator<TFM_LandmineData> landmines = TFM_LandmineData.landmines.iterator();
while (landmines.hasNext()) {
playerMsg(sender, landmines.next().toString());
}
return true;
}
final Block landmine = sender_p.getLocation().getBlock().getRelative(BlockFace.DOWN);
landmine.setType(Material.TNT);
TFM_LandmineData.landmines.add(new TFM_LandmineData(landmine.getLocation(), sender_p, radius));
try {
radius = Math.max(2.0, Math.min(6.0, Double.parseDouble(args[0])));
} catch (NumberFormatException ex) {
}
}
playerMsg(sender, "Landmine planted - Radius = " + radius + " blocks.", ChatColor.GREEN);
final Block landmine = sender_p.getLocation().getBlock().getRelative(BlockFace.DOWN);
landmine.setType(Material.TNT);
TFM_LandmineData.landmines.add(
new TFM_LandmineData(landmine.getLocation(), sender_p, radius));
return true;
}
playerMsg(sender, "Landmine planted - Radius = " + radius + " blocks.", ChatColor.GREEN);
public static class TFM_LandmineData
{
public static final List<TFM_LandmineData> landmines = new ArrayList<TFM_LandmineData>();
public final Location location;
public final Player player;
public final double radius;
return true;
}
public TFM_LandmineData(Location location, Player player, double radius)
{
this.location = location;
this.player = player;
this.radius = radius;
}
public static class TFM_LandmineData {
@Override
public String toString()
{
return this.location.toString() + ", " + this.radius + ", " + this.player.getName();
}
}
public static final List<TFM_LandmineData> landmines = new ArrayList<TFM_LandmineData>();
public final Location location;
public final Player player;
public final double radius;
public TFM_LandmineData(Location location, Player player, double radius) {
this.location = location;
this.player = player;
this.radius = radius;
}
@Override
public String toString() {
return this.location.toString() + ", " + this.radius + ", " + this.player.getName();
}
}
}

View file

@ -8,31 +8,31 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_lastcmd extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
final Player player = getPlayer(args[0]);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
final Player player = getPlayer(args[0]);
final PlayerData playerdata = PlayerData.getPlayerData(player);
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
if (playerdata != null)
{
String lastCommand = playerdata.getLastCommand();
if (lastCommand.isEmpty())
{
lastCommand = "(none)";
}
playerMsg(sender, player.getName() + " - Last Command: " + lastCommand, ChatColor.GRAY);
}
final PlayerData playerdata = PlayerData.getPlayerData(player);
return true;
}
if (playerdata != null) {
String lastCommand = playerdata.getLastCommand();
if (lastCommand.isEmpty()) {
lastCommand = "(none)";
}
playerMsg(sender, player.getName() + " - Last Command: " + lastCommand, ChatColor.GRAY);
}
return true;
}
}

View file

@ -15,83 +15,84 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
public class Command_list extends FreedomCommand {
private enum ListFilter {
ALL,
ADMINS,
IMPOSTORS
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length > 1) {
return false;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length > 1) {
return false;
}
if (Utilities.isFromHostConsole(sender.getName())) {
final List<String> names = new ArrayList<String>();
for (Player player : server.getOnlinePlayers()) {
if (VanishManager.isVanished(player)) {
continue;
}
names.add(player.getName());
}
playerMsg(sender,
"There are " + names.size() + "/" + VanishManager.getFakeOnlinePlayers()
+ " players online:\n" + StringUtils.join(names, ", "), ChatColor.WHITE);
return true;
}
if (Utilities.isFromHostConsole(sender.getName())) {
final List<String> names = new ArrayList<String>();
for (Player player : server.getOnlinePlayers()) {
if (VanishManager.isVanished(player)) {
continue;
}
names.add(player.getName());
}
playerMsg(sender,
"There are " + names.size() + "/" + VanishManager.getFakeOnlinePlayers()
+ " players online:\n" + StringUtils.join(names, ", "), ChatColor.WHITE);
return true;
}
final ListFilter listFilter;
if (args.length == 1) {
if ("-a".equals(args[0])) {
listFilter = ListFilter.ADMINS;
} else if ("-i".equals(args[0])) {
listFilter = ListFilter.IMPOSTORS;
} else {
return false;
}
} else {
listFilter = ListFilter.ALL;
}
final ListFilter listFilter;
if (args.length == 1) {
if ("-a".equals(args[0])) {
listFilter = ListFilter.ADMINS;
} else if ("-i".equals(args[0])) {
listFilter = ListFilter.IMPOSTORS;
} else {
return false;
}
} else {
listFilter = ListFilter.ALL;
}
final StringBuilder onlineStats = new StringBuilder();
final StringBuilder onlineUsers = new StringBuilder();
final StringBuilder onlineStats = new StringBuilder();
final StringBuilder onlineUsers = new StringBuilder();
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED)
.append(VanishManager.getFakeOnlinePlayers());
onlineStats.append(ChatColor.BLUE).append(" out of a maximum ").append(ChatColor.RED)
.append(server.getMaxPlayers());
onlineStats.append(ChatColor.BLUE).append(" players online.");
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED)
.append(VanishManager.getFakeOnlinePlayers());
onlineStats.append(ChatColor.BLUE).append(" out of a maximum ").append(ChatColor.RED)
.append(server.getMaxPlayers());
onlineStats.append(ChatColor.BLUE).append(" players online.");
final List<String> names = new ArrayList<String>();
for (Player player : server.getOnlinePlayers()) {
if (VanishManager.isVanished(player)) {
continue;
}
final List<String> names = new ArrayList<String>();
for (Player player : server.getOnlinePlayers()) {
if (VanishManager.isVanished(player))
continue;
if (listFilter == ListFilter.ADMINS && !AdminList.isSuperAdmin(player)) {
continue;
}
if (listFilter == ListFilter.ADMINS && !AdminList.isSuperAdmin(player)) {
continue;
}
if (listFilter == ListFilter.IMPOSTORS && !AdminList.isAdminImpostor(player)) {
continue;
}
if (listFilter == ListFilter.IMPOSTORS && !AdminList.isAdminImpostor(player)) {
continue;
}
names.add(PlayerRank.fromSender(player).getPrefix() + player.getName());
}
names.add(PlayerRank.fromSender(player).getPrefix() + player.getName());
}
onlineUsers.append("Connected ");
onlineUsers.append(listFilter == ListFilter.ADMINS ? "admins: " : "players: ");
onlineUsers.append(StringUtils.join(names, ChatColor.WHITE + ", "));
onlineUsers.append("Connected ");
onlineUsers.append(listFilter == ListFilter.ADMINS ? "admins: " : "players: ");
onlineUsers.append(StringUtils.join(names, ChatColor.WHITE + ", "));
if (senderIsConsole) {
sender.sendMessage(ChatColor.stripColor(onlineStats.toString()));
sender.sendMessage(ChatColor.stripColor(onlineUsers.toString()));
} else {
sender.sendMessage(onlineStats.toString());
sender.sendMessage(onlineUsers.toString());
}
if (senderIsConsole) {
sender.sendMessage(ChatColor.stripColor(onlineStats.toString()));
sender.sendMessage(ChatColor.stripColor(onlineUsers.toString()));
} else {
sender.sendMessage(onlineStats.toString());
sender.sendMessage(onlineUsers.toString());
}
return true;
}
return true;
}
private enum ListFilter {
ALL,
ADMINS,
IMPOSTORS
}
}

View file

@ -5,10 +5,13 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
public class Command_localspawn extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
sender_p.teleport(sender_p.getWorld().getSpawnLocation());
playerMsg(sender, "Teleported to spawnpoint for world \"" + sender_p.getWorld().getName() + "\".");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
sender_p.teleport(sender_p.getWorld().getSpawnLocation());
playerMsg(sender,
"Teleported to spawnpoint for world \"" + sender_p.getWorld().getName() + "\".");
return true;
}
}

View file

@ -10,110 +10,87 @@ import org.bukkit.scheduler.BukkitTask;
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
public class Command_lockup extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 1) {
if (args[0].equalsIgnoreCase("all")) {
Utilities.adminAction(sender.getName(), "Locking up all players", true);
for (Player player : server.getOnlinePlayers()) {
startLockup(player);
}
playerMsg(sender, "Locked up all players.");
}
else if (args[0].equalsIgnoreCase("purge"))
{
Utilities.adminAction(sender.getName(), "Unlocking all players", true);
for (Player player : server.getOnlinePlayers())
{
cancelLockup(player);
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 1) {
if (args[0].equalsIgnoreCase("all")) {
Utilities.adminAction(sender.getName(), "Locking up all players", true);
playerMsg(sender, "Unlocked all players.");
}
else
{
return false;
}
}
else if (args.length == 2)
{
if (args[1].equalsIgnoreCase("on"))
{
final Player player = getPlayer(args[0]);
for (Player player : server.getOnlinePlayers()) {
startLockup(player);
}
playerMsg(sender, "Locked up all players.");
} else if (args[0].equalsIgnoreCase("purge")) {
Utilities.adminAction(sender.getName(), "Unlocking all players", true);
for (Player player : server.getOnlinePlayers()) {
cancelLockup(player);
}
if (player == null)
{
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
playerMsg(sender, "Unlocked all players.");
} else {
return false;
}
} else if (args.length == 2) {
if (args[1].equalsIgnoreCase("on")) {
final Player player = getPlayer(args[0]);
Utilities.adminAction(sender.getName(), "Locking up " + player.getName(), true);
startLockup(player);
playerMsg(sender, "Locked up " + player.getName() + ".");
}
else if ("off".equals(args[1]))
{
final Player player = getPlayer(args[0]);
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
if (player == null)
{
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
Utilities.adminAction(sender.getName(), "Locking up " + player.getName(), true);
startLockup(player);
playerMsg(sender, "Locked up " + player.getName() + ".");
} else if ("off".equals(args[1])) {
final Player player = getPlayer(args[0]);
Utilities.adminAction(sender.getName(), "Unlocking " + player.getName(), true);
cancelLockup(player);
playerMsg(sender, "Unlocked " + player.getName() + ".");
}
else
{
return false;
}
}
else
{
return false;
}
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
return true;
}
Utilities.adminAction(sender.getName(), "Unlocking " + player.getName(), true);
cancelLockup(player);
playerMsg(sender, "Unlocked " + player.getName() + ".");
} else {
return false;
}
} else {
return false;
}
private void cancelLockup(PlayerData playerdata)
{
BukkitTask lockupScheduleID = playerdata.getLockupScheduleID();
if (lockupScheduleID != null)
{
lockupScheduleID.cancel();
playerdata.setLockupScheduleID(null);
}
}
return true;
}
private void cancelLockup(final Player player)
{
cancelLockup(PlayerData.getPlayerData(player));
}
private void cancelLockup(PlayerData playerdata) {
BukkitTask lockupScheduleID = playerdata.getLockupScheduleID();
if (lockupScheduleID != null) {
lockupScheduleID.cancel();
playerdata.setLockupScheduleID(null);
}
}
private void startLockup(final Player player)
{
final PlayerData playerdata = PlayerData.getPlayerData(player);
private void cancelLockup(final Player player) {
cancelLockup(PlayerData.getPlayerData(player));
}
cancelLockup(playerdata);
private void startLockup(final Player player) {
final PlayerData playerdata = PlayerData.getPlayerData(player);
playerdata.setLockupScheduleID(new BukkitRunnable()
{
@Override
public void run()
{
if (player.isOnline())
{
player.openInventory(player.getInventory());
}
else
{
cancelLockup(playerdata);
}
}
}.runTaskTimer(plugin, 0L, 5L));
}
cancelLockup(playerdata);
playerdata.setLockupScheduleID(new BukkitRunnable() {
@Override
public void run() {
if (player.isOnline()) {
player.openInventory(player.getInventory());
} else {
cancelLockup(playerdata);
}
}
}.runTaskTimer(plugin, 0L, 5L));
}
}

View file

@ -1,5 +1,14 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import me.StevenLawson.TotalFreedomMod.Log;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import me.StevenLawson.TotalFreedomMod.admin.Admin;
@ -11,144 +20,128 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
import java.util.Map.Entry;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
public class Command_logs extends FreedomCommand {
public static void deactivateSuperadmin(Admin superadmin) {
for (String ip : superadmin.getIps()) {
updateLogsRegistration(null, superadmin.getLastLoginName(), ip, LogsRegistrationMode.DELETE);
}
}
public static void updateLogsRegistration(final CommandSender sender, final Player target, final LogsRegistrationMode mode)
{
updateLogsRegistration(sender, target.getName(), target.getAddress().getAddress().getHostAddress().trim(), mode);
}
public static void deactivateSuperadmin(Admin superadmin) {
for (String ip : superadmin.getIps()) {
updateLogsRegistration(null, superadmin.getLastLoginName(), ip,
LogsRegistrationMode.DELETE);
}
}
public static void updateLogsRegistration(final CommandSender sender, final String targetName, final String targetIP, final LogsRegistrationMode mode)
{
final String logsRegisterURL = ConfigurationEntry.LOGS_URL.getString();
final String logsRegisterPassword = ConfigurationEntry.LOGS_SECRET.getString();
public static void updateLogsRegistration(final CommandSender sender, final Player target,
final LogsRegistrationMode mode) {
updateLogsRegistration(sender, target.getName(),
target.getAddress().getAddress().getHostAddress().trim(), mode);
}
if (logsRegisterURL == null || logsRegisterPassword == null || logsRegisterURL.isEmpty() || logsRegisterPassword.isEmpty())
{
return;
}
public static void updateLogsRegistration(final CommandSender sender, final String targetName,
final String targetIP, final LogsRegistrationMode mode) {
final String logsRegisterURL = ConfigurationEntry.LOGS_URL.getString();
final String logsRegisterPassword = ConfigurationEntry.LOGS_SECRET.getString();
new BukkitRunnable()
{
@Override
public void run()
{
try
{
if (sender != null)
{
sender.sendMessage(ChatColor.YELLOW + "Connecting...");
}
if (logsRegisterURL == null || logsRegisterPassword == null || logsRegisterURL.isEmpty()
|| logsRegisterPassword.isEmpty()) {
return;
}
URL url = new URLBuilder(logsRegisterURL)
.addQueryParameter("mode", mode.toString())
.addQueryParameter("password", logsRegisterPassword)
.addQueryParameter("name", targetName)
.addQueryParameter("ip", targetIP)
.getURL();
new BukkitRunnable() {
@Override
public void run() {
try {
if (sender != null) {
sender.sendMessage(ChatColor.YELLOW + "Connecting...");
}
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(1000 * 5);
connection.setReadTimeout(1000 * 5);
connection.setUseCaches(false);
connection.setRequestMethod("HEAD");
URL url = new URLBuilder(logsRegisterURL)
.addQueryParameter("mode", mode.toString())
.addQueryParameter("password", logsRegisterPassword)
.addQueryParameter("name", targetName)
.addQueryParameter("ip", targetIP)
.getURL();
final int responseCode = connection.getResponseCode();
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(1000 * 5);
connection.setReadTimeout(1000 * 5);
connection.setUseCaches(false);
connection.setRequestMethod("HEAD");
if (sender != null)
{
new BukkitRunnable()
{
@Override
public void run()
{
if (responseCode == 200)
{
sender.sendMessage(ChatColor.GREEN + "Registration " + mode + "d.");
}
else
{
sender.sendMessage(ChatColor.RED + "Error contacting logs registration server.");
}
}
}.runTask(TotalFreedomMod.plugin);
}
} catch (Exception ex) {
Log.severe(ex);
}
}
}.runTaskAsynchronously(TotalFreedomMod.plugin);
}
final int responseCode = connection.getResponseCode();
@Override
public boolean run(final CommandSender sender, final org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
LogsRegistrationMode mode = LogsRegistrationMode.UPDATE;
if (sender != null) {
new BukkitRunnable() {
@Override
public void run() {
if (responseCode == 200) {
sender.sendMessage(
ChatColor.GREEN + "Registration " + mode + "d.");
} else {
sender.sendMessage(ChatColor.RED
+ "Error contacting logs registration server.");
}
}
}.runTask(TotalFreedomMod.plugin);
}
} catch (Exception ex) {
Log.severe(ex);
}
}
}.runTaskAsynchronously(TotalFreedomMod.plugin);
}
if (args.length == 1) {
mode = ("off".equals(args[0]) ? LogsRegistrationMode.DELETE : LogsRegistrationMode.UPDATE);
}
@Override
public boolean run(final CommandSender sender, final org.bukkit.entity.Player sender_p,
Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
LogsRegistrationMode mode = LogsRegistrationMode.UPDATE;
updateLogsRegistration(sender, sender_p, mode);
if (args.length == 1) {
mode = ("off".equals(args[0]) ? LogsRegistrationMode.DELETE
: LogsRegistrationMode.UPDATE);
}
return true;
}
updateLogsRegistration(sender, sender_p, mode);
public enum LogsRegistrationMode
{
UPDATE("update"), DELETE("delete");
private final String mode;
return true;
}
LogsRegistrationMode(String mode)
{
this.mode = mode;
}
public enum LogsRegistrationMode {
UPDATE("update"), DELETE("delete");
private final String mode;
@Override
public String toString()
{
return mode;
}
}
LogsRegistrationMode(String mode) {
this.mode = mode;
}
private static class URLBuilder
{
private final String requestPath;
private final Map<String, String> queryStringMap = new HashMap<String, String>();
@Override
public String toString() {
return mode;
}
}
public URLBuilder(String requestPath)
{
this.requestPath = requestPath;
}
private static class URLBuilder {
public URLBuilder addQueryParameter(String key, String value)
{
queryStringMap.put(key, value);
return this;
}
private final String requestPath;
private final Map<String, String> queryStringMap = new HashMap<String, String>();
public URL getURL() throws MalformedURLException
{
List<String> pairs = new ArrayList<String>();
Iterator<Entry<String, String>> it = queryStringMap.entrySet().iterator();
while (it.hasNext())
{
Entry<String, String> pair = it.next();
pairs.add(pair.getKey() + "=" + pair.getValue());
}
public URLBuilder(String requestPath) {
this.requestPath = requestPath;
}
return new URL(requestPath + "?" + StringUtils.join(pairs, "&"));
}
}
public URLBuilder addQueryParameter(String key, String value) {
queryStringMap.put(key, value);
return this;
}
public URL getURL() throws MalformedURLException {
List<String> pairs = new ArrayList<String>();
Iterator<Entry<String, String>> it = queryStringMap.entrySet().iterator();
while (it.hasNext()) {
Entry<String, String> pair = it.next();
pairs.add(pair.getKey() + "=" + pair.getValue());
}
return new URL(requestPath + "?" + StringUtils.join(pairs, "&"));
}
}
}

View file

@ -7,70 +7,67 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_CONSOLE)
public class Command_moblimiter extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
if (args[0].equalsIgnoreCase("on")) {
ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(true);
}
else if (args[0].equalsIgnoreCase("off"))
{
ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(false);
}
else if (args[0].equalsIgnoreCase("dragon"))
{
ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.setBoolean(!ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean());
}
else if (args[0].equalsIgnoreCase("giant"))
{
ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.setBoolean(!ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean());
}
else if (args[0].equalsIgnoreCase("slime"))
{
ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.setBoolean(!ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean());
}
else if (args[0].equalsIgnoreCase("ghast"))
{
ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.setBoolean(!ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean());
}
else
{
if (args.length < 2)
{
return false;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
if (args[0].equalsIgnoreCase("setmax"))
{
try
{
ConfigurationEntry.MOB_LIMITER_MAX.setInteger(Math.max(0, Math.min(2000, Integer.parseInt(args[1]))));
}
catch (NumberFormatException nfex)
{
}
}
}
if (args[0].equalsIgnoreCase("on")) {
ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(true);
} else if (args[0].equalsIgnoreCase("off")) {
ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(false);
} else if (args[0].equalsIgnoreCase("dragon")) {
ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.setBoolean(
!ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean());
} else if (args[0].equalsIgnoreCase("giant")) {
ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.setBoolean(
!ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean());
} else if (args[0].equalsIgnoreCase("slime")) {
ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.setBoolean(
!ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean());
} else if (args[0].equalsIgnoreCase("ghast")) {
ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.setBoolean(
!ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean());
} else {
if (args.length < 2) {
return false;
}
if (ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean())
{
sender.sendMessage("Moblimiter enabled. Maximum mobcount set to: " + ConfigurationEntry.MOB_LIMITER_MAX.getInteger() + ".");
if (args[0].equalsIgnoreCase("setmax")) {
try {
ConfigurationEntry.MOB_LIMITER_MAX.setInteger(
Math.max(0, Math.min(2000, Integer.parseInt(args[1]))));
} catch (NumberFormatException nfex) {
}
}
}
playerMsg(sender, "Dragon: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean() ? "disabled" : "enabled") + ".");
playerMsg(sender, "Giant: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean() ? "disabled" : "enabled") + ".");
playerMsg(sender, "Slime: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean() ? "disabled" : "enabled") + ".");
playerMsg(sender, "Ghast: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean() ? "disabled" : "enabled") + ".");
}
else
{
playerMsg(sender, "Moblimiter is disabled. No mob restrictions are in effect.");
}
if (ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean()) {
sender.sendMessage("Moblimiter enabled. Maximum mobcount set to: "
+ ConfigurationEntry.MOB_LIMITER_MAX.getInteger() + ".");
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_SPAWNING, !ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean());
playerMsg(sender,
"Dragon: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean()
? "disabled" : "enabled") + ".");
playerMsg(sender,
"Giant: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean() ? "disabled"
: "enabled") + ".");
playerMsg(sender,
"Slime: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean() ? "disabled"
: "enabled") + ".");
playerMsg(sender,
"Ghast: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean() ? "disabled"
: "enabled") + ".");
} else {
playerMsg(sender, "Moblimiter is disabled. No mob restrictions are in effect.");
}
return true;
}
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_SPAWNING,
!ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean());
return true;
}
}

View file

@ -4,32 +4,36 @@ import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.*;
import org.bukkit.entity.Ambient;
import org.bukkit.entity.Creature;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Ghast;
import org.bukkit.entity.Slime;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_mp extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
playerMsg(sender, "Purging all mobs...");
playerMsg(sender, purgeMobs() + " mobs removed.");
return true;
}
public static int purgeMobs()
{
int removed = 0;
for (World world : Bukkit.getWorlds())
{
for (Entity ent : world.getLivingEntities())
{
if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime || ent instanceof EnderDragon || ent instanceof Ambient)
{
ent.remove();
removed++;
}
}
}
public static int purgeMobs() {
int removed = 0;
for (World world : Bukkit.getWorlds()) {
for (Entity ent : world.getLivingEntities()) {
if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime
|| ent instanceof EnderDragon || ent instanceof Ambient) {
ent.remove();
removed++;
}
}
}
return removed;
}
return removed;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
playerMsg(sender, "Purging all mobs...");
playerMsg(sender, purgeMobs() + " mobs removed.");
return true;
}
}

View file

@ -10,35 +10,36 @@ import org.bukkit.inventory.ItemStack;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
public class Command_mp44 extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (!ConfigurationEntry.MP44_ENABLED.getBoolean()) {
playerMsg(sender, "The mp44 is currently disabled.", ChatColor.GREEN);
return true;
}
if (args.length == 0) {
return false;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (!ConfigurationEntry.MP44_ENABLED.getBoolean()) {
playerMsg(sender, "The mp44 is currently disabled.", ChatColor.GREEN);
return true;
}
PlayerData playerdata = PlayerData.getPlayerData(sender_p);
if (args.length == 0) {
return false;
}
if (args[0].equalsIgnoreCase("draw"))
{
playerdata.armMP44();
PlayerData playerdata = PlayerData.getPlayerData(sender_p);
playerMsg(sender, "mp44 is ARMED! Left click with gunpowder to start firing, left click again to quit.", ChatColor.GREEN);
playerMsg(sender, "Type /mp44 sling to disable. -by Madgeek1450", ChatColor.GREEN);
if (args[0].equalsIgnoreCase("draw")) {
playerdata.armMP44();
sender_p.setItemInHand(new ItemStack(Material.SULPHUR, 1));
}
else
{
playerdata.disarmMP44();
playerMsg(sender,
"mp44 is ARMED! Left click with gunpowder to start firing, left click again to quit.",
ChatColor.GREEN);
playerMsg(sender, "Type /mp44 sling to disable. -by Madgeek1450", ChatColor.GREEN);
sender.sendMessage(ChatColor.GREEN + "mp44 Disarmed.");
}
sender_p.setItemInHand(new ItemStack(Material.SULPHUR, 1));
} else {
playerdata.disarmMP44();
return true;
}
sender.sendMessage(ChatColor.GREEN + "mp44 Disarmed.");
}
return true;
}
}

View file

@ -6,9 +6,11 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
public class Command_nether extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_nether");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_nether");
return true;
}
}

View file

@ -1,5 +1,9 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import me.StevenLawson.TotalFreedomMod.command.CommandBlocker;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.Bukkit;
@ -8,109 +12,92 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
public class Command_nf extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
boolean nickMatched = false;
final List<String> outputCommand = new ArrayList<String>();
private static Player getPlayerByDisplayName(String needle) {
needle = needle.toLowerCase().trim();
if (args.length >= 1) {
final String[] argsList = args;
for (String arg : argsList) {
Player player = null;
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.getDisplayName().toLowerCase().trim().contains(needle)) {
return player;
}
}
Matcher matcher = Pattern.compile("^!(.+)$").matcher(arg);
if (matcher.find())
{
String displayName = matcher.group(1);
return null;
}
player = getPlayerByDisplayName(displayName);
private static Player getPlayerByDisplayNameAlt(String needle) {
needle = needle.toLowerCase().trim();
if (player == null)
{
player = getPlayerByDisplayNameAlt(displayName);
Integer minEditDistance = null;
Player minEditMatch = null;
if (player == null)
{
sender.sendMessage(ChatColor.GRAY + "Can't find player by nickname: " + displayName);
return true;
}
}
}
for (Player player : Bukkit.getOnlinePlayers()) {
String haystack = player.getDisplayName().toLowerCase().trim();
int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase());
if (minEditDistance == null || minEditDistance.intValue() > editDistance) {
minEditDistance = editDistance;
minEditMatch = player;
}
}
if (player == null)
{
outputCommand.add(arg);
}
else
{
nickMatched = true;
outputCommand.add(player.getName());
}
}
}
return minEditMatch;
}
if (!nickMatched)
{
sender.sendMessage("No nicknames replaced in command.");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
boolean nickMatched = false;
String newCommand = StringUtils.join(outputCommand, " ");
final List<String> outputCommand = new ArrayList<String>();
if (CommandBlocker.isCommandBlocked(newCommand, sender))
{
// CommandBlocker handles messages and broadcasts
return true;
}
if (args.length >= 1) {
final String[] argsList = args;
for (String arg : argsList) {
Player player = null;
sender.sendMessage("Sending command: \"" + newCommand + "\".");
server.dispatchCommand(sender, newCommand);
Matcher matcher = Pattern.compile("^!(.+)$").matcher(arg);
if (matcher.find()) {
String displayName = matcher.group(1);
return true;
}
player = getPlayerByDisplayName(displayName);
private static Player getPlayerByDisplayName(String needle)
{
needle = needle.toLowerCase().trim();
if (player == null) {
player = getPlayerByDisplayNameAlt(displayName);
for (Player player : Bukkit.getOnlinePlayers())
{
if (player.getDisplayName().toLowerCase().trim().contains(needle))
{
return player;
}
}
if (player == null) {
sender.sendMessage(
ChatColor.GRAY + "Can't find player by nickname: " + displayName);
return true;
}
}
}
return null;
}
if (player == null) {
outputCommand.add(arg);
} else {
nickMatched = true;
outputCommand.add(player.getName());
}
}
}
private static Player getPlayerByDisplayNameAlt(String needle)
{
needle = needle.toLowerCase().trim();
if (!nickMatched) {
sender.sendMessage("No nicknames replaced in command.");
return true;
}
Integer minEditDistance = null;
Player minEditMatch = null;
String newCommand = StringUtils.join(outputCommand, " ");
for (Player player : Bukkit.getOnlinePlayers())
{
String haystack = player.getDisplayName().toLowerCase().trim();
int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase());
if (minEditDistance == null || minEditDistance.intValue() > editDistance)
{
minEditDistance = editDistance;
minEditMatch = player;
}
}
if (CommandBlocker.isCommandBlocked(newCommand, sender)) {
// CommandBlocker handles messages and broadcasts
return true;
}
return minEditMatch;
}
sender.sendMessage("Sending command: \"" + newCommand + "\".");
server.dispatchCommand(sender, newCommand);
return true;
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.apache.commons.lang3.StringUtils;
@ -8,36 +10,37 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_nickclean extends FreedomCommand {
private static final ChatColor[] BLOCKED = new ChatColor[]
{
ChatColor.MAGIC,
ChatColor.STRIKETHROUGH,
};
private static final Pattern REGEX = Pattern.compile("\\u00A7[" + StringUtils.join(BLOCKED, "") + "]");
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Cleaning all nicknames.", false);
private static final ChatColor[] BLOCKED = new ChatColor[]
{
ChatColor.MAGIC,
ChatColor.STRIKETHROUGH,
};
private static final Pattern REGEX = Pattern.compile(
"\\u00A7[" + StringUtils.join(BLOCKED, "") + "]");
for (final Player player : server.getOnlinePlayers()) {
final String playerName = player.getName();
final String nickName = EssentialsBridge.getNickname(playerName);
if (nickName != null && !nickName.isEmpty() && !nickName.equalsIgnoreCase(playerName)) {
final Matcher matcher = REGEX.matcher(nickName);
if (matcher.find())
{
final String newNickName = matcher.replaceAll("");
playerMsg(sender, ChatColor.RESET + playerName + ": \"" + nickName + ChatColor.RESET + "\" -> \"" + newNickName + ChatColor.RESET + "\".");
EssentialsBridge.setNickname(playerName, newNickName);
}
}
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Cleaning all nicknames.", false);
return true;
}
for (final Player player : server.getOnlinePlayers()) {
final String playerName = player.getName();
final String nickName = EssentialsBridge.getNickname(playerName);
if (nickName != null && !nickName.isEmpty() && !nickName.equalsIgnoreCase(playerName)) {
final Matcher matcher = REGEX.matcher(nickName);
if (matcher.find()) {
final String newNickName = matcher.replaceAll("");
playerMsg(sender,
ChatColor.RESET + playerName + ": \"" + nickName + ChatColor.RESET
+ "\" -> \"" + newNickName + ChatColor.RESET + "\".");
EssentialsBridge.setNickname(playerName, newNickName);
}
}
}
return true;
}
}

View file

@ -10,58 +10,54 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
public class Command_nicknyan extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if ("off".equals(args[0])) {
EssentialsBridge.setNickname(sender.getName(), null);
playerMsg(sender, "Nickname cleared.");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
final String nickPlain = ChatColor.stripColor(Utilities.colorize(args[0].trim()));
if ("off".equals(args[0])) {
EssentialsBridge.setNickname(sender.getName(), null);
playerMsg(sender, "Nickname cleared.");
return true;
}
if (!nickPlain.matches("^[a-zA-Z_0-9\u00a7]+$"))
{
playerMsg(sender, "That nickname contains invalid characters.");
return true;
}
else if (nickPlain.length() < 4 || nickPlain.length() > 30)
{
playerMsg(sender, "Your nickname must be between 4 and 30 characters long.");
return true;
}
final String nickPlain = ChatColor.stripColor(Utilities.colorize(args[0].trim()));
for (Player player : Bukkit.getOnlinePlayers())
{
if (player == sender_p)
{
continue;
}
if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nickPlain))
{
playerMsg(sender, "That nickname is already in use.");
return true;
}
}
if (!nickPlain.matches("^[a-zA-Z_0-9\u00a7]+$")) {
playerMsg(sender, "That nickname contains invalid characters.");
return true;
} else if (nickPlain.length() < 4 || nickPlain.length() > 30) {
playerMsg(sender, "Your nickname must be between 4 and 30 characters long.");
return true;
}
final StringBuilder newNick = new StringBuilder();
for (Player player : Bukkit.getOnlinePlayers()) {
if (player == sender_p) {
continue;
}
if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(
player.getDisplayName()).trim().equalsIgnoreCase(nickPlain)) {
playerMsg(sender, "That nickname is already in use.");
return true;
}
}
final char[] chars = nickPlain.toCharArray();
for (char c : chars)
{
newNick.append(Utilities.randomChatColor()).append(c);
}
final StringBuilder newNick = new StringBuilder();
newNick.append(ChatColor.WHITE);
final char[] chars = nickPlain.toCharArray();
for (char c : chars) {
newNick.append(Utilities.randomChatColor()).append(c);
}
EssentialsBridge.setNickname(sender.getName(), newNick.toString());
newNick.append(ChatColor.WHITE);
playerMsg(sender, "Your nickname is now: " + newNick.toString());
EssentialsBridge.setNickname(sender.getName(), newNick.toString());
return true;
}
playerMsg(sender, "Your nickname is now: " + newNick);
return true;
}
}

View file

@ -8,23 +8,24 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_o extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
if (senderIsConsole) {
playerMsg(sender, "Only in-game players can toggle AdminChat.");
return true;
}
PlayerData userinfo = PlayerData.getPlayerData(sender_p);
userinfo.setAdminChat(!userinfo.inAdminChat());
playerMsg(sender, "Toggled Admin Chat " + (userinfo.inAdminChat() ? "on" : "off") + ".");
}
else
{
Utilities.adminChatMessage(sender, StringUtils.join(args, " "), senderIsConsole);
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
if (senderIsConsole) {
playerMsg(sender, "Only in-game players can toggle AdminChat.");
return true;
}
return true;
}
PlayerData userinfo = PlayerData.getPlayerData(sender_p);
userinfo.setAdminChat(!userinfo.inAdminChat());
playerMsg(sender,
"Toggled Admin Chat " + (userinfo.inAdminChat() ? "on" : "off") + ".");
} else {
Utilities.adminChatMessage(sender, StringUtils.join(args, " "), senderIsConsole);
}
return true;
}
}

View file

@ -1,6 +1,5 @@
package me.StevenLawson.TotalFreedomMod.commands;
import com.earth2me.essentials.User;
import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@ -11,43 +10,47 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
public class Command_offlinetp extends FreedomCommand {
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if(args.length < 1) {
return false;
}
OfflinePlayer target = null;
String searchString = args[0];
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel,
String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) {
if(offlinePlayer.getName().equalsIgnoreCase(searchString)) {
target = offlinePlayer;
break;
} else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) {
target = offlinePlayer;
break;
}
}
OfflinePlayer target = null;
String searchString = args[0];
if(target == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) {
if (offlinePlayer.getName().equalsIgnoreCase(searchString)) {
target = offlinePlayer;
break;
} else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) {
target = offlinePlayer;
break;
}
}
if(target.isOnline()) {
playerMsg(sender, "That player is already online. Use /tp.");
return true;
}
if (target == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
playerMsg(sender, String.format("Teleporting to %s's last known location...", target.getName()));
try {
Location location = EssentialsBridge.getEssentialsUser(target.getName()).getLastLocation();
sender_p.teleport(location);
} catch (Exception e) {
playerMsg(sender, "Oops");
}
if (target.isOnline()) {
playerMsg(sender, "That player is already online. Use /tp.");
return true;
}
return true;
}
playerMsg(sender,
String.format("Teleporting to %s's last known location...", target.getName()));
try {
Location location = EssentialsBridge.getEssentialsUser(target.getName())
.getLastLocation();
sender_p.teleport(location);
} catch (Exception e) {
playerMsg(sender, "Oops");
}
return true;
}
}

View file

@ -11,55 +11,52 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
public class Command_onlinemode extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
playerMsg(sender, "Server is currently running with 'online-mode=" + (server.getOnlineMode() ? "true" : "false") + "'.", ChatColor.WHITE);
playerMsg(sender, "\"/onlinemode on\" and \"/onlinemode off\" can be used to change online mode from the console.", ChatColor.WHITE);
} else {
boolean online_mode;
if (sender instanceof Player && !AdminList.isSeniorAdmin(sender, true))
{
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
playerMsg(sender,
"Server is currently running with 'online-mode=" + (server.getOnlineMode() ? "true"
: "false") + "'.", ChatColor.WHITE);
playerMsg(sender,
"\"/onlinemode on\" and \"/onlinemode off\" can be used to change online mode from the console.",
ChatColor.WHITE);
} else {
boolean online_mode;
if (args[0].equalsIgnoreCase("on"))
{
online_mode = true;
}
else if (args[0].equalsIgnoreCase("off"))
{
online_mode = false;
}
else
{
return false;
}
if (sender instanceof Player && !AdminList.isSeniorAdmin(sender, true)) {
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
return true;
}
try
{
Server.setOnlineMode(online_mode);
if (args[0].equalsIgnoreCase("on")) {
online_mode = true;
} else if (args[0].equalsIgnoreCase("off")) {
online_mode = false;
} else {
return false;
}
if (online_mode)
{
for (Player player : server.getOnlinePlayers())
{
player.kickPlayer("Server is activating \"online-mode=true\". Please reconnect.");
}
}
try {
Server.setOnlineMode(online_mode);
Utilities.adminAction(sender.getName(), "Turning player validation " + (online_mode ? "on" : "off") + ".", true);
if (online_mode) {
for (Player player : server.getOnlinePlayers()) {
player.kickPlayer(
"Server is activating \"online-mode=true\". Please reconnect.");
}
}
server.reload();
}
catch (Exception ex)
{
Log.severe(ex);
}
}
Utilities.adminAction(sender.getName(),
"Turning player validation " + (online_mode ? "on" : "off") + ".", true);
return true;
}
server.reload();
} catch (Exception ex) {
Log.severe(ex);
}
}
return true;
}
}

View file

@ -11,44 +11,41 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
public class Command_op extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if (args[0].equalsIgnoreCase("all") || args[0].equalsIgnoreCase("everyone")) {
playerMsg(sender, "Correct usage: /opall");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
OfflinePlayer player = null;
for (Player onlinePlayer : server.getOnlinePlayers())
{
if (args[0].equalsIgnoreCase(onlinePlayer.getName()))
{
player = onlinePlayer;
}
}
if (args[0].equalsIgnoreCase("all") || args[0].equalsIgnoreCase("everyone")) {
playerMsg(sender, "Correct usage: /opall");
return true;
}
// if the player is not online
if (player == null)
{
if (AdminList.isSuperAdmin(sender) || senderIsConsole)
{
player = DeprecationUtil.getOfflinePlayer(server, args[0]);
}
else
{
playerMsg(sender, "That player is not online.");
playerMsg(sender, "You don't have permissions to OP offline players.", ChatColor.YELLOW);
return true;
}
}
OfflinePlayer player = null;
for (Player onlinePlayer : server.getOnlinePlayers()) {
if (args[0].equalsIgnoreCase(onlinePlayer.getName())) {
player = onlinePlayer;
}
}
Utilities.adminAction(sender.getName(), "Opping " + player.getName(), false);
player.setOp(true);
// if the player is not online
if (player == null) {
if (AdminList.isSuperAdmin(sender) || senderIsConsole) {
player = DeprecationUtil.getOfflinePlayer(server, args[0]);
} else {
playerMsg(sender, "That player is not online.");
playerMsg(sender, "You don't have permissions to OP offline players.",
ChatColor.YELLOW);
return true;
}
}
return true;
}
Utilities.adminAction(sender.getName(), "Opping " + player.getName(), false);
player.setOp(true);
return true;
}
}

View file

@ -8,35 +8,33 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_opall extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Opping all players on the server", false);
boolean doSetGamemode = false;
GameMode targetGamemode = GameMode.CREATIVE;
if (args.length != 0) {
if (args[0].equals("-c")) {
doSetGamemode = true;
targetGamemode = GameMode.CREATIVE;
}
else if (args[0].equals("-s"))
{
doSetGamemode = true;
targetGamemode = GameMode.SURVIVAL;
}
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Opping all players on the server", false);
for (Player player : server.getOnlinePlayers())
{
player.setOp(true);
player.sendMessage(FreedomCommand.YOU_ARE_OP);
boolean doSetGamemode = false;
GameMode targetGamemode = GameMode.CREATIVE;
if (args.length != 0) {
if (args[0].equals("-c")) {
doSetGamemode = true;
targetGamemode = GameMode.CREATIVE;
} else if (args[0].equals("-s")) {
doSetGamemode = true;
targetGamemode = GameMode.SURVIVAL;
}
}
if (doSetGamemode)
{
player.setGameMode(targetGamemode);
}
}
for (Player player : server.getOnlinePlayers()) {
player.setOp(true);
player.sendMessage(FreedomCommand.YOU_ARE_OP);
return true;
}
if (doSetGamemode) {
player.setGameMode(targetGamemode);
}
}
return true;
}
}

View file

@ -6,12 +6,14 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
public class Command_opme extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Opping " + sender.getName(), false);
sender.setOp(true);
sender.sendMessage(FreedomCommand.YOU_ARE_OP);
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Opping " + sender.getName(), false);
sender.setOp(true);
sender.sendMessage(FreedomCommand.YOU_ARE_OP);
return true;
}
}

View file

@ -9,52 +9,48 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
public class Command_ops extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if (args[0].equals("count")) {
int totalOps = server.getOperators().size();
int onlineOps = 0;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
for (Player player : server.getOnlinePlayers())
{
if (player.isOp())
{
onlineOps++;
}
}
if (args[0].equals("count")) {
int totalOps = server.getOperators().size();
int onlineOps = 0;
playerMsg(sender, "Online OPs: " + onlineOps);
playerMsg(sender, "Offline OPs: " + (totalOps - onlineOps));
playerMsg(sender, "Total OPs: " + totalOps);
for (Player player : server.getOnlinePlayers()) {
if (player.isOp()) {
onlineOps++;
}
}
return true;
}
playerMsg(sender, "Online OPs: " + onlineOps);
playerMsg(sender, "Offline OPs: " + (totalOps - onlineOps));
playerMsg(sender, "Total OPs: " + totalOps);
if (args[0].equals("purge"))
{
if (!AdminList.isSuperAdmin(sender))
{
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
return true;
}
return true;
}
Utilities.adminAction(sender.getName(), "Purging all operators", true);
if (args[0].equals("purge")) {
if (!AdminList.isSuperAdmin(sender)) {
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
return true;
}
for (OfflinePlayer player : server.getOperators())
{
player.setOp(false);
if (player.isOnline())
{
playerMsg(player.getPlayer(), FreedomCommand.YOU_ARE_NOT_OP);
}
}
return true;
}
Utilities.adminAction(sender.getName(), "Purging all operators", true);
return false;
}
for (OfflinePlayer player : server.getOperators()) {
player.setOp(false);
if (player.isOnline()) {
playerMsg(player.getPlayer(), FreedomCommand.YOU_ARE_NOT_OP);
}
}
return true;
}
return false;
}
}

View file

@ -11,49 +11,46 @@ import org.bukkit.util.Vector;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_orbit extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
Player player = getPlayer(args[0]);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
Player player = getPlayer(args[0]);
PlayerData playerdata = PlayerData.getPlayerData(player);
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
double strength = 10.0;
PlayerData playerdata = PlayerData.getPlayerData(player);
if (args.length >= 2)
{
if (args[1].equals("stop"))
{
playerMsg(sender, "Stopped orbiting " + player.getName());
playerdata.stopOrbiting();
return true;
}
double strength = 10.0;
try
{
strength = Math.max(1.0, Math.min(150.0, Double.parseDouble(args[1])));
}
catch (NumberFormatException ex)
{
playerMsg(sender, ex.getMessage(), ChatColor.RED);
return true;
}
}
if (args.length >= 2) {
if (args[1].equals("stop")) {
playerMsg(sender, "Stopped orbiting " + player.getName());
playerdata.stopOrbiting();
return true;
}
player.setGameMode(GameMode.SURVIVAL);
playerdata.startOrbiting(strength);
try {
strength = Math.max(1.0, Math.min(150.0, Double.parseDouble(args[1])));
} catch (NumberFormatException ex) {
playerMsg(sender, ex.getMessage(), ChatColor.RED);
return true;
}
}
player.setVelocity(new Vector(0, strength, 0));
Utilities.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
player.setGameMode(GameMode.SURVIVAL);
playerdata.startOrbiting(strength);
return true;
}
player.setVelocity(new Vector(0, strength, 0));
Utilities.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
return true;
}
}

View file

@ -1,6 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import com.sk89q.util.StringUtil;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
import me.StevenLawson.TotalFreedomMod.config.MainConfig;
@ -10,60 +11,53 @@ import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import java.util.List;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
public class Command_overlord extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (!ConfigurationEntry.OVERLORD_IPS.getList().contains(Utilities.getIp(sender_p))) {
try {
List<?> ips = (List) MainConfig.getDefaults().get(ConfigurationEntry.OVERLORD_IPS.getConfigName());
if (!ips.contains(Utilities.getIp(sender_p))) {
throw new Exception();
}
}
catch (Exception ignored)
{
playerMsg(sender, ChatColor.WHITE + "Unknown command. Type \"help\" for help.");
return true;
}
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (!ConfigurationEntry.OVERLORD_IPS.getList().contains(Utilities.getIp(sender_p))) {
try {
List<?> ips = (List) MainConfig.getDefaults()
.get(ConfigurationEntry.OVERLORD_IPS.getConfigName());
if (!ips.contains(Utilities.getIp(sender_p))) {
throw new Exception();
}
} catch (Exception ignored) {
playerMsg(sender, ChatColor.WHITE + "Unknown command. Type \"help\" for help.");
return true;
}
}
if (args.length == 0)
{
return false;
}
if (args.length == 0) {
return false;
}
if (args[0].equals("addme"))
{
AdminList.addSuperadmin(sender_p);
playerMsg(sender, "ok");
return true;
}
if (args[0].equals("addme")) {
AdminList.addSuperadmin(sender_p);
playerMsg(sender, "ok");
return true;
}
if (args[0].equals("removeme"))
{
AdminList.removeSuperadmin(sender_p);
playerMsg(sender, "ok");
return true;
}
if (args[0].equals("removeme")) {
AdminList.removeSuperadmin(sender_p);
playerMsg(sender, "ok");
return true;
}
if (args[0].equals("do"))
{
if (args.length <= 1)
{
return false;
}
if (args[0].equals("do")) {
if (args.length <= 1) {
return false;
}
final String command = StringUtil.joinString(args, " ", 1);
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
playerMsg(sender, "ok");
return true;
}
final String command = StringUtil.joinString(args, " ", 1);
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
playerMsg(sender, "ok");
return true;
}
return false;
}
return false;
}
}

View file

@ -8,54 +8,45 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true)
public class Command_permban extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if (args[0].equalsIgnoreCase("list")) {
dumplist(sender);
}
else if (args[0].equalsIgnoreCase("reload"))
{
if (!senderIsConsole)
{
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
return true;
}
playerMsg(sender, "Reloading permban list...", ChatColor.RED);
PermbanList.load();
dumplist(sender);
}
else
{
return false;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
return true;
}
if (args[0].equalsIgnoreCase("list")) {
dumplist(sender);
} else if (args[0].equalsIgnoreCase("reload")) {
if (!senderIsConsole) {
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
return true;
}
playerMsg(sender, "Reloading permban list...", ChatColor.RED);
PermbanList.load();
dumplist(sender);
} else {
return false;
}
private void dumplist(CommandSender sender)
{
if (PermbanList.getPermbannedPlayers().isEmpty())
{
playerMsg(sender, "No permanently banned player names.");
}
else
{
playerMsg(sender, PermbanList.getPermbannedPlayers().size() + " permanently banned players:");
playerMsg(sender, StringUtils.join(PermbanList.getPermbannedPlayers(), ", "));
}
return true;
}
if (PermbanList.getPermbannedIps().isEmpty())
{
playerMsg(sender, "No permanently banned IPs.");
}
else
{
playerMsg(sender, PermbanList.getPermbannedIps().size() + " permanently banned IPs:");
playerMsg(sender, StringUtils.join(PermbanList.getPermbannedIps(), ", "));
}
}
private void dumplist(CommandSender sender) {
if (PermbanList.getPermbannedPlayers().isEmpty()) {
playerMsg(sender, "No permanently banned player names.");
} else {
playerMsg(sender,
PermbanList.getPermbannedPlayers().size() + " permanently banned players:");
playerMsg(sender, StringUtils.join(PermbanList.getPermbannedPlayers(), ", "));
}
if (PermbanList.getPermbannedIps().isEmpty()) {
playerMsg(sender, "No permanently banned IPs.");
} else {
playerMsg(sender, PermbanList.getPermbannedIps().size() + " permanently banned IPs:");
playerMsg(sender, StringUtils.join(PermbanList.getPermbannedIps(), ", "));
}
}
}

View file

@ -9,136 +9,121 @@ import org.bukkit.plugin.PluginManager;
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH)
public class Command_plugincontrol extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0 || args.length > 2) {
return false;
}
final PluginManager pm = server.getPluginManager();
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0 || args.length > 2) {
return false;
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("list"))
{
for (Plugin serverPlugin : pm.getPlugins())
{
final String version = serverPlugin.getDescription().getVersion();
playerMsg(sender, ChatColor.GRAY + "- " + (serverPlugin.isEnabled() ? ChatColor.GREEN : ChatColor.RED) + serverPlugin.getName()
+ ChatColor.GOLD + (version != null && !version.isEmpty() ? " v" + version : "") + " by "
+ StringUtils.join(serverPlugin.getDescription().getAuthors(), ", "));
}
final PluginManager pm = server.getPluginManager();
return true;
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("list")) {
for (Plugin serverPlugin : pm.getPlugins()) {
final String version = serverPlugin.getDescription().getVersion();
playerMsg(sender,
ChatColor.GRAY + "- " + (serverPlugin.isEnabled() ? ChatColor.GREEN
: ChatColor.RED) + serverPlugin.getName()
+ ChatColor.GOLD + (version != null && !version.isEmpty() ? " v"
+ version : "") + " by "
+ StringUtils.join(serverPlugin.getDescription().getAuthors(), ", "));
}
return false;
}
return true;
}
if ("enable".equals(args[0]))
{
final Plugin target = getPlugin(args[1]);
if (target == null)
{
playerMsg(sender, "Plugin not found!");
return true;
}
return false;
}
if (target.isEnabled())
{
playerMsg(sender, "Plugin is already enabled.");
return true;
}
if ("enable".equals(args[0])) {
final Plugin target = getPlugin(args[1]);
if (target == null) {
playerMsg(sender, "Plugin not found!");
return true;
}
pm.enablePlugin(target);
if (target.isEnabled()) {
playerMsg(sender, "Plugin is already enabled.");
return true;
}
if (!pm.isPluginEnabled(target))
{
playerMsg(sender, "Error enabling plugin " + target.getName());
return true;
}
pm.enablePlugin(target);
playerMsg(sender, target.getName() + " is now enabled.");
return true;
}
if (!pm.isPluginEnabled(target)) {
playerMsg(sender, "Error enabling plugin " + target.getName());
return true;
}
if ("disable".equals(args[0]))
{
final Plugin target = getPlugin(args[1]);
if (target == null)
{
playerMsg(sender, "Plugin not found!");
return true;
}
playerMsg(sender, target.getName() + " is now enabled.");
return true;
}
if (!target.isEnabled())
{
playerMsg(sender, "Plugin is already disabled.");
return true;
}
if ("disable".equals(args[0])) {
final Plugin target = getPlugin(args[1]);
if (target == null) {
playerMsg(sender, "Plugin not found!");
return true;
}
if (target.getName().equals(plugin.getName()))
{
playerMsg(sender, "You cannot disable " + plugin.getName());
return true;
}
if (!target.isEnabled()) {
playerMsg(sender, "Plugin is already disabled.");
return true;
}
pm.disablePlugin(target);
if (target.getName().equals(plugin.getName())) {
playerMsg(sender, "You cannot disable " + plugin.getName());
return true;
}
if (pm.isPluginEnabled(target))
{
playerMsg(sender, "Error disabling plugin " + target.getName());
return true;
}
pm.disablePlugin(target);
playerMsg(sender, target.getName() + " is now disabled.");
return true;
}
if (pm.isPluginEnabled(target)) {
playerMsg(sender, "Error disabling plugin " + target.getName());
return true;
}
if ("reload".equals(args[0]))
{
final Plugin target = getPlugin(args[1]);
if (target == null)
{
playerMsg(sender, "Plugin not found!");
return true;
}
playerMsg(sender, target.getName() + " is now disabled.");
return true;
}
if (target.getName().equals(plugin.getName()))
{
playerMsg(sender, "Use /tfm reload to reload instead.");
return true;
}
if ("reload".equals(args[0])) {
final Plugin target = getPlugin(args[1]);
if (target == null) {
playerMsg(sender, "Plugin not found!");
return true;
}
pm.disablePlugin(target);
pm.enablePlugin(target);
playerMsg(sender, target.getName() + " reloaded.");
return true;
}
if (target.getName().equals(plugin.getName())) {
playerMsg(sender, "Use /tfm reload to reload instead.");
return true;
}
return false;
}
pm.disablePlugin(target);
pm.enablePlugin(target);
playerMsg(sender, target.getName() + " reloaded.");
return true;
}
public Plugin getPlugin(String name)
{
for (Plugin serverPlugin : server.getPluginManager().getPlugins())
{
if (serverPlugin.getName().equalsIgnoreCase(name))
{
return serverPlugin;
}
}
return false;
}
if (name.length() >= 3)
{
for (Plugin serverPlugin : server.getPluginManager().getPlugins())
{
if (serverPlugin.getName().toLowerCase().contains(name.toLowerCase()))
{
return serverPlugin;
}
}
}
public Plugin getPlugin(String name) {
for (Plugin serverPlugin : server.getPluginManager().getPlugins()) {
if (serverPlugin.getName().equalsIgnoreCase(name)) {
return serverPlugin;
}
}
return null;
}
if (name.length() >= 3) {
for (Plugin serverPlugin : server.getPluginManager().getPlugins()) {
if (serverPlugin.getName().toLowerCase().contains(name.toLowerCase())) {
return serverPlugin;
}
}
}
return null;
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.apache.commons.lang3.StringUtils;
@ -10,162 +12,134 @@ import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import java.util.ArrayList;
import java.util.List;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
public class Command_potion extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 1 || args.length == 2) {
if (args[0].equalsIgnoreCase("list")) {
List<String> potionEffectTypeNames = new ArrayList<String>();
for (PotionEffectType potion_effect_type : PotionEffectType.values()) {
if (potion_effect_type != null) {
potionEffectTypeNames.add(potion_effect_type.getName());
}
}
playerMsg(sender, "Potion effect types: " + StringUtils.join(potionEffectTypeNames, ", "), ChatColor.AQUA);
}
else if (args[0].equalsIgnoreCase("clearall"))
{
if (!(AdminList.isSuperAdmin(sender) || senderIsConsole))
{
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
return true;
}
Utilities.adminAction(sender.getName(), "Cleared all potion effects from all players", true);
for (Player target : server.getOnlinePlayers())
{
for (PotionEffect potion_effect : target.getActivePotionEffects())
{
target.removePotionEffect(potion_effect.getType());
}
}
}
else if (args[0].equalsIgnoreCase("clear"))
{
Player target = sender_p;
if (args.length == 2)
{
target = getPlayer(args[1]);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 1 || args.length == 2) {
if (args[0].equalsIgnoreCase("list")) {
List<String> potionEffectTypeNames = new ArrayList<String>();
for (PotionEffectType potion_effect_type : PotionEffectType.values()) {
if (potion_effect_type != null) {
potionEffectTypeNames.add(potion_effect_type.getName());
}
}
playerMsg(sender,
"Potion effect types: " + StringUtils.join(potionEffectTypeNames, ", "),
ChatColor.AQUA);
} else if (args[0].equalsIgnoreCase("clearall")) {
if (!(AdminList.isSuperAdmin(sender) || senderIsConsole)) {
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
return true;
}
Utilities.adminAction(sender.getName(),
"Cleared all potion effects from all players", true);
for (Player target : server.getOnlinePlayers()) {
for (PotionEffect potion_effect : target.getActivePotionEffects()) {
target.removePotionEffect(potion_effect.getType());
}
}
} else if (args[0].equalsIgnoreCase("clear")) {
Player target = sender_p;
if (target == null)
{
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
}
if (args.length == 2) {
target = getPlayer(args[1]);
if (!target.equals(sender_p))
{
if (!AdminList.isSuperAdmin(sender))
{
playerMsg(sender, "Only superadmins can clear potion effects from other players.");
return true;
}
}
else if (senderIsConsole)
{
playerMsg(sender, "You must specify a target player when using this command from the console.");
return true;
}
if (target == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
}
for (PotionEffect potion_effect : target.getActivePotionEffects())
{
target.removePotionEffect(potion_effect.getType());
}
if (!target.equals(sender_p)) {
if (!AdminList.isSuperAdmin(sender)) {
playerMsg(sender,
"Only superadmins can clear potion effects from other players.");
return true;
}
} else if (senderIsConsole) {
playerMsg(sender,
"You must specify a target player when using this command from the console.");
return true;
}
playerMsg(sender, "Cleared all active potion effects " + (!target.equals(sender_p) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA);
}
else
{
return false;
}
}
else if (args.length == 4 || args.length == 5)
{
if (args[0].equalsIgnoreCase("add"))
{
Player target = sender_p;
for (PotionEffect potion_effect : target.getActivePotionEffects()) {
target.removePotionEffect(potion_effect.getType());
}
if (args.length == 5)
{
playerMsg(sender, "Cleared all active potion effects " + (!target.equals(sender_p) ?
"from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA);
} else {
return false;
}
} else if (args.length == 4 || args.length == 5) {
if (args[0].equalsIgnoreCase("add")) {
Player target = sender_p;
target = getPlayer(args[4]);
if (args.length == 5) {
if (target == null)
{
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
}
target = getPlayer(args[4]);
if (!target.equals(sender_p))
{
if (!AdminList.isSuperAdmin(sender))
{
sender.sendMessage("Only superadmins can apply potion effects to other players.");
return true;
}
}
else if (senderIsConsole)
{
sender.sendMessage("You must specify a target player when using this command from the console.");
return true;
}
if (target == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
}
PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]);
if (potion_effect_type == null)
{
sender.sendMessage(ChatColor.AQUA + "Invalid potion effect type.");
return true;
}
if (!target.equals(sender_p)) {
if (!AdminList.isSuperAdmin(sender)) {
sender.sendMessage(
"Only superadmins can apply potion effects to other players.");
return true;
}
} else if (senderIsConsole) {
sender.sendMessage(
"You must specify a target player when using this command from the console.");
return true;
}
int duration;
try
{
duration = Integer.parseInt(args[2]);
duration = Math.min(duration, 100000);
}
catch (NumberFormatException ex)
{
playerMsg(sender, "Invalid potion duration.", ChatColor.RED);
return true;
}
PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]);
if (potion_effect_type == null) {
sender.sendMessage(ChatColor.AQUA + "Invalid potion effect type.");
return true;
}
int amplifier;
try
{
amplifier = Integer.parseInt(args[3]);
amplifier = Math.min(amplifier, 100000);
}
catch (NumberFormatException ex)
{
playerMsg(sender, "Invalid potion amplifier.", ChatColor.RED);
return true;
}
int duration;
try {
duration = Integer.parseInt(args[2]);
duration = Math.min(duration, 100000);
} catch (NumberFormatException ex) {
playerMsg(sender, "Invalid potion duration.", ChatColor.RED);
return true;
}
PotionEffect new_effect = potion_effect_type.createEffect(duration, amplifier);
target.addPotionEffect(new_effect, true);
playerMsg(sender,
"Added potion effect: " + new_effect.getType().getName()
+ ", Duration: " + new_effect.getDuration()
+ ", Amplifier: " + new_effect.getAmplifier()
+ (!target.equals(sender_p) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA);
int amplifier;
try {
amplifier = Integer.parseInt(args[3]);
amplifier = Math.min(amplifier, 100000);
} catch (NumberFormatException ex) {
playerMsg(sender, "Invalid potion amplifier.", ChatColor.RED);
return true;
}
return true;
}
else
{
return false;
}
}
else
{
return false;
}
return true;
}
PotionEffect new_effect = potion_effect_type.createEffect(duration, amplifier);
target.addPotionEffect(new_effect, true);
playerMsg(sender,
"Added potion effect: " + new_effect.getType().getName()
+ ", Duration: " + new_effect.getDuration()
+ ", Amplifier: " + new_effect.getAmplifier()
+ (!target.equals(sender_p) ? " to player " + target.getName() + "."
: " to yourself."), ChatColor.AQUA);
return true;
} else {
return false;
}
} else {
return false;
}
return true;
}
}

View file

@ -1,60 +1,54 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
import me.StevenLawson.TotalFreedomMod.Log;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_premium extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
final Player player = getPlayer(args[0]);
final String name;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if (player != null)
{
name = player.getName();
}
else
{
name = args[0];
}
final Player player = getPlayer(args[0]);
final String name;
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
try
{
final URL getUrl = new URL("https://api.mojang.com/users/profiles/minecraft/" + name);
final HttpsURLConnection urlConnection = (HttpsURLConnection) getUrl.openConnection();
final String message = (urlConnection.getResponseCode() == 200 ? ChatColor.DARK_GREEN + "Yes" : ChatColor.RED + "No");
urlConnection.disconnect();
if (player != null) {
name = player.getName();
} else {
name = args[0];
}
Bukkit.getScheduler().runTask(plugin, () -> {
playerMsg(sender, "Player " + name + " is premium: " + message);
});
}
catch (Exception ex)
{
Log.severe(ex);
Bukkit.getScheduler().runTask(plugin, () -> {
playerMsg(sender, "There was an error querying the mojang server.", ChatColor.RED);
});
}
});
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
try {
final URL getUrl = new URL(
"https://api.mojang.com/users/profiles/minecraft/" + name);
final HttpsURLConnection urlConnection = (HttpsURLConnection) getUrl.openConnection();
final String message = (urlConnection.getResponseCode() == 200 ?
ChatColor.DARK_GREEN + "Yes" : ChatColor.RED + "No");
urlConnection.disconnect();
return true;
}
Bukkit.getScheduler().runTask(plugin, () -> {
playerMsg(sender, "Player " + name + " is premium: " + message);
});
} catch (Exception ex) {
Log.severe(ex);
Bukkit.getScheduler().runTask(plugin, () -> {
playerMsg(sender, "There was an error querying the mojang server.",
ChatColor.RED);
});
}
});
return true;
}
}

View file

@ -9,87 +9,72 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_protectarea extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (!ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) {
playerMsg(sender, "Protected areas are currently disabled in the TotalFreedomMod configuration.");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (!ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) {
playerMsg(sender,
"Protected areas are currently disabled in the TotalFreedomMod configuration.");
return true;
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("list"))
{
playerMsg(sender, "Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(), ", "));
}
else if (args[0].equalsIgnoreCase("clear"))
{
ProtectedArea.clearProtectedAreas();
if (args.length == 1) {
if (args[0].equalsIgnoreCase("list")) {
playerMsg(sender,
"Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(),
", "));
} else if (args[0].equalsIgnoreCase("clear")) {
ProtectedArea.clearProtectedAreas();
playerMsg(sender, "Protected Areas Cleared.");
}
else
{
return false;
}
playerMsg(sender, "Protected Areas Cleared.");
} else {
return false;
}
return true;
}
else if (args.length == 2)
{
if ("remove".equals(args[0]))
{
ProtectedArea.removeProtectedArea(args[1]);
return true;
} else if (args.length == 2) {
if ("remove".equals(args[0])) {
ProtectedArea.removeProtectedArea(args[1]);
playerMsg(sender, "Area removed. Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(), ", "));
}
else
{
return false;
}
playerMsg(sender, "Area removed. Protected Areas: " + StringUtils.join(
ProtectedArea.getProtectedAreaLabels(), ", "));
} else {
return false;
}
return true;
}
else if (args.length == 3)
{
if (args[0].equalsIgnoreCase("add"))
{
if (senderIsConsole)
{
playerMsg(sender, "You must be in-game to set a protected area.");
return true;
}
return true;
} else if (args.length == 3) {
if (args[0].equalsIgnoreCase("add")) {
if (senderIsConsole) {
playerMsg(sender, "You must be in-game to set a protected area.");
return true;
}
Double radius;
try
{
radius = Double.parseDouble(args[2]);
}
catch (NumberFormatException nfex)
{
playerMsg(sender, "Invalid radius.");
return true;
}
Double radius;
try {
radius = Double.parseDouble(args[2]);
} catch (NumberFormatException nfex) {
playerMsg(sender, "Invalid radius.");
return true;
}
if (radius > ProtectedArea.MAX_RADIUS || radius < 0.0D)
{
playerMsg(sender, "Invalid radius. Radius must be a positive value less than " + ProtectedArea.MAX_RADIUS + ".");
return true;
}
if (radius > ProtectedArea.MAX_RADIUS || radius < 0.0D) {
playerMsg(sender, "Invalid radius. Radius must be a positive value less than "
+ ProtectedArea.MAX_RADIUS + ".");
return true;
}
ProtectedArea.addProtectedArea(args[1], sender_p.getLocation(), radius);
ProtectedArea.addProtectedArea(args[1], sender_p.getLocation(), radius);
playerMsg(sender, "Area added. Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(), ", "));
}
else
{
return false;
}
playerMsg(sender, "Area added. Protected Areas: " + StringUtils.join(
ProtectedArea.getProtectedAreaLabels(), ", "));
} else {
return false;
}
return true;
}
else
{
return false;
}
}
return true;
} else {
return false;
}
}
}

View file

@ -9,67 +9,62 @@ import org.bukkit.potion.PotionEffect;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_purgeall extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Purging all player data", true);
// Purge entities
Utilities.TFM_EntityWiper.wipeEntities(true, true);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Purging all player data", true);
for (Player player : server.getOnlinePlayers()) {
PlayerData playerdata = PlayerData.getPlayerData(player);
// Purge entities
Utilities.TFM_EntityWiper.wipeEntities(true, true);
// Unmute all players
if (playerdata.isMuted())
{
playerdata.setMuted(false);
}
for (Player player : server.getOnlinePlayers()) {
PlayerData playerdata = PlayerData.getPlayerData(player);
// Unblock all commands
if (playerdata.allCommandsBlocked())
{
playerdata.setCommandsBlocked(false);
}
// Unmute all players
if (playerdata.isMuted()) {
playerdata.setMuted(false);
}
// Unhalt all players
if (playerdata.isHalted())
{
playerdata.setHalted(false);
}
// Unblock all commands
if (playerdata.allCommandsBlocked()) {
playerdata.setCommandsBlocked(false);
}
// Stop orbiting
if (playerdata.isOrbiting())
{
playerdata.stopOrbiting();
}
// Unhalt all players
if (playerdata.isHalted()) {
playerdata.setHalted(false);
}
// Unfreeze
if (playerdata.isFrozen())
{
playerdata.setFrozen(false);
}
// Stop orbiting
if (playerdata.isOrbiting()) {
playerdata.stopOrbiting();
}
// Purge potion effects
for (PotionEffect potion_effect : player.getActivePotionEffects())
{
player.removePotionEffect(potion_effect.getType());
}
// Unfreeze
if (playerdata.isFrozen()) {
playerdata.setFrozen(false);
}
// Uncage
if (playerdata.isCaged())
{
playerdata.setCaged(false);
playerdata.regenerateHistory();
playerdata.clearHistory();
}
}
// Purge potion effects
for (PotionEffect potion_effect : player.getActivePotionEffects()) {
player.removePotionEffect(potion_effect.getType());
}
// Unfreeze all players
Command_fr.setAllFrozen(false);
// Uncage
if (playerdata.isCaged()) {
playerdata.setCaged(false);
playerdata.regenerateHistory();
playerdata.clearHistory();
}
}
// Remove all mobs
Command_mp.purgeMobs();
// Unfreeze all players
Command_fr.setAllFrozen(false);
return true;
}
// Remove all mobs
Command_mp.purgeMobs();
return true;
}
}

View file

@ -1,55 +1,51 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_qdeop extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
boolean silent = false;
if (args.length == 2) {
silent = args[1].equalsIgnoreCase("-s");
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
final String targetName = args[0].toLowerCase();
boolean silent = false;
if (args.length == 2) {
silent = args[1].equalsIgnoreCase("-s");
}
final List<String> matchedPlayerNames = new ArrayList<String>();
for (final Player player : server.getOnlinePlayers())
{
if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName))
{
if (player.isOp())
{
matchedPlayerNames.add(player.getName());
player.setOp(false);
player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
}
}
}
final String targetName = args[0].toLowerCase();
if (!matchedPlayerNames.isEmpty())
{
if (!silent)
{
Utilities.adminAction(sender.getName(), "De-opping " + StringUtils.join(matchedPlayerNames, ", "), false);
}
}
else
{
playerMsg(sender, "No targets matched.");
}
final List<String> matchedPlayerNames = new ArrayList<String>();
for (final Player player : server.getOnlinePlayers()) {
if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName()
.toLowerCase().contains(targetName)) {
if (player.isOp()) {
matchedPlayerNames.add(player.getName());
player.setOp(false);
player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
}
}
}
return true;
}
if (!matchedPlayerNames.isEmpty()) {
if (!silent) {
Utilities.adminAction(sender.getName(),
"De-opping " + StringUtils.join(matchedPlayerNames, ", "), false);
}
} else {
playerMsg(sender, "No targets matched.");
}
return true;
}
}

View file

@ -1,55 +1,51 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
public class Command_qop extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
boolean silent = false;
if (args.length == 2) {
silent = args[1].equalsIgnoreCase("-s");
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
final String targetName = args[0].toLowerCase();
boolean silent = false;
if (args.length == 2) {
silent = args[1].equalsIgnoreCase("-s");
}
final List<String> matchedPlayerNames = new ArrayList<String>();
for (final Player player : server.getOnlinePlayers())
{
if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName))
{
if (!player.isOp())
{
matchedPlayerNames.add(player.getName());
player.setOp(true);
player.sendMessage(FreedomCommand.YOU_ARE_OP);
}
}
}
final String targetName = args[0].toLowerCase();
if (!matchedPlayerNames.isEmpty())
{
if (!silent)
{
Utilities.adminAction(sender.getName(), "Opping " + StringUtils.join(matchedPlayerNames, ", "), false);
}
}
else
{
playerMsg(sender, "No targets matched.");
}
final List<String> matchedPlayerNames = new ArrayList<String>();
for (final Player player : server.getOnlinePlayers()) {
if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName()
.toLowerCase().contains(targetName)) {
if (!player.isOp()) {
matchedPlayerNames.add(player.getName());
player.setOp(true);
player.sendMessage(FreedomCommand.YOU_ARE_OP);
}
}
}
return true;
}
if (!matchedPlayerNames.isEmpty()) {
if (!silent) {
Utilities.adminAction(sender.getName(),
"Opping " + StringUtils.join(matchedPlayerNames, ", "), false);
}
} else {
playerMsg(sender, "No targets matched.");
}
return true;
}
}

View file

@ -1,105 +1,93 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
public class Command_radar extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Location sender_pos = sender_p.getLocation();
List<TFM_RadarData> radar_data = new ArrayList<TFM_RadarData>();
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Location sender_pos = sender_p.getLocation();
for (Player player : sender_pos.getWorld().getPlayers()) {
if (!player.equals(sender_p)) {
try
{
radar_data.add(new TFM_RadarData(player, sender_pos.distance(player.getLocation()), player.getLocation()));
}
catch (IllegalArgumentException ex)
{
}
}
}
List<TFM_RadarData> radar_data = new ArrayList<TFM_RadarData>();
if (radar_data.isEmpty())
{
playerMsg(sender, "You are the only player in this world. (" + ChatColor.GREEN + "Forever alone..." + ChatColor.YELLOW + ")", ChatColor.YELLOW); //lol
return true;
}
for (Player player : sender_pos.getWorld().getPlayers()) {
if (!player.equals(sender_p)) {
try {
radar_data.add(
new TFM_RadarData(player, sender_pos.distance(player.getLocation()),
player.getLocation()));
} catch (IllegalArgumentException ex) {
}
}
}
Collections.sort(radar_data, new TFM_RadarData());
if (radar_data.isEmpty()) {
playerMsg(sender,
"You are the only player in this world. (" + ChatColor.GREEN + "Forever alone..."
+ ChatColor.YELLOW + ")", ChatColor.YELLOW); //lol
return true;
}
playerMsg(sender, "People nearby in " + sender_pos.getWorld().getName() + ":", ChatColor.YELLOW);
Collections.sort(radar_data, new TFM_RadarData());
int countmax = 5;
if (args.length == 1)
{
try
{
countmax = Math.max(1, Math.min(64, Integer.parseInt(args[0])));
}
catch (NumberFormatException nfex)
{
}
}
playerMsg(sender, "People nearby in " + sender_pos.getWorld().getName() + ":",
ChatColor.YELLOW);
for (TFM_RadarData i : radar_data)
{
playerMsg(sender, String.format("%s - %d",
i.player.getName(),
Math.round(i.distance)), ChatColor.YELLOW);
int countmax = 5;
if (args.length == 1) {
try {
countmax = Math.max(1, Math.min(64, Integer.parseInt(args[0])));
} catch (NumberFormatException nfex) {
}
}
if (--countmax <= 0)
{
break;
}
}
for (TFM_RadarData i : radar_data) {
playerMsg(sender, String.format("%s - %d",
i.player.getName(),
Math.round(i.distance)), ChatColor.YELLOW);
return true;
}
if (--countmax <= 0) {
break;
}
}
private class TFM_RadarData implements Comparator<TFM_RadarData>
{
public Player player;
public double distance;
public Location location;
return true;
}
public TFM_RadarData(Player player, double distance, Location location)
{
this.player = player;
this.distance = distance;
this.location = location;
}
private class TFM_RadarData implements Comparator<TFM_RadarData> {
public TFM_RadarData()
{
}
public Player player;
public double distance;
public Location location;
@Override
public int compare(TFM_RadarData t1, TFM_RadarData t2)
{
if (t1.distance > t2.distance)
{
return 1;
}
else if (t1.distance < t2.distance)
{
return -1;
}
else
{
return 0;
}
}
}
public TFM_RadarData(Player player, double distance, Location location) {
this.player = player;
this.distance = distance;
this.location = location;
}
public TFM_RadarData() {
}
@Override
public int compare(TFM_RadarData t1, TFM_RadarData t2) {
if (t1.distance > t2.distance) {
return 1;
} else if (t1.distance < t2.distance) {
return -1;
} else {
return 0;
}
}
}
}

View file

@ -8,36 +8,40 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
public class Command_rank extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (senderIsConsole && args.length < 1) {
for (Player player : server.getOnlinePlayers()) {
playerMsg(sender, player.getName() + " is " + PlayerRank.fromSender(player).getLoginMessage());
}
return true;
}
if (args.length > 1)
{
return false;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (senderIsConsole && args.length < 1) {
for (Player player : server.getOnlinePlayers()) {
playerMsg(sender,
player.getName() + " is " + PlayerRank.fromSender(player).getLoginMessage());
}
return true;
}
if (args.length == 0)
{
playerMsg(sender, sender.getName() + " is " + PlayerRank.fromSender(sender).getLoginMessage(), ChatColor.AQUA);
return true;
}
if (args.length > 1) {
return false;
}
final Player player = getPlayer(args[0]);
if (args.length == 0) {
playerMsg(sender,
sender.getName() + " is " + PlayerRank.fromSender(sender).getLoginMessage(),
ChatColor.AQUA);
return true;
}
if (player == null)
{
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
final Player player = getPlayer(args[0]);
playerMsg(sender, player.getName() + " is " + PlayerRank.fromSender(player).getLoginMessage(), ChatColor.AQUA);
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
return true;
}
playerMsg(sender,
player.getName() + " is " + PlayerRank.fromSender(player).getLoginMessage(),
ChatColor.AQUA);
return true;
}
}

View file

@ -7,12 +7,14 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
public class Command_rawsay extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length > 0) {
Utilities.bcastMsg(Utilities.colorize(StringUtils.join(args, " ")));
}
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length > 0) {
Utilities.bcastMsg(Utilities.colorize(StringUtils.join(args, " ")));
}
return true;
}
}

View file

@ -6,11 +6,14 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_rd extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Removing all server entities.", true);
playerMsg(sender, (Utilities.TFM_EntityWiper.wipeEntities(true, true)) + " entities removed.");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Removing all server entities.", true);
playerMsg(sender,
(Utilities.TFM_EntityWiper.wipeEntities(true, true)) + " entities removed.");
return true;
}
}

View file

@ -11,39 +11,38 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME, blockHostConsole = true)
public class Command_report extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 2) {
return false;
}
Player player = getPlayer(args[0]);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 2) {
return false;
}
if (player == null) {
playerMsg(sender, PLAYER_NOT_FOUND);
return true;
}
Player player = getPlayer(args[0]);
if (sender instanceof Player)
{
if (player.equals(sender_p))
{
playerMsg(sender, ChatColor.RED + "Please, don't try to report yourself.");
return true;
}
}
if (player == null) {
playerMsg(sender, PLAYER_NOT_FOUND);
return true;
}
if (AdminList.isSuperAdmin(player))
{
playerMsg(sender, ChatColor.RED + "You can not report an admin.");
return true;
}
if (sender instanceof Player) {
if (player.equals(sender_p)) {
playerMsg(sender, ChatColor.RED + "Please, don't try to report yourself.");
return true;
}
}
String report = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
Utilities.reportAction(sender_p, player, report);
if (AdminList.isSuperAdmin(player)) {
playerMsg(sender, ChatColor.RED + "You can not report an admin.");
return true;
}
playerMsg(sender, ChatColor.GREEN + "Thank you, your report has been successfully logged.");
String report = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
Utilities.reportAction(sender_p, player, report);
return true;
}
playerMsg(sender, ChatColor.GREEN + "Thank you, your report has been successfully logged.");
return true;
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.nio.file.Files;
import java.nio.file.Paths;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@ -8,51 +10,53 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.nio.file.Files;
import java.nio.file.Paths;
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH)
public class Command_resetplayer extends FreedomCommand {
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if(args.length < 1) {
return false;
}
OfflinePlayer target = null;
String searchString = args[0];
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel,
String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) {
if(offlinePlayer.getName().equalsIgnoreCase(searchString)) {
target = offlinePlayer;
break;
} else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) {
target = offlinePlayer;
break;
}
}
OfflinePlayer target = null;
String searchString = args[0];
if(target == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) {
if (offlinePlayer.getName().equalsIgnoreCase(searchString)) {
target = offlinePlayer;
break;
} else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) {
target = offlinePlayer;
break;
}
}
if(target.isOnline()) {
target.getPlayer().kickPlayer(ChatColor.RED + "YOU ARE BEING RESET.");
}
if (target == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
Utilities.adminAction(sender.getName(), String.format("Resetting %s's player data", target.getName()), true);
playerMsg(sender, String.format("Resetting %s's player data (excluding TFM)...", target.getName()));
try {
String uuid = target.getUniqueId().toString();
Files.deleteIfExists(Paths.get(".", "world", "playerdata", uuid + ".dat"));
Files.deleteIfExists(Paths.get(".", "plugins", "Essentials", "userdata", uuid + ".yml"));
playerMsg(sender, "Done.");
} catch (Exception e) {
e.printStackTrace();
playerMsg(sender, "Oops");
}
if (target.isOnline()) {
target.getPlayer().kickPlayer(ChatColor.RED + "YOU ARE BEING RESET.");
}
return true;
}
Utilities.adminAction(sender.getName(),
String.format("Resetting %s's player data", target.getName()), true);
playerMsg(sender,
String.format("Resetting %s's player data (excluding TFM)...", target.getName()));
try {
String uuid = target.getUniqueId().toString();
Files.deleteIfExists(Paths.get(".", "world", "playerdata", uuid + ".dat"));
Files.deleteIfExists(
Paths.get(".", "plugins", "Essentials", "userdata", uuid + ".yml"));
playerMsg(sender, "Done.");
} catch (Exception e) {
e.printStackTrace();
playerMsg(sender, "Oops");
}
return true;
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import me.StevenLawson.TotalFreedomMod.world.AdminWorld;
@ -11,113 +13,94 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = false)
public class Command_ro extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1 || args.length > 3) {
return false;
}
final List<Material> materials = new ArrayList<Material>();
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1 || args.length > 3) {
return false;
}
for (String materialName : StringUtils.split(args[0], ",")) {
Material fromMaterial = Material.matchMaterial(materialName);
if (fromMaterial == null)
{
try
{
fromMaterial = DeprecationUtil.getMaterial(Integer.parseInt(materialName));
}
catch (NumberFormatException ex)
{
}
}
final List<Material> materials = new ArrayList<Material>();
if (fromMaterial == null)
{
playerMsg(sender, "Invalid block: " + materialName, ChatColor.RED);
return true;
}
for (String materialName : StringUtils.split(args[0], ",")) {
Material fromMaterial = Material.matchMaterial(materialName);
if (fromMaterial == null) {
try {
fromMaterial = DeprecationUtil.getMaterial(Integer.parseInt(materialName));
} catch (NumberFormatException ex) {
}
}
materials.add(fromMaterial);
}
if (fromMaterial == null) {
playerMsg(sender, "Invalid block: " + materialName, ChatColor.RED);
return true;
}
int radius = 20;
if (args.length >= 2)
{
try
{
radius = Math.max(1, Math.min(50, Integer.parseInt(args[1])));
}
catch (NumberFormatException ex)
{
playerMsg(sender, "Invalid radius: " + args[1], ChatColor.RED);
return true;
}
}
materials.add(fromMaterial);
}
final Player targetPlayer;
if (args.length == 3)
{
targetPlayer = getPlayer(args[2]);
if (targetPlayer == null)
{
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
}
else
{
targetPlayer = null;
}
int radius = 20;
if (args.length >= 2) {
try {
radius = Math.max(1, Math.min(50, Integer.parseInt(args[1])));
} catch (NumberFormatException ex) {
playerMsg(sender, "Invalid radius: " + args[1], ChatColor.RED);
return true;
}
}
final String names = StringUtils.join(materials, ", ");
final Player targetPlayer;
if (args.length == 3) {
targetPlayer = getPlayer(args[2]);
if (targetPlayer == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
} else {
targetPlayer = null;
}
World adminWorld = null;
try
{
adminWorld = AdminWorld.getInstance().getWorld();
}
catch (Exception ex)
{
}
final String names = StringUtils.join(materials, ", ");
int affected = 0;
if (targetPlayer == null)
{
Utilities.adminAction(sender.getName(), "Removing all " + names + " within " + radius + " blocks of all players... Brace for lag!", false);
World adminWorld = null;
try {
adminWorld = AdminWorld.getInstance().getWorld();
} catch (Exception ex) {
}
for (final Player player : server.getOnlinePlayers())
{
if (player.getWorld() == adminWorld)
{
continue;
}
int affected = 0;
if (targetPlayer == null) {
Utilities.adminAction(sender.getName(), "Removing all " + names + " within " + radius
+ " blocks of all players... Brace for lag!", false);
for (final Material material : materials)
{
affected += Utilities.replaceBlocks(player.getLocation(), material, Material.AIR, radius);
}
}
}
else
{
if (targetPlayer.getWorld() != adminWorld)
{
for (Material material : materials)
{
Utilities.adminAction(sender.getName(), "Removing all " + names + " within " + radius + " blocks of " + targetPlayer.getName(), false);
affected += Utilities.replaceBlocks(targetPlayer.getLocation(), material, Material.AIR, radius);
}
}
}
for (final Player player : server.getOnlinePlayers()) {
if (player.getWorld() == adminWorld) {
continue;
}
Utilities.adminAction(sender.getName(), "Remove complete! " + affected + " blocks removed.", false);
for (final Material material : materials) {
affected += Utilities.replaceBlocks(player.getLocation(), material,
Material.AIR, radius);
}
}
} else {
if (targetPlayer.getWorld() != adminWorld) {
for (Material material : materials) {
Utilities.adminAction(sender.getName(),
"Removing all " + names + " within " + radius + " blocks of "
+ targetPlayer.getName(), false);
affected += Utilities.replaceBlocks(targetPlayer.getLocation(), material,
Material.AIR, radius);
}
}
}
return true;
}
Utilities.adminAction(sender.getName(), "Remove complete! " + affected + " blocks removed.",
false);
return true;
}
}

View file

@ -16,265 +16,236 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
public class Command_saconfig extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
final SAConfigMode mode;
try {
mode = SAConfigMode.findMode(args, sender, senderIsConsole);
} catch (final PermissionsException ex) {
playerMsg(sender, ex.getMessage());
return true;
}
catch (final FormatException ex)
{
playerMsg(sender, ex.getMessage());
return false;
}
switch (mode)
{
case LIST:
{
playerMsg(sender, "Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "), ChatColor.GOLD);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
final SAConfigMode mode;
try {
mode = SAConfigMode.findMode(args, sender, senderIsConsole);
} catch (final PermissionsException ex) {
playerMsg(sender, ex.getMessage());
return true;
} catch (final FormatException ex) {
playerMsg(sender, ex.getMessage());
return false;
}
break;
}
case CLEAN:
{
Utilities.adminAction(sender.getName(), "Cleaning superadmin list", true);
AdminList.cleanSuperadminList(true);
playerMsg(sender, "Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "), ChatColor.YELLOW);
switch (mode) {
case LIST: {
playerMsg(sender,
"Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "),
ChatColor.GOLD);
break;
}
case CLEARME:
{
final Admin admin = AdminList.getEntry(sender_p);
break;
}
case CLEAN: {
Utilities.adminAction(sender.getName(), "Cleaning superadmin list", true);
AdminList.cleanSuperadminList(true);
playerMsg(sender,
"Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "),
ChatColor.YELLOW);
if (admin == null)
{
playerMsg(sender, "Could not find your admin entry! Please notify a developer.", ChatColor.RED);
return true;
}
break;
}
case CLEARME: {
final Admin admin = AdminList.getEntry(sender_p);
final String ip = Utilities.getIp(sender_p);
if (admin == null) {
playerMsg(sender, "Could not find your admin entry! Please notify a developer.",
ChatColor.RED);
return true;
}
if (args.length == 1)
{
Utilities.adminAction(sender.getName(), "Cleaning my supered IPs", true);
final String ip = Utilities.getIp(sender_p);
int counter = admin.getIps().size() - 1;
admin.clearIPs();
admin.addIp(ip);
if (args.length == 1) {
Utilities.adminAction(sender.getName(), "Cleaning my supered IPs", true);
AdminList.saveAll();
int counter = admin.getIps().size() - 1;
admin.clearIPs();
admin.addIp(ip);
playerMsg(sender, counter + " IPs removed.");
playerMsg(sender, admin.getIps().get(0) + " is now your only IP address");
}
else
{
if (!admin.getIps().contains(args[1]))
{
playerMsg(sender, "That IP is not registered to you.");
}
else if (ip.equals(args[1]))
{
playerMsg(sender, "You cannot remove your current IP.");
}
else
{
Utilities.adminAction(sender.getName(), "Removing a supered IP", true);
AdminList.saveAll();
admin.removeIp(args[1]);
playerMsg(sender, counter + " IPs removed.");
playerMsg(sender, admin.getIps().get(0) + " is now your only IP address");
} else {
if (!admin.getIps().contains(args[1])) {
playerMsg(sender, "That IP is not registered to you.");
} else if (ip.equals(args[1])) {
playerMsg(sender, "You cannot remove your current IP.");
} else {
Utilities.adminAction(sender.getName(), "Removing a supered IP", true);
AdminList.saveAll();
admin.removeIp(args[1]);
playerMsg(sender, "Removed IP " + args[1]);
playerMsg(sender, "Current IPs: " + StringUtils.join(admin.getIps(), ", "));
}
}
AdminList.saveAll();
break;
}
case INFO:
{
Admin superadmin = AdminList.getEntry(args[1].toLowerCase());
playerMsg(sender, "Removed IP " + args[1]);
playerMsg(sender, "Current IPs: " + StringUtils.join(admin.getIps(), ", "));
}
}
if (superadmin == null)
{
final Player player = getPlayer(args[1]);
if (player != null)
{
superadmin = AdminList.getEntry(player.getName().toLowerCase());
}
}
break;
}
case INFO: {
Admin superadmin = AdminList.getEntry(args[1].toLowerCase());
if (superadmin == null)
{
playerMsg(sender, "Superadmin not found: " + args[1]);
}
else
{
playerMsg(sender, superadmin.toString());
}
if (superadmin == null) {
final Player player = getPlayer(args[1]);
if (player != null) {
superadmin = AdminList.getEntry(player.getName().toLowerCase());
}
}
break;
}
case ADD:
{
OfflinePlayer player = getPlayer(args[1], true); // Exact case-insensitive match.
if (superadmin == null) {
playerMsg(sender, "Superadmin not found: " + args[1]);
} else {
playerMsg(sender, superadmin.toString());
}
if (player == null)
{
final Admin superadmin = AdminList.getEntry(args[1]);
break;
}
case ADD: {
OfflinePlayer player = getPlayer(args[1], true); // Exact case-insensitive match.
if (superadmin == null)
{
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
if (player == null) {
final Admin superadmin = AdminList.getEntry(args[1]);
player = DeprecationUtil.getOfflinePlayer(server, superadmin.getLastLoginName());
}
if (superadmin == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
Utilities.adminAction(sender.getName(), "Adding " + player.getName() + " to the superadmin list", true);
AdminList.addSuperadmin(player);
player = DeprecationUtil.getOfflinePlayer(server,
superadmin.getLastLoginName());
}
if (player.isOnline())
{
final PlayerData playerdata = PlayerData.getPlayerData(player.getPlayer());
Utilities.adminAction(sender.getName(),
"Adding " + player.getName() + " to the superadmin list", true);
AdminList.addSuperadmin(player);
if (playerdata.isFrozen())
{
playerdata.setFrozen(false);
playerMsg(player.getPlayer(), "You have been unfrozen.");
}
}
if (player.isOnline()) {
final PlayerData playerdata = PlayerData.getPlayerData(player.getPlayer());
break;
}
case REMOVE:
{
String targetName = args[1];
if (playerdata.isFrozen()) {
playerdata.setFrozen(false);
playerMsg(player.getPlayer(), "You have been unfrozen.");
}
}
final Player player = getPlayer(targetName, true); // Exact case-insensitive match.
break;
}
case REMOVE: {
String targetName = args[1];
if (player != null)
{
targetName = player.getName();
}
final Player player = getPlayer(targetName, true); // Exact case-insensitive match.
if (!AdminList.getLowercaseSuperNames().contains(targetName.toLowerCase()))
{
playerMsg(sender, "Superadmin not found: " + targetName);
return true;
}
if (player != null) {
targetName = player.getName();
}
Utilities.adminAction(sender.getName(), "Removing " + targetName + " from the superadmin list", true);
AdminList.removeSuperadmin(DeprecationUtil.getOfflinePlayer(server, targetName));
if (!AdminList.getLowercaseSuperNames().contains(targetName.toLowerCase())) {
playerMsg(sender, "Superadmin not found: " + targetName);
return true;
}
// Twitterbot
if (ConfigurationEntry.TWITTERBOT_ENABLED.getBoolean())
{
TwitterHandler.delTwitterVerbose(targetName, sender);
}
Utilities.adminAction(sender.getName(),
"Removing " + targetName + " from the superadmin list", true);
AdminList.removeSuperadmin(DeprecationUtil.getOfflinePlayer(server, targetName));
break;
}
}
// Twitterbot
if (ConfigurationEntry.TWITTERBOT_ENABLED.getBoolean()) {
TwitterHandler.delTwitterVerbose(targetName, sender);
}
return true;
}
break;
}
}
private enum SAConfigMode {
LIST("list", AdminLevel.OP, SourceType.BOTH, 1, 1),
CLEAN("clean", AdminLevel.SENIOR, SourceType.BOTH, 1, 1),
CLEARME("clearme", AdminLevel.SUPER, SourceType.ONLY_IN_GAME, 1, 2),
INFO("info", AdminLevel.SUPER, SourceType.BOTH, 2, 2),
ADD("add", AdminLevel.SUPER, SourceType.BOTH, 2, 2),
REMOVE("remove", AdminLevel.SENIOR, SourceType.BOTH, 2, 2);
private final String modeName;
private final AdminLevel adminLevel;
private final SourceType sourceType;
private final int minArgs;
private final int maxArgs;
return true;
}
SAConfigMode(String modeName, AdminLevel adminLevel, SourceType sourceType, int minArgs, int maxArgs) {
this.modeName = modeName;
this.adminLevel = adminLevel;
this.sourceType = sourceType;
this.minArgs = minArgs;
this.maxArgs = maxArgs;
}
private enum SAConfigMode {
LIST("list", AdminLevel.OP, SourceType.BOTH, 1, 1),
CLEAN("clean", AdminLevel.SENIOR, SourceType.BOTH, 1, 1),
CLEARME("clearme", AdminLevel.SUPER, SourceType.ONLY_IN_GAME, 1, 2),
INFO("info", AdminLevel.SUPER, SourceType.BOTH, 2, 2),
ADD("add", AdminLevel.SUPER, SourceType.BOTH, 2, 2),
REMOVE("remove", AdminLevel.SENIOR, SourceType.BOTH, 2, 2);
private final String modeName;
private final AdminLevel adminLevel;
private final SourceType sourceType;
private final int minArgs;
private final int maxArgs;
private static SAConfigMode findMode(final String[] args, final CommandSender sender, final boolean senderIsConsole) throws PermissionsException, FormatException
{
if (args.length == 0)
{
throw new FormatException("Invalid number of arguments.");
}
SAConfigMode(String modeName, AdminLevel adminLevel, SourceType sourceType, int minArgs,
int maxArgs) {
this.modeName = modeName;
this.adminLevel = adminLevel;
this.sourceType = sourceType;
this.minArgs = minArgs;
this.maxArgs = maxArgs;
}
boolean isSuperAdmin = AdminList.isSuperAdmin(sender);
boolean isSeniorAdmin = isSuperAdmin && AdminList.isSeniorAdmin(sender, false);
private static SAConfigMode findMode(final String[] args, final CommandSender sender,
final boolean senderIsConsole) throws PermissionsException, FormatException {
if (args.length == 0) {
throw new FormatException("Invalid number of arguments.");
}
for (final SAConfigMode mode : values())
{
if (mode.modeName.equalsIgnoreCase(args[0]))
{
if (mode.adminLevel == AdminLevel.SUPER) {
if (!isSuperAdmin) {
throw new PermissionsException(FreedomCommand.MSG_NO_PERMS);
}
} else if (mode.adminLevel == AdminLevel.SENIOR) {
if (!isSeniorAdmin) {
throw new PermissionsException(FreedomCommand.MSG_NO_PERMS);
}
}
boolean isSuperAdmin = AdminList.isSuperAdmin(sender);
boolean isSeniorAdmin = isSuperAdmin && AdminList.isSeniorAdmin(sender, false);
if (mode.sourceType == SourceType.ONLY_IN_GAME)
{
if (senderIsConsole)
{
throw new PermissionsException("This command may only be used in-game.");
}
}
else if (mode.sourceType == SourceType.ONLY_CONSOLE)
{
if (!senderIsConsole)
{
throw new PermissionsException("This command may only be used from the console.");
}
}
for (final SAConfigMode mode : values()) {
if (mode.modeName.equalsIgnoreCase(args[0])) {
if (mode.adminLevel == AdminLevel.SUPER) {
if (!isSuperAdmin) {
throw new PermissionsException(FreedomCommand.MSG_NO_PERMS);
}
} else if (mode.adminLevel == AdminLevel.SENIOR) {
if (!isSeniorAdmin) {
throw new PermissionsException(FreedomCommand.MSG_NO_PERMS);
}
}
if (args.length >= mode.minArgs && args.length <= mode.maxArgs)
{
return mode;
}
else
{
throw new FormatException("Invalid number of arguments for mode: " + mode.modeName);
}
}
}
if (mode.sourceType == SourceType.ONLY_IN_GAME) {
if (senderIsConsole) {
throw new PermissionsException(
"This command may only be used in-game.");
}
} else if (mode.sourceType == SourceType.ONLY_CONSOLE) {
if (!senderIsConsole) {
throw new PermissionsException(
"This command may only be used from the console.");
}
}
throw new FormatException("Invalid mode.");
}
}
if (args.length >= mode.minArgs && args.length <= mode.maxArgs) {
return mode;
} else {
throw new FormatException(
"Invalid number of arguments for mode: " + mode.modeName);
}
}
}
private static class PermissionsException extends Exception
{
public PermissionsException(final String message)
{
super(message);
}
}
throw new FormatException("Invalid mode.");
}
}
private static class FormatException extends Exception
{
public FormatException(final String message)
{
super(message);
}
}
private static class PermissionsException extends Exception {
public PermissionsException(final String message) {
super(message);
}
}
private static class FormatException extends Exception {
public FormatException(final String message) {
super(message);
}
}
}

View file

@ -9,32 +9,33 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_say extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
String message = StringUtils.join(args, " ");
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
if (senderIsConsole && Utilities.isFromHostConsole(sender.getName())) {
if (message.equalsIgnoreCase("WARNING: Server is restarting, you will be kicked"))
{
Utilities.bcastMsg("Server is going offline.", ChatColor.GRAY);
String message = StringUtils.join(args, " ");
for (Player player : server.getOnlinePlayers())
{
player.kickPlayer("Server is going offline, come back in about 20 seconds.");
}
if (senderIsConsole && Utilities.isFromHostConsole(sender.getName())) {
if (message.equalsIgnoreCase("WARNING: Server is restarting, you will be kicked")) {
Utilities.bcastMsg("Server is going offline.", ChatColor.GRAY);
server.shutdown();
for (Player player : server.getOnlinePlayers()) {
player.kickPlayer("Server is going offline, come back in about 20 seconds.");
}
return true;
}
}
server.shutdown();
Utilities.bcastMsg(String.format("[Server:%s] %s", sender.getName(), message), ChatColor.LIGHT_PURPLE);
return true;
}
}
return true;
}
Utilities.bcastMsg(String.format("[Server:%s] %s", sender.getName(), message),
ChatColor.LIGHT_PURPLE);
return true;
}
}

View file

@ -8,12 +8,15 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_setl extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(), "Setting everyone's Worldedit block modification limit to 2500.", true);
for (final Player player : server.getOnlinePlayers()) {
WorldEditBridge.setLimit(player, 2500);
}
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.adminAction(sender.getName(),
"Setting everyone's Worldedit block modification limit to 2500.", true);
for (final Player player : server.getOnlinePlayers()) {
WorldEditBridge.setLimit(player, 2500);
}
return true;
}
}

View file

@ -6,36 +6,34 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
public class Command_setlevel extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
int new_level;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
try {
new_level = Integer.parseInt(args[0]);
int new_level;
if (new_level < 0)
{
new_level = 0;
}
else if (new_level > 50)
{
new_level = 50;
}
}
catch (NumberFormatException ex)
{
playerMsg(sender, "Invalid level.", ChatColor.RED);
return true;
}
try {
new_level = Integer.parseInt(args[0]);
sender_p.setLevel(new_level);
if (new_level < 0) {
new_level = 0;
} else if (new_level > 50) {
new_level = 50;
}
} catch (NumberFormatException ex) {
playerMsg(sender, "Invalid level.", ChatColor.RED);
return true;
}
playerMsg(sender, "You have been set to level " + Integer.toString(new_level), ChatColor.AQUA);
sender_p.setLevel(new_level);
return true;
}
playerMsg(sender, "You have been set to level " + new_level,
ChatColor.AQUA);
return true;
}
}

View file

@ -1,5 +1,6 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
import org.bukkit.Location;
import org.bukkit.Material;
@ -8,65 +9,59 @@ import org.bukkit.block.Block;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import java.util.List;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
public class Command_setlever extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 5) {
return false;
}
double x, y, z;
try {
x = Double.parseDouble(args[0]);
y = Double.parseDouble(args[1]);
z = Double.parseDouble(args[2]);
}
catch (NumberFormatException ex)
{
playerMsg(sender, "Invalid coordinates.");
return true;
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 5) {
return false;
}
World world = null;
final String needleWorldName = args[3].trim();
final List<World> worlds = server.getWorlds();
for (final World testWorld : worlds)
{
if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName))
{
world = testWorld;
break;
}
}
double x, y, z;
try {
x = Double.parseDouble(args[0]);
y = Double.parseDouble(args[1]);
z = Double.parseDouble(args[2]);
} catch (NumberFormatException ex) {
playerMsg(sender, "Invalid coordinates.");
return true;
}
if (world == null)
{
playerMsg(sender, "Invalid world name.");
return true;
}
World world = null;
final String needleWorldName = args[3].trim();
final List<World> worlds = server.getWorlds();
for (final World testWorld : worlds) {
if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName)) {
world = testWorld;
break;
}
}
final Location leverLocation = new Location(world, x, y, z);
if (world == null) {
playerMsg(sender, "Invalid world name.");
return true;
}
final boolean leverOn = (args[4].trim().equalsIgnoreCase("on") || args[4].trim().equalsIgnoreCase("1"));
final Location leverLocation = new Location(world, x, y, z);
final Block targetBlock = leverLocation.getBlock();
final boolean leverOn = (args[4].trim().equalsIgnoreCase("on") || args[4].trim()
.equalsIgnoreCase("1"));
if (targetBlock.getType() == Material.LEVER)
{
org.bukkit.material.Lever lever = DeprecationUtil.makeLeverWithData(DeprecationUtil.getData_Block(targetBlock));
lever.setPowered(leverOn);
DeprecationUtil.setData_Block(targetBlock, DeprecationUtil.getData_MaterialData(lever));
targetBlock.getState().update();
}
else
{
playerMsg(sender, "Target block " + targetBlock + " is not a lever.");
return true;
}
final Block targetBlock = leverLocation.getBlock();
return true;
}
if (targetBlock.getType() == Material.LEVER) {
org.bukkit.material.Lever lever = DeprecationUtil.makeLeverWithData(
DeprecationUtil.getData_Block(targetBlock));
lever.setPowered(leverOn);
DeprecationUtil.setData_Block(targetBlock, DeprecationUtil.getData_MaterialData(lever));
targetBlock.getState().update();
} else {
playerMsg(sender, "Target block " + targetBlock + " is not a lever.");
return true;
}
return true;
}
}

View file

@ -9,17 +9,22 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
public class Command_setspawnworld extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Location pos = sender_p.getLocation();
sender_p.getWorld().setSpawnLocation(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
playerMsg(sender, "Spawn location for this world set to: " + Utilities.formatLocation(sender_p.getWorld().getSpawnLocation()));
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Location pos = sender_p.getLocation();
sender_p.getWorld().setSpawnLocation(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ());
if (ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean() && ConfigurationEntry.PROTECTAREA_SPAWNPOINTS.getBoolean()) {
ProtectedArea.addProtectedArea("spawn_" + sender_p.getWorld().getName(), pos, ConfigurationEntry.PROTECTAREA_RADIUS.getDouble());
}
playerMsg(sender, "Spawn location for this world set to: " + Utilities.formatLocation(
sender_p.getWorld().getSpawnLocation()));
return true;
}
if (ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()
&& ConfigurationEntry.PROTECTAREA_SPAWNPOINTS.getBoolean()) {
ProtectedArea.addProtectedArea("spawn_" + sender_p.getWorld().getName(), pos,
ConfigurationEntry.PROTECTAREA_RADIUS.getDouble());
}
return true;
}
}

View file

@ -11,50 +11,50 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_smite extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
final Player player = getPlayer(args[0]);
public static void smite(final Player player) {
Utilities.bcastMsg(player.getName() + " has been a naughty, naughty boy.", ChatColor.RED);
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
//Deop
player.setOp(false);
smite(player);
//Set gamemode to survival:
player.setGameMode(GameMode.SURVIVAL);
return true;
}
//Clear inventory:
player.getInventory().clear();
public static void smite(final Player player)
{
Utilities.bcastMsg(player.getName() + " has been a naughty, naughty boy.", ChatColor.RED);
//Strike with lightning effect:
final Location targetPos = player.getLocation();
final World world = player.getWorld();
for (int x = -1; x <= 1; x++) {
for (int z = -1; z <= 1; z++) {
final Location strike_pos = new Location(world, targetPos.getBlockX() + x,
targetPos.getBlockY(), targetPos.getBlockZ() + z);
world.strikeLightning(strike_pos);
}
}
//Deop
player.setOp(false);
//Kill:
player.setHealth(0.0);
}
//Set gamemode to survival:
player.setGameMode(GameMode.SURVIVAL);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
//Clear inventory:
player.getInventory().clear();
final Player player = getPlayer(args[0]);
//Strike with lightning effect:
final Location targetPos = player.getLocation();
final World world = player.getWorld();
for (int x = -1; x <= 1; x++)
{
for (int z = -1; z <= 1; z++)
{
final Location strike_pos = new Location(world, targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
world.strikeLightning(strike_pos);
}
}
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
//Kill:
player.setHealth(0.0);
}
smite(player);
return true;
}
}

View file

@ -8,49 +8,46 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_spectator extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (senderIsConsole) {
if (args.length == 0) {
sender.sendMessage("When used from the console, you must define a target user to change gamemode on.");
return true;
}
}
Player player;
if (args.length == 0)
{
player = sender_p;
}
else
{
if (args[0].equalsIgnoreCase("-a"))
{
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (senderIsConsole) {
if (args.length == 0) {
sender.sendMessage(
"When used from the console, you must define a target user to change gamemode on.");
return true;
}
}
for (Player targetPlayer : server.getOnlinePlayers())
{
targetPlayer.setGameMode(GameMode.SPECTATOR);
}
Player player;
if (args.length == 0) {
player = sender_p;
} else {
if (args[0].equalsIgnoreCase("-a")) {
Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to spectator", false);
return true;
}
for (Player targetPlayer : server.getOnlinePlayers()) {
targetPlayer.setGameMode(GameMode.SPECTATOR);
}
Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to spectator",
false);
return true;
}
player = getPlayer(args[0]);
player = getPlayer(args[0]);
if (player == null)
{
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
}
}
playerMsg(sender, "Setting " + player.getName() + " to game mode 'Spectator'.");
playerMsg(player, sender.getName() + " set your game mode to 'Spectator'.");
player.setGameMode(GameMode.SPECTATOR);
playerMsg(sender, "Setting " + player.getName() + " to game mode 'Spectator'.");
playerMsg(player, sender.getName() + " set your game mode to 'Spectator'.");
player.setGameMode(GameMode.SPECTATOR);
return true;
}
return true;
}
}

View file

@ -1,37 +1,42 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.ChatColor;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import java.util.HashMap;
import java.util.Map;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
public class Command_status extends FreedomCommand {
public static final Map<String, String> SERVICE_MAP = new HashMap<String, String>();
static {
SERVICE_MAP.put("minecraft.net", "Minecraft.net");
SERVICE_MAP.put("login.minecraft.net", "Minecraft Logins");
SERVICE_MAP.put("session.minecraft.net", "Minecraft Multiplayer Sessions");
SERVICE_MAP.put("account.mojang.com", "Mojang Accounts Website");
SERVICE_MAP.put("auth.mojang.com", "Mojang Accounts Login");
SERVICE_MAP.put("skins.minecraft.net", "Minecraft Skins");
}
public static final Map<String, String> SERVICE_MAP = new HashMap<String, String>();
@Override
public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
playerMsg(sender, "For information about TotalFreedomMod, try /tfm", ChatColor.GREEN); // Temporary
static {
SERVICE_MAP.put("minecraft.net", "Minecraft.net");
SERVICE_MAP.put("login.minecraft.net", "Minecraft Logins");
SERVICE_MAP.put("session.minecraft.net", "Minecraft Multiplayer Sessions");
SERVICE_MAP.put("account.mojang.com", "Mojang Accounts Website");
SERVICE_MAP.put("auth.mojang.com", "Mojang Accounts Login");
SERVICE_MAP.put("skins.minecraft.net", "Minecraft Skins");
}
playerMsg(sender, "Server is currently running with 'online-mode=" + (server.getOnlineMode() ? "true" : "false") + "'.", ChatColor.YELLOW);
playerMsg(sender, "Loaded worlds:", ChatColor.BLUE);
int i = 0;
for (World world : server.getWorlds()) {
playerMsg(sender, String.format("World %d: %s - %d players.", i++, world.getName(), world.getPlayers().size()), ChatColor.BLUE);
}
@Override
public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
playerMsg(sender, "For information about TotalFreedomMod, try /tfm",
ChatColor.GREEN); // Temporary
return true;
}
playerMsg(sender,
"Server is currently running with 'online-mode=" + (server.getOnlineMode() ? "true"
: "false") + "'.", ChatColor.YELLOW);
playerMsg(sender, "Loaded worlds:", ChatColor.BLUE);
int i = 0;
for (World world : server.getWorlds()) {
playerMsg(sender, String.format("World %d: %s - %d players.", i++, world.getName(),
world.getPlayers().size()), ChatColor.BLUE);
}
return true;
}
}

View file

@ -9,102 +9,83 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_stfu extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0 || args.length > 2) {
return false;
}
if (args[0].equalsIgnoreCase("list")) {
playerMsg(sender, "Muted players:");
PlayerData info;
int count = 0;
for (Player mp : server.getOnlinePlayers())
{
info = PlayerData.getPlayerData(mp);
if (info.isMuted())
{
playerMsg(sender, "- " + mp.getName());
count++;
}
}
if (count == 0)
{
playerMsg(sender, "- none");
}
}
else if (args[0].equalsIgnoreCase("purge"))
{
Utilities.adminAction(sender.getName(), "Unmuting all players.", true);
PlayerData info;
int count = 0;
for (Player mp : server.getOnlinePlayers())
{
info = PlayerData.getPlayerData(mp);
if (info.isMuted())
{
info.setMuted(false);
count++;
}
}
playerMsg(sender, "Unmuted " + count + " players.");
}
else if (args[0].equalsIgnoreCase("all"))
{
Utilities.adminAction(sender.getName(), "Muting all non-Superadmins", true);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0 || args.length > 2) {
return false;
}
PlayerData playerdata;
int counter = 0;
for (Player player : server.getOnlinePlayers())
{
if (!AdminList.isSuperAdmin(player))
{
playerdata = PlayerData.getPlayerData(player);
playerdata.setMuted(true);
counter++;
}
}
if (args[0].equalsIgnoreCase("list")) {
playerMsg(sender, "Muted players:");
PlayerData info;
int count = 0;
for (Player mp : server.getOnlinePlayers()) {
info = PlayerData.getPlayerData(mp);
if (info.isMuted()) {
playerMsg(sender, "- " + mp.getName());
count++;
}
}
if (count == 0) {
playerMsg(sender, "- none");
}
} else if (args[0].equalsIgnoreCase("purge")) {
Utilities.adminAction(sender.getName(), "Unmuting all players.", true);
PlayerData info;
int count = 0;
for (Player mp : server.getOnlinePlayers()) {
info = PlayerData.getPlayerData(mp);
if (info.isMuted()) {
info.setMuted(false);
count++;
}
}
playerMsg(sender, "Unmuted " + count + " players.");
} else if (args[0].equalsIgnoreCase("all")) {
Utilities.adminAction(sender.getName(), "Muting all non-Superadmins", true);
playerMsg(sender, "Muted " + counter + " players.");
}
else
{
final Player player = getPlayer(args[0]);
PlayerData playerdata;
int counter = 0;
for (Player player : server.getOnlinePlayers()) {
if (!AdminList.isSuperAdmin(player)) {
playerdata = PlayerData.getPlayerData(player);
playerdata.setMuted(true);
counter++;
}
}
if (player == null)
{
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
playerMsg(sender, "Muted " + counter + " players.");
} else {
final Player player = getPlayer(args[0]);
PlayerData playerdata = PlayerData.getPlayerData(player);
if (playerdata.isMuted())
{
Utilities.adminAction(sender.getName(), "Unmuting " + player.getName(), true);
playerdata.setMuted(false);
playerMsg(sender, "Unmuted " + player.getName());
}
else
{
if (!AdminList.isSuperAdmin(player))
{
Utilities.adminAction(sender.getName(), "Muting " + player.getName(), true);
playerdata.setMuted(true);
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
if (args.length == 2 && args[1].equalsIgnoreCase("-s"))
{
Command_smite.smite(player);
}
PlayerData playerdata = PlayerData.getPlayerData(player);
if (playerdata.isMuted()) {
Utilities.adminAction(sender.getName(), "Unmuting " + player.getName(), true);
playerdata.setMuted(false);
playerMsg(sender, "Unmuted " + player.getName());
} else {
if (!AdminList.isSuperAdmin(player)) {
Utilities.adminAction(sender.getName(), "Muting " + player.getName(), true);
playerdata.setMuted(true);
playerMsg(sender, "Muted " + player.getName());
}
else
{
playerMsg(sender, player.getName() + " is a superadmin, and can't be muted.");
}
}
}
if (args.length == 2 && args[1].equalsIgnoreCase("-s")) {
Command_smite.smite(player);
}
return true;
}
playerMsg(sender, "Muted " + player.getName());
} else {
playerMsg(sender, player.getName() + " is a superadmin, and can't be muted.");
}
}
}
return true;
}
}

View file

@ -8,16 +8,18 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_stop extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.bcastMsg("Server is going offline!", ChatColor.LIGHT_PURPLE);
for (Player player : server.getOnlinePlayers()) {
player.kickPlayer("Server is going offline, come back in about 20 seconds.");
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
Utilities.bcastMsg("Server is going offline!", ChatColor.LIGHT_PURPLE);
server.shutdown();
for (Player player : server.getOnlinePlayers()) {
player.kickPlayer("Server is going offline, come back in about 20 seconds.");
}
return true;
}
server.shutdown();
return true;
}
}

View file

@ -9,61 +9,55 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
public class Command_survival extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (senderIsConsole) {
if (args.length == 0) {
playerMsg(sender, "When used from the console, you must define a target user to change gamemode on.");
return true;
}
}
Player player;
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (senderIsConsole) {
if (args.length == 0) {
playerMsg(sender,
"When used from the console, you must define a target user to change gamemode on.");
return true;
}
}
if (args.length == 0)
{
player = sender_p;
}
else
{
if (args[0].equalsIgnoreCase("-a"))
{
if (!AdminList.isSuperAdmin(sender) || senderIsConsole)
{
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
return true;
}
Player player;
for (Player targetPlayer : server.getOnlinePlayers())
{
targetPlayer.setGameMode(GameMode.SURVIVAL);
}
if (args.length == 0) {
player = sender_p;
} else {
if (args[0].equalsIgnoreCase("-a")) {
if (!AdminList.isSuperAdmin(sender) || senderIsConsole) {
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
return true;
}
Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to survival", false);
return true;
}
for (Player targetPlayer : server.getOnlinePlayers()) {
targetPlayer.setGameMode(GameMode.SURVIVAL);
}
if (senderIsConsole || AdminList.isSuperAdmin(sender))
{
player = getPlayer(args[0]);
Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to survival",
false);
return true;
}
if (player == null)
{
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
}
else
{
playerMsg(sender, "Only superadmins can change other user's gamemode.");
return true;
}
}
if (senderIsConsole || AdminList.isSuperAdmin(sender)) {
player = getPlayer(args[0]);
playerMsg(sender, "Setting " + player.getName() + " to game mode 'Survival'.");
player.sendMessage(sender.getName() + " set your game mode to 'Survival'.");
player.setGameMode(GameMode.SURVIVAL);
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
} else {
playerMsg(sender, "Only superadmins can change other user's gamemode.");
return true;
}
}
return true;
}
playerMsg(sender, "Setting " + player.getName() + " to game mode 'Survival'.");
player.sendMessage(sender.getName() + " set your game mode to 'Survival'.");
player.setGameMode(GameMode.SURVIVAL);
return true;
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.Arrays;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import me.StevenLawson.TotalFreedomMod.config.TagConfiguration;
import me.StevenLawson.TotalFreedomMod.player.PlayerData;
@ -10,206 +12,185 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.Arrays;
import java.util.List;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
public class Command_tag extends FreedomCommand {
public static final List<String> FORBIDDEN_WORDS = Arrays.asList("admin", "owner", "moderator", "developer", "console");
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 1) {
if ("list".equalsIgnoreCase(args[0])) {
playerMsg(sender, "Tags for all online players:");
public static final List<String> FORBIDDEN_WORDS = Arrays.asList("admin", "owner", "moderator",
"developer", "console");
for (final Player player : server.getOnlinePlayers()) {
final PlayerData playerdata = PlayerData.getPlayerData(player);
if (playerdata.getTag() != null)
{
playerMsg(sender, player.getName() + ": " + playerdata.getTag());
}
}
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 1) {
if ("list".equalsIgnoreCase(args[0])) {
playerMsg(sender, "Tags for all online players:");
return true;
}
else if ("clearall".equalsIgnoreCase(args[0]))
{
if (!AdminList.isSuperAdmin(sender))
{
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
return true;
}
for (final Player player : server.getOnlinePlayers()) {
final PlayerData playerdata = PlayerData.getPlayerData(player);
if (playerdata.getTag() != null) {
playerMsg(sender, player.getName() + ": " + playerdata.getTag());
}
}
Utilities.adminAction(sender.getName(), "Removing all tags", false);
return true;
} else if ("clearall".equalsIgnoreCase(args[0])) {
if (!AdminList.isSuperAdmin(sender)) {
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
return true;
}
int count = 0;
for (final Player player : server.getOnlinePlayers())
{
final PlayerData playerdata = PlayerData.getPlayerData(player);
if (playerdata.getTag() != null)
{
count++;
if(TagConfiguration.getTag(playerdata.getUniqueId().toString()) != null){
String playerTag = TagConfiguration.getTag(playerdata.getUniqueId().toString());
if(!"".equalsIgnoreCase(playerTag)){
TagConfiguration.saveTag(sender_p.getUniqueId().toString(), "");
}
}
playerdata.setTag(null);
}
}
Utilities.adminAction(sender.getName(), "Removing all tags", false);
playerMsg(sender, count + " tag(s) removed.");
int count = 0;
for (final Player player : server.getOnlinePlayers()) {
final PlayerData playerdata = PlayerData.getPlayerData(player);
if (playerdata.getTag() != null) {
count++;
if (TagConfiguration.getTag(playerdata.getUniqueId().toString()) != null) {
String playerTag = TagConfiguration.getTag(
playerdata.getUniqueId().toString());
if (!"".equalsIgnoreCase(playerTag)) {
TagConfiguration.saveTag(sender_p.getUniqueId().toString(), "");
}
}
playerdata.setTag(null);
}
}
return true;
}
else if ("off".equalsIgnoreCase(args[0]))
{
if (senderIsConsole)
{
playerMsg(sender, "\"/tag off\" can't be used from the console. Use \"/tag clear <player>\" or \"/tag clearall\" instead.");
}
else
{
PlayerData.getPlayerData(sender_p).setTag(null);
if(TagConfiguration.getTag(sender_p.getUniqueId().toString()) != null){
String playerTag = TagConfiguration.getTag(sender_p.getUniqueId().toString());
if(!"".equalsIgnoreCase(playerTag)){
TagConfiguration.saveTag(sender_p.getUniqueId().toString(), "");
}
}
playerMsg(sender, "Your tag has been removed.");
}
playerMsg(sender, count + " tag(s) removed.");
return true;
}
else
{
return false;
}
}
else if (args.length >= 2)
{
if ("clear".equalsIgnoreCase(args[0]))
{
if (!AdminList.isSuperAdmin(sender))
{
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
return true;
}
return true;
} else if ("off".equalsIgnoreCase(args[0])) {
if (senderIsConsole) {
playerMsg(sender,
"\"/tag off\" can't be used from the console. Use \"/tag clear <player>\" or \"/tag clearall\" instead.");
} else {
PlayerData.getPlayerData(sender_p).setTag(null);
if (TagConfiguration.getTag(sender_p.getUniqueId().toString()) != null) {
String playerTag = TagConfiguration.getTag(
sender_p.getUniqueId().toString());
if (!"".equalsIgnoreCase(playerTag)) {
TagConfiguration.saveTag(sender_p.getUniqueId().toString(), "");
}
}
playerMsg(sender, "Your tag has been removed.");
}
final Player player = getPlayer(args[1]);
if (player == null)
{
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
PlayerData.getPlayerData(player).setTag(null);
if(TagConfiguration.getTag(player.getUniqueId().toString()) != null){
String playerTag = TagConfiguration.getTag(player.getUniqueId().toString());
if(!"".equalsIgnoreCase(playerTag)){
TagConfiguration.saveTag(player.getUniqueId().toString(), "");
}
}
playerMsg(sender, "Removed " + player.getName() + "'s tag.");
return true;
} else {
return false;
}
} else if (args.length >= 2) {
if ("clear".equalsIgnoreCase(args[0])) {
if (!AdminList.isSuperAdmin(sender)) {
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
return true;
}
return true;
}
else if ("set".equalsIgnoreCase(args[0]))
{
final String inputTag = StringUtils.join(args, " ", 1, args.length);
final String outputTag = Utilities.colorize(StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag),
new String[]
{
"" + ChatColor.COLOR_CHAR, "&k"
},
new String[]
{
"", ""
})) + ChatColor.RESET;
final Player player = getPlayer(args[1]);
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
PlayerData.getPlayerData(player).setTag(null);
if (TagConfiguration.getTag(player.getUniqueId().toString()) != null) {
String playerTag = TagConfiguration.getTag(player.getUniqueId().toString());
if (!"".equalsIgnoreCase(playerTag)) {
TagConfiguration.saveTag(player.getUniqueId().toString(), "");
}
}
playerMsg(sender, "Removed " + player.getName() + "'s tag.");
if (!AdminList.isSuperAdmin(sender))
{
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
return true;
} else if ("set".equalsIgnoreCase(args[0])) {
final String inputTag = StringUtils.join(args, " ", 1, args.length);
final String outputTag = Utilities.colorize(
StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag),
new String[]
{
"" + ChatColor.COLOR_CHAR, "&k"
},
new String[]
{
"", ""
})) + ChatColor.RESET;
if (rawTag.length() > 20)
{
playerMsg(sender, "That tag is too long (Max is 20 characters).");
return true;
}
if (!AdminList.isSuperAdmin(sender)) {
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
for (String word : FORBIDDEN_WORDS)
{
if (rawTag.contains(word))
{
{
if(word.equals("developer") && Utilities.DEVELOPERS.contains(sender_p.getName())) {
PlayerData.getPlayerData(sender_p).setTag(outputTag);
playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'.");
} else
playerMsg(sender, "That tag contains a forbidden word.");
return true;
}
}
}
}
if (rawTag.length() > 20) {
playerMsg(sender, "That tag is too long (Max is 20 characters).");
return true;
}
PlayerData.getPlayerData(sender_p).setTag(outputTag);
playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'.");
for (String word : FORBIDDEN_WORDS) {
if (rawTag.contains(word)) {
{
if (word.equals("developer") && Utilities.DEVELOPERS.contains(
sender_p.getName())) {
PlayerData.getPlayerData(sender_p).setTag(outputTag);
playerMsg(sender,
"Tag set to '" + outputTag + ChatColor.GRAY + "'.");
} else {
playerMsg(sender, "That tag contains a forbidden word.");
}
return true;
}
}
}
}
return true;
}
else if ("-s".equalsIgnoreCase(args[0]) && "set".equalsIgnoreCase(args[1]))
{
final String inputTag = StringUtils.join(args, " ", 2, args.length);
final String outputTag = Utilities.colorize(StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag),
new String[]
{
"" + ChatColor.COLOR_CHAR, "&k"
},
new String[]
{
"", ""
})) + ChatColor.RESET;
PlayerData.getPlayerData(sender_p).setTag(outputTag);
playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'.");
if (!AdminList.isSuperAdmin(sender))
{
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
return true;
} else if ("-s".equalsIgnoreCase(args[0]) && "set".equalsIgnoreCase(args[1])) {
final String inputTag = StringUtils.join(args, " ", 2, args.length);
final String outputTag = Utilities.colorize(
StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag),
new String[]
{
"" + ChatColor.COLOR_CHAR, "&k"
},
new String[]
{
"", ""
})) + ChatColor.RESET;
if (rawTag.length() > 20)
{
playerMsg(sender, "That tag is too long (Max is 20 characters).");
return true;
}
if (!AdminList.isSuperAdmin(sender)) {
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
for (String word : FORBIDDEN_WORDS)
{
if (rawTag.contains(word))
{
if(word.equals("developer") && Utilities.DEVELOPERS.contains(sender_p.getName())) {
PlayerData.getPlayerData(sender_p).setTag(outputTag);
TagConfiguration.saveTag(sender_p.getUniqueId().toString(), outputTag);
playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)");
} else
playerMsg(sender, "That tag contains a forbidden word.");
return true;
}
}
}
if (rawTag.length() > 20) {
playerMsg(sender, "That tag is too long (Max is 20 characters).");
return true;
}
PlayerData.getPlayerData(sender_p).setTag(outputTag);
TagConfiguration.saveTag(sender_p.getUniqueId().toString(), outputTag);
playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)");
return true;
} else
{
return false;
}
}
else
{
return false;
}
}
for (String word : FORBIDDEN_WORDS) {
if (rawTag.contains(word)) {
if (word.equals("developer") && Utilities.DEVELOPERS.contains(
sender_p.getName())) {
PlayerData.getPlayerData(sender_p).setTag(outputTag);
TagConfiguration.saveTag(sender_p.getUniqueId().toString(),
outputTag);
playerMsg(sender,
"Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)");
} else {
playerMsg(sender, "That tag contains a forbidden word.");
}
return true;
}
}
}
PlayerData.getPlayerData(sender_p).setTag(outputTag);
TagConfiguration.saveTag(sender_p.getUniqueId().toString(), outputTag);
playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)");
return true;
} else {
return false;
}
} else {
return false;
}
}
}

View file

@ -9,23 +9,26 @@ import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
public class Command_tagnyan extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
final StringBuilder tag = new StringBuilder();
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
for (char c : ChatColor.stripColor(Utilities.colorize(StringUtils.join(args, " "))).toCharArray()) {
tag.append(Utilities.randomChatColor()).append(c);
}
final StringBuilder tag = new StringBuilder();
final PlayerData data = PlayerData.getPlayerData(sender_p);
data.setTag(tag.toString());
for (char c : ChatColor.stripColor(Utilities.colorize(StringUtils.join(args, " ")))
.toCharArray()) {
tag.append(Utilities.randomChatColor()).append(c);
}
playerMsg(sender, "Set tag to " + tag);
final PlayerData data = PlayerData.getPlayerData(sender_p);
data.setTag(tag.toString());
return true;
}
playerMsg(sender, "Set tag to " + tag);
return true;
}
}

View file

@ -12,38 +12,45 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_tban extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
final Player player = getPlayer(args[0]);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
final Player player = getPlayer(args[0]);
// strike with lightning effect:
final Location targetPos = player.getLocation();
for (int x = -1; x <= 1; x++)
{
for (int z = -1; z <= 1; z++)
{
final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
targetPos.getWorld().strikeLightning(strike_pos);
}
}
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
return true;
}
Utilities.adminAction(sender.getName(), "Tempbanning: " + player.getName() + " for 5 minutes.", true);
BanManager.addUuidBan(
new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), Utilities.parseDateOffset("5m"), ChatColor.RED + "You have been temporarily banned for 5 minutes."));
BanManager.addIpBan(
new Ban(Utilities.getIp(player), player.getName(), sender.getName(), Utilities.parseDateOffset("5m"), ChatColor.RED + "You have been temporarily banned for 5 minutes."));
// strike with lightning effect:
final Location targetPos = player.getLocation();
for (int x = -1; x <= 1; x++) {
for (int z = -1; z <= 1; z++) {
final Location strike_pos = new Location(targetPos.getWorld(),
targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
targetPos.getWorld().strikeLightning(strike_pos);
}
}
player.kickPlayer(ChatColor.RED + "You have been temporarily banned for five minutes. Please read totalfreedom.me for more info.");
Utilities.adminAction(sender.getName(),
"Tempbanning: " + player.getName() + " for 5 minutes.", true);
BanManager.addUuidBan(
new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(),
Utilities.parseDateOffset("5m"),
ChatColor.RED + "You have been temporarily banned for 5 minutes."));
BanManager.addIpBan(
new Ban(Utilities.getIp(player), player.getName(), sender.getName(),
Utilities.parseDateOffset("5m"),
ChatColor.RED + "You have been temporarily banned for 5 minutes."));
return true;
}
player.kickPlayer(ChatColor.RED
+ "You have been temporarily banned for five minutes. Please read totalfreedom.me for more info.");
return true;
}
}

View file

@ -1,5 +1,7 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.text.SimpleDateFormat;
import java.util.Date;
import me.StevenLawson.TotalFreedomMod.ban.Ban;
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
@ -11,64 +13,64 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.text.SimpleDateFormat;
import java.util.Date;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_tempban extends FreedomCommand {
private static final SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
private static final SimpleDateFormat date_format = new SimpleDateFormat(
"yyyy-MM-dd 'at' HH:mm:ss z");
final Player player = getPlayer(args[0]);
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length < 1) {
return false;
}
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
final Player player = getPlayer(args[0]);
final StringBuilder message = new StringBuilder("Temporarily banned " + player.getName());
if (player == null) {
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
Date expires = Utilities.parseDateOffset("30m");
if (args.length >= 2)
{
Date parsed_offset = Utilities.parseDateOffset(args[1]);
if (parsed_offset != null)
{
expires = parsed_offset;
}
}
message.append(" until ").append(date_format.format(expires));
final StringBuilder message = new StringBuilder("Temporarily banned " + player.getName());
String reason = "Banned by " + sender.getName();
if (args.length >= 3)
{
reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " (" + sender.getName() + ")";
message.append(", Reason: \"").append(reason).append("\"");
}
Date expires = Utilities.parseDateOffset("30m");
if (args.length >= 2) {
Date parsed_offset = Utilities.parseDateOffset(args[1]);
if (parsed_offset != null) {
expires = parsed_offset;
}
}
message.append(" until ").append(date_format.format(expires));
// strike with lightning effect:
final Location targetPos = player.getLocation();
for (int x = -1; x <= 1; x++)
{
for (int z = -1; z <= 1; z++)
{
final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
targetPos.getWorld().strikeLightning(strike_pos);
}
}
String reason = "Banned by " + sender.getName();
if (args.length >= 3) {
reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " ("
+ sender.getName() + ")";
message.append(", Reason: \"").append(reason).append("\"");
}
Utilities.adminAction(sender.getName(), message.toString(), true);
// strike with lightning effect:
final Location targetPos = player.getLocation();
for (int x = -1; x <= 1; x++) {
for (int z = -1; z <= 1; z++) {
final Location strike_pos = new Location(targetPos.getWorld(),
targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
targetPos.getWorld().strikeLightning(strike_pos);
}
}
BanManager.addIpBan(new Ban(Utilities.getIp(player), player.getName(), sender.getName(), expires, reason));
BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), expires, reason));
Utilities.adminAction(sender.getName(), message.toString(), true);
player.kickPlayer(sender.getName() + " - " + message);
BanManager.addIpBan(
new Ban(Utilities.getIp(player), player.getName(), sender.getName(), expires, reason));
BanManager.addUuidBan(
new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), expires,
reason));
return true;
}
player.kickPlayer(sender.getName() + " - " + message);
return true;
}
}

Some files were not shown because too many files have changed in this diff Show more