mirror of
https://github.com/TheDeus-Group/TFM-4.3-Reloaded.git
synced 2024-06-11 07:54:55 +00:00
Merge vanish & coreprotect-switch into main
This commit is contained in:
parent
2a0244ddd4
commit
4782438bc8
|
@ -3,105 +3,85 @@ package me.StevenLawson.TotalFreedomMod;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public class Log
|
public class Log {
|
||||||
{
|
|
||||||
private static final Logger FALLBACK_LOGGER = Logger.getLogger("Minecraft-Server");
|
|
||||||
private static Logger serverLogger = null;
|
|
||||||
private static Logger pluginLogger = null;
|
|
||||||
|
|
||||||
private Log()
|
private static final Logger FALLBACK_LOGGER = Logger.getLogger("Minecraft-Server");
|
||||||
{
|
private static Logger serverLogger = null;
|
||||||
throw new AssertionError();
|
private static Logger pluginLogger = null;
|
||||||
}
|
|
||||||
|
|
||||||
// Level.INFO:
|
private Log() {
|
||||||
public static void info(String message)
|
throw new AssertionError();
|
||||||
{
|
}
|
||||||
info(message, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void info(String message, Boolean raw)
|
// Level.INFO:
|
||||||
{
|
public static void info(String message) {
|
||||||
log(Level.INFO, message, raw);
|
info(message, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void info(Throwable ex)
|
public static void info(String message, Boolean raw) {
|
||||||
{
|
log(Level.INFO, message, raw);
|
||||||
log(Level.INFO, ex);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Level.WARNING:
|
public static void info(Throwable ex) {
|
||||||
public static void warning(String message)
|
log(Level.INFO, ex);
|
||||||
{
|
}
|
||||||
warning(message, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void warning(String message, Boolean raw)
|
// Level.WARNING:
|
||||||
{
|
public static void warning(String message) {
|
||||||
log(Level.WARNING, message, raw);
|
warning(message, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void warning(Throwable ex)
|
public static void warning(String message, Boolean raw) {
|
||||||
{
|
log(Level.WARNING, message, raw);
|
||||||
log(Level.WARNING, ex);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Level.SEVERE:
|
public static void warning(Throwable ex) {
|
||||||
public static void severe(String message)
|
log(Level.WARNING, ex);
|
||||||
{
|
}
|
||||||
severe(message, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void severe(String message, Boolean raw)
|
// Level.SEVERE:
|
||||||
{
|
public static void severe(String message) {
|
||||||
log(Level.SEVERE, message, raw);
|
severe(message, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void severe(Throwable ex)
|
public static void severe(String message, Boolean raw) {
|
||||||
{
|
log(Level.SEVERE, message, raw);
|
||||||
log(Level.SEVERE, ex);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Utility
|
public static void severe(Throwable ex) {
|
||||||
private static void log(Level level, String message, boolean raw)
|
log(Level.SEVERE, ex);
|
||||||
{
|
}
|
||||||
getLogger(raw).log(level, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void log(Level level, Throwable throwable)
|
// Utility
|
||||||
{
|
private static void log(Level level, String message, boolean raw) {
|
||||||
getLogger(false).log(level, null, throwable);
|
getLogger(raw).log(level, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setServerLogger(Logger logger)
|
private static void log(Level level, Throwable throwable) {
|
||||||
{
|
getLogger(false).log(level, null, throwable);
|
||||||
serverLogger = logger;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void setPluginLogger(Logger logger)
|
private static Logger getLogger(boolean raw) {
|
||||||
{
|
if (raw || pluginLogger == null) {
|
||||||
pluginLogger = logger;
|
return (serverLogger != null ? serverLogger : FALLBACK_LOGGER);
|
||||||
}
|
} else {
|
||||||
|
return pluginLogger;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static Logger getLogger(boolean raw)
|
public static Logger getPluginLogger() {
|
||||||
{
|
return (pluginLogger != null ? pluginLogger : FALLBACK_LOGGER);
|
||||||
if (raw || pluginLogger == null)
|
}
|
||||||
{
|
|
||||||
return (serverLogger != null ? serverLogger : FALLBACK_LOGGER);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return pluginLogger;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Logger getPluginLogger()
|
public static void setPluginLogger(Logger logger) {
|
||||||
{
|
pluginLogger = logger;
|
||||||
return (pluginLogger != null ? pluginLogger : FALLBACK_LOGGER);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static Logger getServerLogger()
|
public static Logger getServerLogger() {
|
||||||
{
|
return (serverLogger != null ? serverLogger : FALLBACK_LOGGER);
|
||||||
return (serverLogger != null ? serverLogger : FALLBACK_LOGGER);
|
}
|
||||||
}
|
|
||||||
|
public static void setServerLogger(Logger logger) {
|
||||||
|
serverLogger = logger;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
package me.StevenLawson.TotalFreedomMod;
|
package me.StevenLawson.TotalFreedomMod;
|
||||||
|
|
||||||
|
import static me.StevenLawson.TotalFreedomMod.listener.PlayerListener.DEFAULT_PORT;
|
||||||
|
|
||||||
import com.earth2me.essentials.utils.DateUtil;
|
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.admin.AdminList;
|
||||||
import me.StevenLawson.TotalFreedomMod.ban.Ban;
|
import me.StevenLawson.TotalFreedomMod.ban.Ban;
|
||||||
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
|
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;
|
||||||
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
||||||
|
|
||||||
import java.lang.management.ManagementFactory;
|
public class Server {
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
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 void setOnlineMode(boolean mode) {
|
||||||
{
|
final PropertyManager manager = MinecraftServer.getServer().getPropertyManager();
|
||||||
public static final String COMPILE_NMS_VERSION = "v1_8_R2";
|
manager.setProperty("online-mode", mode);
|
||||||
public static final Pattern USERNAME_REGEX = Pattern.compile("^[\\w\\d_]{3,20}$");
|
manager.savePropertiesFile();
|
||||||
|
}
|
||||||
|
|
||||||
public static void setOnlineMode(boolean mode)
|
public static int purgeWhitelist() {
|
||||||
{
|
String[] whitelisted = MinecraftServer.getServer().getPlayerList().getWhitelisted();
|
||||||
final PropertyManager manager = MinecraftServer.getServer().getPropertyManager();
|
int size = whitelisted.length;
|
||||||
manager.setProperty("online-mode", mode);
|
for (EntityPlayer player : MinecraftServer.getServer().getPlayerList().players) {
|
||||||
manager.savePropertiesFile();
|
MinecraftServer.getServer().getPlayerList().getWhitelist().remove(player.getProfile());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int purgeWhitelist()
|
try {
|
||||||
{
|
MinecraftServer.getServer().getPlayerList().getWhitelist().save();
|
||||||
String[] whitelisted = MinecraftServer.getServer().getPlayerList().getWhitelisted();
|
} catch (Exception ex) {
|
||||||
int size = whitelisted.length;
|
Log.warning("Could not purge the whitelist!");
|
||||||
for (EntityPlayer player : MinecraftServer.getServer().getPlayerList().players)
|
Log.warning(ex);
|
||||||
{
|
}
|
||||||
MinecraftServer.getServer().getPlayerList().getWhitelist().remove(player.getProfile());
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
public static boolean isWhitelisted() {
|
||||||
{
|
return MinecraftServer.getServer().getPlayerList().getHasWhitelist();
|
||||||
MinecraftServer.getServer().getPlayerList().getWhitelist().save();
|
}
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.warning("Could not purge the whitelist!");
|
|
||||||
Log.warning(ex);
|
|
||||||
}
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isWhitelisted()
|
public static List<?> getWhitelisted() {
|
||||||
{
|
return Arrays.asList(MinecraftServer.getServer().getPlayerList().getWhitelisted());
|
||||||
return MinecraftServer.getServer().getPlayerList().getHasWhitelist();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static List<?> getWhitelisted()
|
public static String getVersion() {
|
||||||
{
|
return MinecraftServer.getServer().getVersion();
|
||||||
return Arrays.asList(MinecraftServer.getServer().getPlayerList().getWhitelisted());
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static String getVersion()
|
public static void handlePlayerPreLogin(AsyncPlayerPreLoginEvent event) {
|
||||||
{
|
final String ip = event.getAddress().getHostAddress().trim();
|
||||||
return MinecraftServer.getServer().getVersion();
|
final boolean isAdmin = AdminList.isSuperAdminSafe(null, ip);
|
||||||
}
|
|
||||||
|
|
||||||
public static void handlePlayerPreLogin(AsyncPlayerPreLoginEvent event)
|
// Check if the player is already online
|
||||||
{
|
for (Player onlinePlayer : TotalFreedomMod.server.getOnlinePlayers()) {
|
||||||
final String ip = event.getAddress().getHostAddress().trim();
|
if (!onlinePlayer.getName().equalsIgnoreCase(event.getName())) {
|
||||||
final boolean isAdmin = AdminList.isSuperAdminSafe(null, ip);
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Check if the player is already online
|
if (!isAdmin) {
|
||||||
for (Player onlinePlayer : TotalFreedomMod.server.getOnlinePlayers())
|
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER,
|
||||||
{
|
"Your username is already logged into this server.");
|
||||||
if (!onlinePlayer.getName().equalsIgnoreCase(event.getName()))
|
} else {
|
||||||
{
|
event.allow();
|
||||||
continue;
|
SynchronousUtil.playerKick(onlinePlayer,
|
||||||
}
|
"An admin just logged in with the username you are using.");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!isAdmin) {
|
public static void handlePlayerLogin(PlayerLoginEvent event) {
|
||||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "Your username is already logged into this server.");
|
final org.bukkit.Server server = TotalFreedomMod.server;
|
||||||
} else {
|
final Player player = event.getPlayer();
|
||||||
event.allow();
|
final String username = player.getName();
|
||||||
SynchronousUtil.playerKick(onlinePlayer, "An admin just logged in with the username you are using.");
|
final String ip = event.getAddress().getHostAddress().trim();
|
||||||
}
|
final UUID uuid = UUIDManager.newPlayer(player, ip);
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void handlePlayerLogin(PlayerLoginEvent event)
|
// Check username length
|
||||||
{
|
if (username.length() < 3 || username.length() > TotalFreedomMod.MAX_USERNAME_LENGTH) {
|
||||||
final org.bukkit.Server server = TotalFreedomMod.server;
|
event.disallow(Result.KICK_OTHER,
|
||||||
final Player player = event.getPlayer();
|
"Your username is an invalid length (must be between 3 and 20 characters long).");
|
||||||
final String username = player.getName();
|
return;
|
||||||
final String ip = event.getAddress().getHostAddress().trim();
|
}
|
||||||
final UUID uuid = UUIDManager.newPlayer(player, ip);
|
|
||||||
|
|
||||||
// Check username length
|
// Check username characters
|
||||||
if (username.length() < 3 || username.length() > TotalFreedomMod.MAX_USERNAME_LENGTH)
|
if (!USERNAME_REGEX.matcher(username).find()) {
|
||||||
{
|
event.disallow(Result.KICK_OTHER, "Your username contains invalid characters.");
|
||||||
event.disallow(Result.KICK_OTHER, "Your username is an invalid length (must be between 3 and 20 characters long).");
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Check username characters
|
// Check force-IP match
|
||||||
if (!USERNAME_REGEX.matcher(username).find())
|
if (ConfigurationEntry.FORCE_IP_ENABLED.getBoolean()) {
|
||||||
{
|
final String hostname = event.getHostname().replace("FML",
|
||||||
event.disallow(Result.KICK_OTHER, "Your username contains invalid characters.");
|
""); // Forge fix - https://github.com/TotalFreedom/TotalFreedomMod/issues/493
|
||||||
return;
|
final String connectAddress = ConfigurationEntry.SERVER_ADDRESS.getString();
|
||||||
}
|
final int connectPort = TotalFreedomMod.server.getPort();
|
||||||
|
|
||||||
// Check force-IP match
|
if (!hostname.equalsIgnoreCase(connectAddress + ":" + connectPort)
|
||||||
if (ConfigurationEntry.FORCE_IP_ENABLED.getBoolean())
|
&& !hostname.equalsIgnoreCase(connectAddress + ".:" + connectPort)) {
|
||||||
{
|
final int forceIpPort = ConfigurationEntry.FORCE_IP_PORT.getInteger();
|
||||||
final String hostname = event.getHostname().replace("FML", ""); // Forge fix - https://github.com/TotalFreedom/TotalFreedomMod/issues/493
|
event.disallow(PlayerLoginEvent.Result.KICK_OTHER,
|
||||||
final String connectAddress = ConfigurationEntry.SERVER_ADDRESS.getString();
|
ConfigurationEntry.FORCE_IP_KICKMSG.getString()
|
||||||
final int connectPort = TotalFreedomMod.server.getPort();
|
.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
|
// Validation below this point
|
||||||
// Not safe to use Utilities.isSuperAdmin(player) because player.getAddress() will return a null until after player login.
|
if (isAdmin) // Player is superadmin
|
||||||
final boolean isAdmin = AdminList.isSuperAdminSafe(uuid, ip);
|
{
|
||||||
|
// Force-allow log in
|
||||||
|
event.allow();
|
||||||
|
|
||||||
// Validation below this point
|
int count = server.getOnlinePlayers().size();
|
||||||
if (isAdmin) // Player is superadmin
|
if (count >= server.getMaxPlayers()) {
|
||||||
{
|
for (Player onlinePlayer : server.getOnlinePlayers()) {
|
||||||
// Force-allow log in
|
if (!AdminList.isSuperAdmin(onlinePlayer)) {
|
||||||
event.allow();
|
onlinePlayer.kickPlayer(
|
||||||
|
"You have been kicked to free up room for an admin.");
|
||||||
|
count--;
|
||||||
|
}
|
||||||
|
|
||||||
int count = server.getOnlinePlayers().size();
|
if (count < server.getMaxPlayers()) {
|
||||||
if (count >= server.getMaxPlayers())
|
break;
|
||||||
{
|
}
|
||||||
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())
|
if (count >= server.getMaxPlayers()) {
|
||||||
{
|
event.disallow(Result.KICK_OTHER,
|
||||||
break;
|
"The server is full and a player could not be kicked, sorry!");
|
||||||
}
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (count >= server.getMaxPlayers())
|
return;
|
||||||
{
|
}
|
||||||
event.disallow(Result.KICK_OTHER, "The server is full and a player could not be kicked, sorry!");
|
|
||||||
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
|
// Admin-only mode
|
||||||
// Server full check
|
if (ConfigurationEntry.ADMIN_ONLY_MODE.getBoolean()) {
|
||||||
if (server.getOnlinePlayers().size() >= server.getMaxPlayers())
|
event.disallow(Result.KICK_OTHER, "Server is temporarily open to admins only.");
|
||||||
{
|
return;
|
||||||
event.disallow(Result.KICK_FULL, "Sorry, but this server is full.");
|
}
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Admin-only mode
|
// Lockdown mode
|
||||||
if (ConfigurationEntry.ADMIN_ONLY_MODE.getBoolean())
|
if (TotalFreedomMod.lockdownEnabled) {
|
||||||
{
|
event.disallow(Result.KICK_OTHER, "Server is currently in lockdown mode.");
|
||||||
event.disallow(Result.KICK_OTHER, "Server is temporarily open to admins only.");
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Lockdown mode
|
// Whitelist
|
||||||
if (TotalFreedomMod.lockdownEnabled)
|
if (isWhitelisted()) {
|
||||||
{
|
if (!getWhitelisted().contains(username.toLowerCase())) {
|
||||||
event.disallow(Result.KICK_OTHER, "Server is currently in lockdown mode.");
|
event.disallow(Result.KICK_OTHER, "You are not whitelisted on this server.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Whitelist
|
// UUID ban
|
||||||
if (isWhitelisted())
|
if (BanManager.isUuidBanned(uuid)) {
|
||||||
{
|
final Ban ban = BanManager.getByUuid(uuid);
|
||||||
if (!getWhitelisted().contains(username.toLowerCase()))
|
event.disallow(Result.KICK_OTHER, ban.getKickMessage());
|
||||||
{
|
return;
|
||||||
event.disallow(Result.KICK_OTHER, "You are not whitelisted on this server.");
|
}
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UUID ban
|
// IP ban
|
||||||
if (BanManager.isUuidBanned(uuid))
|
if (BanManager.isIpBanned(ip)) {
|
||||||
{
|
final Ban ban = BanManager.getByIp(ip);
|
||||||
final Ban ban = BanManager.getByUuid(uuid);
|
event.disallow(Result.KICK_OTHER, ban.getKickMessage());
|
||||||
event.disallow(Result.KICK_OTHER, ban.getKickMessage());
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// IP ban
|
// Permbanned IPs
|
||||||
if (BanManager.isIpBanned(ip))
|
for (String testIp : PermbanList.getPermbannedIps()) {
|
||||||
{
|
if (Utilities.fuzzyIpMatch(testIp, ip, 4)) {
|
||||||
final Ban ban = BanManager.getByIp(ip);
|
event.disallow(Result.KICK_OTHER,
|
||||||
event.disallow(Result.KICK_OTHER, ban.getKickMessage());
|
ChatColor.RED + "Your IP address is permanently banned from this server.\n"
|
||||||
return;
|
+ "Release procedures are available at\n"
|
||||||
}
|
+ ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Permbanned IPs
|
// Permbanned usernames
|
||||||
for (String testIp : PermbanList.getPermbannedIps())
|
for (String testPlayer : PermbanList.getPermbannedPlayers()) {
|
||||||
{
|
if (testPlayer.equalsIgnoreCase(username)) {
|
||||||
if (Utilities.fuzzyIpMatch(testIp, ip, 4))
|
event.disallow(Result.KICK_OTHER,
|
||||||
{
|
ChatColor.RED + "Your username is permanently banned from this server.\n"
|
||||||
event.disallow(Result.KICK_OTHER,
|
+ "Release procedures are available at\n"
|
||||||
ChatColor.RED + "Your IP address is permanently banned from this server.\n"
|
+ ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString());
|
||||||
+ "Release procedures are available at\n"
|
return;
|
||||||
+ ChatColor.GOLD + ConfigurationEntry.SERVER_PERMBAN_URL.getString());
|
}
|
||||||
return;
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Permbanned usernames
|
public static double getTPS() {
|
||||||
for (String testPlayer : PermbanList.getPermbannedPlayers())
|
return EssentialsBridge.getEssentialsPlugin().getTimer().getAverageTPS();
|
||||||
{
|
}
|
||||||
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() {
|
public static double getMaxMem() {
|
||||||
return EssentialsBridge.getEssentialsPlugin().getTimer().getAverageTPS();
|
return Runtime.getRuntime().maxMemory() / 1024f / 1024f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double getMaxMem() {
|
public static double getTotalMem() {
|
||||||
return Runtime.getRuntime().maxMemory() / 1024f / 1024f;
|
return Runtime.getRuntime().totalMemory() / 1024f / 1024f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double getTotalMem() {
|
public static double getFreeMem() {
|
||||||
return Runtime.getRuntime().totalMemory() / 1024f / 1024f;
|
return Runtime.getRuntime().freeMemory() / 1024f / 1024f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double getFreeMem() {
|
public static String getUptime() {
|
||||||
return Runtime.getRuntime().freeMemory() / 1024f / 1024f;
|
return DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getUptime() {
|
|
||||||
return DateUtil.formatDateDiff(ManagementFactory.getRuntimeMXBean().getStartTime());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,34 @@
|
||||||
package me.StevenLawson.TotalFreedomMod;
|
package me.StevenLawson.TotalFreedomMod;
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
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.admin.AdminList;
|
||||||
import me.StevenLawson.TotalFreedomMod.announcer.Announcer;
|
import me.StevenLawson.TotalFreedomMod.announcer.Announcer;
|
||||||
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
|
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
|
||||||
import me.StevenLawson.TotalFreedomMod.ban.PermbanList;
|
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.command.CommandBlocker;
|
||||||
|
import me.StevenLawson.TotalFreedomMod.commands.Commands;
|
||||||
import me.StevenLawson.TotalFreedomMod.commands.FreedomCommand;
|
import me.StevenLawson.TotalFreedomMod.commands.FreedomCommand;
|
||||||
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
||||||
import me.StevenLawson.TotalFreedomMod.deprecated.bridge.BukkitTelnetBridge;
|
import me.StevenLawson.TotalFreedomMod.deprecated.bridge.BukkitTelnetBridge;
|
||||||
|
import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge;
|
||||||
import me.StevenLawson.TotalFreedomMod.gamerule.GameRuleHandler;
|
import me.StevenLawson.TotalFreedomMod.gamerule.GameRuleHandler;
|
||||||
import me.StevenLawson.TotalFreedomMod.httpd.HTTPDManager;
|
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.HeartBeat;
|
||||||
import me.StevenLawson.TotalFreedomMod.player.PlayerList;
|
import me.StevenLawson.TotalFreedomMod.player.PlayerList;
|
||||||
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
|
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import me.StevenLawson.TotalFreedomMod.world.AdminWorld;
|
import me.StevenLawson.TotalFreedomMod.world.AdminWorld;
|
||||||
import me.StevenLawson.TotalFreedomMod.world.FlatlandsWorld;
|
import me.StevenLawson.TotalFreedomMod.world.FlatlandsWorld;
|
||||||
|
@ -31,160 +43,173 @@ import org.bukkit.plugin.ServicePriority;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
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 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
|
private FileConfiguration customConfig; // Custom configuration implementation by Eva
|
||||||
public void onLoad() {
|
|
||||||
TotalFreedomMod.plugin = this;
|
|
||||||
TotalFreedomMod.logger = this.getLogger();
|
|
||||||
TotalFreedomMod.server = plugin.getServer();
|
|
||||||
TotalFreedomMod.pluginName = plugin.getDescription().getName();
|
|
||||||
TotalFreedomMod.pluginVersion = plugin.getDescription().getVersion();
|
|
||||||
|
|
||||||
Log.setPluginLogger(plugin.getLogger());
|
private static void setAppProperties() {
|
||||||
Log.setServerLogger(server.getLogger());
|
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
|
//TotalFreedomMod.buildNumber = props.getProperty("program.buildnumber");
|
||||||
public void onEnable()
|
//TotalFreedomMod.buildDate = props.getProperty("program.builddate");
|
||||||
{
|
//TotalFreedomMod.buildCreator = props.getProperty("program.buildcreator");
|
||||||
getConfig().options().copyDefaults(true);
|
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");
|
@Override
|
||||||
Log.info("Compiled " + buildDate + " by " + buildCreator);
|
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();
|
Log.setPluginLogger(plugin.getLogger());
|
||||||
timer.start();
|
Log.setServerLogger(server.getLogger());
|
||||||
|
|
||||||
if (!Server.COMPILE_NMS_VERSION.equals(Utilities.getNmsVersion()))
|
setAppProperties();
|
||||||
{
|
}
|
||||||
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!");
|
|
||||||
}
|
|
||||||
|
|
||||||
Utilities.deleteCoreDumps();
|
@Override
|
||||||
Utilities.deleteFolder(new File("./_deleteme"));
|
public void onEnable() {
|
||||||
|
getConfig().options().copyDefaults(true);
|
||||||
|
|
||||||
// Create backups
|
Log.info("Made by Madgeek1450 and Prozza");
|
||||||
Utilities.createBackups(CONFIG_FILENAME, true);
|
Log.info("Compiled " + buildDate + " by " + buildCreator);
|
||||||
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();
|
|
||||||
|
|
||||||
// Start SuperAdmin service
|
final Utilities.MethodTimer timer = new Utilities.MethodTimer();
|
||||||
server.getServicesManager().register(Function.class, AdminList.SUPERADMIN_SERVICE, plugin, ServicePriority.Normal);
|
timer.start();
|
||||||
|
|
||||||
final PluginManager pm = server.getPluginManager();
|
if (!Server.COMPILE_NMS_VERSION.equals(Utilities.getNmsVersion())) {
|
||||||
pm.registerEvents(new EntityListener(), plugin);
|
Log.warning(pluginName + " is compiled for " + Server.COMPILE_NMS_VERSION
|
||||||
pm.registerEvents(new BlockListener(), plugin);
|
+ " but the server is running "
|
||||||
pm.registerEvents(new PlayerListener(), plugin);
|
+ "version " + Utilities.getNmsVersion() + "!");
|
||||||
pm.registerEvents(new WeatherListener(), plugin);
|
Log.warning("This might result in unexpected behaviour!");
|
||||||
pm.registerEvents(new ServerListener(), plugin);
|
}
|
||||||
|
|
||||||
// Bridge
|
Utilities.deleteCoreDumps();
|
||||||
pm.registerEvents(new BukkitTelnetBridge(), plugin);
|
Utilities.deleteFolder(new File("./_deleteme"));
|
||||||
pm.registerEvents(new WorldEditListener(), plugin);
|
|
||||||
|
|
||||||
try {
|
// Create backups
|
||||||
FlatlandsWorld.getInstance().getWorld();
|
Utilities.createBackups(CONFIG_FILENAME, true);
|
||||||
} catch (Exception ex) {
|
Utilities.createBackups(SUPERADMIN_FILENAME);
|
||||||
Log.warning("Could not load world: Flatlands");
|
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 {
|
// Start SuperAdmin service
|
||||||
AdminWorld.getInstance().getWorld();
|
server.getServicesManager()
|
||||||
}
|
.register(Function.class, AdminList.SUPERADMIN_SERVICE, plugin, ServicePriority.Normal);
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.warning("Could not load world: AdminWorld");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize game rules
|
final PluginManager pm = server.getPluginManager();
|
||||||
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_DAYLIGHT_CYCLE, !ConfigurationEntry.DISABLE_NIGHT.getBoolean(), false);
|
pm.registerEvents(new EntityListener(), plugin);
|
||||||
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_FIRE_TICK, ConfigurationEntry.ALLOW_FIRE_SPREAD.getBoolean(), false);
|
pm.registerEvents(new BlockListener(), plugin);
|
||||||
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_LOOT, false, false);
|
pm.registerEvents(new PlayerListener(), plugin);
|
||||||
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_MOB_SPAWNING, !ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean(), false);
|
pm.registerEvents(new WeatherListener(), plugin);
|
||||||
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.DO_TILE_DROPS, false, false);
|
pm.registerEvents(new ServerListener(), plugin);
|
||||||
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.MOB_GRIEFING, false, false);
|
|
||||||
GameRuleHandler.setGameRule(GameRuleHandler.TFM_GameRule.NATURAL_REGENERATION, true, false);
|
|
||||||
GameRuleHandler.commitGameRules();
|
|
||||||
|
|
||||||
// Disable weather
|
// Bridge
|
||||||
if (ConfigurationEntry.DISABLE_WEATHER.getBoolean())
|
pm.registerEvents(new BukkitTelnetBridge(), plugin);
|
||||||
{
|
pm.registerEvents(new WorldEditListener(), plugin);
|
||||||
for (World world : server.getWorlds())
|
|
||||||
{
|
|
||||||
world.setThundering(false);
|
|
||||||
world.setStorm(false);
|
|
||||||
world.setThunderDuration(0);
|
|
||||||
world.setWeatherDuration(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Heartbeat
|
try {
|
||||||
new HeartBeat(plugin).runTaskTimer(plugin, HEARTBEAT_RATE * 20L, HEARTBEAT_RATE * 20L);
|
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
|
// Initialize game rules
|
||||||
HTTPDManager.start();
|
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
|
Commands.registerCommands(this);
|
||||||
// No longer exist!
|
|
||||||
|
// 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
|
/*try
|
||||||
{
|
{
|
||||||
final Metrics metrics = new Metrics(plugin);
|
final Metrics metrics = new Metrics(plugin);
|
||||||
|
@ -195,72 +220,46 @@ public class TotalFreedomMod extends JavaPlugin {
|
||||||
Log.warning("Failed to submit metrics data: " + ex.getMessage());
|
Log.warning("Failed to submit metrics data: " + ex.getMessage());
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
new BukkitRunnable()
|
new BukkitRunnable() {
|
||||||
{
|
@Override
|
||||||
@Override
|
public void run() {
|
||||||
public void run()
|
CommandBlocker.load();
|
||||||
{
|
|
||||||
CommandBlocker.load();
|
|
||||||
|
|
||||||
// Add spawnpoints later - https://github.com/TotalFreedom/TotalFreedomMod/issues/438
|
// Add spawnpoints later - https://github.com/TotalFreedom/TotalFreedomMod/issues/438
|
||||||
ProtectedArea.autoAddSpawnpoints();
|
ProtectedArea.autoAddSpawnpoints();
|
||||||
}
|
}
|
||||||
}.runTaskLater(plugin, 20L);
|
}.runTaskLater(plugin, 20L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable()
|
public void onDisable() {
|
||||||
{
|
HTTPDManager.stop();
|
||||||
HTTPDManager.stop();
|
BanManager.save();
|
||||||
BanManager.save();
|
UUIDManager.close();
|
||||||
UUIDManager.close();
|
DiscordBridge.stop();
|
||||||
DiscordBridge.stop();
|
|
||||||
|
|
||||||
server.getScheduler().cancelTasks(plugin);
|
server.getScheduler().cancelTasks(plugin);
|
||||||
|
|
||||||
Log.info("Plugin disabled");
|
Log.info("Plugin disabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
public FileConfiguration getCustomConfig() {
|
public FileConfiguration getCustomConfig() {
|
||||||
return this.customConfig;
|
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
customConfig= new YamlConfiguration();
|
//CustomConfig implementation by Eva
|
||||||
try {
|
private void createCustomConfig() {
|
||||||
customConfig.load(customConfigFile);
|
File customConfigFile = new File(getDataFolder(), "playerTags.yml");
|
||||||
} catch (IOException | InvalidConfigurationException e) {
|
if (!customConfigFile.exists()) {
|
||||||
e.printStackTrace();
|
customConfigFile.getParentFile().mkdirs();
|
||||||
}
|
saveResource("playerTags.yml", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setAppProperties()
|
customConfig = new YamlConfiguration();
|
||||||
{
|
try {
|
||||||
try
|
customConfig.load(customConfigFile);
|
||||||
{
|
} catch (IOException | InvalidConfigurationException e) {
|
||||||
//final InputStream in = plugin.getResource("appinfo.properties");
|
e.printStackTrace();
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,168 +1,152 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.admin;
|
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.ConfigurationEntry;
|
||||||
import me.StevenLawson.TotalFreedomMod.config.MainConfig;
|
import me.StevenLawson.TotalFreedomMod.config.MainConfig;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
|
||||||
import java.util.*;
|
public class Admin {
|
||||||
|
|
||||||
public class Admin
|
private final UUID uuid;
|
||||||
{
|
private final boolean isSeniorAdmin;
|
||||||
private final UUID uuid;
|
private final boolean isTelnetAdmin;
|
||||||
private String lastLoginName;
|
private final List<String> consoleAliases;
|
||||||
private String loginMessage;
|
private final List<String> ips;
|
||||||
private final boolean isSeniorAdmin;
|
private String lastLoginName;
|
||||||
private final boolean isTelnetAdmin;
|
private String loginMessage;
|
||||||
private final List<String> consoleAliases;
|
private Date lastLogin;
|
||||||
private final List<String> ips;
|
private boolean isActivated;
|
||||||
private Date lastLogin;
|
|
||||||
private boolean isActivated;
|
|
||||||
|
|
||||||
public Admin(UUID uuid, String lastLoginName, Date lastLogin, String loginMessage, boolean isTelnetAdmin, boolean isSeniorAdmin, boolean isActivated)
|
public Admin(UUID uuid, String lastLoginName, Date lastLogin, String loginMessage,
|
||||||
{
|
boolean isTelnetAdmin, boolean isSeniorAdmin, boolean isActivated) {
|
||||||
this.uuid = uuid;
|
this.uuid = uuid;
|
||||||
this.lastLoginName = lastLoginName;
|
this.lastLoginName = lastLoginName;
|
||||||
this.ips = new ArrayList<String>();
|
this.ips = new ArrayList<String>();
|
||||||
this.lastLogin = lastLogin;
|
this.lastLogin = lastLogin;
|
||||||
this.loginMessage = loginMessage;
|
this.loginMessage = loginMessage;
|
||||||
this.isTelnetAdmin = isTelnetAdmin;
|
this.isTelnetAdmin = isTelnetAdmin;
|
||||||
this.isSeniorAdmin = isSeniorAdmin;
|
this.isSeniorAdmin = isSeniorAdmin;
|
||||||
this.consoleAliases = new ArrayList<String>();
|
this.consoleAliases = new ArrayList<String>();
|
||||||
this.isActivated = isActivated;
|
this.isActivated = isActivated;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Admin(UUID uuid, ConfigurationSection section)
|
public Admin(UUID uuid, ConfigurationSection section) {
|
||||||
{
|
this.uuid = uuid;
|
||||||
this.uuid = uuid;
|
this.lastLoginName = section.getString("last_login_name");
|
||||||
this.lastLoginName = section.getString("last_login_name");
|
this.ips = section.getStringList("ips");
|
||||||
this.ips = section.getStringList("ips");
|
this.lastLogin = Utilities.stringToDate(
|
||||||
this.lastLogin = Utilities.stringToDate(section.getString("last_login", Utilities.dateToString(new Date(0L))));
|
section.getString("last_login", Utilities.dateToString(new Date(0L))));
|
||||||
this.loginMessage = section.getString("custom_login_message", "");
|
this.loginMessage = section.getString("custom_login_message", "");
|
||||||
this.isSeniorAdmin = section.getBoolean("is_senior_admin", false);
|
this.isSeniorAdmin = section.getBoolean("is_senior_admin", false);
|
||||||
this.isTelnetAdmin = section.getBoolean("is_telnet_admin", false);
|
this.isTelnetAdmin = section.getBoolean("is_telnet_admin", false);
|
||||||
this.consoleAliases = section.getStringList("console_aliases");
|
this.consoleAliases = section.getStringList("console_aliases");
|
||||||
this.isActivated = section.getBoolean("is_activated", true);
|
this.isActivated = section.getBoolean("is_activated", true);
|
||||||
|
|
||||||
for (Iterator<?> it = MainConfig.getList(ConfigurationEntry.NOADMIN_IPS).iterator(); it.hasNext();)
|
for (Iterator<?> it = MainConfig.getList(ConfigurationEntry.NOADMIN_IPS).iterator();
|
||||||
{
|
it.hasNext(); ) {
|
||||||
ips.remove((String) it.next());
|
ips.remove((String) it.next());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString() {
|
||||||
{
|
final StringBuilder output = new StringBuilder();
|
||||||
final StringBuilder output = new StringBuilder();
|
final ArrayList<String> fuzziedIps = new ArrayList<>();
|
||||||
final ArrayList<String> fuzziedIps = new ArrayList<>();
|
|
||||||
|
|
||||||
for (String ip : ips)
|
for (String ip : ips) {
|
||||||
{
|
fuzziedIps.add(Utilities.getFuzzyIp(ip));
|
||||||
fuzziedIps.add(Utilities.getFuzzyIp(ip));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
output.append("UUID: ").append(uuid.toString()).append("\n");
|
output.append("UUID: ").append(uuid.toString()).append("\n");
|
||||||
output.append("- Last Login Name: ").append(lastLoginName).append("\n");
|
output.append("- Last Login Name: ").append(lastLoginName).append("\n");
|
||||||
output.append("- IPs: ").append(StringUtils.join(fuzziedIps, ", ")).append("\n");
|
output.append("- IPs: ").append(StringUtils.join(fuzziedIps, ", ")).append("\n");
|
||||||
output.append("- Last Login: ").append(Utilities.dateToString(lastLogin)).append("\n");
|
output.append("- Last Login: ").append(Utilities.dateToString(lastLogin)).append("\n");
|
||||||
output.append("- Custom Login Message: ").append(loginMessage).append("\n");
|
output.append("- Custom Login Message: ").append(loginMessage).append("\n");
|
||||||
output.append("- Is Senior Admin: ").append(isSeniorAdmin).append("\n");
|
output.append("- Is Senior Admin: ").append(isSeniorAdmin).append("\n");
|
||||||
output.append("- Is Telnet Admin: ").append(isTelnetAdmin).append("\n");
|
output.append("- Is Telnet Admin: ").append(isTelnetAdmin).append("\n");
|
||||||
output.append("- Console Aliases: ").append(StringUtils.join(consoleAliases, ", ")).append("\n");
|
output.append("- Console Aliases: ").append(StringUtils.join(consoleAliases, ", "))
|
||||||
output.append("- Is Activated: ").append(isActivated);
|
.append("\n");
|
||||||
|
output.append("- Is Activated: ").append(isActivated);
|
||||||
|
|
||||||
return output.toString();
|
return output.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUID getUniqueId()
|
public UUID getUniqueId() {
|
||||||
{
|
return uuid;
|
||||||
return uuid;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void setLastLoginName(String lastLoginName)
|
public String getLastLoginName() {
|
||||||
{
|
return lastLoginName;
|
||||||
this.lastLoginName = lastLoginName;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getLastLoginName()
|
public void setLastLoginName(String lastLoginName) {
|
||||||
{
|
this.lastLoginName = lastLoginName;
|
||||||
return lastLoginName;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getIps()
|
public List<String> getIps() {
|
||||||
{
|
return Collections.unmodifiableList(ips);
|
||||||
return Collections.unmodifiableList(ips);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void addIp(String ip)
|
public void addIp(String ip) {
|
||||||
{
|
if (!ips.contains(ip)) {
|
||||||
if (!ips.contains(ip))
|
ips.add(ip);
|
||||||
{
|
}
|
||||||
ips.add(ip);
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addIps(List<String> ips)
|
public void addIps(List<String> ips) {
|
||||||
{
|
for (String ip : ips) {
|
||||||
for (String ip : ips)
|
addIp(ip);
|
||||||
{
|
}
|
||||||
addIp(ip);
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeIp(String ip)
|
public void removeIp(String ip) {
|
||||||
{
|
ips.remove(ip);
|
||||||
ips.remove(ip);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void clearIPs()
|
public void clearIPs() {
|
||||||
{
|
ips.clear();
|
||||||
ips.clear();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void setCustomLoginMessage(String newLoginMessage)
|
public Date getLastLogin() {
|
||||||
{
|
return lastLogin;
|
||||||
this.loginMessage = newLoginMessage;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public Date getLastLogin()
|
public void setLastLogin(Date lastLogin) {
|
||||||
{
|
this.lastLogin = lastLogin;
|
||||||
return lastLogin;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getCustomLoginMessage()
|
public String getCustomLoginMessage() {
|
||||||
{
|
return loginMessage;
|
||||||
return loginMessage;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSeniorAdmin()
|
public void setCustomLoginMessage(String newLoginMessage) {
|
||||||
{
|
this.loginMessage = newLoginMessage;
|
||||||
return isSeniorAdmin;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isTelnetAdmin()
|
public boolean isSeniorAdmin() {
|
||||||
{
|
return isSeniorAdmin;
|
||||||
return isTelnetAdmin;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getConsoleAliases()
|
public boolean isTelnetAdmin() {
|
||||||
{
|
return isTelnetAdmin;
|
||||||
return Collections.unmodifiableList(consoleAliases);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void setLastLogin(Date lastLogin)
|
public List<String> getConsoleAliases() {
|
||||||
{
|
return Collections.unmodifiableList(consoleAliases);
|
||||||
this.lastLogin = lastLogin;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isActivated()
|
public boolean isActivated() {
|
||||||
{
|
return isActivated;
|
||||||
return isActivated;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void setActivated(boolean isActivated)
|
public void setActivated(boolean isActivated) {
|
||||||
{
|
this.isActivated = isActivated;
|
||||||
this.isActivated = isActivated;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,115 +1,95 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.announcer;
|
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.TotalFreedomMod;
|
||||||
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
public class Announcer {
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class Announcer
|
private static final List<String> ANNOUNCEMENTS = new ArrayList<String>();
|
||||||
{
|
private static boolean enabled;
|
||||||
private static final List<String> ANNOUNCEMENTS = new ArrayList<String>();
|
private static long interval;
|
||||||
private static boolean enabled;
|
private static String prefix;
|
||||||
private static long interval;
|
private static BukkitRunnable announcer;
|
||||||
private static String prefix;
|
|
||||||
private static BukkitRunnable announcer;
|
|
||||||
|
|
||||||
private Announcer()
|
private Announcer() {
|
||||||
{
|
throw new AssertionError();
|
||||||
throw new AssertionError();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isEnabled()
|
public static boolean isEnabled() {
|
||||||
{
|
return enabled;
|
||||||
return enabled;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static List<String> getAnnouncements()
|
public static List<String> getAnnouncements() {
|
||||||
{
|
return Collections.unmodifiableList(ANNOUNCEMENTS);
|
||||||
return Collections.unmodifiableList(ANNOUNCEMENTS);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static long getTickInterval()
|
public static long getTickInterval() {
|
||||||
{
|
return interval;
|
||||||
return interval;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static String getPrefix()
|
public static String getPrefix() {
|
||||||
{
|
return prefix;
|
||||||
return prefix;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void load()
|
public static void load() {
|
||||||
{
|
stop();
|
||||||
stop();
|
|
||||||
|
|
||||||
ANNOUNCEMENTS.clear();
|
ANNOUNCEMENTS.clear();
|
||||||
|
|
||||||
for (Object announcement : ConfigurationEntry.ANNOUNCER_ANNOUNCEMENTS.getList())
|
for (Object announcement : ConfigurationEntry.ANNOUNCER_ANNOUNCEMENTS.getList()) {
|
||||||
{
|
ANNOUNCEMENTS.add(Utilities.colorize((String) announcement));
|
||||||
ANNOUNCEMENTS.add(Utilities.colorize((String) announcement));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
enabled = ConfigurationEntry.ANNOUNCER_ENABLED.getBoolean();
|
enabled = ConfigurationEntry.ANNOUNCER_ENABLED.getBoolean();
|
||||||
interval = ConfigurationEntry.ANNOUNCER_INTERVAL.getInteger() * 20L;
|
interval = ConfigurationEntry.ANNOUNCER_INTERVAL.getInteger() * 20L;
|
||||||
prefix = Utilities.colorize(ConfigurationEntry.ANNOUNCER_PREFIX.getString());
|
prefix = Utilities.colorize(ConfigurationEntry.ANNOUNCER_PREFIX.getString());
|
||||||
|
|
||||||
if (enabled)
|
if (enabled) {
|
||||||
{
|
start();
|
||||||
start();
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isStarted()
|
public static boolean isStarted() {
|
||||||
{
|
return announcer != null;
|
||||||
return announcer != null;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void start()
|
public static void start() {
|
||||||
{
|
if (isStarted()) {
|
||||||
if (isStarted())
|
return;
|
||||||
{
|
}
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
announcer = new BukkitRunnable()
|
announcer = new BukkitRunnable() {
|
||||||
{
|
private int current = 0;
|
||||||
private int current = 0;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run() {
|
||||||
{
|
current++;
|
||||||
current++;
|
|
||||||
|
|
||||||
if (current >= ANNOUNCEMENTS.size())
|
if (current >= ANNOUNCEMENTS.size()) {
|
||||||
{
|
current = 0;
|
||||||
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()
|
public static void stop() {
|
||||||
{
|
if (announcer == null) {
|
||||||
if (announcer == null)
|
return;
|
||||||
{
|
}
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
try {
|
||||||
{
|
announcer.cancel();
|
||||||
announcer.cancel();
|
} finally {
|
||||||
}
|
announcer = null;
|
||||||
finally
|
}
|
||||||
{
|
}
|
||||||
announcer = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,206 +1,186 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.ban;
|
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.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
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 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;
|
|
||||||
|
|
||||||
static
|
public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(
|
||||||
{
|
"yyyy-MM-dd 'at' HH:mm:ss z");
|
||||||
// 192.168.1.254:LocalHost:Prozza:0:none
|
public static final Pattern IP_BAN_REGEX;
|
||||||
// 127.0.*.*:TestUserName:BannedByNotch:123567:Test reason
|
public static final Pattern UUID_BAN_REGEX;
|
||||||
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 Ban(String ip, String lastLoginName)
|
static {
|
||||||
{
|
// 192.168.1.254:LocalHost:Prozza:0:none
|
||||||
this(ip, lastLoginName, null, null, null);
|
// 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)
|
private final BanType type;
|
||||||
{
|
private final boolean complete;
|
||||||
this(ip, lastLoginName, sender, expire, reason, BanType.IP);
|
private String subject; // uuid or IP
|
||||||
}
|
private String lastLoginName;
|
||||||
|
private String by;
|
||||||
|
private long expireUnix;
|
||||||
|
private String reason;
|
||||||
|
|
||||||
public Ban(UUID uuid, String lastLoginName)
|
public Ban(String ip, String lastLoginName) {
|
||||||
{
|
this(ip, lastLoginName, null, null, null);
|
||||||
this(uuid, lastLoginName, null, null, null);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public Ban(UUID uuid, String lastLoginName, String sender, Date expire, String reason)
|
public Ban(String ip, String lastLoginName, String sender, Date expire, String reason) {
|
||||||
{
|
this(ip, lastLoginName, sender, expire, reason, BanType.IP);
|
||||||
this(uuid.toString(), lastLoginName, sender, expire, reason, BanType.UUID);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private Ban(String subject, String lastLoginName, String sender, Date expire, String reason, BanType type)
|
public Ban(UUID uuid, String lastLoginName) {
|
||||||
{
|
this(uuid, lastLoginName, null, null, null);
|
||||||
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(String banString, BanType type)
|
public Ban(UUID uuid, String lastLoginName, String sender, Date expire, String reason) {
|
||||||
{
|
this(uuid.toString(), lastLoginName, sender, expire, reason, BanType.UUID);
|
||||||
this.type = type;
|
}
|
||||||
|
|
||||||
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())
|
public Ban(String banString, BanType type) {
|
||||||
{
|
this.type = type;
|
||||||
complete = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
subject = matcher.group(1);
|
final Matcher matcher = (type == BanType.IP ? IP_BAN_REGEX.matcher(banString)
|
||||||
lastLoginName = matcher.group(2);
|
: UUID_BAN_REGEX.matcher(banString));
|
||||||
by = matcher.group(3);
|
|
||||||
expireUnix = Long.valueOf(matcher.group(4));
|
|
||||||
reason = Utilities.colorize(matcher.group(5));
|
|
||||||
complete = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum BanType
|
if (!matcher.find()) {
|
||||||
{
|
complete = false;
|
||||||
IP,
|
return;
|
||||||
UUID
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public BanType getType()
|
subject = matcher.group(1);
|
||||||
{
|
lastLoginName = matcher.group(2);
|
||||||
return type;
|
by = matcher.group(3);
|
||||||
}
|
expireUnix = Long.valueOf(matcher.group(4));
|
||||||
|
reason = Utilities.colorize(matcher.group(5));
|
||||||
|
complete = true;
|
||||||
|
}
|
||||||
|
|
||||||
public String getSubject()
|
public BanType getType() {
|
||||||
{
|
return type;
|
||||||
return subject;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getLastLoginName()
|
public String getSubject() {
|
||||||
{
|
return subject;
|
||||||
return lastLoginName;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getBannedBy()
|
public String getLastLoginName() {
|
||||||
{
|
return lastLoginName;
|
||||||
return by;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public long getExpireUnix()
|
public String getBannedBy() {
|
||||||
{
|
return by;
|
||||||
return expireUnix;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getReason()
|
public long getExpireUnix() {
|
||||||
{
|
return expireUnix;
|
||||||
return reason;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isExpired()
|
public String getReason() {
|
||||||
{
|
return reason;
|
||||||
return expireUnix != 0 && expireUnix < Utilities.getUnixTime();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isComplete()
|
public boolean isExpired() {
|
||||||
{
|
return expireUnix != 0 && expireUnix < Utilities.getUnixTime();
|
||||||
return complete;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getKickMessage()
|
public boolean isComplete() {
|
||||||
{
|
return complete;
|
||||||
final StringBuilder message = new StringBuilder("You");
|
}
|
||||||
|
|
||||||
message.append(type == BanType.IP ? "r IP address is" : " are").append(" temporarily banned from this server.");
|
public String getKickMessage() {
|
||||||
message.append("\nAppeal at ").append(ChatColor.GOLD).append(ConfigurationEntry.SERVER_BAN_URL.getString());
|
final StringBuilder message = new StringBuilder("You");
|
||||||
|
|
||||||
if (!reason.equals("none"))
|
message.append(type == BanType.IP ? "r IP address is" : " are")
|
||||||
{
|
.append(" temporarily banned from this server.");
|
||||||
message.append("\nReason: ").append(reason);
|
message.append("\nAppeal at ").append(ChatColor.GOLD)
|
||||||
}
|
.append(ConfigurationEntry.SERVER_BAN_URL.getString());
|
||||||
|
|
||||||
if (getExpireUnix() != 0)
|
if (!reason.equals("none")) {
|
||||||
{
|
message.append("\nReason: ").append(reason);
|
||||||
message.append("\nYour ban will be removed on ").append(DATE_FORMAT.format(Utilities.getUnixDate(expireUnix)));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
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
|
return message.toString();
|
||||||
@Override
|
}
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
return subject + ":" + lastLoginName + ":" + by + ":" + expireUnix + ":" + Utilities.decolorize(reason);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
// subject:lastLoginName:bannedBy:expireUnix:reason
|
||||||
public boolean equals(Object object)
|
@Override
|
||||||
{
|
public String toString() {
|
||||||
if (object == null)
|
return subject + ":" + lastLoginName + ":" + by + ":" + expireUnix + ":"
|
||||||
{
|
+ Utilities.decolorize(reason);
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!(object instanceof Ban))
|
@Override
|
||||||
{
|
public boolean equals(Object object) {
|
||||||
return false;
|
if (object == null) {
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
final Ban ban = (Ban) object;
|
if (!(object instanceof Ban)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (toString().equals(ban.toString()))
|
final Ban ban = (Ban) object;
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getType() != ban.getType())
|
if (toString().equals(ban.toString())) {
|
||||||
{
|
return true;
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return getSubject().equals(ban.getSubject());
|
if (getType() != ban.getType()) {
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
return getSubject().equals(ban.getSubject());
|
||||||
public int hashCode()
|
}
|
||||||
{
|
|
||||||
final int prime = 37;
|
@Override
|
||||||
int result = 1;
|
public int hashCode() {
|
||||||
result = prime * result + getType().hashCode();
|
final int prime = 37;
|
||||||
result = prime * result + getSubject().hashCode();
|
int result = 1;
|
||||||
return result;
|
result = prime * result + getType().hashCode();
|
||||||
}
|
result = prime * result + getSubject().hashCode();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum BanType {
|
||||||
|
IP,
|
||||||
|
UUID
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.ban;
|
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.Log;
|
||||||
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
||||||
import me.StevenLawson.TotalFreedomMod.ban.Ban.BanType;
|
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 me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.bukkit.entity.Player;
|
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<Ban> ipBans;
|
private static final List<UUID> unbannableUUIDs;
|
||||||
private static final List<Ban> uuidBans;
|
|
||||||
private static final List<UUID> unbannableUUIDs;
|
|
||||||
|
|
||||||
static
|
static {
|
||||||
{
|
ipBans = new ArrayList<Ban>();
|
||||||
ipBans = new ArrayList<Ban>();
|
uuidBans = new ArrayList<Ban>();
|
||||||
uuidBans = new ArrayList<Ban>();
|
unbannableUUIDs = new ArrayList<UUID>();
|
||||||
unbannableUUIDs = new ArrayList<UUID>();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private BanManager()
|
private BanManager() {
|
||||||
{
|
throw new AssertionError();
|
||||||
throw new AssertionError();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void load()
|
public static void load() {
|
||||||
{
|
ipBans.clear();
|
||||||
ipBans.clear();
|
uuidBans.clear();
|
||||||
uuidBans.clear();
|
unbannableUUIDs.clear();
|
||||||
unbannableUUIDs.clear();
|
|
||||||
|
|
||||||
final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true);
|
final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true);
|
||||||
config.load();
|
config.load();
|
||||||
|
|
||||||
for (String banString : config.getStringList("ips"))
|
for (String banString : config.getStringList("ips")) {
|
||||||
{
|
try {
|
||||||
try
|
addIpBan(new Ban(banString, BanType.IP));
|
||||||
{
|
} catch (RuntimeException ex) {
|
||||||
addIpBan(new Ban(banString, BanType.IP));
|
Log.warning("Could not load IP ban: " + banString);
|
||||||
}
|
}
|
||||||
catch (RuntimeException ex)
|
}
|
||||||
{
|
|
||||||
Log.warning("Could not load IP ban: " + banString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String banString : config.getStringList("uuids"))
|
for (String banString : config.getStringList("uuids")) {
|
||||||
{
|
try {
|
||||||
try
|
addUuidBan(new Ban(banString, BanType.UUID));
|
||||||
{
|
} catch (RuntimeException ex) {
|
||||||
addUuidBan(new Ban(banString, BanType.UUID));
|
Log.warning("Could not load UUID ban: " + banString);
|
||||||
}
|
}
|
||||||
catch (RuntimeException ex)
|
}
|
||||||
{
|
|
||||||
Log.warning("Could not load UUID ban: " + banString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save the config
|
// Save the config
|
||||||
save();
|
save();
|
||||||
Log.info("Loaded " + ipBans.size() + " IP bans and " + uuidBans.size() + " UUID bans");
|
Log.info("Loaded " + ipBans.size() + " IP bans and " + uuidBans.size() + " UUID bans");
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked") final TFM_UuidResolver resolver = new TFM_UuidResolver(
|
||||||
final TFM_UuidResolver resolver = new TFM_UuidResolver((List<String>) ConfigurationEntry.UNBANNABLE_USERNAMES.getList());
|
(List<String>) ConfigurationEntry.UNBANNABLE_USERNAMES.getList());
|
||||||
|
|
||||||
for (UUID uuid : resolver.call().values())
|
for (UUID uuid : resolver.call().values()) {
|
||||||
{
|
unbannableUUIDs.add(uuid);
|
||||||
unbannableUUIDs.add(uuid);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Log.info("Loaded " + unbannableUUIDs.size() + " unbannable UUIDs");
|
Log.info("Loaded " + unbannableUUIDs.size() + " unbannable UUIDs");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void save()
|
public static void save() {
|
||||||
{
|
final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true);
|
||||||
final Configuration config = new Configuration(TotalFreedomMod.plugin, "bans.yml", true);
|
config.load();
|
||||||
config.load();
|
|
||||||
|
|
||||||
final List<String> newIpBans = new ArrayList<String>();
|
final List<String> newIpBans = new ArrayList<String>();
|
||||||
final List<String> newUuidBans = new ArrayList<String>();
|
final List<String> newUuidBans = new ArrayList<String>();
|
||||||
|
|
||||||
for (Ban savedBan : ipBans)
|
for (Ban savedBan : ipBans) {
|
||||||
{
|
if (!savedBan.isExpired()) {
|
||||||
if (!savedBan.isExpired())
|
newIpBans.add(savedBan.toString());
|
||||||
{
|
}
|
||||||
newIpBans.add(savedBan.toString());
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Ban savedBan : uuidBans)
|
for (Ban savedBan : uuidBans) {
|
||||||
{
|
if (!savedBan.isExpired() && !unbannableUUIDs.contains(
|
||||||
if (!savedBan.isExpired() && !unbannableUUIDs.contains(UUID.fromString(savedBan.getSubject())))
|
UUID.fromString(savedBan.getSubject()))) {
|
||||||
{
|
newUuidBans.add(savedBan.toString());
|
||||||
newUuidBans.add(savedBan.toString());
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
config.set("ips", newIpBans);
|
config.set("ips", newIpBans);
|
||||||
config.set("uuids", newUuidBans);
|
config.set("uuids", newUuidBans);
|
||||||
|
|
||||||
// Save config
|
// Save config
|
||||||
config.save();
|
config.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Ban> getIpBanList()
|
public static List<Ban> getIpBanList() {
|
||||||
{
|
return Collections.unmodifiableList(ipBans);
|
||||||
return Collections.unmodifiableList(ipBans);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static List<Ban> getUuidBanList()
|
public static List<Ban> getUuidBanList() {
|
||||||
{
|
return Collections.unmodifiableList(uuidBans);
|
||||||
return Collections.unmodifiableList(uuidBans);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static Ban getByIp(String ip)
|
public static Ban getByIp(String ip) {
|
||||||
{
|
for (Ban ban : ipBans) {
|
||||||
for (Ban ban : ipBans)
|
if (ban.isExpired()) {
|
||||||
{
|
continue;
|
||||||
if (ban.isExpired())
|
}
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
wildcardCheck:
|
wildcardCheck:
|
||||||
if (ban.getSubject().contains("*"))
|
if (ban.getSubject().contains("*")) {
|
||||||
{
|
final String[] subjectParts = ban.getSubject().split("\\.");
|
||||||
final String[] subjectParts = ban.getSubject().split("\\.");
|
final String[] ipParts = ip.split("\\.");
|
||||||
final String[] ipParts = ip.split("\\.");
|
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++) {
|
||||||
{
|
if (!(subjectParts[i].equals("*") || subjectParts[i].equals(ipParts[i]))) {
|
||||||
if (!(subjectParts[i].equals("*") || subjectParts[i].equals(ipParts[i])))
|
break wildcardCheck;
|
||||||
{
|
}
|
||||||
break wildcardCheck;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ban;
|
return ban;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ban.getSubject().equals(ip))
|
if (ban.getSubject().equals(ip)) {
|
||||||
{
|
return ban;
|
||||||
return ban;
|
}
|
||||||
}
|
}
|
||||||
}
|
return null;
|
||||||
return null;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static Ban getByUuid(UUID uuid)
|
public static Ban getByUuid(UUID uuid) {
|
||||||
{
|
for (Ban ban : uuidBans) {
|
||||||
for (Ban ban : uuidBans)
|
if (ban.getSubject().equalsIgnoreCase(uuid.toString())) {
|
||||||
{
|
if (ban.isExpired()) {
|
||||||
if (ban.getSubject().equalsIgnoreCase(uuid.toString()))
|
continue;
|
||||||
{
|
}
|
||||||
if (ban.isExpired())
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ban;
|
return ban;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void unbanIp(String ip)
|
public static void unbanIp(String ip) {
|
||||||
{
|
final Ban ban = getByIp(ip);
|
||||||
final Ban ban = getByIp(ip);
|
|
||||||
|
|
||||||
if (ban == null)
|
if (ban == null) {
|
||||||
{
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
removeBan(ban);
|
removeBan(ban);
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void unbanUuid(UUID uuid)
|
public static void unbanUuid(UUID uuid) {
|
||||||
{
|
final Ban ban = getByUuid(uuid);
|
||||||
final Ban ban = getByUuid(uuid);
|
|
||||||
|
|
||||||
if (ban == null)
|
if (ban == null) {
|
||||||
{
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
removeBan(ban);
|
removeBan(ban);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isIpBanned(String ip)
|
public static boolean isIpBanned(String ip) {
|
||||||
{
|
return getByIp(ip) != null;
|
||||||
return getByIp(ip) != null;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isUuidBanned(UUID uuid)
|
public static boolean isUuidBanned(UUID uuid) {
|
||||||
{
|
return getByUuid(uuid) != null;
|
||||||
return getByUuid(uuid) != null;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void addUuidBan(Player player)
|
public static void addUuidBan(Player player) {
|
||||||
{
|
addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName()));
|
||||||
addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName()));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void addUuidBan(Ban ban)
|
public static void addUuidBan(Ban ban) {
|
||||||
{
|
if (!ban.isComplete()) {
|
||||||
if (!ban.isComplete())
|
throw new RuntimeException("Could not add UUID ban, Invalid format!");
|
||||||
{
|
}
|
||||||
throw new RuntimeException("Could not add UUID ban, Invalid format!");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ban.isExpired())
|
if (ban.isExpired()) {
|
||||||
{
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (uuidBans.contains(ban))
|
if (uuidBans.contains(ban)) {
|
||||||
{
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (unbannableUUIDs.contains(UUID.fromString(ban.getSubject())))
|
if (unbannableUUIDs.contains(UUID.fromString(ban.getSubject()))) {
|
||||||
{
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
uuidBans.add(ban);
|
uuidBans.add(ban);
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addIpBan(Player player)
|
public static void addIpBan(Player player) {
|
||||||
{
|
addIpBan(new Ban(Utilities.getIp(player), player.getName()));
|
||||||
addIpBan(new Ban(Utilities.getIp(player), player.getName()));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void addIpBan(Ban ban)
|
public static void addIpBan(Ban ban) {
|
||||||
{
|
if (!ban.isComplete()) {
|
||||||
if (!ban.isComplete())
|
throw new RuntimeException("Could not add IP ban, Invalid format!");
|
||||||
{
|
}
|
||||||
throw new RuntimeException("Could not add IP ban, Invalid format!");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ban.isExpired())
|
if (ban.isExpired()) {
|
||||||
{
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (ipBans.contains(ban))
|
if (ipBans.contains(ban)) {
|
||||||
{
|
return;
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
ipBans.add(ban);
|
ipBans.add(ban);
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeBan(Ban ban)
|
public static void removeBan(Ban ban) {
|
||||||
{
|
final Iterator<Ban> ips = ipBans.iterator();
|
||||||
final Iterator<Ban> ips = ipBans.iterator();
|
while (ips.hasNext()) {
|
||||||
while (ips.hasNext())
|
if (ips.next().getSubject().equalsIgnoreCase(ban.getSubject())) {
|
||||||
{
|
ips.remove();
|
||||||
if (ips.next().getSubject().equalsIgnoreCase(ban.getSubject()))
|
}
|
||||||
{
|
}
|
||||||
ips.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final Iterator<Ban> uuids = uuidBans.iterator();
|
final Iterator<Ban> uuids = uuidBans.iterator();
|
||||||
while (uuids.hasNext())
|
while (uuids.hasNext()) {
|
||||||
{
|
if (uuids.next().getSubject().equalsIgnoreCase(ban.getSubject())) {
|
||||||
if (uuids.next().getSubject().equalsIgnoreCase(ban.getSubject()))
|
uuids.remove();
|
||||||
{
|
}
|
||||||
uuids.remove();
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void purgeIpBans()
|
public static void purgeIpBans() {
|
||||||
{
|
ipBans.clear();
|
||||||
ipBans.clear();
|
save();
|
||||||
save();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void purgeUuidBans()
|
public static void purgeUuidBans() {
|
||||||
{
|
uuidBans.clear();
|
||||||
uuidBans.clear();
|
save();
|
||||||
save();
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,63 +1,55 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.ban;
|
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.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
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_PLAYERS;
|
||||||
private static final List<String> PERMBANNED_IPS;
|
private static final List<String> PERMBANNED_IPS;
|
||||||
|
|
||||||
static
|
static {
|
||||||
{
|
PERMBANNED_PLAYERS = new ArrayList<String>();
|
||||||
PERMBANNED_PLAYERS = new ArrayList<String>();
|
PERMBANNED_IPS = new ArrayList<String>();
|
||||||
PERMBANNED_IPS = new ArrayList<String>();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private PermbanList()
|
private PermbanList() {
|
||||||
{
|
throw new AssertionError();
|
||||||
throw new AssertionError();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static List<String> getPermbannedPlayers()
|
public static List<String> getPermbannedPlayers() {
|
||||||
{
|
return Collections.unmodifiableList(PERMBANNED_PLAYERS);
|
||||||
return Collections.unmodifiableList(PERMBANNED_PLAYERS);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static List<String> getPermbannedIps()
|
public static List<String> getPermbannedIps() {
|
||||||
{
|
return Collections.unmodifiableList(PERMBANNED_IPS);
|
||||||
return Collections.unmodifiableList(PERMBANNED_IPS);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void load()
|
public static void load() {
|
||||||
{
|
PERMBANNED_PLAYERS.clear();
|
||||||
PERMBANNED_PLAYERS.clear();
|
PERMBANNED_IPS.clear();
|
||||||
PERMBANNED_IPS.clear();
|
|
||||||
|
|
||||||
final Configuration config = new Configuration(TotalFreedomMod.plugin, TotalFreedomMod.PERMBAN_FILENAME, true);
|
final Configuration config = new Configuration(TotalFreedomMod.plugin,
|
||||||
config.load();
|
TotalFreedomMod.PERMBAN_FILENAME, true);
|
||||||
|
config.load();
|
||||||
|
|
||||||
for (String playername : config.getKeys(false))
|
for (String playername : config.getKeys(false)) {
|
||||||
{
|
PERMBANNED_PLAYERS.add(playername.toLowerCase().trim());
|
||||||
PERMBANNED_PLAYERS.add(playername.toLowerCase().trim());
|
|
||||||
|
|
||||||
List<String> playerIps = config.getStringList(playername);
|
List<String> playerIps = config.getStringList(playername);
|
||||||
for (String ip : playerIps)
|
for (String ip : playerIps) {
|
||||||
{
|
ip = ip.trim();
|
||||||
ip = ip.trim();
|
if (!PERMBANNED_IPS.contains(ip)) {
|
||||||
if (!PERMBANNED_IPS.contains(ip))
|
PERMBANNED_IPS.add(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.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,116 +8,87 @@ import org.bukkit.Bukkit;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
public class EssentialsBridge {
|
public class EssentialsBridge {
|
||||||
private static Essentials essentialsPlugin = null;
|
|
||||||
|
|
||||||
private EssentialsBridge() {
|
private static Essentials essentialsPlugin = null;
|
||||||
throw new AssertionError();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Essentials getEssentialsPlugin() {
|
private EssentialsBridge() {
|
||||||
if (essentialsPlugin == null)
|
throw new AssertionError();
|
||||||
{
|
}
|
||||||
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 User getEssentialsUser(String username)
|
public static Essentials getEssentialsPlugin() {
|
||||||
{
|
if (essentialsPlugin == null) {
|
||||||
try
|
try {
|
||||||
{
|
final Plugin essentials = Bukkit.getServer().getPluginManager()
|
||||||
final Essentials essentials = getEssentialsPlugin();
|
.getPlugin("Essentials");
|
||||||
if (essentials != null)
|
if (essentials != null) {
|
||||||
{
|
if (essentials instanceof Essentials) {
|
||||||
return essentials.getUserMap().getUser(username);
|
essentialsPlugin = (Essentials) essentials;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
} catch (Exception ex) {
|
||||||
{
|
Log.severe(ex);
|
||||||
Log.severe(ex);
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return essentialsPlugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setNickname(String username, String nickname)
|
public static User getEssentialsUser(String username) {
|
||||||
{
|
try {
|
||||||
try
|
final Essentials essentials = getEssentialsPlugin();
|
||||||
{
|
if (essentials != null) {
|
||||||
final User user = getEssentialsUser(username);
|
return essentials.getUserMap().getUser(username);
|
||||||
if (user != null)
|
}
|
||||||
{
|
} catch (Exception ex) {
|
||||||
user.setNickname(nickname);
|
Log.severe(ex);
|
||||||
user.setDisplayNick();
|
}
|
||||||
}
|
return null;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.severe(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getNickname(String username)
|
public static void setNickname(String username, String nickname) {
|
||||||
{
|
try {
|
||||||
try
|
final User user = getEssentialsUser(username);
|
||||||
{
|
if (user != null) {
|
||||||
final User user = getEssentialsUser(username);
|
user.setNickname(nickname);
|
||||||
if (user != null)
|
user.setDisplayNick();
|
||||||
{
|
}
|
||||||
return user.getNickname();
|
} catch (Exception ex) {
|
||||||
}
|
Log.severe(ex);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
}
|
||||||
{
|
|
||||||
Log.severe(ex);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static long getLastActivity(String username)
|
public static String getNickname(String username) {
|
||||||
{
|
try {
|
||||||
try
|
final User user = getEssentialsUser(username);
|
||||||
{
|
if (user != null) {
|
||||||
final User user = getEssentialsUser(username);
|
return user.getNickname();
|
||||||
if (user != null)
|
}
|
||||||
{
|
} catch (Exception ex) {
|
||||||
return Utilities.<Long>getField(user, "lastActivity"); // This is weird
|
Log.severe(ex);
|
||||||
}
|
}
|
||||||
}
|
return null;
|
||||||
catch (Exception ex)
|
}
|
||||||
{
|
|
||||||
Log.severe(ex);
|
|
||||||
}
|
|
||||||
return 0L;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isEssentialsEnabled()
|
public static long getLastActivity(String username) {
|
||||||
{
|
try {
|
||||||
try
|
final User user = getEssentialsUser(username);
|
||||||
{
|
if (user != null) {
|
||||||
final Essentials essentials = getEssentialsPlugin();
|
return Utilities.<Long>getField(user, "lastActivity"); // This is weird
|
||||||
if (essentials != null)
|
}
|
||||||
{
|
} catch (Exception ex) {
|
||||||
return essentials.isEnabled();
|
Log.severe(ex);
|
||||||
}
|
}
|
||||||
}
|
return 0L;
|
||||||
catch (Exception ex)
|
}
|
||||||
{
|
|
||||||
Log.severe(ex);
|
public static boolean isEssentialsEnabled() {
|
||||||
}
|
try {
|
||||||
return false;
|
final Essentials essentials = getEssentialsPlugin();
|
||||||
}
|
if (essentials != null) {
|
||||||
|
return essentials.isEnabled();
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Log.severe(ex);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,104 +9,77 @@ import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
public class WorldEditBridge {
|
public class WorldEditBridge {
|
||||||
private static WorldEditPlugin worldEditPlugin = null;
|
|
||||||
|
|
||||||
private WorldEditBridge() {
|
private static WorldEditPlugin worldEditPlugin = null;
|
||||||
throw new AssertionError();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static WorldEditPlugin getWorldEditPlugin() {
|
private WorldEditBridge() {
|
||||||
if (worldEditPlugin == null)
|
throw new AssertionError();
|
||||||
{
|
}
|
||||||
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 LocalSession getPlayerSession(Player player)
|
private static WorldEditPlugin getWorldEditPlugin() {
|
||||||
{
|
if (worldEditPlugin == null) {
|
||||||
try
|
try {
|
||||||
{
|
Plugin we = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
|
||||||
final WorldEditPlugin wep = getWorldEditPlugin();
|
if (we != null) {
|
||||||
if (wep != null)
|
if (we instanceof WorldEditPlugin) {
|
||||||
{
|
worldEditPlugin = (WorldEditPlugin) we;
|
||||||
return wep.getSession(player);
|
}
|
||||||
}
|
}
|
||||||
}
|
} catch (Exception ex) {
|
||||||
catch (Exception ex)
|
Log.severe(ex);
|
||||||
{
|
}
|
||||||
Log.severe(ex);
|
}
|
||||||
}
|
return worldEditPlugin;
|
||||||
return null;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private static BukkitPlayer getBukkitPlayer(Player player)
|
private static LocalSession getPlayerSession(Player player) {
|
||||||
{
|
try {
|
||||||
try
|
final WorldEditPlugin wep = getWorldEditPlugin();
|
||||||
{
|
if (wep != null) {
|
||||||
final WorldEditPlugin wep = getWorldEditPlugin();
|
return wep.getSession(player);
|
||||||
if (wep != null)
|
}
|
||||||
{
|
} catch (Exception ex) {
|
||||||
return wep.wrapPlayer(player);
|
Log.severe(ex);
|
||||||
}
|
}
|
||||||
}
|
return null;
|
||||||
catch (Exception ex)
|
}
|
||||||
{
|
|
||||||
Log.severe(ex);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void undo(Player player, int count)
|
private static BukkitPlayer getBukkitPlayer(Player player) {
|
||||||
{
|
try {
|
||||||
try
|
final WorldEditPlugin wep = getWorldEditPlugin();
|
||||||
{
|
if (wep != null) {
|
||||||
LocalSession session = getPlayerSession(player);
|
return wep.wrapPlayer(player);
|
||||||
if (session != null)
|
}
|
||||||
{
|
} catch (Exception ex) {
|
||||||
final BukkitPlayer bukkitPlayer = getBukkitPlayer(player);
|
Log.severe(ex);
|
||||||
if (bukkitPlayer != null)
|
}
|
||||||
{
|
return 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)
|
public static void undo(Player player, int count) {
|
||||||
{
|
try {
|
||||||
try
|
LocalSession session = getPlayerSession(player);
|
||||||
{
|
if (session != null) {
|
||||||
final LocalSession session = getPlayerSession(player);
|
final BukkitPlayer bukkitPlayer = getBukkitPlayer(player);
|
||||||
if (session != null)
|
if (bukkitPlayer != null) {
|
||||||
{
|
for (int i = 0; i < count; i++) {
|
||||||
session.setBlockChangeLimit(limit);
|
session.undo(session.getBlockBag(bukkitPlayer), bukkitPlayer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
}
|
||||||
{
|
} catch (Exception ex) {
|
||||||
Log.severe(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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.command;
|
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.Log;
|
||||||
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
||||||
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
||||||
|
@ -12,311 +15,263 @@ import org.bukkit.command.CommandMap;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.HashMap;
|
public class CommandBlocker {
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class CommandBlocker
|
private static final Map<String, CommandBlockerEntry> BLOCKED_COMMANDS;
|
||||||
{
|
|
||||||
private static final Map<String, CommandBlockerEntry> BLOCKED_COMMANDS;
|
|
||||||
|
|
||||||
static
|
static {
|
||||||
{
|
BLOCKED_COMMANDS = new HashMap<String, CommandBlockerEntry>();
|
||||||
BLOCKED_COMMANDS = new HashMap<String, CommandBlockerEntry>();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private CommandBlocker()
|
private CommandBlocker() {
|
||||||
{
|
throw new AssertionError();
|
||||||
throw new AssertionError();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void load()
|
public static void load() {
|
||||||
{
|
BLOCKED_COMMANDS.clear();
|
||||||
BLOCKED_COMMANDS.clear();
|
|
||||||
|
|
||||||
final CommandMap commandMap = Utilities.getField(Bukkit.getServer().getPluginManager(), "commandMap");
|
final CommandMap commandMap = Utilities.getField(Bukkit.getServer().getPluginManager(),
|
||||||
if (commandMap == null)
|
"commandMap");
|
||||||
{
|
if (commandMap == null) {
|
||||||
Log.severe("Error loading commandMap.");
|
Log.severe("Error loading commandMap.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
List<String> blockedCommands = (List<String>) ConfigurationEntry.BLOCKED_COMMANDS.getList();
|
List<String> blockedCommands = (List<String>) ConfigurationEntry.BLOCKED_COMMANDS.getList();
|
||||||
for (String rawEntry : blockedCommands)
|
for (String rawEntry : blockedCommands) {
|
||||||
{
|
final String[] parts = rawEntry.split(":");
|
||||||
final String[] parts = rawEntry.split(":");
|
if (parts.length < 3 || parts.length > 4) {
|
||||||
if (parts.length < 3 || parts.length > 4)
|
Log.warning("Invalid command blocker entry: " + rawEntry);
|
||||||
{
|
continue;
|
||||||
Log.warning("Invalid command blocker entry: " + rawEntry);
|
}
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
final CommandBlockerRank rank = CommandBlockerRank.fromToken(parts[0]);
|
final CommandBlockerRank rank = CommandBlockerRank.fromToken(parts[0]);
|
||||||
final CommandBlockerAction action = CommandBlockerAction.fromToken(parts[1]);
|
final CommandBlockerAction action = CommandBlockerAction.fromToken(parts[1]);
|
||||||
String commandName = parts[2].toLowerCase().substring(1);
|
String commandName = parts[2].toLowerCase().substring(1);
|
||||||
final String message = (parts.length > 3 ? parts[3] : null);
|
final String message = (parts.length > 3 ? parts[3] : null);
|
||||||
|
|
||||||
if (rank == null || action == null || commandName == null || commandName.isEmpty())
|
if (rank == null || action == null || commandName == null || commandName.isEmpty()) {
|
||||||
{
|
Log.warning("Invalid command blocker entry: " + rawEntry);
|
||||||
Log.warning("Invalid command blocker entry: " + rawEntry);
|
continue;
|
||||||
continue;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
final String[] commandParts = commandName.split(" ");
|
final String[] commandParts = commandName.split(" ");
|
||||||
String subCommand = null;
|
String subCommand = null;
|
||||||
if (commandParts.length > 1)
|
if (commandParts.length > 1) {
|
||||||
{
|
commandName = commandParts[0];
|
||||||
commandName = commandParts[0];
|
subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).trim()
|
||||||
subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).trim().toLowerCase();
|
.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
final Command command = commandMap.getCommand(commandName);
|
final Command command = commandMap.getCommand(commandName);
|
||||||
|
|
||||||
// Obtain command from alias
|
// Obtain command from alias
|
||||||
if (command == null)
|
if (command == null) {
|
||||||
{
|
Log.info("Blocking unknown command: /" + commandName);
|
||||||
Log.info("Blocking unknown command: /" + commandName);
|
} else {
|
||||||
}
|
commandName = command.getName().toLowerCase();
|
||||||
else
|
}
|
||||||
{
|
|
||||||
commandName = command.getName().toLowerCase();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (BLOCKED_COMMANDS.containsKey(commandName))
|
if (BLOCKED_COMMANDS.containsKey(commandName)) {
|
||||||
{
|
Log.warning("Not blocking: /" + commandName + " - Duplicate entry exists!");
|
||||||
Log.warning("Not blocking: /" + commandName + " - Duplicate entry exists!");
|
continue;
|
||||||
continue;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
final CommandBlockerEntry blockedCommandEntry = new CommandBlockerEntry(rank, action, commandName, subCommand, message);
|
final CommandBlockerEntry blockedCommandEntry = new CommandBlockerEntry(rank, action,
|
||||||
BLOCKED_COMMANDS.put(blockedCommandEntry.getCommand(), blockedCommandEntry);
|
commandName, subCommand, message);
|
||||||
|
BLOCKED_COMMANDS.put(blockedCommandEntry.getCommand(), blockedCommandEntry);
|
||||||
|
|
||||||
if (command != null)
|
if (command != null) {
|
||||||
{
|
for (String alias : command.getAliases()) {
|
||||||
for (String alias : command.getAliases())
|
BLOCKED_COMMANDS.put(alias.toLowerCase(), blockedCommandEntry);
|
||||||
{
|
}
|
||||||
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)
|
public static boolean isCommandBlocked(String command, CommandSender sender) {
|
||||||
{
|
return isCommandBlocked(command, sender, false);
|
||||||
return isCommandBlocked(command, sender, false);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isCommandBlocked(String command, CommandSender sender, boolean doAction)
|
public static boolean isCommandBlocked(String command, CommandSender sender, boolean doAction) {
|
||||||
{
|
if (command == null || command.isEmpty()) {
|
||||||
if (command == null || command.isEmpty())
|
return false;
|
||||||
{
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
command = command.toLowerCase().trim();
|
command = command.toLowerCase().trim();
|
||||||
|
|
||||||
if (command.split(" ")[0].contains(":"))
|
if (command.split(" ")[0].contains(":")) {
|
||||||
{
|
Utilities.playerMsg(sender, "Plugin-specific commands are disabled.");
|
||||||
Utilities.playerMsg(sender, "Plugin-specific commands are disabled.");
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (command.startsWith("/"))
|
if (command.startsWith("/")) {
|
||||||
{
|
command = command.substring(1);
|
||||||
command = command.substring(1);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
final String[] commandParts = command.split(" ");
|
final String[] commandParts = command.split(" ");
|
||||||
String subCommand = null;
|
String subCommand = null;
|
||||||
if (commandParts.length > 1)
|
if (commandParts.length > 1) {
|
||||||
{
|
subCommand = StringUtils.join(commandParts, " ", 1, commandParts.length).toLowerCase();
|
||||||
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)
|
if (entry == null) {
|
||||||
{
|
return false;
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (entry.getSubCommand() != null)
|
if (entry.getSubCommand() != null) {
|
||||||
{
|
if (subCommand == null || !subCommand.startsWith(entry.getSubCommand())) {
|
||||||
if (subCommand == null || !subCommand.startsWith(entry.getSubCommand()))
|
return false;
|
||||||
{
|
}
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entry.getRank().hasPermission(sender))
|
if (entry.getRank().hasPermission(sender)) {
|
||||||
{
|
return false;
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (doAction)
|
if (doAction) {
|
||||||
{
|
entry.doActions(sender);
|
||||||
entry.doActions(sender);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum CommandBlockerRank
|
public enum CommandBlockerRank {
|
||||||
{
|
ANYONE("a", 0),
|
||||||
ANYONE("a", 0),
|
OP("o", 1),
|
||||||
OP("o", 1),
|
SUPER("s", 2),
|
||||||
SUPER("s", 2),
|
TELNET("t", 3),
|
||||||
TELNET("t", 3),
|
SENIOR("c", 4),
|
||||||
SENIOR("c", 4),
|
NOBODY("n", 5);
|
||||||
NOBODY("n", 5);
|
//
|
||||||
//
|
private final String token;
|
||||||
private final String token;
|
private final int level;
|
||||||
private final int level;
|
|
||||||
|
|
||||||
CommandBlockerRank(String token, int level)
|
CommandBlockerRank(String token, int level) {
|
||||||
{
|
this.token = token;
|
||||||
this.token = token;
|
this.level = level;
|
||||||
this.level = level;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getToken()
|
public static CommandBlockerRank fromSender(CommandSender sender) {
|
||||||
{
|
if (!(sender instanceof Player)) {
|
||||||
return this.token;
|
return TELNET;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasPermission(CommandSender sender)
|
if (AdminList.isSuperAdmin(sender)) {
|
||||||
{
|
if (AdminList.isSeniorAdmin(sender)) {
|
||||||
return fromSender(sender).level >= this.level;
|
return SENIOR;
|
||||||
}
|
}
|
||||||
|
return SUPER;
|
||||||
|
}
|
||||||
|
|
||||||
public static CommandBlockerRank fromSender(CommandSender sender)
|
if (sender.isOp()) {
|
||||||
{
|
return OP;
|
||||||
if (!(sender instanceof Player))
|
}
|
||||||
{
|
|
||||||
return TELNET;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AdminList.isSuperAdmin(sender))
|
return ANYONE;
|
||||||
{
|
|
||||||
if (AdminList.isSeniorAdmin(sender))
|
|
||||||
{
|
|
||||||
return SENIOR;
|
|
||||||
}
|
|
||||||
return SUPER;
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
public boolean hasPermission(CommandSender sender) {
|
||||||
{
|
return fromSender(sender).level >= this.level;
|
||||||
for (CommandBlockerRank rank : CommandBlockerRank.values())
|
}
|
||||||
{
|
}
|
||||||
if (rank.getToken().equalsIgnoreCase(token))
|
|
||||||
{
|
|
||||||
return rank;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ANYONE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum CommandBlockerAction
|
public enum CommandBlockerAction {
|
||||||
{
|
BLOCK("b"),
|
||||||
BLOCK("b"),
|
BLOCK_AND_EJECT("a"),
|
||||||
BLOCK_AND_EJECT("a"),
|
BLOCK_UNKNOWN("u");
|
||||||
BLOCK_UNKNOWN("u");
|
private final String token;
|
||||||
private final String token;
|
|
||||||
|
|
||||||
CommandBlockerAction(String token)
|
CommandBlockerAction(String token) {
|
||||||
{
|
this.token = token;
|
||||||
this.token = token;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getToken()
|
public static CommandBlockerAction fromToken(String token) {
|
||||||
{
|
for (CommandBlockerAction action : CommandBlockerAction.values()) {
|
||||||
return this.token;
|
if (action.getToken().equalsIgnoreCase(token)) {
|
||||||
}
|
return action;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public static CommandBlockerAction fromToken(String token)
|
public String getToken() {
|
||||||
{
|
return this.token;
|
||||||
for (CommandBlockerAction action : CommandBlockerAction.values())
|
}
|
||||||
{
|
}
|
||||||
if (action.getToken().equalsIgnoreCase(token))
|
|
||||||
{
|
|
||||||
return action;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class CommandBlockerEntry
|
public static class CommandBlockerEntry {
|
||||||
{
|
|
||||||
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 message)
|
private final CommandBlockerRank rank;
|
||||||
{
|
private final CommandBlockerAction action;
|
||||||
this(rank, action, command, null, message);
|
private final String command;
|
||||||
}
|
private final String subCommand;
|
||||||
|
private final String message;
|
||||||
|
|
||||||
private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action, String command, String subCommand, String message)
|
private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action,
|
||||||
{
|
String command, String message) {
|
||||||
this.rank = rank;
|
this(rank, action, command, null, message);
|
||||||
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 CommandBlockerAction getAction()
|
private CommandBlockerEntry(CommandBlockerRank rank, CommandBlockerAction action,
|
||||||
{
|
String command, String subCommand, String message) {
|
||||||
return this.action;
|
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()
|
public CommandBlockerAction getAction() {
|
||||||
{
|
return this.action;
|
||||||
return this.command;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubCommand()
|
public String getCommand() {
|
||||||
{
|
return this.command;
|
||||||
return this.subCommand;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public String getMessage()
|
public String getSubCommand() {
|
||||||
{
|
return this.subCommand;
|
||||||
return this.message;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public CommandBlockerRank getRank()
|
public String getMessage() {
|
||||||
{
|
return this.message;
|
||||||
return this.rank;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void doActions(CommandSender sender)
|
public CommandBlockerRank getRank() {
|
||||||
{
|
return this.rank;
|
||||||
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));
|
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));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
public enum AdminLevel {
|
public enum AdminLevel {
|
||||||
ALL("All Player Commands"), OP("OP Commands"), SUPER("SuperAdmin Commands"), SENIOR("Senior Admin Commands");
|
ALL("All Player Commands"), OP("OP Commands"), SUPER("SuperAdmin Commands"), SENIOR(
|
||||||
//
|
"Senior Admin Commands");
|
||||||
private final String friendlyName;
|
//
|
||||||
|
private final String friendlyName;
|
||||||
|
|
||||||
AdminLevel(String friendlyName) {
|
AdminLevel(String friendlyName) {
|
||||||
this.friendlyName = friendlyName;
|
this.friendlyName = friendlyName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFriendlyName()
|
public String getFriendlyName() {
|
||||||
{
|
return friendlyName;
|
||||||
return friendlyName;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,9 +2,9 @@ package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
// This is only here because of Command_tfm
|
// This is only here because of Command_tfm
|
||||||
|
|
||||||
public @interface CommandParameters
|
public @interface CommandParameters {
|
||||||
{
|
|
||||||
String description();
|
|
||||||
|
|
||||||
String usage();
|
String description();
|
||||||
|
|
||||||
|
String usage();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,11 +4,11 @@ import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
public @interface CommandPermissions
|
public @interface CommandPermissions {
|
||||||
{
|
|
||||||
AdminLevel level();
|
|
||||||
|
|
||||||
SourceType source();
|
AdminLevel level();
|
||||||
|
|
||||||
boolean blockHostConsole() default false;
|
SourceType source();
|
||||||
|
|
||||||
|
boolean blockHostConsole() default false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,31 +9,29 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true)
|
||||||
public class Command_adminmode extends FreedomCommand {
|
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")) {
|
@Override
|
||||||
ConfigurationEntry.ADMIN_ONLY_MODE.setBoolean(false);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
Utilities.adminAction(sender.getName(), "Deactivating adminmode.", true);
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
return true;
|
if (args.length != 1) {
|
||||||
}
|
return false;
|
||||||
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;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,213 +10,165 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
||||||
public class Command_adminworld extends FreedomCommand {
|
public class Command_adminworld extends FreedomCommand {
|
||||||
private enum CommandMode {
|
|
||||||
TELEPORT, GUEST, TIME, WEATHER
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
CommandMode commandMode = null;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
|
CommandMode commandMode = null;
|
||||||
|
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
commandMode = CommandMode.TELEPORT;
|
commandMode = CommandMode.TELEPORT;
|
||||||
} else if (args.length >= 2) {
|
} else if (args.length >= 2) {
|
||||||
if ("guest".equalsIgnoreCase(args[0]))
|
if ("guest".equalsIgnoreCase(args[0])) {
|
||||||
{
|
commandMode = CommandMode.GUEST;
|
||||||
commandMode = CommandMode.GUEST;
|
} else if ("time".equalsIgnoreCase(args[0])) {
|
||||||
}
|
commandMode = CommandMode.TIME;
|
||||||
else if ("time".equalsIgnoreCase(args[0]))
|
} else if ("weather".equalsIgnoreCase(args[0])) {
|
||||||
{
|
commandMode = CommandMode.WEATHER;
|
||||||
commandMode = CommandMode.TIME;
|
}
|
||||||
}
|
}
|
||||||
else if ("weather".equalsIgnoreCase(args[0]))
|
|
||||||
{
|
|
||||||
commandMode = CommandMode.WEATHER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (commandMode == null)
|
if (commandMode == null) {
|
||||||
{
|
return false;
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
try
|
try {
|
||||||
{
|
switch (commandMode) {
|
||||||
switch (commandMode)
|
case TELEPORT: {
|
||||||
{
|
if (!(sender instanceof Player) || sender_p == null) {
|
||||||
case TELEPORT:
|
return true;
|
||||||
{
|
}
|
||||||
if (!(sender instanceof Player) || sender_p == null)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
World adminWorld = null;
|
World adminWorld = null;
|
||||||
try
|
try {
|
||||||
{
|
adminWorld = AdminWorld.getInstance().getWorld();
|
||||||
adminWorld = AdminWorld.getInstance().getWorld();
|
} catch (Exception ex) {
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
if (adminWorld == null || sender_p.getWorld() == adminWorld)
|
if (adminWorld == null || sender_p.getWorld() == adminWorld) {
|
||||||
{
|
playerMsg(sender, "Going to the main world.");
|
||||||
playerMsg(sender, "Going to the main world.");
|
sender_p.teleport(server.getWorlds().get(0).getSpawnLocation());
|
||||||
sender_p.teleport(server.getWorlds().get(0).getSpawnLocation());
|
} else {
|
||||||
}
|
if (AdminWorld.getInstance().canAccessWorld(sender_p)) {
|
||||||
else
|
playerMsg(sender, "Going to the AdminWorld.");
|
||||||
{
|
AdminWorld.getInstance().sendToWorld(sender_p);
|
||||||
if (AdminWorld.getInstance().canAccessWorld(sender_p))
|
} else {
|
||||||
{
|
playerMsg(sender,
|
||||||
playerMsg(sender, "Going to the AdminWorld.");
|
"You don't have permission to access the AdminWorld.");
|
||||||
AdminWorld.getInstance().sendToWorld(sender_p);
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
playerMsg(sender, "You don't have permission to access the AdminWorld.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GUEST:
|
case GUEST: {
|
||||||
{
|
if (args.length == 2) {
|
||||||
if (args.length == 2)
|
if ("list".equalsIgnoreCase(args[1])) {
|
||||||
{
|
playerMsg(sender, "AdminWorld guest list: " + AdminWorld.getInstance()
|
||||||
if ("list".equalsIgnoreCase(args[1]))
|
.guestListToString());
|
||||||
{
|
} else if ("purge".equalsIgnoreCase(args[1])) {
|
||||||
playerMsg(sender, "AdminWorld guest list: " + AdminWorld.getInstance().guestListToString());
|
assertCommandPerms(sender, sender_p);
|
||||||
}
|
AdminWorld.getInstance().purgeGuestList();
|
||||||
else if ("purge".equalsIgnoreCase(args[1]))
|
Utilities.adminAction(sender.getName(), "AdminWorld guest list purged.",
|
||||||
{
|
false);
|
||||||
assertCommandPerms(sender, sender_p);
|
} else {
|
||||||
AdminWorld.getInstance().purgeGuestList();
|
return false;
|
||||||
Utilities.adminAction(sender.getName(), "AdminWorld guest list purged.", false);
|
}
|
||||||
}
|
} else if (args.length == 3) {
|
||||||
else
|
assertCommandPerms(sender, sender_p);
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (args.length == 3)
|
|
||||||
{
|
|
||||||
assertCommandPerms(sender, sender_p);
|
|
||||||
|
|
||||||
if ("add".equalsIgnoreCase(args[1]))
|
if ("add".equalsIgnoreCase(args[1])) {
|
||||||
{
|
final Player player = getPlayer(args[2]);
|
||||||
final Player player = getPlayer(args[2]);
|
|
||||||
|
|
||||||
if (player == null)
|
if (player == null) {
|
||||||
{
|
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (AdminWorld.getInstance().addGuest(player, sender_p))
|
if (AdminWorld.getInstance().addGuest(player, sender_p)) {
|
||||||
{
|
Utilities.adminAction(sender.getName(),
|
||||||
Utilities.adminAction(sender.getName(), "AdminWorld guest added: " + player.getName(), false);
|
"AdminWorld guest added: " + player.getName(), false);
|
||||||
}
|
} else {
|
||||||
else
|
playerMsg(sender, "Could not add player to guest list.");
|
||||||
{
|
}
|
||||||
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) {
|
||||||
else if ("remove".equals(args[1]))
|
Utilities.adminAction(sender.getName(),
|
||||||
{
|
"AdminWorld guest removed: " + player.getName(), false);
|
||||||
final Player player = AdminWorld.getInstance().removeGuest(args[2]);
|
} else {
|
||||||
if (player != null)
|
playerMsg(sender, "Can't find guest entry for: " + args[2]);
|
||||||
{
|
}
|
||||||
Utilities.adminAction(sender.getName(), "AdminWorld guest removed: " + player.getName(), false);
|
} else {
|
||||||
}
|
return false;
|
||||||
else
|
}
|
||||||
{
|
}
|
||||||
playerMsg(sender, "Can't find guest entry for: " + args[2]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TIME:
|
case TIME: {
|
||||||
{
|
assertCommandPerms(sender, sender_p);
|
||||||
assertCommandPerms(sender, sender_p);
|
|
||||||
|
|
||||||
if (args.length == 2)
|
if (args.length == 2) {
|
||||||
{
|
AdminWorld.TimeOfDay timeOfDay = AdminWorld.TimeOfDay.getByAlias(args[1]);
|
||||||
AdminWorld.TimeOfDay timeOfDay = AdminWorld.TimeOfDay.getByAlias(args[1]);
|
if (timeOfDay != null) {
|
||||||
if (timeOfDay != null)
|
AdminWorld.getInstance().setTimeOfDay(timeOfDay);
|
||||||
{
|
playerMsg(sender, "AdminWorld time set to: " + timeOfDay.name());
|
||||||
AdminWorld.getInstance().setTimeOfDay(timeOfDay);
|
} else {
|
||||||
playerMsg(sender, "AdminWorld time set to: " + timeOfDay.name());
|
playerMsg(sender,
|
||||||
}
|
"Invalid time of day. Can be: sunrise, noon, sunset, midnight");
|
||||||
else
|
}
|
||||||
{
|
} else {
|
||||||
playerMsg(sender, "Invalid time of day. Can be: sunrise, noon, sunset, midnight");
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case WEATHER:
|
case WEATHER: {
|
||||||
{
|
assertCommandPerms(sender, sender_p);
|
||||||
assertCommandPerms(sender, sender_p);
|
|
||||||
|
|
||||||
if (args.length == 2)
|
if (args.length == 2) {
|
||||||
{
|
AdminWorld.WeatherMode weatherMode = AdminWorld.WeatherMode.getByAlias(
|
||||||
AdminWorld.WeatherMode weatherMode = AdminWorld.WeatherMode.getByAlias(args[1]);
|
args[1]);
|
||||||
if (weatherMode != null)
|
if (weatherMode != null) {
|
||||||
{
|
AdminWorld.getInstance().setWeatherMode(weatherMode);
|
||||||
AdminWorld.getInstance().setWeatherMode(weatherMode);
|
playerMsg(sender, "AdminWorld weather set to: " + weatherMode.name());
|
||||||
playerMsg(sender, "AdminWorld weather set to: " + weatherMode.name());
|
} else {
|
||||||
}
|
playerMsg(sender, "Invalid weather mode. Can be: off, rain, storm");
|
||||||
else
|
}
|
||||||
{
|
} else {
|
||||||
playerMsg(sender, "Invalid weather mode. Can be: off, rain, storm");
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default: {
|
||||||
{
|
return false;
|
||||||
return false;
|
}
|
||||||
}
|
}
|
||||||
}
|
} catch (PermissionDeniedException ex) {
|
||||||
}
|
sender.sendMessage(ex.getMessage());
|
||||||
catch (PermissionDeniedException ex)
|
}
|
||||||
{
|
|
||||||
sender.sendMessage(ex.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertCommandPerms(CommandSender sender, org.bukkit.entity.Player sender_p) throws PermissionDeniedException {
|
private void assertCommandPerms(CommandSender sender, org.bukkit.entity.Player sender_p)
|
||||||
if (!(sender instanceof Player) || sender_p == null || !AdminList.isSuperAdmin(sender)) {
|
throws PermissionDeniedException {
|
||||||
throw new PermissionDeniedException(FreedomCommand.MSG_NO_PERMS);
|
if (!(sender instanceof Player) || sender_p == null || !AdminList.isSuperAdmin(sender)) {
|
||||||
}
|
throw new PermissionDeniedException(FreedomCommand.MSG_NO_PERMS);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class PermissionDeniedException extends Exception
|
private enum CommandMode {
|
||||||
{
|
TELEPORT, GUEST, TIME, WEATHER
|
||||||
private static final long serialVersionUID = 1L;
|
}
|
||||||
|
|
||||||
private PermissionDeniedException(String string)
|
private class PermissionDeniedException extends Exception {
|
||||||
{
|
|
||||||
super(string);
|
private static final long serialVersionUID = 1L;
|
||||||
}
|
|
||||||
}
|
private PermissionDeniedException(String string) {
|
||||||
|
super(string);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,49 +9,50 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_blockcmd extends FreedomCommand {
|
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")) {
|
@Override
|
||||||
Utilities.adminAction(sender.getName(), "Unblocking commands for all players", true);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
int counter = 0;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
for (Player player : server.getOnlinePlayers())
|
if (args.length != 1) {
|
||||||
{
|
return false;
|
||||||
PlayerData playerdata = PlayerData.getPlayerData(player);
|
}
|
||||||
if (playerdata.allCommandsBlocked())
|
|
||||||
{
|
|
||||||
counter += 1;
|
|
||||||
playerdata.setCommandsBlocked(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
playerMsg(sender, "Unblocked commands for " + counter + " players.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
final Player player = getPlayer(args[0]);
|
||||||
{
|
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AdminList.isSuperAdmin(player))
|
if (player == null) {
|
||||||
{
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
playerMsg(sender, player.getName() + " is a Superadmin, and cannot have their commands blocked.");
|
return true;
|
||||||
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);
|
playerdata.setCommandsBlocked(!playerdata.allCommandsBlocked());
|
||||||
playerMsg(sender, (playerdata.allCommandsBlocked() ? "B" : "Unb") + "locked all commands.");
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,106 +11,91 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_cage extends FreedomCommand {
|
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) {
|
@Override
|
||||||
Utilities.adminAction(sender.getName(), "Uncaging " + sender.getName(), true);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
PlayerData playerdata = PlayerData.getPlayerData(sender_p);
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
|
if (args.length == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
playerdata.setCaged(false);
|
if ("off".equals(args[0]) && sender instanceof Player) {
|
||||||
playerdata.regenerateHistory();
|
Utilities.adminAction(sender.getName(), "Uncaging " + sender.getName(), true);
|
||||||
playerdata.clearHistory();
|
PlayerData playerdata = PlayerData.getPlayerData(sender_p);
|
||||||
|
|
||||||
return true;
|
playerdata.setCaged(false);
|
||||||
}
|
playerdata.regenerateHistory();
|
||||||
else if ("purge".equals(args[0]))
|
playerdata.clearHistory();
|
||||||
{
|
|
||||||
Utilities.adminAction(sender.getName(), "Uncaging all players", true);
|
|
||||||
|
|
||||||
for (Player player : server.getOnlinePlayers())
|
return true;
|
||||||
{
|
} else if ("purge".equals(args[0])) {
|
||||||
PlayerData playerdata = PlayerData.getPlayerData(player);
|
Utilities.adminAction(sender.getName(), "Uncaging all players", true);
|
||||||
playerdata.setCaged(false);
|
|
||||||
playerdata.regenerateHistory();
|
|
||||||
playerdata.clearHistory();
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
final Player player = getPlayer(args[0]);
|
||||||
{
|
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerData playerdata = PlayerData.getPlayerData(player);
|
if (player == null) {
|
||||||
|
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
Material outerMaterial = Material.GLASS;
|
PlayerData playerdata = PlayerData.getPlayerData(player);
|
||||||
Material innerMaterial = Material.AIR;
|
|
||||||
|
|
||||||
if (args.length >= 2)
|
Material outerMaterial = Material.GLASS;
|
||||||
{
|
Material innerMaterial = Material.AIR;
|
||||||
if ("off".equals(args[1]))
|
|
||||||
{
|
|
||||||
Utilities.adminAction(sender.getName(), "Uncaging " + player.getName(), true);
|
|
||||||
|
|
||||||
playerdata.setCaged(false);
|
if (args.length >= 2) {
|
||||||
playerdata.regenerateHistory();
|
if ("off".equals(args[1])) {
|
||||||
playerdata.clearHistory();
|
Utilities.adminAction(sender.getName(), "Uncaging " + player.getName(), true);
|
||||||
|
|
||||||
return true;
|
playerdata.setCaged(false);
|
||||||
}
|
playerdata.regenerateHistory();
|
||||||
else
|
playerdata.clearHistory();
|
||||||
{
|
|
||||||
if ("darth".equalsIgnoreCase(args[1]))
|
|
||||||
{
|
|
||||||
outerMaterial = Material.SKULL;
|
|
||||||
}
|
|
||||||
else if (Material.matchMaterial(args[1]) != null)
|
|
||||||
{
|
|
||||||
outerMaterial = Material.matchMaterial(args[1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length >= 3)
|
return true;
|
||||||
{
|
} else {
|
||||||
if (args[2].equalsIgnoreCase("water"))
|
if ("darth".equalsIgnoreCase(args[1])) {
|
||||||
{
|
outerMaterial = Material.SKULL;
|
||||||
innerMaterial = Material.STATIONARY_WATER;
|
} else if (Material.matchMaterial(args[1]) != null) {
|
||||||
}
|
outerMaterial = Material.matchMaterial(args[1]);
|
||||||
else if (args[2].equalsIgnoreCase("lava"))
|
}
|
||||||
{
|
}
|
||||||
innerMaterial = Material.STATIONARY_LAVA;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Location targetPos = player.getLocation().clone().add(0, 1, 0);
|
if (args.length >= 3) {
|
||||||
playerdata.setCaged(true, targetPos, outerMaterial, innerMaterial);
|
if (args[2].equalsIgnoreCase("water")) {
|
||||||
playerdata.regenerateHistory();
|
innerMaterial = Material.STATIONARY_WATER;
|
||||||
playerdata.clearHistory();
|
} else if (args[2].equalsIgnoreCase("lava")) {
|
||||||
Utilities.buildHistory(targetPos, 2, playerdata);
|
innerMaterial = Material.STATIONARY_LAVA;
|
||||||
Utilities.generateHollowCube(targetPos, 2, outerMaterial);
|
}
|
||||||
Utilities.generateCube(targetPos, 1, innerMaterial);
|
}
|
||||||
|
|
||||||
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)
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
{
|
|
||||||
Utilities.adminAction(sender.getName(), "Caging " + player.getName(), true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Utilities.adminAction(sender.getName(), "Caging " + player.getName() + " in PURE_DARTH", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.bukkit.Achievement;
|
import org.bukkit.Achievement;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
@ -10,40 +11,41 @@ import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_cake extends FreedomCommand {
|
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 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.";
|
||||||
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
private final Random random = new Random();
|
||||||
final StringBuilder output = new StringBuilder();
|
|
||||||
|
|
||||||
final String[] words = CAKE_LYRICS.split(" ");
|
@Override
|
||||||
for (final String word : words) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
output.append(ChatColor.COLOR_CHAR).append(Integer.toHexString(1 + random.nextInt(14))).append(word).append(" ");
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
}
|
final StringBuilder output = new StringBuilder();
|
||||||
|
|
||||||
final ItemStack heldItem = new ItemStack(Material.CAKE);
|
final String[] words = CAKE_LYRICS.split(" ");
|
||||||
final ItemMeta heldItemMeta = heldItem.getItemMeta();
|
for (final String word : words) {
|
||||||
heldItemMeta.setDisplayName((new StringBuilder()).append(ChatColor.WHITE).append("The ").append(ChatColor.DARK_GRAY).append("Lie").toString());
|
output.append(ChatColor.COLOR_CHAR).append(Integer.toHexString(1 + random.nextInt(14)))
|
||||||
heldItem.setItemMeta(heldItemMeta);
|
.append(word).append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
for (final Player player : server.getOnlinePlayers())
|
final ItemStack heldItem = new ItemStack(Material.CAKE);
|
||||||
{
|
final ItemMeta heldItemMeta = heldItem.getItemMeta();
|
||||||
final int firstEmpty = player.getInventory().firstEmpty();
|
heldItemMeta.setDisplayName(
|
||||||
if (firstEmpty >= 0)
|
(new StringBuilder()).append(ChatColor.WHITE).append("The ").append(ChatColor.DARK_GRAY)
|
||||||
{
|
.append("Lie").toString());
|
||||||
player.getInventory().setItem(firstEmpty, heldItem);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,69 +8,58 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
||||||
public class Command_cartsit extends FreedomCommand {
|
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) {
|
targetPlayer = getPlayer(args[0]);
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (senderIsConsole)
|
if (targetPlayer == null) {
|
||||||
{
|
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
if (targetPlayer == null)
|
return true;
|
||||||
{
|
}
|
||||||
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.isInsideVehicle())
|
if (senderIsConsole) {
|
||||||
{
|
if (targetPlayer == null) {
|
||||||
targetPlayer.getVehicle().eject();
|
sender.sendMessage(
|
||||||
}
|
"When used from the console, you must define a target player: /cartsit <player>");
|
||||||
else
|
return true;
|
||||||
{
|
}
|
||||||
Minecart nearest_cart = null;
|
} else if (targetPlayer != sender_p && !AdminList.isSuperAdmin(sender)) {
|
||||||
for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class))
|
sender.sendMessage("Only superadmins can select another player as a /cartsit target.");
|
||||||
{
|
return true;
|
||||||
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 (nearest_cart != null)
|
if (targetPlayer.isInsideVehicle()) {
|
||||||
{
|
targetPlayer.getVehicle().eject();
|
||||||
nearest_cart.setPassenger(targetPlayer);
|
} else {
|
||||||
}
|
Minecart nearest_cart = null;
|
||||||
else
|
for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class)) {
|
||||||
{
|
if (cart.isEmpty()) {
|
||||||
sender.sendMessage("There are no empty minecarts in the target world.");
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
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.Log;
|
||||||
import me.StevenLawson.TotalFreedomMod.command.CommandBlocker;
|
import me.StevenLawson.TotalFreedomMod.command.CommandBlocker;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
|
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
|
||||||
|
@ -13,197 +16,159 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
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)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
||||||
public class Command_cbtool extends FreedomCommand {
|
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) {
|
@Override
|
||||||
Block targetBlock = DeprecationUtil.getTargetBlock(sender_p, null, 100);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
playerMsg(sender, "Your target block: " + targetBlock.getLocation().toString());
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
return true;
|
if (args.length < 1) {
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
if ("targetblock".equalsIgnoreCase(args[0]) && sender instanceof Player) {
|
||||||
{
|
Block targetBlock = DeprecationUtil.getTargetBlock(sender_p, null, 100);
|
||||||
final StringBuffer generatedCommand = new StringBuffer();
|
playerMsg(sender, "Your target block: " + targetBlock.getLocation().toString());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
final Matcher matcher = Pattern.compile("\\[(.+?)\\]").matcher(StringUtils.join(args, " ").trim());
|
try {
|
||||||
while (matcher.find())
|
final StringBuffer generatedCommand = new StringBuffer();
|
||||||
{
|
|
||||||
matcher.appendReplacement(generatedCommand, processSubCommand(matcher.group(1)));
|
|
||||||
}
|
|
||||||
matcher.appendTail(generatedCommand);
|
|
||||||
|
|
||||||
if (CommandBlocker.isCommandBlocked(generatedCommand.toString(), sender, false))
|
final Matcher matcher = Pattern.compile("\\[(.+?)\\]")
|
||||||
{
|
.matcher(StringUtils.join(args, " ").trim());
|
||||||
return true;
|
while (matcher.find()) {
|
||||||
}
|
matcher.appendReplacement(generatedCommand, processSubCommand(matcher.group(1)));
|
||||||
|
}
|
||||||
|
matcher.appendTail(generatedCommand);
|
||||||
|
|
||||||
server.dispatchCommand(sender, generatedCommand.toString());
|
if (CommandBlocker.isCommandBlocked(generatedCommand.toString(), sender, false)) {
|
||||||
}
|
return true;
|
||||||
catch (SubCommandFailureException ex)
|
}
|
||||||
{
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.severe(ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
server.dispatchCommand(sender, generatedCommand.toString());
|
||||||
}
|
} catch (SubCommandFailureException ex) {
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Log.severe(ex);
|
||||||
|
}
|
||||||
|
|
||||||
private String processSubCommand(final String subcommand) throws SubCommandFailureException
|
return true;
|
||||||
{
|
}
|
||||||
final String[] args = StringUtils.split(subcommand, " ");
|
|
||||||
|
|
||||||
if (args.length == 1)
|
private String processSubCommand(final String subcommand) throws SubCommandFailureException {
|
||||||
{
|
final String[] args = StringUtils.split(subcommand, " ");
|
||||||
throw new SubCommandFailureException("Invalid subcommand name.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return SubCommand.getByName(args[0]).getExecutable().execute(ArrayUtils.remove(args, 0));
|
if (args.length == 1) {
|
||||||
}
|
throw new SubCommandFailureException("Invalid subcommand name.");
|
||||||
|
}
|
||||||
|
|
||||||
private enum SubCommand
|
return SubCommand.getByName(args[0]).getExecutable().execute(ArrayUtils.remove(args, 0));
|
||||||
{
|
}
|
||||||
PLAYER_DETECT("playerdetect", new SubCommandExecutable()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public String execute(String[] args) throws SubCommandFailureException
|
|
||||||
{
|
|
||||||
if (args.length != 5)
|
|
||||||
{
|
|
||||||
throw new SubCommandFailureException("Invalid # of arguments.");
|
|
||||||
}
|
|
||||||
|
|
||||||
double x, y, z;
|
private enum SubCommand {
|
||||||
try
|
PLAYER_DETECT("playerdetect", new SubCommandExecutable() {
|
||||||
{
|
@Override
|
||||||
x = Double.parseDouble(args[0].trim());
|
public String execute(String[] args) throws SubCommandFailureException {
|
||||||
y = Double.parseDouble(args[1].trim());
|
if (args.length != 5) {
|
||||||
z = Double.parseDouble(args[2].trim());
|
throw new SubCommandFailureException("Invalid # of arguments.");
|
||||||
}
|
}
|
||||||
catch (NumberFormatException ex)
|
|
||||||
{
|
|
||||||
throw new SubCommandFailureException("Invalid coordinates.");
|
|
||||||
}
|
|
||||||
|
|
||||||
World world = null;
|
double x, y, z;
|
||||||
final String needleWorldName = args[3].trim();
|
try {
|
||||||
final List<World> worlds = Bukkit.getWorlds();
|
x = Double.parseDouble(args[0].trim());
|
||||||
for (final World testWorld : worlds)
|
y = Double.parseDouble(args[1].trim());
|
||||||
{
|
z = Double.parseDouble(args[2].trim());
|
||||||
if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName))
|
} catch (NumberFormatException ex) {
|
||||||
{
|
throw new SubCommandFailureException("Invalid coordinates.");
|
||||||
world = testWorld;
|
}
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (world == null)
|
World world = null;
|
||||||
{
|
final String needleWorldName = args[3].trim();
|
||||||
throw new SubCommandFailureException("Invalid world name.");
|
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;
|
final Location testLocation = new Location(world, x, y, z);
|
||||||
try
|
|
||||||
{
|
|
||||||
radius = Double.parseDouble(args[4].trim());
|
|
||||||
}
|
|
||||||
catch (NumberFormatException ex)
|
|
||||||
{
|
|
||||||
throw new SubCommandFailureException("Invalid radius.");
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
final double radiusSq = radius * radius;
|
||||||
for (final Player testPlayer : worldPlayers)
|
|
||||||
{
|
|
||||||
if (testPlayer.getLocation().distanceSquared(testLocation) < radiusSq)
|
|
||||||
{
|
|
||||||
return testPlayer.getName();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new SubCommandFailureException("No player found in range.");
|
final List<Player> worldPlayers = testLocation.getWorld().getPlayers();
|
||||||
}
|
for (final Player testPlayer : worldPlayers) {
|
||||||
}),
|
if (testPlayer.getLocation().distanceSquared(testLocation) < radiusSq) {
|
||||||
PLAYER_DETECT_BOOLEAN("playerdetectboolean", new SubCommandExecutable()
|
return testPlayer.getName();
|
||||||
{
|
}
|
||||||
@Override
|
}
|
||||||
public String execute(String[] args) throws SubCommandFailureException
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
PLAYER_DETECT.getExecutable().execute(args);
|
|
||||||
}
|
|
||||||
catch (SubCommandFailureException ex)
|
|
||||||
{
|
|
||||||
return "0";
|
|
||||||
}
|
|
||||||
|
|
||||||
return "1";
|
throw new SubCommandFailureException("No player found in range.");
|
||||||
}
|
}
|
||||||
});
|
}),
|
||||||
//
|
PLAYER_DETECT_BOOLEAN("playerdetectboolean", new SubCommandExecutable() {
|
||||||
private final String name;
|
@Override
|
||||||
private final SubCommandExecutable executable;
|
public String execute(String[] args) throws SubCommandFailureException {
|
||||||
|
try {
|
||||||
|
PLAYER_DETECT.getExecutable().execute(args);
|
||||||
|
} catch (SubCommandFailureException ex) {
|
||||||
|
return "0";
|
||||||
|
}
|
||||||
|
|
||||||
SubCommand(String subCommandName, SubCommandExecutable subCommandImpl)
|
return "1";
|
||||||
{
|
}
|
||||||
this.name = subCommandName;
|
});
|
||||||
this.executable = subCommandImpl;
|
//
|
||||||
}
|
private final String name;
|
||||||
|
private final SubCommandExecutable executable;
|
||||||
|
|
||||||
public SubCommandExecutable getExecutable()
|
SubCommand(String subCommandName, SubCommandExecutable subCommandImpl) {
|
||||||
{
|
this.name = subCommandName;
|
||||||
return executable;
|
this.executable = subCommandImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName()
|
public static SubCommand getByName(String needle) throws SubCommandFailureException {
|
||||||
{
|
needle = needle.trim();
|
||||||
return name;
|
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
|
public SubCommandExecutable getExecutable() {
|
||||||
{
|
return executable;
|
||||||
needle = needle.trim();
|
}
|
||||||
for (SubCommand subCommand : values())
|
|
||||||
{
|
|
||||||
if (subCommand.getName().equalsIgnoreCase(needle))
|
|
||||||
{
|
|
||||||
return subCommand;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw new SubCommandFailureException("Invalid subcommand name.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private interface SubCommandExecutable
|
public String getName() {
|
||||||
{
|
return name;
|
||||||
String execute(String[] args) throws SubCommandFailureException;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class SubCommandFailureException extends Exception
|
private interface SubCommandExecutable {
|
||||||
{
|
|
||||||
public SubCommandFailureException()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public SubCommandFailureException(String message)
|
String execute(String[] args) throws SubCommandFailureException;
|
||||||
{
|
}
|
||||||
super(message);
|
|
||||||
}
|
private static class SubCommandFailureException extends Exception {
|
||||||
}
|
|
||||||
|
public SubCommandFailureException() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public SubCommandFailureException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,46 +1,43 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
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.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
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)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
||||||
public class Command_cmdlist extends FreedomCommand {
|
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()) {
|
@Override
|
||||||
try {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
PluginDescriptionFile desc = targetPlugin.getDescription();
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
Map<String, Map<String, Object>> map = desc.getCommands();
|
List<String> commands = new ArrayList<String>();
|
||||||
|
|
||||||
if (map != null)
|
for (Plugin targetPlugin : server.getPluginManager().getPlugins()) {
|
||||||
{
|
try {
|
||||||
for (Entry<String, Map<String, Object>> entry : map.entrySet())
|
PluginDescriptionFile desc = targetPlugin.getDescription();
|
||||||
{
|
Map<String, Map<String, Object>> map = desc.getCommands();
|
||||||
String command_name = entry.getKey();
|
|
||||||
commands.add(command_name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Throwable ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,13 +6,15 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_cmdspy extends FreedomCommand {
|
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);
|
@Override
|
||||||
playerdata.setCommandSpy(!playerdata.cmdspyEnabled());
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
playerMsg(sender, "CommandSpy " + (playerdata.cmdspyEnabled() ? "enabled." : "disabled."));
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Map;
|
||||||
import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge;
|
import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -7,47 +9,47 @@ import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_colorme extends FreedomCommand {
|
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])) {
|
@Override
|
||||||
playerMsg(sender, "Colors: " + StringUtils.join(Utilities.CHAT_COLOR_NAMES.keySet(), ", "));
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
return true;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
}
|
if (args.length != 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
final String needle = args[0].trim().toLowerCase();
|
if ("list".equalsIgnoreCase(args[0])) {
|
||||||
ChatColor color = null;
|
playerMsg(sender,
|
||||||
final Iterator<Map.Entry<String, ChatColor>> it = Utilities.CHAT_COLOR_NAMES.entrySet().iterator();
|
"Colors: " + StringUtils.join(Utilities.CHAT_COLOR_NAMES.keySet(), ", "));
|
||||||
while (it.hasNext())
|
return true;
|
||||||
{
|
}
|
||||||
final Map.Entry<String, ChatColor> entry = it.next();
|
|
||||||
if (entry.getKey().contains(needle))
|
|
||||||
{
|
|
||||||
color = entry.getValue();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (color == null)
|
final String needle = args[0].trim().toLowerCase();
|
||||||
{
|
ChatColor color = null;
|
||||||
playerMsg(sender, "Invalid color: " + needle + " - Use \"/colorme list\" to list colors.");
|
final Iterator<Map.Entry<String, ChatColor>> it = Utilities.CHAT_COLOR_NAMES.entrySet()
|
||||||
return true;
|
.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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,59 +9,55 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
||||||
public class Command_creative extends FreedomCommand {
|
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;
|
@Override
|
||||||
if (args.length == 0)
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
{
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
player = sender_p;
|
if (senderIsConsole) {
|
||||||
}
|
if (args.length == 0) {
|
||||||
else
|
sender.sendMessage(
|
||||||
{
|
"When used from the console, you must define a target user to change gamemode on.");
|
||||||
if (args[0].equalsIgnoreCase("-a"))
|
return true;
|
||||||
{
|
}
|
||||||
if (!AdminList.isSuperAdmin(sender))
|
}
|
||||||
{
|
|
||||||
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Player targetPlayer : server.getOnlinePlayers())
|
Player player;
|
||||||
{
|
if (args.length == 0) {
|
||||||
targetPlayer.setGameMode(GameMode.CREATIVE);
|
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);
|
for (Player targetPlayer : server.getOnlinePlayers()) {
|
||||||
return true;
|
targetPlayer.setGameMode(GameMode.CREATIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(senderIsConsole || AdminList.isSuperAdmin(sender)))
|
Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to creative",
|
||||||
{
|
false);
|
||||||
playerMsg(sender, "Only superadmins can change other user's gamemode.");
|
return true;
|
||||||
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)
|
player = getPlayer(args[0]);
|
||||||
{
|
|
||||||
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 '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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,11 +7,14 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_CONSOLE)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_CONSOLE)
|
||||||
public class Command_csay extends FreedomCommand {
|
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) {
|
@Override
|
||||||
if (args.length > 0) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
Utilities.bcastMsg(String.format("§7[CONSOLE] §f<§c%s§f> %s", sender.getName(), StringUtils.join(args, " ")));
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
}
|
if (args.length > 0) {
|
||||||
return true;
|
Utilities.bcastMsg(String.format("§7[CONSOLE] §f<§c%s§f> %s", sender.getName(),
|
||||||
}
|
StringUtils.join(args, " ")));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
|
@ -7,39 +8,39 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH, blockHostConsole = true)
|
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH, blockHostConsole = true)
|
||||||
public class Command_deafen extends FreedomCommand {
|
public class Command_deafen extends FreedomCommand {
|
||||||
private static final Random random = new Random();
|
|
||||||
public static final double STEPS = 10.0;
|
|
||||||
|
|
||||||
@Override
|
public static final double STEPS = 10.0;
|
||||||
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
private static final Random random = new Random();
|
||||||
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);
|
|
||||||
|
|
||||||
new BukkitRunnable() {
|
private static Location randomOffset(Location a, double magnitude) {
|
||||||
@Override
|
return a.clone()
|
||||||
public void run()
|
.add(randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude,
|
||||||
{
|
randomDoubleRange(-1.0, 1.0) * magnitude);
|
||||||
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;
|
private static Double randomDoubleRange(double min, double max) {
|
||||||
}
|
return min + (random.nextDouble() * ((max - min) + 1.0));
|
||||||
|
}
|
||||||
|
|
||||||
private static Location randomOffset(Location a, double magnitude)
|
@Override
|
||||||
{
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
return a.clone().add(randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude, randomDoubleRange(-1.0, 1.0) * magnitude);
|
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)
|
new BukkitRunnable() {
|
||||||
{
|
@Override
|
||||||
return min + (random.nextDouble() * ((max - min) + 1.0));
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,106 +1,82 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE)
|
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE)
|
||||||
public class Command_debug extends FreedomCommand {
|
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 {
|
public static void setStaticValue(final String className, final String fieldName,
|
||||||
String className = args[0];
|
final String newValueString) throws Exception {
|
||||||
String fieldName = args[1];
|
Class<?> forName = Class.forName(className);
|
||||||
String newValue = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ");
|
if (forName != null) {
|
||||||
|
final Field field = forName.getDeclaredField(fieldName);
|
||||||
|
if (field != null) {
|
||||||
|
Object newValue;
|
||||||
|
|
||||||
if (className.equalsIgnoreCase("_"))
|
Class<?> type = field.getType();
|
||||||
{
|
if (type.isPrimitive()) {
|
||||||
className = "me.StevenLawson.TotalFreedomMod.TotalFreedomMod";
|
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");
|
final Object oldValue = field.get(Class.forName(className));
|
||||||
}
|
if (oldValue != null) {
|
||||||
catch (Exception ex)
|
field.set(oldValue, newValue);
|
||||||
{
|
}
|
||||||
sender.sendMessage(ex.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
field.setAccessible(false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void setStaticValue(final String className, final String fieldName, final String newValueString) throws Exception
|
@Override
|
||||||
{
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
Class<?> forName = Class.forName(className);
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
if (forName != null)
|
if (args.length < 3) {
|
||||||
{
|
return false;
|
||||||
final Field field = forName.getDeclaredField(fieldName);
|
}
|
||||||
if (field != null)
|
|
||||||
{
|
|
||||||
Object newValue;
|
|
||||||
|
|
||||||
Class<?> type = field.getType();
|
try {
|
||||||
if (type.isPrimitive())
|
String className = args[0];
|
||||||
{
|
String fieldName = args[1];
|
||||||
if (type.getName().equals("int"))
|
String newValue = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ");
|
||||||
{
|
|
||||||
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.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
field.setAccessible(true);
|
if (className.equalsIgnoreCase("_")) {
|
||||||
|
className = "me.StevenLawson.TotalFreedomMod.TotalFreedomMod";
|
||||||
|
}
|
||||||
|
|
||||||
final Object oldValue = field.get(Class.forName(className));
|
setStaticValue(className, fieldName, newValue);
|
||||||
if (oldValue != null)
|
|
||||||
{
|
|
||||||
field.set(oldValue, newValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
field.setAccessible(false);
|
sender.sendMessage("Debug: OK");
|
||||||
}
|
} catch (Exception ex) {
|
||||||
}
|
sender.sendMessage(ex.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,14 +8,16 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_denick extends FreedomCommand {
|
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()) {
|
@Override
|
||||||
EssentialsBridge.setNickname(player.getName(), null);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,31 +9,31 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_deop extends FreedomCommand {
|
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()) {
|
OfflinePlayer player = null;
|
||||||
if (args[0].equalsIgnoreCase(onlinePlayer.getName()))
|
|
||||||
{
|
|
||||||
player = onlinePlayer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if the player is not online
|
for (Player onlinePlayer : server.getOnlinePlayers()) {
|
||||||
if (player == null)
|
if (args[0].equalsIgnoreCase(onlinePlayer.getName())) {
|
||||||
{
|
player = onlinePlayer;
|
||||||
player = DeprecationUtil.getOfflinePlayer(server, args[0]);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,15 +7,17 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_deopall extends FreedomCommand {
|
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()) {
|
@Override
|
||||||
player.setOp(false);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
|
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -12,93 +14,78 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_dispfill extends FreedomCommand {
|
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 {
|
private static void setDispenserContents(final Block targetBlock, final ItemStack[] items) {
|
||||||
radius = Math.max(5, Math.min(25, Integer.parseInt(args[0])));
|
if (targetBlock.getType() == Material.DISPENSER) {
|
||||||
} catch (NumberFormatException ex)
|
final Inventory dispenserInv = ((Dispenser) targetBlock.getState()).getInventory();
|
||||||
{
|
dispenserInv.clear();
|
||||||
sender.sendMessage("Invalid radius.");
|
dispenserInv.addItem(items);
|
||||||
return true;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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], ",");
|
try {
|
||||||
for (final String searchItem : itemsRaw)
|
radius = Math.max(5, Math.min(25, Integer.parseInt(args[0])));
|
||||||
{
|
} catch (NumberFormatException ex) {
|
||||||
Material material = Material.matchMaterial(searchItem);
|
sender.sendMessage("Invalid radius.");
|
||||||
if (material == null)
|
return true;
|
||||||
{
|
}
|
||||||
try
|
|
||||||
{
|
|
||||||
material = DeprecationUtil.getMaterial(Integer.parseInt(searchItem));
|
|
||||||
}
|
|
||||||
catch (NumberFormatException ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (material != null)
|
final List<ItemStack> items = new ArrayList<ItemStack>();
|
||||||
{
|
|
||||||
items.add(new ItemStack(material, 64));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sender.sendMessage("Skipping invalid item: " + searchItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
if (material != null) {
|
||||||
final Location centerLocation = sender_p.getLocation();
|
items.add(new ItemStack(material, 64));
|
||||||
final Block centerBlock = centerLocation.getBlock();
|
} else {
|
||||||
for (int xOffset = -radius; xOffset <= radius; xOffset++)
|
sender.sendMessage("Skipping invalid item: " + searchItem);
|
||||||
{
|
}
|
||||||
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++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sender.sendMessage("Done. " + affected + " dispenser(s) filled.");
|
final ItemStack[] itemsArray = items.toArray(new ItemStack[items.size()]);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
sender.sendMessage("Done. " + affected + " dispenser(s) filled.");
|
||||||
{
|
} else {
|
||||||
if (targetBlock.getType() == Material.DISPENSER)
|
return false;
|
||||||
{
|
}
|
||||||
final Inventory dispenserInv = ((Dispenser) targetBlock.getState()).getInventory();
|
|
||||||
dispenserInv.clear();
|
return true;
|
||||||
dispenserInv.addItem(items);
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,114 +8,90 @@ import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_enchant extends FreedomCommand {
|
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) {
|
ItemStack itemInHand = sender_p.getItemInHand();
|
||||||
playerMsg(sender, "You are holding an invalid item.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("list"))
|
if (itemInHand == null) {
|
||||||
{
|
playerMsg(sender, "You are holding an invalid item.");
|
||||||
boolean has_enchantments = false;
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
StringBuilder possible_ench = new StringBuilder("Possible enchantments for held item: ");
|
if (args[0].equalsIgnoreCase("list")) {
|
||||||
for (Enchantment ench : Enchantment.values())
|
boolean has_enchantments = false;
|
||||||
{
|
|
||||||
if (ench.canEnchantItem(itemInHand))
|
|
||||||
{
|
|
||||||
has_enchantments = true;
|
|
||||||
possible_ench.append(ench.getName()).append(", ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (has_enchantments)
|
StringBuilder possible_ench = new StringBuilder(
|
||||||
{
|
"Possible enchantments for held item: ");
|
||||||
playerMsg(sender, possible_ench.toString());
|
for (Enchantment ench : Enchantment.values()) {
|
||||||
}
|
if (ench.canEnchantItem(itemInHand)) {
|
||||||
else
|
has_enchantments = true;
|
||||||
{
|
possible_ench.append(ench.getName()).append(", ");
|
||||||
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, "Added all possible enchantments for this item.");
|
if (has_enchantments) {
|
||||||
}
|
playerMsg(sender, possible_ench.toString());
|
||||||
else if (args[0].equalsIgnoreCase("reset"))
|
} else {
|
||||||
{
|
playerMsg(sender, "The held item has no enchantments.");
|
||||||
for (Enchantment ench : itemInHand.getEnchantments().keySet())
|
}
|
||||||
{
|
} else if (args[0].equalsIgnoreCase("addall")) {
|
||||||
itemInHand.removeEnchantment(ench);
|
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.");
|
playerMsg(sender, "Added all possible enchantments for this item.");
|
||||||
}
|
} else if (args[0].equalsIgnoreCase("reset")) {
|
||||||
else
|
for (Enchantment ench : itemInHand.getEnchantments().keySet()) {
|
||||||
{
|
itemInHand.removeEnchantment(ench);
|
||||||
if (args.length < 2)
|
}
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Enchantment ench = null;
|
playerMsg(sender, "Removed all enchantments.");
|
||||||
|
} else {
|
||||||
|
if (args.length < 2) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
Enchantment ench = null;
|
||||||
{
|
|
||||||
ench = Enchantment.getByName(args[1]);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ench == null)
|
try {
|
||||||
{
|
ench = Enchantment.getByName(args[1]);
|
||||||
playerMsg(sender, args[1] + " is an invalid enchantment for the held item. Type \"/enchant list\" for valid enchantments for this item.");
|
} catch (Exception ex) {
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("add"))
|
if (ench == null) {
|
||||||
{
|
playerMsg(sender, args[1]
|
||||||
if (ench.canEnchantItem(itemInHand))
|
+ " is an invalid enchantment for the held item. Type \"/enchant list\" for valid enchantments for this item.");
|
||||||
{
|
return true;
|
||||||
itemInHand.addEnchantment(ench, ench.getMaxLevel());
|
}
|
||||||
|
|
||||||
playerMsg(sender, "Added enchantment: " + ench.getName());
|
if (args[0].equalsIgnoreCase("add")) {
|
||||||
}
|
if (ench.canEnchantItem(itemInHand)) {
|
||||||
else
|
itemInHand.addEnchantment(ench, ench.getMaxLevel());
|
||||||
{
|
|
||||||
playerMsg(sender, "Can't use this enchantment on held item.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (args[0].equals("remove"))
|
|
||||||
{
|
|
||||||
itemInHand.removeEnchantment(ench);
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,11 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_ender extends FreedomCommand {
|
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) {
|
@Override
|
||||||
Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_the_end");
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
return true;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
}
|
Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_the_end");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
@ -8,77 +10,63 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_expel extends FreedomCommand {
|
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) {
|
@Override
|
||||||
try {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
radius = Math.max(1.0, Math.min(100.0, Double.parseDouble(args[0])));
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
}
|
double radius = 20.0;
|
||||||
catch (NumberFormatException ex)
|
double strength = 5.0;
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length >= 2)
|
if (args.length >= 1) {
|
||||||
{
|
try {
|
||||||
try
|
radius = Math.max(1.0, Math.min(100.0, Double.parseDouble(args[0])));
|
||||||
{
|
} catch (NumberFormatException ex) {
|
||||||
strength = Math.max(0.0, Math.min(50.0, Double.parseDouble(args[1])));
|
}
|
||||||
}
|
}
|
||||||
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();
|
List<String> pushedPlayers = new ArrayList<String>();
|
||||||
final List<Player> players = sender_p.getWorld().getPlayers();
|
|
||||||
for (final Player player : players)
|
|
||||||
{
|
|
||||||
if (player.equals(sender_p))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
final Location targetPos = player.getLocation();
|
final Vector senderPos = sender_p.getLocation().toVector();
|
||||||
final Vector targetPosVec = targetPos.toVector();
|
final List<Player> players = sender_p.getWorld().getPlayers();
|
||||||
|
for (final Player player : players) {
|
||||||
|
if (player.equals(sender_p)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
boolean inRange = false;
|
final Location targetPos = player.getLocation();
|
||||||
try
|
final Vector targetPosVec = targetPos.toVector();
|
||||||
{
|
|
||||||
inRange = targetPosVec.distanceSquared(senderPos) < (radius * radius);
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
if (inRange)
|
boolean inRange = false;
|
||||||
{
|
try {
|
||||||
player.getWorld().createExplosion(targetPos, 0.0f, false);
|
inRange = targetPosVec.distanceSquared(senderPos) < (radius * radius);
|
||||||
Utilities.setFlying(player, false);
|
} catch (IllegalArgumentException ex) {
|
||||||
player.setVelocity(targetPosVec.subtract(senderPos).normalize().multiply(strength));
|
}
|
||||||
pushedPlayers.add(player.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pushedPlayers.isEmpty())
|
if (inRange) {
|
||||||
{
|
player.getWorld().createExplosion(targetPos, 0.0f, false);
|
||||||
playerMsg(sender, "No players pushed.");
|
Utilities.setFlying(player, false);
|
||||||
}
|
player.setVelocity(targetPosVec.subtract(senderPos).normalize().multiply(strength));
|
||||||
else
|
pushedPlayers.add(player.getName());
|
||||||
{
|
}
|
||||||
playerMsg(sender, "Pushed " + pushedPlayers.size() + " players: " + StringUtils.join(pushedPlayers, ", "));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
if (pushedPlayers.isEmpty()) {
|
||||||
}
|
playerMsg(sender, "No players pushed.");
|
||||||
|
} else {
|
||||||
|
playerMsg(sender,
|
||||||
|
"Pushed " + pushedPlayers.size() + " players: " + StringUtils.join(pushedPlayers,
|
||||||
|
", "));
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.player.PlayerList;
|
import me.StevenLawson.TotalFreedomMod.player.PlayerList;
|
||||||
import me.StevenLawson.TotalFreedomMod.player.PlayerRank;
|
import me.StevenLawson.TotalFreedomMod.player.PlayerRank;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -7,37 +8,36 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_findip extends FreedomCommand {
|
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);
|
if (player == null) {
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerRank rank = PlayerRank.fromSender(sender);
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
PlayerRank targetRank = PlayerRank.fromSender(player);
|
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()) {
|
List<String> ipsToShow = PlayerList.getEntry(player).getIps();
|
||||||
ipsToShow = PlayerList.getEntry(player).getFuzziedIps();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,13 +7,15 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_flatlands extends FreedomCommand {
|
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) {
|
@Override
|
||||||
if (ConfigurationEntry.FLATLANDS_GENERATE.getBoolean()) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
FlatlandsWorld.getInstance().sendToWorld(sender_p);
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
} else {
|
if (ConfigurationEntry.FLATLANDS_GENERATE.getBoolean()) {
|
||||||
playerMsg(sender, "Flatlands is currently disabled.");
|
FlatlandsWorld.getInstance().sendToWorld(sender_p);
|
||||||
}
|
} else {
|
||||||
return true;
|
playerMsg(sender, "Flatlands is currently disabled.");
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,68 +11,64 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_fr extends FreedomCommand {
|
public class Command_fr extends FreedomCommand {
|
||||||
private static boolean allFrozen = false;
|
|
||||||
|
|
||||||
@Override
|
private static boolean allFrozen = false;
|
||||||
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;
|
|
||||||
|
|
||||||
if (allFrozen) {
|
public static void setAllFrozen(boolean freeze) {
|
||||||
Utilities.adminAction(sender.getName(), "Freezing all players", false);
|
allFrozen = freeze;
|
||||||
|
for (PlayerData data : PlayerData.PLAYER_DATA.values()) {
|
||||||
|
data.setFrozen(freeze);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
setAllFrozen(true);
|
@Override
|
||||||
playerMsg(sender, "Players are now frozen.");
|
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 (allFrozen) {
|
||||||
{
|
Utilities.adminAction(sender.getName(), "Freezing all players", false);
|
||||||
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 (player == null)
|
setAllFrozen(true);
|
||||||
{
|
playerMsg(sender, "Players are now frozen.");
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
final PlayerData playerdata = PlayerData.getPlayerData(player);
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
playerdata.setFrozen(!playerdata.isFrozen());
|
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") + ".");
|
if (player == null) {
|
||||||
playerMsg(player, "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".", ChatColor.AQUA);
|
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)
|
playerMsg(sender,
|
||||||
{
|
player.getName() + " has been " + (playerdata.isFrozen() ? "frozen"
|
||||||
allFrozen = freeze;
|
: "unfrozen") + ".");
|
||||||
for (PlayerData data : PlayerData.PLAYER_DATA.values())
|
playerMsg(player,
|
||||||
{
|
"You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".",
|
||||||
data.setFrozen(freeze);
|
ChatColor.AQUA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,40 +6,37 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_fuckoff extends FreedomCommand {
|
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;
|
@Override
|
||||||
double fuckoff_range = 25.0;
|
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"))
|
boolean fuckoff_enabled = false;
|
||||||
{
|
double fuckoff_range = 25.0;
|
||||||
fuckoff_enabled = true;
|
|
||||||
|
|
||||||
if (args.length >= 2)
|
if (args[0].equalsIgnoreCase("on")) {
|
||||||
{
|
fuckoff_enabled = true;
|
||||||
try
|
|
||||||
{
|
|
||||||
fuckoff_range = Math.max(5.0, Math.min(100.0, Double.parseDouble(args[1])));
|
|
||||||
}
|
|
||||||
catch (NumberFormatException ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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.remove(sender_p);
|
||||||
{
|
|
||||||
TotalFreedomMod.fuckoffEnabledFor.put(sender_p, new Double(fuckoff_range));
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,196 +1,183 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
|
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
|
||||||
import me.StevenLawson.TotalFreedomMod.player.PlayerData;
|
|
||||||
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
|
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
|
||||||
|
import me.StevenLawson.TotalFreedomMod.player.PlayerData;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_gadmin extends FreedomCommand {
|
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)
|
@Override
|
||||||
{
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
this.modeName = command;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
}
|
if (args.length == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public String getModeName()
|
final GadminMode mode = GadminMode.findMode(args[0].toLowerCase());
|
||||||
{
|
if (mode == null) {
|
||||||
return modeName;
|
playerMsg(sender, "Invalid mode: " + args[0], ChatColor.RED);
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public static GadminMode findMode(String needle)
|
final Iterator<? extends Player> it = server.getOnlinePlayers().iterator();
|
||||||
{
|
|
||||||
for (final GadminMode mode : GadminMode.values())
|
|
||||||
{
|
|
||||||
if (needle.equalsIgnoreCase(mode.getModeName()))
|
|
||||||
{
|
|
||||||
return mode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
if (mode == GadminMode.LIST) {
|
||||||
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
playerMsg(sender, "[ Real Name ] : [ Display Name ] - Hash:");
|
||||||
if (args.length == 0) {
|
while (it.hasNext()) {
|
||||||
return false;
|
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 (args.length < 2) {
|
||||||
if (mode == null) {
|
return false;
|
||||||
playerMsg(sender, "Invalid mode: " + args[0], ChatColor.RED);
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
if (hash.equalsIgnoreCase(args[1])) {
|
||||||
{
|
target = player;
|
||||||
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 (args.length < 2)
|
if (target == null) {
|
||||||
{
|
playerMsg(sender, "Invalid player hash: " + args[1], ChatColor.RED);
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Player target = null;
|
switch (mode) {
|
||||||
while (it.hasNext() && target == null)
|
case KICK: {
|
||||||
{
|
Utilities.adminAction(sender.getName(),
|
||||||
final Player player = it.next();
|
String.format("Kicking: %s.", target.getName()), false);
|
||||||
final String hash = UUIDManager.getUniqueId(player).toString().substring(0, 4);
|
target.kickPlayer("Kicked by Administrator");
|
||||||
|
|
||||||
if (hash.equalsIgnoreCase(args[1]))
|
break;
|
||||||
{
|
}
|
||||||
target = player;
|
case NAMEBAN: {
|
||||||
}
|
BanManager.addUuidBan(target);
|
||||||
}
|
|
||||||
|
|
||||||
if (target == null)
|
Utilities.adminAction(sender.getName(),
|
||||||
{
|
String.format("Banning Name: %s.", target.getName()), true);
|
||||||
playerMsg(sender, "Invalid player hash: " + args[1], ChatColor.RED);
|
target.kickPlayer("Username banned by Administrator.");
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (mode)
|
break;
|
||||||
{
|
}
|
||||||
case KICK:
|
case IPBAN: {
|
||||||
{
|
String ip = target.getAddress().getAddress().getHostAddress();
|
||||||
Utilities.adminAction(sender.getName(), String.format("Kicking: %s.", target.getName()), false);
|
String[] ip_parts = ip.split("\\.");
|
||||||
target.kickPlayer("Kicked by Administrator");
|
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;
|
target.kickPlayer("IP address banned by Administrator.");
|
||||||
}
|
|
||||||
case NAMEBAN:
|
|
||||||
{
|
|
||||||
BanManager.addUuidBan(target);
|
|
||||||
|
|
||||||
Utilities.adminAction(sender.getName(), String.format("Banning Name: %s.", target.getName()), true);
|
break;
|
||||||
target.kickPlayer("Username banned by Administrator.");
|
}
|
||||||
|
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;
|
BanManager.addUuidBan(target);
|
||||||
}
|
BanManager.addIpBan(target);
|
||||||
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);
|
|
||||||
|
|
||||||
target.kickPlayer("IP address banned by Administrator.");
|
target.kickPlayer("IP and username banned by Administrator.");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BAN:
|
case OP: {
|
||||||
{
|
Utilities.adminAction(sender.getName(),
|
||||||
String ip = target.getAddress().getAddress().getHostAddress();
|
String.format("Opping %s.", target.getName()), false);
|
||||||
String[] ip_parts = ip.split("\\.");
|
target.setOp(false);
|
||||||
if (ip_parts.length == 4)
|
target.sendMessage(FreedomCommand.YOU_ARE_OP);
|
||||||
{
|
|
||||||
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);
|
|
||||||
|
|
||||||
BanManager.addUuidBan(target);
|
break;
|
||||||
BanManager.addIpBan(target);
|
}
|
||||||
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case OP:
|
case FR: {
|
||||||
{
|
PlayerData playerdata = PlayerData.getPlayerData(target);
|
||||||
Utilities.adminAction(sender.getName(), String.format("Opping %s.", target.getName()), false);
|
playerdata.setFrozen(!playerdata.isFrozen());
|
||||||
target.setOp(false);
|
|
||||||
target.sendMessage(FreedomCommand.YOU_ARE_OP);
|
|
||||||
|
|
||||||
break;
|
playerMsg(sender,
|
||||||
}
|
target.getName() + " has been " + (playerdata.isFrozen() ? "frozen"
|
||||||
case DEOP:
|
: "unfrozen") + ".");
|
||||||
{
|
target.sendMessage(
|
||||||
Utilities.adminAction(sender.getName(), String.format("Deopping %s.", target.getName()), false);
|
ChatColor.AQUA + "You have been " + (playerdata.isFrozen() ? "frozen"
|
||||||
target.setOp(false);
|
: "unfrozen") + ".");
|
||||||
target.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CI:
|
case SMITE: {
|
||||||
{
|
Command_smite.smite(target);
|
||||||
target.getInventory().clear();
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case FR:
|
}
|
||||||
{
|
|
||||||
PlayerData playerdata = PlayerData.getPlayerData(target);
|
|
||||||
playerdata.setFrozen(!playerdata.isFrozen());
|
|
||||||
|
|
||||||
playerMsg(sender, target.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
|
return true;
|
||||||
target.sendMessage(ChatColor.AQUA + "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
|
}
|
||||||
|
|
||||||
break;
|
private enum GadminMode {
|
||||||
}
|
LIST("list"),
|
||||||
case SMITE:
|
KICK("kick"),
|
||||||
{
|
NAMEBAN("nameban"),
|
||||||
Command_smite.smite(target);
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,121 +1,107 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
||||||
import me.StevenLawson.TotalFreedomMod.ban.Ban;
|
import me.StevenLawson.TotalFreedomMod.ban.Ban;
|
||||||
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
|
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
|
||||||
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
||||||
|
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
|
||||||
import me.StevenLawson.TotalFreedomMod.player.Player;
|
import me.StevenLawson.TotalFreedomMod.player.Player;
|
||||||
import me.StevenLawson.TotalFreedomMod.player.PlayerList;
|
import me.StevenLawson.TotalFreedomMod.player.PlayerList;
|
||||||
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
|
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_glist extends FreedomCommand {
|
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) {
|
@Override
|
||||||
if (args[0].equalsIgnoreCase("purge")) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
if (AdminList.isSeniorAdmin(sender))
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
{
|
if (args.length < 1) {
|
||||||
PlayerList.purgeAll();
|
return false;
|
||||||
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>();
|
|
||||||
|
|
||||||
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 org.bukkit.entity.Player player = getPlayer(args[1]);
|
||||||
{
|
|
||||||
final me.StevenLawson.TotalFreedomMod.player.Player entry = PlayerList.getEntry(UUIDManager.getUniqueId(args[1]));
|
|
||||||
|
|
||||||
if (entry == null) {
|
if (player == null) {
|
||||||
playerMsg(sender, "Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
|
final me.StevenLawson.TotalFreedomMod.player.Player entry = PlayerList.getEntry(
|
||||||
return true;
|
UUIDManager.getUniqueId(args[1]));
|
||||||
}
|
|
||||||
|
|
||||||
username = entry.getLastLoginName();
|
if (entry == null) {
|
||||||
for (String ip : entry.getIps()) {
|
playerMsg(sender,
|
||||||
ips.add(Utilities.getFuzzyIp(ip));
|
"Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
|
||||||
}
|
return true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
username = player.getName();
|
|
||||||
final Player entry = PlayerList.getEntry(UUIDManager.getUniqueId(player));
|
|
||||||
|
|
||||||
for (String ip : entry.getIps()) {
|
username = entry.getLastLoginName();
|
||||||
ips.add(Utilities.getFuzzyIp(ip));
|
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);
|
String mode = args[0].toLowerCase();
|
||||||
if (target != null)
|
if (mode.equalsIgnoreCase("ban")) {
|
||||||
{
|
Utilities.adminAction(sender.getName(),
|
||||||
BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(target), target.getName()));
|
"Banning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
|
||||||
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));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String ip : ips)
|
final org.bukkit.entity.Player target = getPlayer(username, true);
|
||||||
{
|
if (target != null) {
|
||||||
BanManager.addIpBan(new Ban(ip, username));
|
BanManager.addUuidBan(
|
||||||
BanManager.addIpBan(new Ban(Utilities.getFuzzyIp(ip), username));
|
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: "
|
||||||
else if (mode.equalsIgnoreCase("unban"))
|
+ ConfigurationEntry.SERVER_BAN_URL.getString());
|
||||||
{
|
} else {
|
||||||
Utilities.adminAction(sender.getName(), "Unbanning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
|
BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(username), username));
|
||||||
BanManager.unbanUuid(UUIDManager.getUniqueId(username));
|
}
|
||||||
for (String ip : ips)
|
|
||||||
{
|
|
||||||
|
|
||||||
BanManager.unbanIp(ip);
|
for (String ip : ips) {
|
||||||
BanManager.unbanIp(Utilities.getFuzzyIp(ip));
|
BanManager.addIpBan(new Ban(ip, username));
|
||||||
}
|
BanManager.addIpBan(new Ban(Utilities.getFuzzyIp(ip), username));
|
||||||
}
|
}
|
||||||
else
|
} else if (mode.equalsIgnoreCase("unban")) {
|
||||||
{
|
Utilities.adminAction(sender.getName(),
|
||||||
return false;
|
"Unbanning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
|
||||||
}
|
BanManager.unbanUuid(UUIDManager.getUniqueId(username));
|
||||||
|
for (String ip : ips) {
|
||||||
|
|
||||||
return true;
|
BanManager.unbanIp(ip);
|
||||||
}
|
BanManager.unbanIp(Utilities.getFuzzyIp(ip));
|
||||||
else
|
}
|
||||||
{
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,85 +16,86 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_gtfo extends FreedomCommand {
|
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) {
|
final Player player = getPlayer(args[0]);
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
String reason = null;
|
if (player == null) {
|
||||||
if (args.length >= 2)
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
||||||
{
|
return true;
|
||||||
reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
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:
|
Utilities.bcastMsg(player.getName() + " has been a VERY naughty, naughty boy.",
|
||||||
try
|
ChatColor.RED);
|
||||||
{
|
|
||||||
WorldEditBridge.undo(player, 15);
|
|
||||||
}
|
|
||||||
catch (NoClassDefFoundError ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// rollback
|
// Undo WorldEdits:
|
||||||
// RollbackManager.rollback(player.getName());
|
try {
|
||||||
// TODO: Use coreprotect API calls
|
WorldEditBridge.undo(player, 15);
|
||||||
|
} catch (NoClassDefFoundError ex) {
|
||||||
|
}
|
||||||
|
|
||||||
// deop
|
// rollback
|
||||||
player.setOp(false);
|
// RollbackManager.rollback(player.getName());
|
||||||
|
// TODO: Use coreprotect API calls
|
||||||
|
|
||||||
// set gamemode to survival:
|
// deop
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setOp(false);
|
||||||
|
|
||||||
// clear inventory:
|
// set gamemode to survival:
|
||||||
player.getInventory().clear();
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
|
||||||
// strike with lightning effect:
|
// clear inventory:
|
||||||
final Location targetPos = player.getLocation();
|
player.getInventory().clear();
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ban IP address:
|
// strike with lightning effect:
|
||||||
String ip = Utilities.getFuzzyIp(player.getAddress().getAddress().getHostAddress());
|
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()
|
// ban IP address:
|
||||||
.append(ChatColor.RED)
|
String ip = Utilities.getFuzzyIp(player.getAddress().getAddress().getHostAddress());
|
||||||
.append("Banning: ")
|
|
||||||
.append(player.getName())
|
|
||||||
.append(", IP: ")
|
|
||||||
.append(ip);
|
|
||||||
|
|
||||||
if (reason != null)
|
final StringBuilder bcast = new StringBuilder()
|
||||||
{
|
.append(ChatColor.RED)
|
||||||
bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason);
|
.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.addIpBan(new Ban(ip, player.getName(), sender.getName(), null, reason));
|
||||||
BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), null, reason));
|
|
||||||
|
|
||||||
// kick Player:
|
// ban username:
|
||||||
player.kickPlayer(ChatColor.RED + "GTFO" + (reason != null ? ("\nReason: " + ChatColor.YELLOW + reason) : ""));
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,88 +9,76 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_halt extends FreedomCommand {
|
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")) {
|
@Override
|
||||||
Utilities.adminAction(sender.getName(), "Halting all non-superadmins.", true);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
int counter = 0;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
for (Player player : server.getOnlinePlayers())
|
if (args.length != 1) {
|
||||||
{
|
return false;
|
||||||
if (!AdminList.isSuperAdmin(player))
|
}
|
||||||
{
|
|
||||||
PlayerData.getPlayerData(player).setHalted(true);
|
|
||||||
counter++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
playerMsg(sender, "Halted " + counter + " players.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("purge"))
|
if (args[0].equalsIgnoreCase("all")) {
|
||||||
{
|
Utilities.adminAction(sender.getName(), "Halting all non-superadmins.", true);
|
||||||
Utilities.adminAction(sender.getName(), "Unhalting all players.", true);
|
int counter = 0;
|
||||||
int counter = 0;
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
for (Player player : server.getOnlinePlayers())
|
if (!AdminList.isSuperAdmin(player)) {
|
||||||
{
|
PlayerData.getPlayerData(player).setHalted(true);
|
||||||
PlayerData playerdata = PlayerData.getPlayerData(player);
|
counter++;
|
||||||
if (PlayerData.getPlayerData(player).isHalted())
|
}
|
||||||
{
|
}
|
||||||
playerdata.setHalted(false);
|
playerMsg(sender, "Halted " + counter + " players.");
|
||||||
counter++;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
playerMsg(sender, "Unhalted " + counter + " players.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("list"))
|
if (args[0].equalsIgnoreCase("purge")) {
|
||||||
{
|
Utilities.adminAction(sender.getName(), "Unhalting all players.", true);
|
||||||
PlayerData info;
|
int counter = 0;
|
||||||
int count = 0;
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
for (Player hp : server.getOnlinePlayers())
|
PlayerData playerdata = PlayerData.getPlayerData(player);
|
||||||
{
|
if (PlayerData.getPlayerData(player).isHalted()) {
|
||||||
info = PlayerData.getPlayerData(hp);
|
playerdata.setHalted(false);
|
||||||
if (info.isHalted())
|
counter++;
|
||||||
{
|
}
|
||||||
if (count == 0)
|
}
|
||||||
{
|
playerMsg(sender, "Unhalted " + counter + " players.");
|
||||||
playerMsg(sender, "Halted players:");
|
return true;
|
||||||
}
|
}
|
||||||
playerMsg(sender, "- " + hp.getName());
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (count == 0)
|
|
||||||
{
|
|
||||||
playerMsg(sender, "There are currently no halted 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)
|
final Player player = getPlayer(args[0]);
|
||||||
{
|
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerData playerdata = PlayerData.getPlayerData(player);
|
if (player == null) {
|
||||||
if (!playerdata.isHalted())
|
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
{
|
return true;
|
||||||
Utilities.adminAction(sender.getName(), "Halting " + player.getName(), true);
|
}
|
||||||
playerdata.setHalted(true);
|
|
||||||
return true;
|
PlayerData playerdata = PlayerData.getPlayerData(player);
|
||||||
}
|
if (!playerdata.isHalted()) {
|
||||||
else
|
Utilities.adminAction(sender.getName(), "Halting " + player.getName(), true);
|
||||||
{
|
playerdata.setHalted(true);
|
||||||
Utilities.adminAction(sender.getName(), "Unhalting " + player.getName(), true);
|
return true;
|
||||||
playerdata.setHalted(false);
|
} else {
|
||||||
return true;
|
Utilities.adminAction(sender.getName(), "Unhalting " + player.getName(), true);
|
||||||
}
|
playerdata.setHalted(false);
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import me.StevenLawson.TotalFreedomMod.Log;
|
import me.StevenLawson.TotalFreedomMod.Log;
|
||||||
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
||||||
import org.apache.commons.lang.math.DoubleRange;
|
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.BukkitRunnable;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_health extends FreedomCommand {
|
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
|
private static final int BYTES_PER_MB = 1024 * 1024;
|
||||||
public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
private static final DoubleRange TPS_RANGE = new DoubleRange(20.0 - 0.1, 20.0 + 0.1);
|
||||||
Runtime runtime = Runtime.getRuntime();
|
|
||||||
long usedMem = runtime.totalMemory() - runtime.freeMemory();
|
|
||||||
|
|
||||||
playerMsg(sender, "Reserved Memory: " + (double) runtime.totalMemory() / (double) BYTES_PER_MB + "mb");
|
@Override
|
||||||
playerMsg(sender, "Used Memory: " + new DecimalFormat("#").format((double) usedMem / (double) BYTES_PER_MB) + "mb (" + new DecimalFormat("#").format(((double) usedMem / (double) runtime.totalMemory()) * 100.0) + "%)");
|
public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
playerMsg(sender, "Max Memory: " + (double) runtime.maxMemory() / (double) BYTES_PER_MB + "mb");
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
playerMsg(sender, "Calculating ticks per second, please wait...");
|
Runtime runtime = Runtime.getRuntime();
|
||||||
|
long usedMem = runtime.totalMemory() - runtime.freeMemory();
|
||||||
|
|
||||||
new BukkitRunnable()
|
playerMsg(sender,
|
||||||
{
|
"Reserved Memory: " + (double) runtime.totalMemory() / (double) BYTES_PER_MB + "mb");
|
||||||
@Override
|
playerMsg(sender, "Used Memory: " + new DecimalFormat("#").format(
|
||||||
public void run()
|
(double) usedMem / (double) BYTES_PER_MB) + "mb (" + new DecimalFormat("#").format(
|
||||||
{
|
((double) usedMem / (double) runtime.totalMemory()) * 100.0) + "%)");
|
||||||
try
|
playerMsg(sender,
|
||||||
{
|
"Max Memory: " + (double) runtime.maxMemory() / (double) BYTES_PER_MB + "mb");
|
||||||
TFM_TickMeter tickMeter = new TFM_TickMeter(plugin);
|
playerMsg(sender, "Calculating ticks per second, please wait...");
|
||||||
tickMeter.startTicking();
|
|
||||||
Thread.sleep(2500);
|
|
||||||
final double ticksPerSecond = tickMeter.stopTicking();
|
|
||||||
|
|
||||||
new BukkitRunnable()
|
new BukkitRunnable() {
|
||||||
{
|
@Override
|
||||||
@Override
|
public void run() {
|
||||||
public void run()
|
try {
|
||||||
{
|
TFM_TickMeter tickMeter = new TFM_TickMeter(plugin);
|
||||||
playerMsg(sender, "Ticks per second: " + (TPS_RANGE.containsDouble(ticksPerSecond) ? ChatColor.GREEN : ChatColor.RED) + ticksPerSecond);
|
tickMeter.startTicking();
|
||||||
}
|
Thread.sleep(2500);
|
||||||
}.runTask(plugin);
|
final double ticksPerSecond = tickMeter.stopTicking();
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.severe(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}.runTaskAsynchronously(plugin);
|
|
||||||
|
|
||||||
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
|
return true;
|
||||||
{
|
}
|
||||||
private final AtomicInteger ticks = new AtomicInteger();
|
|
||||||
private final TotalFreedomMod plugin;
|
|
||||||
private long startTime;
|
|
||||||
private BukkitTask task;
|
|
||||||
|
|
||||||
public TFM_TickMeter(TotalFreedomMod plugin)
|
private class TFM_TickMeter {
|
||||||
{
|
|
||||||
this.plugin = plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void startTicking()
|
private final AtomicInteger ticks = new AtomicInteger();
|
||||||
{
|
private final TotalFreedomMod plugin;
|
||||||
startTime = System.currentTimeMillis();
|
private long startTime;
|
||||||
ticks.set(0);
|
private BukkitTask task;
|
||||||
|
|
||||||
task = new BukkitRunnable()
|
public TFM_TickMeter(TotalFreedomMod plugin) {
|
||||||
{
|
this.plugin = plugin;
|
||||||
@Override
|
}
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
ticks.incrementAndGet();
|
|
||||||
}
|
|
||||||
}.runTaskTimer(plugin, 0L, 1L);
|
|
||||||
}
|
|
||||||
|
|
||||||
public double stopTicking()
|
public void startTicking() {
|
||||||
{
|
startTime = System.currentTimeMillis();
|
||||||
task.cancel();
|
ticks.set(0);
|
||||||
long elapsed = System.currentTimeMillis() - startTime;
|
|
||||||
int tickCount = ticks.get();
|
|
||||||
|
|
||||||
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -8,55 +10,47 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_invis extends FreedomCommand {
|
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>();
|
@Override
|
||||||
int smites = 0;
|
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())
|
List<String> players = new ArrayList<String>();
|
||||||
{
|
int smites = 0;
|
||||||
if (player.hasPotionEffect(PotionEffectType.INVISIBILITY))
|
|
||||||
{
|
|
||||||
players.add(player.getName());
|
|
||||||
if (smite && !AdminList.isSuperAdmin(player))
|
|
||||||
{
|
|
||||||
player.setHealth(0.0);
|
|
||||||
smites++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (players.isEmpty())
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
{
|
if (player.hasPotionEffect(PotionEffectType.INVISIBILITY)) {
|
||||||
playerMsg(sender, "There are no invisible players");
|
players.add(player.getName());
|
||||||
return true;
|
if (smite && !AdminList.isSuperAdmin(player)) {
|
||||||
}
|
player.setHealth(0.0);
|
||||||
|
smites++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (smite)
|
if (players.isEmpty()) {
|
||||||
{
|
playerMsg(sender, "There are no invisible players");
|
||||||
playerMsg(sender, "Smitten " + smites + " players");
|
return true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Invisble players (" + players.size() + "): " + StringUtils.join(players, ", "));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
if (smite) {
|
||||||
}
|
playerMsg(sender, "Smitten " + smites + " players");
|
||||||
|
} else {
|
||||||
|
playerMsg(sender,
|
||||||
|
"Invisble players (" + players.size() + "): " + StringUtils.join(players, ", "));
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,80 +8,72 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_jumppads extends FreedomCommand {
|
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) {
|
@Override
|
||||||
if (args[0].equalsIgnoreCase("info")) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
playerMsg(sender, "Jumppads: " + (JumpPads.getMode().isOn() ? "Enabled" : "Disabled"), ChatColor.BLUE);
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
playerMsg(sender, "Sideways: " + (JumpPads.getMode() == JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS ? "Enabled" : "Disabled"), ChatColor.BLUE);
|
if (args.length == 0 || args.length > 2) {
|
||||||
playerMsg(sender, "Strength: " + (JumpPads.getStrength() * 10 - 1), ChatColor.BLUE);
|
return false;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if ("off".equals(args[0]))
|
if (args.length == 1) {
|
||||||
{
|
if (args[0].equalsIgnoreCase("info")) {
|
||||||
Utilities.adminAction(sender.getName(), "Disabling Jumppads", false);
|
playerMsg(sender,
|
||||||
JumpPads.setMode(JumpPads.JumpPadMode.OFF);
|
"Jumppads: " + (JumpPads.getMode().isOn() ? "Enabled" : "Disabled"),
|
||||||
}
|
ChatColor.BLUE);
|
||||||
else
|
playerMsg(sender,
|
||||||
{
|
"Sideways: " + (JumpPads.getMode() == JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS
|
||||||
Utilities.adminAction(sender.getName(), "Enabling Jumppads", false);
|
? "Enabled" : "Disabled"), ChatColor.BLUE);
|
||||||
JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK);
|
playerMsg(sender, "Strength: " + (JumpPads.getStrength() * 10 - 1), ChatColor.BLUE);
|
||||||
}
|
return true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
if (JumpPads.getMode() == JumpPads.JumpPadMode.OFF)
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Jumppads are currently disabled, please enable them before changing jumppads settings.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("sideways"))
|
if ("off".equals(args[0])) {
|
||||||
{
|
Utilities.adminAction(sender.getName(), "Disabling Jumppads", false);
|
||||||
if ("off".equals(args[1]))
|
JumpPads.setMode(JumpPads.JumpPadMode.OFF);
|
||||||
{
|
} else {
|
||||||
Utilities.adminAction(sender.getName(), "Setting Jumppads mode to: Madgeek", false);
|
Utilities.adminAction(sender.getName(), "Enabling Jumppads", false);
|
||||||
JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK);
|
JumpPads.setMode(JumpPads.JumpPadMode.MADGEEK);
|
||||||
}
|
}
|
||||||
else
|
} else {
|
||||||
{
|
if (JumpPads.getMode() == JumpPads.JumpPadMode.OFF) {
|
||||||
Utilities.adminAction(sender.getName(), "Setting Jumppads mode to: Normal and Sideways", false);
|
playerMsg(sender,
|
||||||
JumpPads.setMode(JumpPads.JumpPadMode.NORMAL_AND_SIDEWAYS);
|
"Jumppads are currently disabled, please enable them before changing jumppads settings.");
|
||||||
}
|
return true;
|
||||||
}
|
}
|
||||||
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 (strength > 10 || strength < 1)
|
if (args[0].equalsIgnoreCase("sideways")) {
|
||||||
{
|
if ("off".equals(args[1])) {
|
||||||
playerMsg(sender, "Invalid Strength: The strength may be 1 through 10.");
|
Utilities.adminAction(sender.getName(), "Setting Jumppads mode to: Madgeek",
|
||||||
return true;
|
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);
|
if (strength > 10 || strength < 1) {
|
||||||
JumpPads.setStrength((strength / 10) + 0.1F);
|
playerMsg(sender, "Invalid Strength: The strength may be 1 through 10.");
|
||||||
}
|
return true;
|
||||||
else
|
}
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
Utilities.adminAction(sender.getName(), "Setting Jumppads strength to: " + strength,
|
||||||
}
|
false);
|
||||||
|
JumpPads.setStrength((strength / 10) + 0.1F);
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,16 +9,18 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH, blockHostConsole = true)
|
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH, blockHostConsole = true)
|
||||||
public class Command_kicknoob extends FreedomCommand {
|
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()) {
|
@Override
|
||||||
if (!AdminList.isSuperAdmin(player)) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
player.kickPlayer(ChatColor.RED + "Disconnected by admin.");
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
@ -10,74 +13,65 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
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)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_landmine extends FreedomCommand {
|
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()) {
|
@Override
|
||||||
playerMsg(sender, "Explosions are currently disabled.", ChatColor.GREEN);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
return true;
|
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)
|
double radius = 2.0;
|
||||||
{
|
|
||||||
if ("list".equalsIgnoreCase(args[0]))
|
|
||||||
{
|
|
||||||
final Iterator<TFM_LandmineData> landmines = TFM_LandmineData.landmines.iterator();
|
|
||||||
while (landmines.hasNext())
|
|
||||||
{
|
|
||||||
playerMsg(sender, landmines.next().toString());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
if (args.length >= 1) {
|
||||||
{
|
if ("list".equalsIgnoreCase(args[0])) {
|
||||||
radius = Math.max(2.0, Math.min(6.0, Double.parseDouble(args[0])));
|
final Iterator<TFM_LandmineData> landmines = TFM_LandmineData.landmines.iterator();
|
||||||
}
|
while (landmines.hasNext()) {
|
||||||
catch (NumberFormatException ex)
|
playerMsg(sender, landmines.next().toString());
|
||||||
{
|
}
|
||||||
}
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Block landmine = sender_p.getLocation().getBlock().getRelative(BlockFace.DOWN);
|
try {
|
||||||
landmine.setType(Material.TNT);
|
radius = Math.max(2.0, Math.min(6.0, Double.parseDouble(args[0])));
|
||||||
TFM_LandmineData.landmines.add(new TFM_LandmineData(landmine.getLocation(), sender_p, radius));
|
} 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
|
return true;
|
||||||
{
|
}
|
||||||
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)
|
public static class TFM_LandmineData {
|
||||||
{
|
|
||||||
this.location = location;
|
|
||||||
this.player = player;
|
|
||||||
this.radius = radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
public static final List<TFM_LandmineData> landmines = new ArrayList<TFM_LandmineData>();
|
||||||
public String toString()
|
public final Location location;
|
||||||
{
|
public final Player player;
|
||||||
return this.location.toString() + ", " + this.radius + ", " + this.player.getName();
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,31 +8,31 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_lastcmd extends FreedomCommand {
|
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) {
|
final Player player = getPlayer(args[0]);
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
final PlayerData playerdata = PlayerData.getPlayerData(player);
|
if (player == null) {
|
||||||
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (playerdata != null)
|
final PlayerData playerdata = PlayerData.getPlayerData(player);
|
||||||
{
|
|
||||||
String lastCommand = playerdata.getLastCommand();
|
|
||||||
if (lastCommand.isEmpty())
|
|
||||||
{
|
|
||||||
lastCommand = "(none)";
|
|
||||||
}
|
|
||||||
playerMsg(sender, player.getName() + " - Last Command: " + lastCommand, ChatColor.GRAY);
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,83 +15,84 @@ import org.bukkit.entity.Player;
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
||||||
public class Command_list extends FreedomCommand {
|
public class Command_list extends FreedomCommand {
|
||||||
|
|
||||||
private enum ListFilter {
|
@Override
|
||||||
ALL,
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
ADMINS,
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
IMPOSTORS
|
if (args.length > 1) {
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
if (Utilities.isFromHostConsole(sender.getName())) {
|
||||||
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
final List<String> names = new ArrayList<String>();
|
||||||
String commandLabel, String[] args, boolean senderIsConsole) {
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
if (args.length > 1) {
|
if (VanishManager.isVanished(player)) {
|
||||||
return false;
|
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 ListFilter listFilter;
|
||||||
final List<String> names = new ArrayList<String>();
|
if (args.length == 1) {
|
||||||
for (Player player : server.getOnlinePlayers()) {
|
if ("-a".equals(args[0])) {
|
||||||
if (VanishManager.isVanished(player)) {
|
listFilter = ListFilter.ADMINS;
|
||||||
continue;
|
} else if ("-i".equals(args[0])) {
|
||||||
}
|
listFilter = ListFilter.IMPOSTORS;
|
||||||
names.add(player.getName());
|
} else {
|
||||||
}
|
return false;
|
||||||
playerMsg(sender,
|
}
|
||||||
"There are " + names.size() + "/" + VanishManager.getFakeOnlinePlayers()
|
} else {
|
||||||
+ " players online:\n" + StringUtils.join(names, ", "), ChatColor.WHITE);
|
listFilter = ListFilter.ALL;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
final ListFilter listFilter;
|
final StringBuilder onlineStats = new StringBuilder();
|
||||||
if (args.length == 1) {
|
final StringBuilder onlineUsers = new StringBuilder();
|
||||||
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();
|
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED)
|
||||||
final StringBuilder onlineUsers = new StringBuilder();
|
.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)
|
final List<String> names = new ArrayList<String>();
|
||||||
.append(VanishManager.getFakeOnlinePlayers());
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
onlineStats.append(ChatColor.BLUE).append(" out of a maximum ").append(ChatColor.RED)
|
if (VanishManager.isVanished(player)) {
|
||||||
.append(server.getMaxPlayers());
|
continue;
|
||||||
onlineStats.append(ChatColor.BLUE).append(" players online.");
|
}
|
||||||
|
|
||||||
final List<String> names = new ArrayList<String>();
|
if (listFilter == ListFilter.ADMINS && !AdminList.isSuperAdmin(player)) {
|
||||||
for (Player player : server.getOnlinePlayers()) {
|
continue;
|
||||||
if (VanishManager.isVanished(player))
|
}
|
||||||
continue;
|
|
||||||
|
|
||||||
if (listFilter == ListFilter.ADMINS && !AdminList.isSuperAdmin(player)) {
|
if (listFilter == ListFilter.IMPOSTORS && !AdminList.isAdminImpostor(player)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (listFilter == ListFilter.IMPOSTORS && !AdminList.isAdminImpostor(player)) {
|
names.add(PlayerRank.fromSender(player).getPrefix() + player.getName());
|
||||||
continue;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
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 ");
|
if (senderIsConsole) {
|
||||||
onlineUsers.append(listFilter == ListFilter.ADMINS ? "admins: " : "players: ");
|
sender.sendMessage(ChatColor.stripColor(onlineStats.toString()));
|
||||||
onlineUsers.append(StringUtils.join(names, ChatColor.WHITE + ", "));
|
sender.sendMessage(ChatColor.stripColor(onlineUsers.toString()));
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(onlineStats.toString());
|
||||||
|
sender.sendMessage(onlineUsers.toString());
|
||||||
|
}
|
||||||
|
|
||||||
if (senderIsConsole) {
|
return true;
|
||||||
sender.sendMessage(ChatColor.stripColor(onlineStats.toString()));
|
}
|
||||||
sender.sendMessage(ChatColor.stripColor(onlineUsers.toString()));
|
|
||||||
} else {
|
|
||||||
sender.sendMessage(onlineStats.toString());
|
|
||||||
sender.sendMessage(onlineUsers.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
private enum ListFilter {
|
||||||
}
|
ALL,
|
||||||
|
ADMINS,
|
||||||
|
IMPOSTORS
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,13 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_localspawn extends FreedomCommand {
|
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) {
|
@Override
|
||||||
sender_p.teleport(sender_p.getWorld().getSpawnLocation());
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
playerMsg(sender, "Teleported to spawnpoint for world \"" + sender_p.getWorld().getName() + "\".");
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
return true;
|
sender_p.teleport(sender_p.getWorld().getSpawnLocation());
|
||||||
}
|
playerMsg(sender,
|
||||||
|
"Teleported to spawnpoint for world \"" + sender_p.getWorld().getName() + "\".");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,110 +10,87 @@ import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
|
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
|
||||||
public class Command_lockup extends FreedomCommand {
|
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()) {
|
@Override
|
||||||
startLockup(player);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
}
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
playerMsg(sender, "Locked up all players.");
|
if (args.length == 1) {
|
||||||
}
|
if (args[0].equalsIgnoreCase("all")) {
|
||||||
else if (args[0].equalsIgnoreCase("purge"))
|
Utilities.adminAction(sender.getName(), "Locking up all players", true);
|
||||||
{
|
|
||||||
Utilities.adminAction(sender.getName(), "Unlocking all players", true);
|
|
||||||
for (Player player : server.getOnlinePlayers())
|
|
||||||
{
|
|
||||||
cancelLockup(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
playerMsg(sender, "Unlocked all players.");
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
}
|
startLockup(player);
|
||||||
else
|
}
|
||||||
{
|
playerMsg(sender, "Locked up all players.");
|
||||||
return false;
|
} else if (args[0].equalsIgnoreCase("purge")) {
|
||||||
}
|
Utilities.adminAction(sender.getName(), "Unlocking all players", true);
|
||||||
}
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
else if (args.length == 2)
|
cancelLockup(player);
|
||||||
{
|
}
|
||||||
if (args[1].equalsIgnoreCase("on"))
|
|
||||||
{
|
|
||||||
final Player player = getPlayer(args[0]);
|
|
||||||
|
|
||||||
if (player == null)
|
playerMsg(sender, "Unlocked all players.");
|
||||||
{
|
} else {
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
return false;
|
||||||
return true;
|
}
|
||||||
}
|
} 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);
|
if (player == null) {
|
||||||
startLockup(player);
|
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
playerMsg(sender, "Locked up " + player.getName() + ".");
|
return true;
|
||||||
}
|
}
|
||||||
else if ("off".equals(args[1]))
|
|
||||||
{
|
|
||||||
final Player player = getPlayer(args[0]);
|
|
||||||
|
|
||||||
if (player == null)
|
Utilities.adminAction(sender.getName(), "Locking up " + player.getName(), true);
|
||||||
{
|
startLockup(player);
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
playerMsg(sender, "Locked up " + player.getName() + ".");
|
||||||
return true;
|
} else if ("off".equals(args[1])) {
|
||||||
}
|
final Player player = getPlayer(args[0]);
|
||||||
|
|
||||||
Utilities.adminAction(sender.getName(), "Unlocking " + player.getName(), true);
|
if (player == null) {
|
||||||
cancelLockup(player);
|
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
playerMsg(sender, "Unlocked " + player.getName() + ".");
|
return true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
return true;
|
||||||
{
|
}
|
||||||
BukkitTask lockupScheduleID = playerdata.getLockupScheduleID();
|
|
||||||
if (lockupScheduleID != null)
|
|
||||||
{
|
|
||||||
lockupScheduleID.cancel();
|
|
||||||
playerdata.setLockupScheduleID(null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void cancelLockup(final Player player)
|
private void cancelLockup(PlayerData playerdata) {
|
||||||
{
|
BukkitTask lockupScheduleID = playerdata.getLockupScheduleID();
|
||||||
cancelLockup(PlayerData.getPlayerData(player));
|
if (lockupScheduleID != null) {
|
||||||
}
|
lockupScheduleID.cancel();
|
||||||
|
playerdata.setLockupScheduleID(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void startLockup(final Player player)
|
private void cancelLockup(final Player player) {
|
||||||
{
|
cancelLockup(PlayerData.getPlayerData(player));
|
||||||
final PlayerData playerdata = PlayerData.getPlayerData(player);
|
}
|
||||||
|
|
||||||
cancelLockup(playerdata);
|
private void startLockup(final Player player) {
|
||||||
|
final PlayerData playerdata = PlayerData.getPlayerData(player);
|
||||||
|
|
||||||
playerdata.setLockupScheduleID(new BukkitRunnable()
|
cancelLockup(playerdata);
|
||||||
{
|
|
||||||
@Override
|
playerdata.setLockupScheduleID(new BukkitRunnable() {
|
||||||
public void run()
|
@Override
|
||||||
{
|
public void run() {
|
||||||
if (player.isOnline())
|
if (player.isOnline()) {
|
||||||
{
|
player.openInventory(player.getInventory());
|
||||||
player.openInventory(player.getInventory());
|
} else {
|
||||||
}
|
cancelLockup(playerdata);
|
||||||
else
|
}
|
||||||
{
|
}
|
||||||
cancelLockup(playerdata);
|
}.runTaskTimer(plugin, 0L, 5L));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}.runTaskTimer(plugin, 0L, 5L));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,14 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
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.Log;
|
||||||
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
||||||
import me.StevenLawson.TotalFreedomMod.admin.Admin;
|
import me.StevenLawson.TotalFreedomMod.admin.Admin;
|
||||||
|
@ -11,144 +20,128 @@ import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
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)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_logs extends FreedomCommand {
|
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)
|
public static void deactivateSuperadmin(Admin superadmin) {
|
||||||
{
|
for (String ip : superadmin.getIps()) {
|
||||||
updateLogsRegistration(sender, target.getName(), target.getAddress().getAddress().getHostAddress().trim(), mode);
|
updateLogsRegistration(null, superadmin.getLastLoginName(), ip,
|
||||||
}
|
LogsRegistrationMode.DELETE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void updateLogsRegistration(final CommandSender sender, final String targetName, final String targetIP, final LogsRegistrationMode mode)
|
public static void updateLogsRegistration(final CommandSender sender, final Player target,
|
||||||
{
|
final LogsRegistrationMode mode) {
|
||||||
final String logsRegisterURL = ConfigurationEntry.LOGS_URL.getString();
|
updateLogsRegistration(sender, target.getName(),
|
||||||
final String logsRegisterPassword = ConfigurationEntry.LOGS_SECRET.getString();
|
target.getAddress().getAddress().getHostAddress().trim(), mode);
|
||||||
|
}
|
||||||
|
|
||||||
if (logsRegisterURL == null || logsRegisterPassword == null || logsRegisterURL.isEmpty() || logsRegisterPassword.isEmpty())
|
public static void updateLogsRegistration(final CommandSender sender, final String targetName,
|
||||||
{
|
final String targetIP, final LogsRegistrationMode mode) {
|
||||||
return;
|
final String logsRegisterURL = ConfigurationEntry.LOGS_URL.getString();
|
||||||
}
|
final String logsRegisterPassword = ConfigurationEntry.LOGS_SECRET.getString();
|
||||||
|
|
||||||
new BukkitRunnable()
|
if (logsRegisterURL == null || logsRegisterPassword == null || logsRegisterURL.isEmpty()
|
||||||
{
|
|| logsRegisterPassword.isEmpty()) {
|
||||||
@Override
|
return;
|
||||||
public void run()
|
}
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (sender != null)
|
|
||||||
{
|
|
||||||
sender.sendMessage(ChatColor.YELLOW + "Connecting...");
|
|
||||||
}
|
|
||||||
|
|
||||||
URL url = new URLBuilder(logsRegisterURL)
|
new BukkitRunnable() {
|
||||||
.addQueryParameter("mode", mode.toString())
|
@Override
|
||||||
.addQueryParameter("password", logsRegisterPassword)
|
public void run() {
|
||||||
.addQueryParameter("name", targetName)
|
try {
|
||||||
.addQueryParameter("ip", targetIP)
|
if (sender != null) {
|
||||||
.getURL();
|
sender.sendMessage(ChatColor.YELLOW + "Connecting...");
|
||||||
|
}
|
||||||
|
|
||||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
URL url = new URLBuilder(logsRegisterURL)
|
||||||
connection.setConnectTimeout(1000 * 5);
|
.addQueryParameter("mode", mode.toString())
|
||||||
connection.setReadTimeout(1000 * 5);
|
.addQueryParameter("password", logsRegisterPassword)
|
||||||
connection.setUseCaches(false);
|
.addQueryParameter("name", targetName)
|
||||||
connection.setRequestMethod("HEAD");
|
.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)
|
final int responseCode = connection.getResponseCode();
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
if (sender != null) {
|
||||||
public boolean run(final CommandSender sender, final org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
new BukkitRunnable() {
|
||||||
LogsRegistrationMode mode = LogsRegistrationMode.UPDATE;
|
@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) {
|
@Override
|
||||||
mode = ("off".equals(args[0]) ? LogsRegistrationMode.DELETE : LogsRegistrationMode.UPDATE);
|
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
|
return true;
|
||||||
{
|
}
|
||||||
UPDATE("update"), DELETE("delete");
|
|
||||||
private final String mode;
|
|
||||||
|
|
||||||
LogsRegistrationMode(String mode)
|
public enum LogsRegistrationMode {
|
||||||
{
|
UPDATE("update"), DELETE("delete");
|
||||||
this.mode = mode;
|
private final String mode;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
LogsRegistrationMode(String mode) {
|
||||||
public String toString()
|
this.mode = mode;
|
||||||
{
|
}
|
||||||
return mode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class URLBuilder
|
@Override
|
||||||
{
|
public String toString() {
|
||||||
private final String requestPath;
|
return mode;
|
||||||
private final Map<String, String> queryStringMap = new HashMap<String, String>();
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public URLBuilder(String requestPath)
|
private static class URLBuilder {
|
||||||
{
|
|
||||||
this.requestPath = requestPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public URLBuilder addQueryParameter(String key, String value)
|
private final String requestPath;
|
||||||
{
|
private final Map<String, String> queryStringMap = new HashMap<String, String>();
|
||||||
queryStringMap.put(key, value);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public URL getURL() throws MalformedURLException
|
public URLBuilder(String requestPath) {
|
||||||
{
|
this.requestPath = requestPath;
|
||||||
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, "&"));
|
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, "&"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,70 +7,67 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_CONSOLE)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_CONSOLE)
|
||||||
public class Command_moblimiter extends FreedomCommand {
|
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")) {
|
@Override
|
||||||
ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(true);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
}
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
else if (args[0].equalsIgnoreCase("off"))
|
if (args.length < 1) {
|
||||||
{
|
return false;
|
||||||
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 (args[0].equalsIgnoreCase("setmax"))
|
if (args[0].equalsIgnoreCase("on")) {
|
||||||
{
|
ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(true);
|
||||||
try
|
} else if (args[0].equalsIgnoreCase("off")) {
|
||||||
{
|
ConfigurationEntry.MOB_LIMITER_ENABLED.setBoolean(false);
|
||||||
ConfigurationEntry.MOB_LIMITER_MAX.setInteger(Math.max(0, Math.min(2000, Integer.parseInt(args[1]))));
|
} else if (args[0].equalsIgnoreCase("dragon")) {
|
||||||
}
|
ConfigurationEntry.MOB_LIMITER_DISABLE_DRAGON.setBoolean(
|
||||||
catch (NumberFormatException nfex)
|
!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())
|
if (args[0].equalsIgnoreCase("setmax")) {
|
||||||
{
|
try {
|
||||||
sender.sendMessage("Moblimiter enabled. Maximum mobcount set to: " + ConfigurationEntry.MOB_LIMITER_MAX.getInteger() + ".");
|
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") + ".");
|
if (ConfigurationEntry.MOB_LIMITER_ENABLED.getBoolean()) {
|
||||||
playerMsg(sender, "Giant: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean() ? "disabled" : "enabled") + ".");
|
sender.sendMessage("Moblimiter enabled. Maximum mobcount set to: "
|
||||||
playerMsg(sender, "Slime: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean() ? "disabled" : "enabled") + ".");
|
+ ConfigurationEntry.MOB_LIMITER_MAX.getInteger() + ".");
|
||||||
playerMsg(sender, "Ghast: " + (ConfigurationEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean() ? "disabled" : "enabled") + ".");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Moblimiter is disabled. No mob restrictions are in effect.");
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,32 +4,36 @@ import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
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)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_mp extends FreedomCommand {
|
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()
|
public static int purgeMobs() {
|
||||||
{
|
int removed = 0;
|
||||||
int removed = 0;
|
for (World world : Bukkit.getWorlds()) {
|
||||||
for (World world : Bukkit.getWorlds())
|
for (Entity ent : world.getLivingEntities()) {
|
||||||
{
|
if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime
|
||||||
for (Entity ent : world.getLivingEntities())
|
|| ent instanceof EnderDragon || ent instanceof Ambient) {
|
||||||
{
|
ent.remove();
|
||||||
if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime || ent instanceof EnderDragon || ent instanceof Ambient)
|
removed++;
|
||||||
{
|
}
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,35 +10,36 @@ import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_mp44 extends FreedomCommand {
|
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) {
|
@Override
|
||||||
return false;
|
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 playerdata = PlayerData.getPlayerData(sender_p);
|
||||||
{
|
|
||||||
playerdata.armMP44();
|
|
||||||
|
|
||||||
playerMsg(sender, "mp44 is ARMED! Left click with gunpowder to start firing, left click again to quit.", ChatColor.GREEN);
|
if (args[0].equalsIgnoreCase("draw")) {
|
||||||
playerMsg(sender, "Type /mp44 sling to disable. -by Madgeek1450", ChatColor.GREEN);
|
playerdata.armMP44();
|
||||||
|
|
||||||
sender_p.setItemInHand(new ItemStack(Material.SULPHUR, 1));
|
playerMsg(sender,
|
||||||
}
|
"mp44 is ARMED! Left click with gunpowder to start firing, left click again to quit.",
|
||||||
else
|
ChatColor.GREEN);
|
||||||
{
|
playerMsg(sender, "Type /mp44 sling to disable. -by Madgeek1450", ChatColor.GREEN);
|
||||||
playerdata.disarmMP44();
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,9 +6,11 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_nether extends FreedomCommand {
|
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) {
|
@Override
|
||||||
Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_nether");
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
return true;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
}
|
Utilities.gotoWorld(sender_p, server.getWorlds().get(0).getName() + "_nether");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
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 me.StevenLawson.TotalFreedomMod.command.CommandBlocker;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -8,109 +12,92 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
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)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
||||||
public class Command_nf extends FreedomCommand {
|
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) {
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
final String[] argsList = args;
|
if (player.getDisplayName().toLowerCase().trim().contains(needle)) {
|
||||||
for (String arg : argsList) {
|
return player;
|
||||||
Player player = null;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Matcher matcher = Pattern.compile("^!(.+)$").matcher(arg);
|
return null;
|
||||||
if (matcher.find())
|
}
|
||||||
{
|
|
||||||
String displayName = matcher.group(1);
|
|
||||||
|
|
||||||
player = getPlayerByDisplayName(displayName);
|
private static Player getPlayerByDisplayNameAlt(String needle) {
|
||||||
|
needle = needle.toLowerCase().trim();
|
||||||
|
|
||||||
if (player == null)
|
Integer minEditDistance = null;
|
||||||
{
|
Player minEditMatch = null;
|
||||||
player = getPlayerByDisplayNameAlt(displayName);
|
|
||||||
|
|
||||||
if (player == null)
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
{
|
String haystack = player.getDisplayName().toLowerCase().trim();
|
||||||
sender.sendMessage(ChatColor.GRAY + "Can't find player by nickname: " + displayName);
|
int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase());
|
||||||
return true;
|
if (minEditDistance == null || minEditDistance.intValue() > editDistance) {
|
||||||
}
|
minEditDistance = editDistance;
|
||||||
}
|
minEditMatch = player;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (player == null)
|
return minEditMatch;
|
||||||
{
|
}
|
||||||
outputCommand.add(arg);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nickMatched = true;
|
|
||||||
outputCommand.add(player.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!nickMatched)
|
@Override
|
||||||
{
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
sender.sendMessage("No nicknames replaced in command.");
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
return true;
|
boolean nickMatched = false;
|
||||||
}
|
|
||||||
|
|
||||||
String newCommand = StringUtils.join(outputCommand, " ");
|
final List<String> outputCommand = new ArrayList<String>();
|
||||||
|
|
||||||
if (CommandBlocker.isCommandBlocked(newCommand, sender))
|
if (args.length >= 1) {
|
||||||
{
|
final String[] argsList = args;
|
||||||
// CommandBlocker handles messages and broadcasts
|
for (String arg : argsList) {
|
||||||
return true;
|
Player player = null;
|
||||||
}
|
|
||||||
|
|
||||||
sender.sendMessage("Sending command: \"" + newCommand + "\".");
|
Matcher matcher = Pattern.compile("^!(.+)$").matcher(arg);
|
||||||
server.dispatchCommand(sender, newCommand);
|
if (matcher.find()) {
|
||||||
|
String displayName = matcher.group(1);
|
||||||
|
|
||||||
return true;
|
player = getPlayerByDisplayName(displayName);
|
||||||
}
|
|
||||||
|
|
||||||
private static Player getPlayerByDisplayName(String needle)
|
if (player == null) {
|
||||||
{
|
player = getPlayerByDisplayNameAlt(displayName);
|
||||||
needle = needle.toLowerCase().trim();
|
|
||||||
|
|
||||||
for (Player player : Bukkit.getOnlinePlayers())
|
if (player == null) {
|
||||||
{
|
sender.sendMessage(
|
||||||
if (player.getDisplayName().toLowerCase().trim().contains(needle))
|
ChatColor.GRAY + "Can't find player by nickname: " + displayName);
|
||||||
{
|
return true;
|
||||||
return player;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
if (player == null) {
|
||||||
}
|
outputCommand.add(arg);
|
||||||
|
} else {
|
||||||
|
nickMatched = true;
|
||||||
|
outputCommand.add(player.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static Player getPlayerByDisplayNameAlt(String needle)
|
if (!nickMatched) {
|
||||||
{
|
sender.sendMessage("No nicknames replaced in command.");
|
||||||
needle = needle.toLowerCase().trim();
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
Integer minEditDistance = null;
|
String newCommand = StringUtils.join(outputCommand, " ");
|
||||||
Player minEditMatch = null;
|
|
||||||
|
|
||||||
for (Player player : Bukkit.getOnlinePlayers())
|
if (CommandBlocker.isCommandBlocked(newCommand, sender)) {
|
||||||
{
|
// CommandBlocker handles messages and broadcasts
|
||||||
String haystack = player.getDisplayName().toLowerCase().trim();
|
return true;
|
||||||
int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase());
|
}
|
||||||
if (minEditDistance == null || minEditDistance.intValue() > editDistance)
|
|
||||||
{
|
|
||||||
minEditDistance = editDistance;
|
|
||||||
minEditMatch = player;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return minEditMatch;
|
sender.sendMessage("Sending command: \"" + newCommand + "\".");
|
||||||
}
|
server.dispatchCommand(sender, newCommand);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
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.bridge.EssentialsBridge;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -8,36 +10,37 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_nickclean extends FreedomCommand {
|
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
|
private static final ChatColor[] BLOCKED = new ChatColor[]
|
||||||
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);
|
ChatColor.MAGIC,
|
||||||
|
ChatColor.STRIKETHROUGH,
|
||||||
|
};
|
||||||
|
private static final Pattern REGEX = Pattern.compile(
|
||||||
|
"\\u00A7[" + StringUtils.join(BLOCKED, "") + "]");
|
||||||
|
|
||||||
for (final Player player : server.getOnlinePlayers()) {
|
@Override
|
||||||
final String playerName = player.getName();
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
final String nickName = EssentialsBridge.getNickname(playerName);
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
if (nickName != null && !nickName.isEmpty() && !nickName.equalsIgnoreCase(playerName)) {
|
Utilities.adminAction(sender.getName(), "Cleaning all nicknames.", false);
|
||||||
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;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,58 +10,54 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_nicknyan extends FreedomCommand {
|
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])) {
|
@Override
|
||||||
EssentialsBridge.setNickname(sender.getName(), null);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
playerMsg(sender, "Nickname cleared.");
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
return true;
|
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]+$"))
|
final String nickPlain = ChatColor.stripColor(Utilities.colorize(args[0].trim()));
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Player player : Bukkit.getOnlinePlayers())
|
if (!nickPlain.matches("^[a-zA-Z_0-9\u00a7]+$")) {
|
||||||
{
|
playerMsg(sender, "That nickname contains invalid characters.");
|
||||||
if (player == sender_p)
|
return true;
|
||||||
{
|
} else if (nickPlain.length() < 4 || nickPlain.length() > 30) {
|
||||||
continue;
|
playerMsg(sender, "Your nickname must be between 4 and 30 characters long.");
|
||||||
}
|
return true;
|
||||||
if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nickPlain))
|
}
|
||||||
{
|
|
||||||
playerMsg(sender, "That nickname is already in use.");
|
|
||||||
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();
|
final StringBuilder newNick = new StringBuilder();
|
||||||
for (char c : chars)
|
|
||||||
{
|
|
||||||
newNick.append(Utilities.randomChatColor()).append(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,23 +8,24 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_o extends FreedomCommand {
|
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);
|
@Override
|
||||||
userinfo.setAdminChat(!userinfo.inAdminChat());
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
playerMsg(sender, "Toggled Admin Chat " + (userinfo.inAdminChat() ? "on" : "off") + ".");
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
}
|
if (args.length == 0) {
|
||||||
else
|
if (senderIsConsole) {
|
||||||
{
|
playerMsg(sender, "Only in-game players can toggle AdminChat.");
|
||||||
Utilities.adminChatMessage(sender, StringUtils.join(args, " "), senderIsConsole);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
import com.earth2me.essentials.User;
|
|
||||||
import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge;
|
import me.StevenLawson.TotalFreedomMod.bridge.EssentialsBridge;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
@ -11,43 +10,47 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_offlinetp extends FreedomCommand {
|
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;
|
@Override
|
||||||
String searchString = args[0];
|
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()) {
|
OfflinePlayer target = null;
|
||||||
if(offlinePlayer.getName().equalsIgnoreCase(searchString)) {
|
String searchString = args[0];
|
||||||
target = offlinePlayer;
|
|
||||||
break;
|
|
||||||
} else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) {
|
|
||||||
target = offlinePlayer;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(target == null) {
|
for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) {
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
if (offlinePlayer.getName().equalsIgnoreCase(searchString)) {
|
||||||
return true;
|
target = offlinePlayer;
|
||||||
}
|
break;
|
||||||
|
} else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) {
|
||||||
|
target = offlinePlayer;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(target.isOnline()) {
|
if (target == null) {
|
||||||
playerMsg(sender, "That player is already online. Use /tp.");
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
playerMsg(sender, String.format("Teleporting to %s's last known location...", target.getName()));
|
if (target.isOnline()) {
|
||||||
try {
|
playerMsg(sender, "That player is already online. Use /tp.");
|
||||||
Location location = EssentialsBridge.getEssentialsUser(target.getName()).getLastLocation();
|
return true;
|
||||||
sender_p.teleport(location);
|
}
|
||||||
} catch (Exception e) {
|
|
||||||
playerMsg(sender, "Oops");
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,55 +11,52 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
||||||
public class Command_onlinemode extends FreedomCommand {
|
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))
|
@Override
|
||||||
{
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
return true;
|
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"))
|
if (sender instanceof Player && !AdminList.isSeniorAdmin(sender, true)) {
|
||||||
{
|
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
|
||||||
online_mode = true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (args[0].equalsIgnoreCase("off"))
|
|
||||||
{
|
|
||||||
online_mode = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
if (args[0].equalsIgnoreCase("on")) {
|
||||||
{
|
online_mode = true;
|
||||||
Server.setOnlineMode(online_mode);
|
} else if (args[0].equalsIgnoreCase("off")) {
|
||||||
|
online_mode = false;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (online_mode)
|
try {
|
||||||
{
|
Server.setOnlineMode(online_mode);
|
||||||
for (Player player : server.getOnlinePlayers())
|
|
||||||
{
|
|
||||||
player.kickPlayer("Server is activating \"online-mode=true\". Please reconnect.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
Utilities.adminAction(sender.getName(),
|
||||||
}
|
"Turning player validation " + (online_mode ? "on" : "off") + ".", true);
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.severe(ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
server.reload();
|
||||||
}
|
} catch (Exception ex) {
|
||||||
|
Log.severe(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,44 +11,41 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
||||||
public class Command_op extends FreedomCommand {
|
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")) {
|
@Override
|
||||||
playerMsg(sender, "Correct usage: /opall");
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
return true;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
}
|
if (args.length != 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
OfflinePlayer player = null;
|
if (args[0].equalsIgnoreCase("all") || args[0].equalsIgnoreCase("everyone")) {
|
||||||
for (Player onlinePlayer : server.getOnlinePlayers())
|
playerMsg(sender, "Correct usage: /opall");
|
||||||
{
|
return true;
|
||||||
if (args[0].equalsIgnoreCase(onlinePlayer.getName()))
|
}
|
||||||
{
|
|
||||||
player = onlinePlayer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if the player is not online
|
OfflinePlayer player = null;
|
||||||
if (player == null)
|
for (Player onlinePlayer : server.getOnlinePlayers()) {
|
||||||
{
|
if (args[0].equalsIgnoreCase(onlinePlayer.getName())) {
|
||||||
if (AdminList.isSuperAdmin(sender) || senderIsConsole)
|
player = onlinePlayer;
|
||||||
{
|
}
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Utilities.adminAction(sender.getName(), "Opping " + player.getName(), false);
|
// if the player is not online
|
||||||
player.setOp(true);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,35 +8,33 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_opall extends FreedomCommand {
|
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;
|
@Override
|
||||||
GameMode targetGamemode = GameMode.CREATIVE;
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
if (args.length != 0) {
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
if (args[0].equals("-c")) {
|
Utilities.adminAction(sender.getName(), "Opping all players on the server", false);
|
||||||
doSetGamemode = true;
|
|
||||||
targetGamemode = GameMode.CREATIVE;
|
|
||||||
}
|
|
||||||
else if (args[0].equals("-s"))
|
|
||||||
{
|
|
||||||
doSetGamemode = true;
|
|
||||||
targetGamemode = GameMode.SURVIVAL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Player player : server.getOnlinePlayers())
|
boolean doSetGamemode = false;
|
||||||
{
|
GameMode targetGamemode = GameMode.CREATIVE;
|
||||||
player.setOp(true);
|
if (args.length != 0) {
|
||||||
player.sendMessage(FreedomCommand.YOU_ARE_OP);
|
if (args[0].equals("-c")) {
|
||||||
|
doSetGamemode = true;
|
||||||
|
targetGamemode = GameMode.CREATIVE;
|
||||||
|
} else if (args[0].equals("-s")) {
|
||||||
|
doSetGamemode = true;
|
||||||
|
targetGamemode = GameMode.SURVIVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (doSetGamemode)
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
{
|
player.setOp(true);
|
||||||
player.setGameMode(targetGamemode);
|
player.sendMessage(FreedomCommand.YOU_ARE_OP);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
if (doSetGamemode) {
|
||||||
}
|
player.setGameMode(targetGamemode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,14 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_opme extends FreedomCommand {
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,52 +9,48 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
||||||
public class Command_ops extends FreedomCommand {
|
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")) {
|
@Override
|
||||||
int totalOps = server.getOperators().size();
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
int onlineOps = 0;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
|
if (args.length != 1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
for (Player player : server.getOnlinePlayers())
|
if (args[0].equals("count")) {
|
||||||
{
|
int totalOps = server.getOperators().size();
|
||||||
if (player.isOp())
|
int onlineOps = 0;
|
||||||
{
|
|
||||||
onlineOps++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
playerMsg(sender, "Online OPs: " + onlineOps);
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
playerMsg(sender, "Offline OPs: " + (totalOps - onlineOps));
|
if (player.isOp()) {
|
||||||
playerMsg(sender, "Total OPs: " + totalOps);
|
onlineOps++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
playerMsg(sender, "Online OPs: " + onlineOps);
|
||||||
}
|
playerMsg(sender, "Offline OPs: " + (totalOps - onlineOps));
|
||||||
|
playerMsg(sender, "Total OPs: " + totalOps);
|
||||||
|
|
||||||
if (args[0].equals("purge"))
|
return true;
|
||||||
{
|
}
|
||||||
if (!AdminList.isSuperAdmin(sender))
|
|
||||||
{
|
|
||||||
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
|
|
||||||
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())
|
Utilities.adminAction(sender.getName(), "Purging all operators", true);
|
||||||
{
|
|
||||||
player.setOp(false);
|
|
||||||
if (player.isOnline())
|
|
||||||
{
|
|
||||||
playerMsg(player.getPlayer(), FreedomCommand.YOU_ARE_NOT_OP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,49 +11,46 @@ import org.bukkit.util.Vector;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_orbit extends FreedomCommand {
|
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) {
|
Player player = getPlayer(args[0]);
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
double strength = 10.0;
|
||||||
{
|
|
||||||
if (args[1].equals("stop"))
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Stopped orbiting " + player.getName());
|
|
||||||
playerdata.stopOrbiting();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
if (args.length >= 2) {
|
||||||
{
|
if (args[1].equals("stop")) {
|
||||||
strength = Math.max(1.0, Math.min(150.0, Double.parseDouble(args[1])));
|
playerMsg(sender, "Stopped orbiting " + player.getName());
|
||||||
}
|
playerdata.stopOrbiting();
|
||||||
catch (NumberFormatException ex)
|
return true;
|
||||||
{
|
}
|
||||||
playerMsg(sender, ex.getMessage(), ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
try {
|
||||||
playerdata.startOrbiting(strength);
|
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));
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
Utilities.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
|
playerdata.startOrbiting(strength);
|
||||||
|
|
||||||
return true;
|
player.setVelocity(new Vector(0, strength, 0));
|
||||||
}
|
Utilities.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
import com.sk89q.util.StringUtil;
|
import com.sk89q.util.StringUtil;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
||||||
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry;
|
||||||
import me.StevenLawson.TotalFreedomMod.config.MainConfig;
|
import me.StevenLawson.TotalFreedomMod.config.MainConfig;
|
||||||
|
@ -10,60 +11,53 @@ import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_overlord extends FreedomCommand {
|
public class Command_overlord extends FreedomCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
if (!ConfigurationEntry.OVERLORD_IPS.getList().contains(Utilities.getIp(sender_p))) {
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
try {
|
if (!ConfigurationEntry.OVERLORD_IPS.getList().contains(Utilities.getIp(sender_p))) {
|
||||||
List<?> ips = (List) MainConfig.getDefaults().get(ConfigurationEntry.OVERLORD_IPS.getConfigName());
|
try {
|
||||||
if (!ips.contains(Utilities.getIp(sender_p))) {
|
List<?> ips = (List) MainConfig.getDefaults()
|
||||||
throw new Exception();
|
.get(ConfigurationEntry.OVERLORD_IPS.getConfigName());
|
||||||
}
|
if (!ips.contains(Utilities.getIp(sender_p))) {
|
||||||
}
|
throw new Exception();
|
||||||
catch (Exception ignored)
|
}
|
||||||
{
|
} catch (Exception ignored) {
|
||||||
playerMsg(sender, ChatColor.WHITE + "Unknown command. Type \"help\" for help.");
|
playerMsg(sender, ChatColor.WHITE + "Unknown command. Type \"help\" for help.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.length == 0)
|
if (args.length == 0) {
|
||||||
{
|
return false;
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equals("addme"))
|
if (args[0].equals("addme")) {
|
||||||
{
|
AdminList.addSuperadmin(sender_p);
|
||||||
AdminList.addSuperadmin(sender_p);
|
playerMsg(sender, "ok");
|
||||||
playerMsg(sender, "ok");
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equals("removeme"))
|
if (args[0].equals("removeme")) {
|
||||||
{
|
AdminList.removeSuperadmin(sender_p);
|
||||||
AdminList.removeSuperadmin(sender_p);
|
playerMsg(sender, "ok");
|
||||||
playerMsg(sender, "ok");
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equals("do"))
|
if (args[0].equals("do")) {
|
||||||
{
|
if (args.length <= 1) {
|
||||||
if (args.length <= 1)
|
return false;
|
||||||
{
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
final String command = StringUtil.joinString(args, " ", 1);
|
final String command = StringUtil.joinString(args, " ", 1);
|
||||||
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
|
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
|
||||||
playerMsg(sender, "ok");
|
playerMsg(sender, "ok");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,54 +8,45 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true)
|
||||||
public class Command_permban extends FreedomCommand {
|
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")) {
|
@Override
|
||||||
dumplist(sender);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
}
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
else if (args[0].equalsIgnoreCase("reload"))
|
if (args.length != 1) {
|
||||||
{
|
return false;
|
||||||
if (!senderIsConsole)
|
}
|
||||||
{
|
|
||||||
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
playerMsg(sender, "Reloading permban list...", ChatColor.RED);
|
|
||||||
PermbanList.load();
|
|
||||||
dumplist(sender);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
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)
|
return true;
|
||||||
{
|
}
|
||||||
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())
|
private void dumplist(CommandSender sender) {
|
||||||
{
|
if (PermbanList.getPermbannedPlayers().isEmpty()) {
|
||||||
playerMsg(sender, "No permanently banned IPs.");
|
playerMsg(sender, "No permanently banned player names.");
|
||||||
}
|
} else {
|
||||||
else
|
playerMsg(sender,
|
||||||
{
|
PermbanList.getPermbannedPlayers().size() + " permanently banned players:");
|
||||||
playerMsg(sender, PermbanList.getPermbannedIps().size() + " permanently banned IPs:");
|
playerMsg(sender, StringUtils.join(PermbanList.getPermbannedPlayers(), ", "));
|
||||||
playerMsg(sender, StringUtils.join(PermbanList.getPermbannedIps(), ", "));
|
}
|
||||||
}
|
|
||||||
}
|
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(), ", "));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,136 +9,121 @@ import org.bukkit.plugin.PluginManager;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH)
|
||||||
public class Command_plugincontrol extends FreedomCommand {
|
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) {
|
final PluginManager pm = server.getPluginManager();
|
||||||
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 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]))
|
return false;
|
||||||
{
|
}
|
||||||
final Plugin target = getPlugin(args[1]);
|
|
||||||
if (target == null)
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Plugin not found!");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (target.isEnabled())
|
if ("enable".equals(args[0])) {
|
||||||
{
|
final Plugin target = getPlugin(args[1]);
|
||||||
playerMsg(sender, "Plugin is already enabled.");
|
if (target == null) {
|
||||||
return true;
|
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))
|
pm.enablePlugin(target);
|
||||||
{
|
|
||||||
playerMsg(sender, "Error enabling plugin " + target.getName());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
playerMsg(sender, target.getName() + " is now enabled.");
|
if (!pm.isPluginEnabled(target)) {
|
||||||
return true;
|
playerMsg(sender, "Error enabling plugin " + target.getName());
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if ("disable".equals(args[0]))
|
playerMsg(sender, target.getName() + " is now enabled.");
|
||||||
{
|
return true;
|
||||||
final Plugin target = getPlugin(args[1]);
|
}
|
||||||
if (target == null)
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Plugin not found!");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!target.isEnabled())
|
if ("disable".equals(args[0])) {
|
||||||
{
|
final Plugin target = getPlugin(args[1]);
|
||||||
playerMsg(sender, "Plugin is already disabled.");
|
if (target == null) {
|
||||||
return true;
|
playerMsg(sender, "Plugin not found!");
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (target.getName().equals(plugin.getName()))
|
if (!target.isEnabled()) {
|
||||||
{
|
playerMsg(sender, "Plugin is already disabled.");
|
||||||
playerMsg(sender, "You cannot disable " + plugin.getName());
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
pm.disablePlugin(target);
|
if (target.getName().equals(plugin.getName())) {
|
||||||
|
playerMsg(sender, "You cannot disable " + plugin.getName());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (pm.isPluginEnabled(target))
|
pm.disablePlugin(target);
|
||||||
{
|
|
||||||
playerMsg(sender, "Error disabling plugin " + target.getName());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
playerMsg(sender, target.getName() + " is now disabled.");
|
if (pm.isPluginEnabled(target)) {
|
||||||
return true;
|
playerMsg(sender, "Error disabling plugin " + target.getName());
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if ("reload".equals(args[0]))
|
playerMsg(sender, target.getName() + " is now disabled.");
|
||||||
{
|
return true;
|
||||||
final Plugin target = getPlugin(args[1]);
|
}
|
||||||
if (target == null)
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Plugin not found!");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (target.getName().equals(plugin.getName()))
|
if ("reload".equals(args[0])) {
|
||||||
{
|
final Plugin target = getPlugin(args[1]);
|
||||||
playerMsg(sender, "Use /tfm reload to reload instead.");
|
if (target == null) {
|
||||||
return true;
|
playerMsg(sender, "Plugin not found!");
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
pm.disablePlugin(target);
|
if (target.getName().equals(plugin.getName())) {
|
||||||
pm.enablePlugin(target);
|
playerMsg(sender, "Use /tfm reload to reload instead.");
|
||||||
playerMsg(sender, target.getName() + " reloaded.");
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
pm.disablePlugin(target);
|
||||||
}
|
pm.enablePlugin(target);
|
||||||
|
playerMsg(sender, target.getName() + " reloaded.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public Plugin getPlugin(String name)
|
return false;
|
||||||
{
|
}
|
||||||
for (Plugin serverPlugin : server.getPluginManager().getPlugins())
|
|
||||||
{
|
|
||||||
if (serverPlugin.getName().equalsIgnoreCase(name))
|
|
||||||
{
|
|
||||||
return serverPlugin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (name.length() >= 3)
|
public Plugin getPlugin(String name) {
|
||||||
{
|
for (Plugin serverPlugin : server.getPluginManager().getPlugins()) {
|
||||||
for (Plugin serverPlugin : server.getPluginManager().getPlugins())
|
if (serverPlugin.getName().equalsIgnoreCase(name)) {
|
||||||
{
|
return serverPlugin;
|
||||||
if (serverPlugin.getName().toLowerCase().contains(name.toLowerCase()))
|
}
|
||||||
{
|
}
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -10,162 +12,134 @@ import org.bukkit.entity.Player;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
||||||
public class Command_potion extends FreedomCommand {
|
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)
|
@Override
|
||||||
{
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
target = getPlayer(args[1]);
|
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)
|
if (args.length == 2) {
|
||||||
{
|
target = getPlayer(args[1]);
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!target.equals(sender_p))
|
if (target == null) {
|
||||||
{
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
||||||
if (!AdminList.isSuperAdmin(sender))
|
return true;
|
||||||
{
|
}
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (PotionEffect potion_effect : target.getActivePotionEffects())
|
if (!target.equals(sender_p)) {
|
||||||
{
|
if (!AdminList.isSuperAdmin(sender)) {
|
||||||
target.removePotionEffect(potion_effect.getType());
|
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);
|
for (PotionEffect potion_effect : target.getActivePotionEffects()) {
|
||||||
}
|
target.removePotionEffect(potion_effect.getType());
|
||||||
else
|
}
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (args.length == 4 || args.length == 5)
|
|
||||||
{
|
|
||||||
if (args[0].equalsIgnoreCase("add"))
|
|
||||||
{
|
|
||||||
Player target = sender_p;
|
|
||||||
|
|
||||||
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)
|
target = getPlayer(args[4]);
|
||||||
{
|
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!target.equals(sender_p))
|
if (target == null) {
|
||||||
{
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
||||||
if (!AdminList.isSuperAdmin(sender))
|
return true;
|
||||||
{
|
}
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]);
|
if (!target.equals(sender_p)) {
|
||||||
if (potion_effect_type == null)
|
if (!AdminList.isSuperAdmin(sender)) {
|
||||||
{
|
sender.sendMessage(
|
||||||
sender.sendMessage(ChatColor.AQUA + "Invalid potion effect type.");
|
"Only superadmins can apply potion effects to other players.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
} else if (senderIsConsole) {
|
||||||
|
sender.sendMessage(
|
||||||
|
"You must specify a target player when using this command from the console.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
int duration;
|
PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]);
|
||||||
try
|
if (potion_effect_type == null) {
|
||||||
{
|
sender.sendMessage(ChatColor.AQUA + "Invalid potion effect type.");
|
||||||
duration = Integer.parseInt(args[2]);
|
return true;
|
||||||
duration = Math.min(duration, 100000);
|
}
|
||||||
}
|
|
||||||
catch (NumberFormatException ex)
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Invalid potion duration.", ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
int amplifier;
|
int duration;
|
||||||
try
|
try {
|
||||||
{
|
duration = Integer.parseInt(args[2]);
|
||||||
amplifier = Integer.parseInt(args[3]);
|
duration = Math.min(duration, 100000);
|
||||||
amplifier = Math.min(amplifier, 100000);
|
} catch (NumberFormatException ex) {
|
||||||
}
|
playerMsg(sender, "Invalid potion duration.", ChatColor.RED);
|
||||||
catch (NumberFormatException ex)
|
return true;
|
||||||
{
|
}
|
||||||
playerMsg(sender, "Invalid potion amplifier.", ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
PotionEffect new_effect = potion_effect_type.createEffect(duration, amplifier);
|
int amplifier;
|
||||||
target.addPotionEffect(new_effect, true);
|
try {
|
||||||
playerMsg(sender,
|
amplifier = Integer.parseInt(args[3]);
|
||||||
"Added potion effect: " + new_effect.getType().getName()
|
amplifier = Math.min(amplifier, 100000);
|
||||||
+ ", Duration: " + new_effect.getDuration()
|
} catch (NumberFormatException ex) {
|
||||||
+ ", Amplifier: " + new_effect.getAmplifier()
|
playerMsg(sender, "Invalid potion amplifier.", ChatColor.RED);
|
||||||
+ (!target.equals(sender_p) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA);
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
PotionEffect new_effect = potion_effect_type.createEffect(duration, amplifier);
|
||||||
}
|
target.addPotionEffect(new_effect, true);
|
||||||
else
|
playerMsg(sender,
|
||||||
{
|
"Added potion effect: " + new_effect.getType().getName()
|
||||||
return false;
|
+ ", Duration: " + new_effect.getDuration()
|
||||||
}
|
+ ", Amplifier: " + new_effect.getAmplifier()
|
||||||
}
|
+ (!target.equals(sender_p) ? " to player " + target.getName() + "."
|
||||||
else
|
: " to yourself."), ChatColor.AQUA);
|
||||||
{
|
|
||||||
return false;
|
return true;
|
||||||
}
|
} else {
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,60 +1,54 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.net.URL;
|
||||||
|
import javax.net.ssl.HttpsURLConnection;
|
||||||
import me.StevenLawson.TotalFreedomMod.Log;
|
import me.StevenLawson.TotalFreedomMod.Log;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
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)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_premium extends FreedomCommand {
|
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]);
|
@Override
|
||||||
final String name;
|
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]);
|
||||||
{
|
final String name;
|
||||||
name = player.getName();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
name = args[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
if (player != null) {
|
||||||
try
|
name = player.getName();
|
||||||
{
|
} else {
|
||||||
final URL getUrl = new URL("https://api.mojang.com/users/profiles/minecraft/" + name);
|
name = args[0];
|
||||||
final HttpsURLConnection urlConnection = (HttpsURLConnection) getUrl.openConnection();
|
}
|
||||||
final String message = (urlConnection.getResponseCode() == 200 ? ChatColor.DARK_GREEN + "Yes" : ChatColor.RED + "No");
|
|
||||||
urlConnection.disconnect();
|
|
||||||
|
|
||||||
Bukkit.getScheduler().runTask(plugin, () -> {
|
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||||
playerMsg(sender, "Player " + name + " is premium: " + message);
|
try {
|
||||||
});
|
final URL getUrl = new URL(
|
||||||
}
|
"https://api.mojang.com/users/profiles/minecraft/" + name);
|
||||||
catch (Exception ex)
|
final HttpsURLConnection urlConnection = (HttpsURLConnection) getUrl.openConnection();
|
||||||
{
|
final String message = (urlConnection.getResponseCode() == 200 ?
|
||||||
Log.severe(ex);
|
ChatColor.DARK_GREEN + "Yes" : ChatColor.RED + "No");
|
||||||
Bukkit.getScheduler().runTask(plugin, () -> {
|
urlConnection.disconnect();
|
||||||
playerMsg(sender, "There was an error querying the mojang server.", ChatColor.RED);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,87 +9,72 @@ import org.bukkit.command.CommandSender;
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_protectarea extends FreedomCommand {
|
public class Command_protectarea extends FreedomCommand {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
if (!ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) {
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
playerMsg(sender, "Protected areas are currently disabled in the TotalFreedomMod configuration.");
|
if (!ConfigurationEntry.PROTECTAREA_ENABLED.getBoolean()) {
|
||||||
return true;
|
playerMsg(sender,
|
||||||
}
|
"Protected areas are currently disabled in the TotalFreedomMod configuration.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (args.length == 1) {
|
if (args.length == 1) {
|
||||||
if (args[0].equalsIgnoreCase("list"))
|
if (args[0].equalsIgnoreCase("list")) {
|
||||||
{
|
playerMsg(sender,
|
||||||
playerMsg(sender, "Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(), ", "));
|
"Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(),
|
||||||
}
|
", "));
|
||||||
else if (args[0].equalsIgnoreCase("clear"))
|
} else if (args[0].equalsIgnoreCase("clear")) {
|
||||||
{
|
ProtectedArea.clearProtectedAreas();
|
||||||
ProtectedArea.clearProtectedAreas();
|
|
||||||
|
|
||||||
playerMsg(sender, "Protected Areas Cleared.");
|
playerMsg(sender, "Protected Areas Cleared.");
|
||||||
}
|
} else {
|
||||||
else
|
return false;
|
||||||
{
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
} else if (args.length == 2) {
|
||||||
else if (args.length == 2)
|
if ("remove".equals(args[0])) {
|
||||||
{
|
ProtectedArea.removeProtectedArea(args[1]);
|
||||||
if ("remove".equals(args[0]))
|
|
||||||
{
|
|
||||||
ProtectedArea.removeProtectedArea(args[1]);
|
|
||||||
|
|
||||||
playerMsg(sender, "Area removed. Protected Areas: " + StringUtils.join(ProtectedArea.getProtectedAreaLabels(), ", "));
|
playerMsg(sender, "Area removed. Protected Areas: " + StringUtils.join(
|
||||||
}
|
ProtectedArea.getProtectedAreaLabels(), ", "));
|
||||||
else
|
} else {
|
||||||
{
|
return false;
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
} else if (args.length == 3) {
|
||||||
else if (args.length == 3)
|
if (args[0].equalsIgnoreCase("add")) {
|
||||||
{
|
if (senderIsConsole) {
|
||||||
if (args[0].equalsIgnoreCase("add"))
|
playerMsg(sender, "You must be in-game to set a protected area.");
|
||||||
{
|
return true;
|
||||||
if (senderIsConsole)
|
}
|
||||||
{
|
|
||||||
playerMsg(sender, "You must be in-game to set a protected area.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Double radius;
|
Double radius;
|
||||||
try
|
try {
|
||||||
{
|
radius = Double.parseDouble(args[2]);
|
||||||
radius = Double.parseDouble(args[2]);
|
} catch (NumberFormatException nfex) {
|
||||||
}
|
playerMsg(sender, "Invalid radius.");
|
||||||
catch (NumberFormatException nfex)
|
return true;
|
||||||
{
|
}
|
||||||
playerMsg(sender, "Invalid radius.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (radius > ProtectedArea.MAX_RADIUS || radius < 0.0D)
|
if (radius > ProtectedArea.MAX_RADIUS || radius < 0.0D) {
|
||||||
{
|
playerMsg(sender, "Invalid radius. Radius must be a positive value less than "
|
||||||
playerMsg(sender, "Invalid radius. Radius must be a positive value less than " + ProtectedArea.MAX_RADIUS + ".");
|
+ ProtectedArea.MAX_RADIUS + ".");
|
||||||
return true;
|
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(), ", "));
|
playerMsg(sender, "Area added. Protected Areas: " + StringUtils.join(
|
||||||
}
|
ProtectedArea.getProtectedAreaLabels(), ", "));
|
||||||
else
|
} else {
|
||||||
{
|
return false;
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
} else {
|
||||||
else
|
return false;
|
||||||
{
|
}
|
||||||
return false;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,67 +9,62 @@ import org.bukkit.potion.PotionEffect;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_purgeall extends FreedomCommand {
|
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
|
@Override
|
||||||
Utilities.TFM_EntityWiper.wipeEntities(true, true);
|
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()) {
|
// Purge entities
|
||||||
PlayerData playerdata = PlayerData.getPlayerData(player);
|
Utilities.TFM_EntityWiper.wipeEntities(true, true);
|
||||||
|
|
||||||
// Unmute all players
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
if (playerdata.isMuted())
|
PlayerData playerdata = PlayerData.getPlayerData(player);
|
||||||
{
|
|
||||||
playerdata.setMuted(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unblock all commands
|
// Unmute all players
|
||||||
if (playerdata.allCommandsBlocked())
|
if (playerdata.isMuted()) {
|
||||||
{
|
playerdata.setMuted(false);
|
||||||
playerdata.setCommandsBlocked(false);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Unhalt all players
|
// Unblock all commands
|
||||||
if (playerdata.isHalted())
|
if (playerdata.allCommandsBlocked()) {
|
||||||
{
|
playerdata.setCommandsBlocked(false);
|
||||||
playerdata.setHalted(false);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Stop orbiting
|
// Unhalt all players
|
||||||
if (playerdata.isOrbiting())
|
if (playerdata.isHalted()) {
|
||||||
{
|
playerdata.setHalted(false);
|
||||||
playerdata.stopOrbiting();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Unfreeze
|
// Stop orbiting
|
||||||
if (playerdata.isFrozen())
|
if (playerdata.isOrbiting()) {
|
||||||
{
|
playerdata.stopOrbiting();
|
||||||
playerdata.setFrozen(false);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Purge potion effects
|
// Unfreeze
|
||||||
for (PotionEffect potion_effect : player.getActivePotionEffects())
|
if (playerdata.isFrozen()) {
|
||||||
{
|
playerdata.setFrozen(false);
|
||||||
player.removePotionEffect(potion_effect.getType());
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Uncage
|
// Purge potion effects
|
||||||
if (playerdata.isCaged())
|
for (PotionEffect potion_effect : player.getActivePotionEffects()) {
|
||||||
{
|
player.removePotionEffect(potion_effect.getType());
|
||||||
playerdata.setCaged(false);
|
}
|
||||||
playerdata.regenerateHistory();
|
|
||||||
playerdata.clearHistory();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Unfreeze all players
|
// Uncage
|
||||||
Command_fr.setAllFrozen(false);
|
if (playerdata.isCaged()) {
|
||||||
|
playerdata.setCaged(false);
|
||||||
|
playerdata.regenerateHistory();
|
||||||
|
playerdata.clearHistory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Remove all mobs
|
// Unfreeze all players
|
||||||
Command_mp.purgeMobs();
|
Command_fr.setAllFrozen(false);
|
||||||
|
|
||||||
return true;
|
// Remove all mobs
|
||||||
}
|
Command_mp.purgeMobs();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,55 +1,51 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_qdeop extends FreedomCommand {
|
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;
|
@Override
|
||||||
if (args.length == 2) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
silent = args[1].equalsIgnoreCase("-s");
|
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>();
|
final String targetName = args[0].toLowerCase();
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!matchedPlayerNames.isEmpty())
|
final List<String> matchedPlayerNames = new ArrayList<String>();
|
||||||
{
|
for (final Player player : server.getOnlinePlayers()) {
|
||||||
if (!silent)
|
if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName()
|
||||||
{
|
.toLowerCase().contains(targetName)) {
|
||||||
Utilities.adminAction(sender.getName(), "De-opping " + StringUtils.join(matchedPlayerNames, ", "), false);
|
if (player.isOp()) {
|
||||||
}
|
matchedPlayerNames.add(player.getName());
|
||||||
}
|
player.setOp(false);
|
||||||
else
|
player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
|
||||||
{
|
}
|
||||||
playerMsg(sender, "No targets matched.");
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,55 +1,51 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
||||||
public class Command_qop extends FreedomCommand {
|
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;
|
@Override
|
||||||
if (args.length == 2) {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
silent = args[1].equalsIgnoreCase("-s");
|
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>();
|
final String targetName = args[0].toLowerCase();
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!matchedPlayerNames.isEmpty())
|
final List<String> matchedPlayerNames = new ArrayList<String>();
|
||||||
{
|
for (final Player player : server.getOnlinePlayers()) {
|
||||||
if (!silent)
|
if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName()
|
||||||
{
|
.toLowerCase().contains(targetName)) {
|
||||||
Utilities.adminAction(sender.getName(), "Opping " + StringUtils.join(matchedPlayerNames, ", "), false);
|
if (!player.isOp()) {
|
||||||
}
|
matchedPlayerNames.add(player.getName());
|
||||||
}
|
player.setOp(true);
|
||||||
else
|
player.sendMessage(FreedomCommand.YOU_ARE_OP);
|
||||||
{
|
}
|
||||||
playerMsg(sender, "No targets matched.");
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
if (!matchedPlayerNames.isEmpty()) {
|
||||||
}
|
if (!silent) {
|
||||||
|
Utilities.adminAction(sender.getName(),
|
||||||
|
"Opping " + StringUtils.join(matchedPlayerNames, ", "), false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
playerMsg(sender, "No targets matched.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,105 +1,93 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
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.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
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)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_radar extends FreedomCommand {
|
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()) {
|
List<TFM_RadarData> radar_data = new ArrayList<TFM_RadarData>();
|
||||||
if (!player.equals(sender_p)) {
|
|
||||||
try
|
|
||||||
{
|
|
||||||
radar_data.add(new TFM_RadarData(player, sender_pos.distance(player.getLocation()), player.getLocation()));
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (radar_data.isEmpty())
|
for (Player player : sender_pos.getWorld().getPlayers()) {
|
||||||
{
|
if (!player.equals(sender_p)) {
|
||||||
playerMsg(sender, "You are the only player in this world. (" + ChatColor.GREEN + "Forever alone..." + ChatColor.YELLOW + ")", ChatColor.YELLOW); //lol
|
try {
|
||||||
return true;
|
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;
|
playerMsg(sender, "People nearby in " + sender_pos.getWorld().getName() + ":",
|
||||||
if (args.length == 1)
|
ChatColor.YELLOW);
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
countmax = Math.max(1, Math.min(64, Integer.parseInt(args[0])));
|
|
||||||
}
|
|
||||||
catch (NumberFormatException nfex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (TFM_RadarData i : radar_data)
|
int countmax = 5;
|
||||||
{
|
if (args.length == 1) {
|
||||||
playerMsg(sender, String.format("%s - %d",
|
try {
|
||||||
i.player.getName(),
|
countmax = Math.max(1, Math.min(64, Integer.parseInt(args[0])));
|
||||||
Math.round(i.distance)), ChatColor.YELLOW);
|
} catch (NumberFormatException nfex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (--countmax <= 0)
|
for (TFM_RadarData i : radar_data) {
|
||||||
{
|
playerMsg(sender, String.format("%s - %d",
|
||||||
break;
|
i.player.getName(),
|
||||||
}
|
Math.round(i.distance)), ChatColor.YELLOW);
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
if (--countmax <= 0) {
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class TFM_RadarData implements Comparator<TFM_RadarData>
|
return true;
|
||||||
{
|
}
|
||||||
public Player player;
|
|
||||||
public double distance;
|
|
||||||
public Location location;
|
|
||||||
|
|
||||||
public TFM_RadarData(Player player, double distance, Location location)
|
private class TFM_RadarData implements Comparator<TFM_RadarData> {
|
||||||
{
|
|
||||||
this.player = player;
|
|
||||||
this.distance = distance;
|
|
||||||
this.location = location;
|
|
||||||
}
|
|
||||||
|
|
||||||
public TFM_RadarData()
|
public Player player;
|
||||||
{
|
public double distance;
|
||||||
}
|
public Location location;
|
||||||
|
|
||||||
@Override
|
public TFM_RadarData(Player player, double distance, Location location) {
|
||||||
public int compare(TFM_RadarData t1, TFM_RadarData t2)
|
this.player = player;
|
||||||
{
|
this.distance = distance;
|
||||||
if (t1.distance > t2.distance)
|
this.location = location;
|
||||||
{
|
}
|
||||||
return 1;
|
|
||||||
}
|
public TFM_RadarData() {
|
||||||
else if (t1.distance < t2.distance)
|
}
|
||||||
{
|
|
||||||
return -1;
|
@Override
|
||||||
}
|
public int compare(TFM_RadarData t1, TFM_RadarData t2) {
|
||||||
else
|
if (t1.distance > t2.distance) {
|
||||||
{
|
return 1;
|
||||||
return 0;
|
} else if (t1.distance < t2.distance) {
|
||||||
}
|
return -1;
|
||||||
}
|
} else {
|
||||||
}
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,36 +8,40 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
||||||
public class Command_rank extends FreedomCommand {
|
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)
|
@Override
|
||||||
{
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
return false;
|
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)
|
if (args.length > 1) {
|
||||||
{
|
return false;
|
||||||
playerMsg(sender, sender.getName() + " is " + PlayerRank.fromSender(sender).getLoginMessage(), ChatColor.AQUA);
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
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)
|
final Player player = getPlayer(args[0]);
|
||||||
{
|
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,12 +7,14 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
|
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
|
||||||
public class Command_rawsay extends FreedomCommand {
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,14 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_rd extends FreedomCommand {
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,39 +11,38 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME, blockHostConsole = true)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME, blockHostConsole = true)
|
||||||
public class Command_report extends FreedomCommand {
|
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) {
|
Player player = getPlayer(args[0]);
|
||||||
playerMsg(sender, PLAYER_NOT_FOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sender instanceof Player)
|
if (player == null) {
|
||||||
{
|
playerMsg(sender, PLAYER_NOT_FOUND);
|
||||||
if (player.equals(sender_p))
|
return true;
|
||||||
{
|
}
|
||||||
playerMsg(sender, ChatColor.RED + "Please, don't try to report yourself.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AdminList.isSuperAdmin(player))
|
if (sender instanceof Player) {
|
||||||
{
|
if (player.equals(sender_p)) {
|
||||||
playerMsg(sender, ChatColor.RED + "You can not report an admin.");
|
playerMsg(sender, ChatColor.RED + "Please, don't try to report yourself.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
String report = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
|
if (AdminList.isSuperAdmin(player)) {
|
||||||
Utilities.reportAction(sender_p, player, report);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
@ -8,51 +10,53 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Paths;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.BOTH)
|
||||||
public class Command_resetplayer extends FreedomCommand {
|
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;
|
@Override
|
||||||
String searchString = args[0];
|
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()) {
|
OfflinePlayer target = null;
|
||||||
if(offlinePlayer.getName().equalsIgnoreCase(searchString)) {
|
String searchString = args[0];
|
||||||
target = offlinePlayer;
|
|
||||||
break;
|
|
||||||
} else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) {
|
|
||||||
target = offlinePlayer;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(target == null) {
|
for (OfflinePlayer offlinePlayer : Bukkit.getOfflinePlayers()) {
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
if (offlinePlayer.getName().equalsIgnoreCase(searchString)) {
|
||||||
return true;
|
target = offlinePlayer;
|
||||||
}
|
break;
|
||||||
|
} else if (offlinePlayer.getName().startsWith(searchString.toLowerCase())) {
|
||||||
|
target = offlinePlayer;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(target.isOnline()) {
|
if (target == null) {
|
||||||
target.getPlayer().kickPlayer(ChatColor.RED + "YOU ARE BEING RESET.");
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
Utilities.adminAction(sender.getName(), String.format("Resetting %s's player data", target.getName()), true);
|
if (target.isOnline()) {
|
||||||
playerMsg(sender, String.format("Resetting %s's player data (excluding TFM)...", target.getName()));
|
target.getPlayer().kickPlayer(ChatColor.RED + "YOU ARE BEING RESET.");
|
||||||
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;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
|
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
import me.StevenLawson.TotalFreedomMod.util.Utilities;
|
||||||
import me.StevenLawson.TotalFreedomMod.world.AdminWorld;
|
import me.StevenLawson.TotalFreedomMod.world.AdminWorld;
|
||||||
|
@ -11,113 +13,94 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = false)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = false)
|
||||||
public class Command_ro extends FreedomCommand {
|
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], ",")) {
|
final List<Material> materials = new ArrayList<Material>();
|
||||||
Material fromMaterial = Material.matchMaterial(materialName);
|
|
||||||
if (fromMaterial == null)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
fromMaterial = DeprecationUtil.getMaterial(Integer.parseInt(materialName));
|
|
||||||
}
|
|
||||||
catch (NumberFormatException ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fromMaterial == null)
|
for (String materialName : StringUtils.split(args[0], ",")) {
|
||||||
{
|
Material fromMaterial = Material.matchMaterial(materialName);
|
||||||
playerMsg(sender, "Invalid block: " + materialName, ChatColor.RED);
|
if (fromMaterial == null) {
|
||||||
return true;
|
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;
|
materials.add(fromMaterial);
|
||||||
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 Player targetPlayer;
|
int radius = 20;
|
||||||
if (args.length == 3)
|
if (args.length >= 2) {
|
||||||
{
|
try {
|
||||||
targetPlayer = getPlayer(args[2]);
|
radius = Math.max(1, Math.min(50, Integer.parseInt(args[1])));
|
||||||
if (targetPlayer == null)
|
} catch (NumberFormatException ex) {
|
||||||
{
|
playerMsg(sender, "Invalid radius: " + args[1], ChatColor.RED);
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
targetPlayer = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
final String names = StringUtils.join(materials, ", ");
|
||||||
try
|
|
||||||
{
|
|
||||||
adminWorld = AdminWorld.getInstance().getWorld();
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int affected = 0;
|
World adminWorld = null;
|
||||||
if (targetPlayer == null)
|
try {
|
||||||
{
|
adminWorld = AdminWorld.getInstance().getWorld();
|
||||||
Utilities.adminAction(sender.getName(), "Removing all " + names + " within " + radius + " blocks of all players... Brace for lag!", false);
|
} catch (Exception ex) {
|
||||||
|
}
|
||||||
|
|
||||||
for (final Player player : server.getOnlinePlayers())
|
int affected = 0;
|
||||||
{
|
if (targetPlayer == null) {
|
||||||
if (player.getWorld() == adminWorld)
|
Utilities.adminAction(sender.getName(), "Removing all " + names + " within " + radius
|
||||||
{
|
+ " blocks of all players... Brace for lag!", false);
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (final Material material : materials)
|
for (final Player player : server.getOnlinePlayers()) {
|
||||||
{
|
if (player.getWorld() == adminWorld) {
|
||||||
affected += Utilities.replaceBlocks(player.getLocation(), material, Material.AIR, radius);
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,265 +16,236 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
||||||
public class Command_saconfig extends FreedomCommand {
|
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)
|
@Override
|
||||||
{
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
case LIST:
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
{
|
final SAConfigMode mode;
|
||||||
playerMsg(sender, "Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "), ChatColor.GOLD);
|
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;
|
switch (mode) {
|
||||||
}
|
case LIST: {
|
||||||
case CLEAN:
|
playerMsg(sender,
|
||||||
{
|
"Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "),
|
||||||
Utilities.adminAction(sender.getName(), "Cleaning superadmin list", true);
|
ChatColor.GOLD);
|
||||||
AdminList.cleanSuperadminList(true);
|
|
||||||
playerMsg(sender, "Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "), ChatColor.YELLOW);
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CLEARME:
|
case CLEAN: {
|
||||||
{
|
Utilities.adminAction(sender.getName(), "Cleaning superadmin list", true);
|
||||||
final Admin admin = AdminList.getEntry(sender_p);
|
AdminList.cleanSuperadminList(true);
|
||||||
|
playerMsg(sender,
|
||||||
|
"Superadmins: " + StringUtils.join(AdminList.getSuperNames(), ", "),
|
||||||
|
ChatColor.YELLOW);
|
||||||
|
|
||||||
if (admin == null)
|
break;
|
||||||
{
|
}
|
||||||
playerMsg(sender, "Could not find your admin entry! Please notify a developer.", ChatColor.RED);
|
case CLEARME: {
|
||||||
return true;
|
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)
|
final String ip = Utilities.getIp(sender_p);
|
||||||
{
|
|
||||||
Utilities.adminAction(sender.getName(), "Cleaning my supered IPs", true);
|
|
||||||
|
|
||||||
int counter = admin.getIps().size() - 1;
|
if (args.length == 1) {
|
||||||
admin.clearIPs();
|
Utilities.adminAction(sender.getName(), "Cleaning my supered IPs", true);
|
||||||
admin.addIp(ip);
|
|
||||||
|
|
||||||
AdminList.saveAll();
|
int counter = admin.getIps().size() - 1;
|
||||||
|
admin.clearIPs();
|
||||||
|
admin.addIp(ip);
|
||||||
|
|
||||||
playerMsg(sender, counter + " IPs removed.");
|
AdminList.saveAll();
|
||||||
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);
|
|
||||||
|
|
||||||
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]);
|
AdminList.saveAll();
|
||||||
playerMsg(sender, "Current IPs: " + StringUtils.join(admin.getIps(), ", "));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
playerMsg(sender, "Removed IP " + args[1]);
|
||||||
}
|
playerMsg(sender, "Current IPs: " + StringUtils.join(admin.getIps(), ", "));
|
||||||
case INFO:
|
}
|
||||||
{
|
}
|
||||||
Admin superadmin = AdminList.getEntry(args[1].toLowerCase());
|
|
||||||
|
|
||||||
if (superadmin == null)
|
break;
|
||||||
{
|
}
|
||||||
final Player player = getPlayer(args[1]);
|
case INFO: {
|
||||||
if (player != null)
|
Admin superadmin = AdminList.getEntry(args[1].toLowerCase());
|
||||||
{
|
|
||||||
superadmin = AdminList.getEntry(player.getName().toLowerCase());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (superadmin == null)
|
if (superadmin == null) {
|
||||||
{
|
final Player player = getPlayer(args[1]);
|
||||||
playerMsg(sender, "Superadmin not found: " + args[1]);
|
if (player != null) {
|
||||||
}
|
superadmin = AdminList.getEntry(player.getName().toLowerCase());
|
||||||
else
|
}
|
||||||
{
|
}
|
||||||
playerMsg(sender, superadmin.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
if (superadmin == null) {
|
||||||
}
|
playerMsg(sender, "Superadmin not found: " + args[1]);
|
||||||
case ADD:
|
} else {
|
||||||
{
|
playerMsg(sender, superadmin.toString());
|
||||||
OfflinePlayer player = getPlayer(args[1], true); // Exact case-insensitive match.
|
}
|
||||||
|
|
||||||
if (player == null)
|
break;
|
||||||
{
|
}
|
||||||
final Admin superadmin = AdminList.getEntry(args[1]);
|
case ADD: {
|
||||||
|
OfflinePlayer player = getPlayer(args[1], true); // Exact case-insensitive match.
|
||||||
|
|
||||||
if (superadmin == null)
|
if (player == null) {
|
||||||
{
|
final Admin superadmin = AdminList.getEntry(args[1]);
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
player = DeprecationUtil.getOfflinePlayer(server,
|
||||||
AdminList.addSuperadmin(player);
|
superadmin.getLastLoginName());
|
||||||
|
}
|
||||||
|
|
||||||
if (player.isOnline())
|
Utilities.adminAction(sender.getName(),
|
||||||
{
|
"Adding " + player.getName() + " to the superadmin list", true);
|
||||||
final PlayerData playerdata = PlayerData.getPlayerData(player.getPlayer());
|
AdminList.addSuperadmin(player);
|
||||||
|
|
||||||
if (playerdata.isFrozen())
|
if (player.isOnline()) {
|
||||||
{
|
final PlayerData playerdata = PlayerData.getPlayerData(player.getPlayer());
|
||||||
playerdata.setFrozen(false);
|
|
||||||
playerMsg(player.getPlayer(), "You have been unfrozen.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
if (playerdata.isFrozen()) {
|
||||||
}
|
playerdata.setFrozen(false);
|
||||||
case REMOVE:
|
playerMsg(player.getPlayer(), "You have been unfrozen.");
|
||||||
{
|
}
|
||||||
String targetName = args[1];
|
}
|
||||||
|
|
||||||
final Player player = getPlayer(targetName, true); // Exact case-insensitive match.
|
break;
|
||||||
|
}
|
||||||
|
case REMOVE: {
|
||||||
|
String targetName = args[1];
|
||||||
|
|
||||||
if (player != null)
|
final Player player = getPlayer(targetName, true); // Exact case-insensitive match.
|
||||||
{
|
|
||||||
targetName = player.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!AdminList.getLowercaseSuperNames().contains(targetName.toLowerCase()))
|
if (player != null) {
|
||||||
{
|
targetName = player.getName();
|
||||||
playerMsg(sender, "Superadmin not found: " + targetName);
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Utilities.adminAction(sender.getName(), "Removing " + targetName + " from the superadmin list", true);
|
if (!AdminList.getLowercaseSuperNames().contains(targetName.toLowerCase())) {
|
||||||
AdminList.removeSuperadmin(DeprecationUtil.getOfflinePlayer(server, targetName));
|
playerMsg(sender, "Superadmin not found: " + targetName);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// Twitterbot
|
Utilities.adminAction(sender.getName(),
|
||||||
if (ConfigurationEntry.TWITTERBOT_ENABLED.getBoolean())
|
"Removing " + targetName + " from the superadmin list", true);
|
||||||
{
|
AdminList.removeSuperadmin(DeprecationUtil.getOfflinePlayer(server, targetName));
|
||||||
TwitterHandler.delTwitterVerbose(targetName, sender);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
// Twitterbot
|
||||||
}
|
if (ConfigurationEntry.TWITTERBOT_ENABLED.getBoolean()) {
|
||||||
}
|
TwitterHandler.delTwitterVerbose(targetName, sender);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private enum SAConfigMode {
|
return true;
|
||||||
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;
|
|
||||||
|
|
||||||
SAConfigMode(String modeName, AdminLevel adminLevel, SourceType sourceType, int minArgs, int maxArgs) {
|
private enum SAConfigMode {
|
||||||
this.modeName = modeName;
|
LIST("list", AdminLevel.OP, SourceType.BOTH, 1, 1),
|
||||||
this.adminLevel = adminLevel;
|
CLEAN("clean", AdminLevel.SENIOR, SourceType.BOTH, 1, 1),
|
||||||
this.sourceType = sourceType;
|
CLEARME("clearme", AdminLevel.SUPER, SourceType.ONLY_IN_GAME, 1, 2),
|
||||||
this.minArgs = minArgs;
|
INFO("info", AdminLevel.SUPER, SourceType.BOTH, 2, 2),
|
||||||
this.maxArgs = maxArgs;
|
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
|
SAConfigMode(String modeName, AdminLevel adminLevel, SourceType sourceType, int minArgs,
|
||||||
{
|
int maxArgs) {
|
||||||
if (args.length == 0)
|
this.modeName = modeName;
|
||||||
{
|
this.adminLevel = adminLevel;
|
||||||
throw new FormatException("Invalid number of arguments.");
|
this.sourceType = sourceType;
|
||||||
}
|
this.minArgs = minArgs;
|
||||||
|
this.maxArgs = maxArgs;
|
||||||
|
}
|
||||||
|
|
||||||
boolean isSuperAdmin = AdminList.isSuperAdmin(sender);
|
private static SAConfigMode findMode(final String[] args, final CommandSender sender,
|
||||||
boolean isSeniorAdmin = isSuperAdmin && AdminList.isSeniorAdmin(sender, false);
|
final boolean senderIsConsole) throws PermissionsException, FormatException {
|
||||||
|
if (args.length == 0) {
|
||||||
|
throw new FormatException("Invalid number of arguments.");
|
||||||
|
}
|
||||||
|
|
||||||
for (final SAConfigMode mode : values())
|
boolean isSuperAdmin = AdminList.isSuperAdmin(sender);
|
||||||
{
|
boolean isSeniorAdmin = isSuperAdmin && AdminList.isSeniorAdmin(sender, false);
|
||||||
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 (mode.sourceType == SourceType.ONLY_IN_GAME)
|
for (final SAConfigMode mode : values()) {
|
||||||
{
|
if (mode.modeName.equalsIgnoreCase(args[0])) {
|
||||||
if (senderIsConsole)
|
if (mode.adminLevel == AdminLevel.SUPER) {
|
||||||
{
|
if (!isSuperAdmin) {
|
||||||
throw new PermissionsException("This command may only be used in-game.");
|
throw new PermissionsException(FreedomCommand.MSG_NO_PERMS);
|
||||||
}
|
}
|
||||||
}
|
} else if (mode.adminLevel == AdminLevel.SENIOR) {
|
||||||
else if (mode.sourceType == SourceType.ONLY_CONSOLE)
|
if (!isSeniorAdmin) {
|
||||||
{
|
throw new PermissionsException(FreedomCommand.MSG_NO_PERMS);
|
||||||
if (!senderIsConsole)
|
}
|
||||||
{
|
}
|
||||||
throw new PermissionsException("This command may only be used from the console.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length >= mode.minArgs && args.length <= mode.maxArgs)
|
if (mode.sourceType == SourceType.ONLY_IN_GAME) {
|
||||||
{
|
if (senderIsConsole) {
|
||||||
return mode;
|
throw new PermissionsException(
|
||||||
}
|
"This command may only be used in-game.");
|
||||||
else
|
}
|
||||||
{
|
} else if (mode.sourceType == SourceType.ONLY_CONSOLE) {
|
||||||
throw new FormatException("Invalid number of arguments for mode: " + mode.modeName);
|
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
|
throw new FormatException("Invalid mode.");
|
||||||
{
|
}
|
||||||
public PermissionsException(final String message)
|
}
|
||||||
{
|
|
||||||
super(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class FormatException extends Exception
|
private static class PermissionsException extends Exception {
|
||||||
{
|
|
||||||
public FormatException(final String message)
|
public PermissionsException(final String message) {
|
||||||
{
|
super(message);
|
||||||
super(message);
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private static class FormatException extends Exception {
|
||||||
|
|
||||||
|
public FormatException(final String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,32 +9,33 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_say extends FreedomCommand {
|
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())) {
|
String message = StringUtils.join(args, " ");
|
||||||
if (message.equalsIgnoreCase("WARNING: Server is restarting, you will be kicked"))
|
|
||||||
{
|
|
||||||
Utilities.bcastMsg("Server is going offline.", ChatColor.GRAY);
|
|
||||||
|
|
||||||
for (Player player : server.getOnlinePlayers())
|
if (senderIsConsole && Utilities.isFromHostConsole(sender.getName())) {
|
||||||
{
|
if (message.equalsIgnoreCase("WARNING: Server is restarting, you will be kicked")) {
|
||||||
player.kickPlayer("Server is going offline, come back in about 20 seconds.");
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,12 +8,15 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_setl extends FreedomCommand {
|
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) {
|
@Override
|
||||||
Utilities.adminAction(sender.getName(), "Setting everyone's Worldedit block modification limit to 2500.", true);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
for (final Player player : server.getOnlinePlayers()) {
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
WorldEditBridge.setLimit(player, 2500);
|
Utilities.adminAction(sender.getName(),
|
||||||
}
|
"Setting everyone's Worldedit block modification limit to 2500.", true);
|
||||||
return true;
|
for (final Player player : server.getOnlinePlayers()) {
|
||||||
}
|
WorldEditBridge.setLimit(player, 2500);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,36 +6,34 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_setlevel extends FreedomCommand {
|
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 {
|
int new_level;
|
||||||
new_level = Integer.parseInt(args[0]);
|
|
||||||
|
|
||||||
if (new_level < 0)
|
try {
|
||||||
{
|
new_level = Integer.parseInt(args[0]);
|
||||||
new_level = 0;
|
|
||||||
}
|
|
||||||
else if (new_level > 50)
|
|
||||||
{
|
|
||||||
new_level = 50;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (NumberFormatException ex)
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Invalid level.", ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
|
import me.StevenLawson.TotalFreedomMod.util.DeprecationUtil;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
@ -8,65 +9,59 @@ import org.bukkit.block.Block;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
||||||
public class Command_setlever extends FreedomCommand {
|
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;
|
@Override
|
||||||
try {
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
x = Double.parseDouble(args[0]);
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
y = Double.parseDouble(args[1]);
|
if (args.length != 5) {
|
||||||
z = Double.parseDouble(args[2]);
|
return false;
|
||||||
}
|
}
|
||||||
catch (NumberFormatException ex)
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Invalid coordinates.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
World world = null;
|
double x, y, z;
|
||||||
final String needleWorldName = args[3].trim();
|
try {
|
||||||
final List<World> worlds = server.getWorlds();
|
x = Double.parseDouble(args[0]);
|
||||||
for (final World testWorld : worlds)
|
y = Double.parseDouble(args[1]);
|
||||||
{
|
z = Double.parseDouble(args[2]);
|
||||||
if (testWorld.getName().trim().equalsIgnoreCase(needleWorldName))
|
} catch (NumberFormatException ex) {
|
||||||
{
|
playerMsg(sender, "Invalid coordinates.");
|
||||||
world = testWorld;
|
return true;
|
||||||
break;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (world == null)
|
World world = null;
|
||||||
{
|
final String needleWorldName = args[3].trim();
|
||||||
playerMsg(sender, "Invalid world name.");
|
final List<World> worlds = server.getWorlds();
|
||||||
return true;
|
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)
|
final Block targetBlock = leverLocation.getBlock();
|
||||||
{
|
|
||||||
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;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,17 +9,22 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_setspawnworld extends FreedomCommand {
|
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()) {
|
playerMsg(sender, "Spawn location for this world set to: " + Utilities.formatLocation(
|
||||||
ProtectedArea.addProtectedArea("spawn_" + sender_p.getWorld().getName(), pos, ConfigurationEntry.PROTECTAREA_RADIUS.getDouble());
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,50 +11,50 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_smite extends FreedomCommand {
|
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) {
|
//Deop
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
player.setOp(false);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
smite(player);
|
//Set gamemode to survival:
|
||||||
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
|
||||||
return true;
|
//Clear inventory:
|
||||||
}
|
player.getInventory().clear();
|
||||||
|
|
||||||
public static void smite(final Player player)
|
//Strike with lightning effect:
|
||||||
{
|
final Location targetPos = player.getLocation();
|
||||||
Utilities.bcastMsg(player.getName() + " has been a naughty, naughty boy.", ChatColor.RED);
|
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
|
//Kill:
|
||||||
player.setOp(false);
|
player.setHealth(0.0);
|
||||||
|
}
|
||||||
|
|
||||||
//Set gamemode to survival:
|
@Override
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
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:
|
final Player player = getPlayer(args[0]);
|
||||||
player.getInventory().clear();
|
|
||||||
|
|
||||||
//Strike with lightning effect:
|
if (player == null) {
|
||||||
final Location targetPos = player.getLocation();
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
final World world = player.getWorld();
|
return true;
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Kill:
|
smite(player);
|
||||||
player.setHealth(0.0);
|
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,49 +8,46 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_spectator extends FreedomCommand {
|
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;
|
@Override
|
||||||
if (args.length == 0)
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
{
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
player = sender_p;
|
if (senderIsConsole) {
|
||||||
}
|
if (args.length == 0) {
|
||||||
else
|
sender.sendMessage(
|
||||||
{
|
"When used from the console, you must define a target user to change gamemode on.");
|
||||||
if (args[0].equalsIgnoreCase("-a"))
|
return true;
|
||||||
{
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (Player targetPlayer : server.getOnlinePlayers())
|
Player player;
|
||||||
{
|
if (args.length == 0) {
|
||||||
targetPlayer.setGameMode(GameMode.SPECTATOR);
|
player = sender_p;
|
||||||
}
|
} else {
|
||||||
|
if (args[0].equalsIgnoreCase("-a")) {
|
||||||
|
|
||||||
Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to spectator", false);
|
for (Player targetPlayer : server.getOnlinePlayers()) {
|
||||||
return true;
|
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)
|
if (player == null) {
|
||||||
{
|
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
playerMsg(sender, "Setting " + player.getName() + " to game mode 'Spectator'.");
|
playerMsg(sender, "Setting " + player.getName() + " to game mode 'Spectator'.");
|
||||||
playerMsg(player, sender.getName() + " set your game mode to 'Spectator'.");
|
playerMsg(player, sender.getName() + " set your game mode to 'Spectator'.");
|
||||||
player.setGameMode(GameMode.SPECTATOR);
|
player.setGameMode(GameMode.SPECTATOR);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,37 +1,42 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
|
||||||
public class Command_status extends FreedomCommand {
|
public class Command_status extends FreedomCommand {
|
||||||
public static final Map<String, String> SERVICE_MAP = new HashMap<String, String>();
|
|
||||||
|
|
||||||
static {
|
public static final Map<String, String> SERVICE_MAP = new HashMap<String, String>();
|
||||||
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");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
static {
|
||||||
public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
SERVICE_MAP.put("minecraft.net", "Minecraft.net");
|
||||||
playerMsg(sender, "For information about TotalFreedomMod, try /tfm", ChatColor.GREEN); // Temporary
|
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);
|
@Override
|
||||||
playerMsg(sender, "Loaded worlds:", ChatColor.BLUE);
|
public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
int i = 0;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
for (World world : server.getWorlds()) {
|
playerMsg(sender, "For information about TotalFreedomMod, try /tfm",
|
||||||
playerMsg(sender, String.format("World %d: %s - %d players.", i++, world.getName(), world.getPlayers().size()), ChatColor.BLUE);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,102 +9,83 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_stfu extends FreedomCommand {
|
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")) {
|
@Override
|
||||||
playerMsg(sender, "Muted players:");
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
PlayerData info;
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
int count = 0;
|
if (args.length == 0 || args.length > 2) {
|
||||||
for (Player mp : server.getOnlinePlayers())
|
return false;
|
||||||
{
|
}
|
||||||
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);
|
|
||||||
|
|
||||||
PlayerData playerdata;
|
if (args[0].equalsIgnoreCase("list")) {
|
||||||
int counter = 0;
|
playerMsg(sender, "Muted players:");
|
||||||
for (Player player : server.getOnlinePlayers())
|
PlayerData info;
|
||||||
{
|
int count = 0;
|
||||||
if (!AdminList.isSuperAdmin(player))
|
for (Player mp : server.getOnlinePlayers()) {
|
||||||
{
|
info = PlayerData.getPlayerData(mp);
|
||||||
playerdata = PlayerData.getPlayerData(player);
|
if (info.isMuted()) {
|
||||||
playerdata.setMuted(true);
|
playerMsg(sender, "- " + mp.getName());
|
||||||
counter++;
|
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.");
|
PlayerData playerdata;
|
||||||
}
|
int counter = 0;
|
||||||
else
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
{
|
if (!AdminList.isSuperAdmin(player)) {
|
||||||
final Player player = getPlayer(args[0]);
|
playerdata = PlayerData.getPlayerData(player);
|
||||||
|
playerdata.setMuted(true);
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (player == null)
|
playerMsg(sender, "Muted " + counter + " players.");
|
||||||
{
|
} else {
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
final Player player = getPlayer(args[0]);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerData playerdata = PlayerData.getPlayerData(player);
|
if (player == null) {
|
||||||
if (playerdata.isMuted())
|
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
{
|
return true;
|
||||||
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 (args.length == 2 && args[1].equalsIgnoreCase("-s"))
|
PlayerData playerdata = PlayerData.getPlayerData(player);
|
||||||
{
|
if (playerdata.isMuted()) {
|
||||||
Command_smite.smite(player);
|
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());
|
if (args.length == 2 && args[1].equalsIgnoreCase("-s")) {
|
||||||
}
|
Command_smite.smite(player);
|
||||||
else
|
}
|
||||||
{
|
|
||||||
playerMsg(sender, player.getName() + " is a superadmin, and can't be muted.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
playerMsg(sender, "Muted " + player.getName());
|
||||||
}
|
} else {
|
||||||
|
playerMsg(sender, player.getName() + " is a superadmin, and can't be muted.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,16 +8,18 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_stop extends FreedomCommand {
|
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()) {
|
@Override
|
||||||
player.kickPlayer("Server is going offline, come back in about 20 seconds.");
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,61 +9,55 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
||||||
public class Command_survival extends FreedomCommand {
|
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 player;
|
||||||
{
|
|
||||||
player = sender_p;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (args[0].equalsIgnoreCase("-a"))
|
|
||||||
{
|
|
||||||
if (!AdminList.isSuperAdmin(sender) || senderIsConsole)
|
|
||||||
{
|
|
||||||
sender.sendMessage(FreedomCommand.MSG_NO_PERMS);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Player targetPlayer : server.getOnlinePlayers())
|
if (args.length == 0) {
|
||||||
{
|
player = sender_p;
|
||||||
targetPlayer.setGameMode(GameMode.SURVIVAL);
|
} 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);
|
for (Player targetPlayer : server.getOnlinePlayers()) {
|
||||||
return true;
|
targetPlayer.setGameMode(GameMode.SURVIVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (senderIsConsole || AdminList.isSuperAdmin(sender))
|
Utilities.adminAction(sender.getName(), "Changing everyone's gamemode to survival",
|
||||||
{
|
false);
|
||||||
player = getPlayer(args[0]);
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (player == null)
|
if (senderIsConsole || AdminList.isSuperAdmin(sender)) {
|
||||||
{
|
player = getPlayer(args[0]);
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
playerMsg(sender, "Only superadmins can change other user's gamemode.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
playerMsg(sender, "Setting " + player.getName() + " to game mode 'Survival'.");
|
if (player == null) {
|
||||||
player.sendMessage(sender.getName() + " set your game mode to 'Survival'.");
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
|
||||||
import me.StevenLawson.TotalFreedomMod.config.TagConfiguration;
|
import me.StevenLawson.TotalFreedomMod.config.TagConfiguration;
|
||||||
import me.StevenLawson.TotalFreedomMod.player.PlayerData;
|
import me.StevenLawson.TotalFreedomMod.player.PlayerData;
|
||||||
|
@ -10,206 +12,185 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
|
||||||
public class Command_tag extends FreedomCommand {
|
public class Command_tag extends FreedomCommand {
|
||||||
public static final List<String> FORBIDDEN_WORDS = Arrays.asList("admin", "owner", "moderator", "developer", "console");
|
|
||||||
|
|
||||||
@Override
|
public static final List<String> FORBIDDEN_WORDS = Arrays.asList("admin", "owner", "moderator",
|
||||||
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
"developer", "console");
|
||||||
if (args.length == 1) {
|
|
||||||
if ("list".equalsIgnoreCase(args[0])) {
|
|
||||||
playerMsg(sender, "Tags for all online players:");
|
|
||||||
|
|
||||||
for (final Player player : server.getOnlinePlayers()) {
|
@Override
|
||||||
final PlayerData playerdata = PlayerData.getPlayerData(player);
|
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
|
||||||
if (playerdata.getTag() != null)
|
String commandLabel, String[] args, boolean senderIsConsole) {
|
||||||
{
|
if (args.length == 1) {
|
||||||
playerMsg(sender, player.getName() + ": " + playerdata.getTag());
|
if ("list".equalsIgnoreCase(args[0])) {
|
||||||
}
|
playerMsg(sender, "Tags for all online players:");
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
for (final Player player : server.getOnlinePlayers()) {
|
||||||
}
|
final PlayerData playerdata = PlayerData.getPlayerData(player);
|
||||||
else if ("clearall".equalsIgnoreCase(args[0]))
|
if (playerdata.getTag() != null) {
|
||||||
{
|
playerMsg(sender, player.getName() + ": " + playerdata.getTag());
|
||||||
if (!AdminList.isSuperAdmin(sender))
|
}
|
||||||
{
|
}
|
||||||
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
Utilities.adminAction(sender.getName(), "Removing all tags", false);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
playerMsg(sender, count + " tag(s) removed.");
|
||||||
}
|
|
||||||
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.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
} else if ("off".equalsIgnoreCase(args[0])) {
|
||||||
else
|
if (senderIsConsole) {
|
||||||
{
|
playerMsg(sender,
|
||||||
return false;
|
"\"/tag off\" can't be used from the console. Use \"/tag clear <player>\" or \"/tag clearall\" instead.");
|
||||||
}
|
} else {
|
||||||
}
|
PlayerData.getPlayerData(sender_p).setTag(null);
|
||||||
else if (args.length >= 2)
|
if (TagConfiguration.getTag(sender_p.getUniqueId().toString()) != null) {
|
||||||
{
|
String playerTag = TagConfiguration.getTag(
|
||||||
if ("clear".equalsIgnoreCase(args[0]))
|
sender_p.getUniqueId().toString());
|
||||||
{
|
if (!"".equalsIgnoreCase(playerTag)) {
|
||||||
if (!AdminList.isSuperAdmin(sender))
|
TagConfiguration.saveTag(sender_p.getUniqueId().toString(), "");
|
||||||
{
|
}
|
||||||
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
|
}
|
||||||
return true;
|
playerMsg(sender, "Your tag has been removed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
final Player player = getPlayer(args[1]);
|
return true;
|
||||||
if (player == null)
|
} else {
|
||||||
{
|
return false;
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
}
|
||||||
return true;
|
} else if (args.length >= 2) {
|
||||||
}
|
if ("clear".equalsIgnoreCase(args[0])) {
|
||||||
PlayerData.getPlayerData(player).setTag(null);
|
if (!AdminList.isSuperAdmin(sender)) {
|
||||||
if(TagConfiguration.getTag(player.getUniqueId().toString()) != null){
|
playerMsg(sender, FreedomCommand.MSG_NO_PERMS);
|
||||||
String playerTag = TagConfiguration.getTag(player.getUniqueId().toString());
|
return true;
|
||||||
if(!"".equalsIgnoreCase(playerTag)){
|
}
|
||||||
TagConfiguration.saveTag(player.getUniqueId().toString(), "");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
playerMsg(sender, "Removed " + player.getName() + "'s tag.");
|
|
||||||
|
|
||||||
return true;
|
final Player player = getPlayer(args[1]);
|
||||||
}
|
if (player == null) {
|
||||||
else if ("set".equalsIgnoreCase(args[0]))
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND);
|
||||||
{
|
return true;
|
||||||
final String inputTag = StringUtils.join(args, " ", 1, args.length);
|
}
|
||||||
final String outputTag = Utilities.colorize(StringUtils.replaceEachRepeatedly(StringUtils.strip(inputTag),
|
PlayerData.getPlayerData(player).setTag(null);
|
||||||
new String[]
|
if (TagConfiguration.getTag(player.getUniqueId().toString()) != null) {
|
||||||
{
|
String playerTag = TagConfiguration.getTag(player.getUniqueId().toString());
|
||||||
"" + ChatColor.COLOR_CHAR, "&k"
|
if (!"".equalsIgnoreCase(playerTag)) {
|
||||||
},
|
TagConfiguration.saveTag(player.getUniqueId().toString(), "");
|
||||||
new String[]
|
}
|
||||||
{
|
}
|
||||||
"", ""
|
playerMsg(sender, "Removed " + player.getName() + "'s tag.");
|
||||||
})) + ChatColor.RESET;
|
|
||||||
|
|
||||||
if (!AdminList.isSuperAdmin(sender))
|
return true;
|
||||||
{
|
} else if ("set".equalsIgnoreCase(args[0])) {
|
||||||
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
|
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)
|
if (!AdminList.isSuperAdmin(sender)) {
|
||||||
{
|
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
|
||||||
playerMsg(sender, "That tag is too long (Max is 20 characters).");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String word : FORBIDDEN_WORDS)
|
if (rawTag.length() > 20) {
|
||||||
{
|
playerMsg(sender, "That tag is too long (Max is 20 characters).");
|
||||||
if (rawTag.contains(word))
|
return true;
|
||||||
{
|
}
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerData.getPlayerData(sender_p).setTag(outputTag);
|
for (String word : FORBIDDEN_WORDS) {
|
||||||
playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'.");
|
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;
|
PlayerData.getPlayerData(sender_p).setTag(outputTag);
|
||||||
}
|
playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'.");
|
||||||
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 (!AdminList.isSuperAdmin(sender))
|
return true;
|
||||||
{
|
} else if ("-s".equalsIgnoreCase(args[0]) && "set".equalsIgnoreCase(args[1])) {
|
||||||
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
|
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)
|
if (!AdminList.isSuperAdmin(sender)) {
|
||||||
{
|
final String rawTag = ChatColor.stripColor(outputTag).toLowerCase();
|
||||||
playerMsg(sender, "That tag is too long (Max is 20 characters).");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String word : FORBIDDEN_WORDS)
|
if (rawTag.length() > 20) {
|
||||||
{
|
playerMsg(sender, "That tag is too long (Max is 20 characters).");
|
||||||
if (rawTag.contains(word))
|
return true;
|
||||||
{
|
}
|
||||||
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);
|
for (String word : FORBIDDEN_WORDS) {
|
||||||
TagConfiguration.saveTag(sender_p.getUniqueId().toString(), outputTag);
|
if (rawTag.contains(word)) {
|
||||||
playerMsg(sender, "Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)");
|
if (word.equals("developer") && Utilities.DEVELOPERS.contains(
|
||||||
return true;
|
sender_p.getName())) {
|
||||||
} else
|
PlayerData.getPlayerData(sender_p).setTag(outputTag);
|
||||||
{
|
TagConfiguration.saveTag(sender_p.getUniqueId().toString(),
|
||||||
return false;
|
outputTag);
|
||||||
}
|
playerMsg(sender,
|
||||||
}
|
"Tag set to '" + outputTag + ChatColor.GRAY + "'. (saved)");
|
||||||
else
|
} else {
|
||||||
{
|
playerMsg(sender, "That tag contains a forbidden word.");
|
||||||
return false;
|
}
|
||||||
}
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,23 +9,26 @@ import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = AdminLevel.OP, source = SourceType.ONLY_IN_GAME)
|
||||||
public class Command_tagnyan extends FreedomCommand {
|
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()) {
|
final StringBuilder tag = new StringBuilder();
|
||||||
tag.append(Utilities.randomChatColor()).append(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
final PlayerData data = PlayerData.getPlayerData(sender_p);
|
for (char c : ChatColor.stripColor(Utilities.colorize(StringUtils.join(args, " ")))
|
||||||
data.setTag(tag.toString());
|
.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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,38 +12,45 @@ import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_tban extends FreedomCommand {
|
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) {
|
final Player player = getPlayer(args[0]);
|
||||||
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// strike with lightning effect:
|
if (player == null) {
|
||||||
final Location targetPos = player.getLocation();
|
playerMsg(sender, FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
||||||
for (int x = -1; x <= 1; x++)
|
return true;
|
||||||
{
|
}
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Utilities.adminAction(sender.getName(), "Tempbanning: " + player.getName() + " for 5 minutes.", true);
|
// strike with lightning effect:
|
||||||
BanManager.addUuidBan(
|
final Location targetPos = player.getLocation();
|
||||||
new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), Utilities.parseDateOffset("5m"), ChatColor.RED + "You have been temporarily banned for 5 minutes."));
|
for (int x = -1; x <= 1; x++) {
|
||||||
BanManager.addIpBan(
|
for (int z = -1; z <= 1; z++) {
|
||||||
new Ban(Utilities.getIp(player), player.getName(), sender.getName(), Utilities.parseDateOffset("5m"), ChatColor.RED + "You have been temporarily banned for 5 minutes."));
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package me.StevenLawson.TotalFreedomMod.commands;
|
package me.StevenLawson.TotalFreedomMod.commands;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
import me.StevenLawson.TotalFreedomMod.ban.Ban;
|
import me.StevenLawson.TotalFreedomMod.ban.Ban;
|
||||||
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
|
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
|
||||||
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
|
import me.StevenLawson.TotalFreedomMod.manager.UUIDManager;
|
||||||
|
@ -11,64 +13,64 @@ import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
|
||||||
public class Command_tempban extends FreedomCommand {
|
public class Command_tempban extends FreedomCommand {
|
||||||
private static final SimpleDateFormat date_format = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
|
|
||||||
|
|
||||||
@Override
|
private static final SimpleDateFormat date_format = new SimpleDateFormat(
|
||||||
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
|
"yyyy-MM-dd 'at' HH:mm:ss z");
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
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");
|
final StringBuilder message = new StringBuilder("Temporarily banned " + player.getName());
|
||||||
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));
|
|
||||||
|
|
||||||
String reason = "Banned by " + sender.getName();
|
Date expires = Utilities.parseDateOffset("30m");
|
||||||
if (args.length >= 3)
|
if (args.length >= 2) {
|
||||||
{
|
Date parsed_offset = Utilities.parseDateOffset(args[1]);
|
||||||
reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " (" + sender.getName() + ")";
|
if (parsed_offset != null) {
|
||||||
message.append(", Reason: \"").append(reason).append("\"");
|
expires = parsed_offset;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
message.append(" until ").append(date_format.format(expires));
|
||||||
|
|
||||||
// strike with lightning effect:
|
String reason = "Banned by " + sender.getName();
|
||||||
final Location targetPos = player.getLocation();
|
if (args.length >= 3) {
|
||||||
for (int x = -1; x <= 1; x++)
|
reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " ("
|
||||||
{
|
+ sender.getName() + ")";
|
||||||
for (int z = -1; z <= 1; z++)
|
message.append(", Reason: \"").append(reason).append("\"");
|
||||||
{
|
}
|
||||||
final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
|
|
||||||
targetPos.getWorld().strikeLightning(strike_pos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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));
|
Utilities.adminAction(sender.getName(), message.toString(), true);
|
||||||
BanManager.addUuidBan(new Ban(UUIDManager.getUniqueId(player), player.getName(), sender.getName(), expires, reason));
|
|
||||||
|
|
||||||
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
Loading…
Reference in a new issue