Merge remote-tracking branch 'origin/main'

# Conflicts:
#	src/main/java/me/StevenLawson/TotalFreedomMod/discord/bridge/DiscordBridge.java
This commit is contained in:
Business Goose 2022-03-31 03:24:31 +01:00
commit f2968bc857
No known key found for this signature in database
GPG key ID: 77DCA801362E9645
189 changed files with 15389 additions and 17559 deletions

View file

@ -1,11 +1,16 @@
# Contributing to TFM 4.3 Reloaded #
TFM 4.3 Reloaded is a CraftBukkit server plugin designed primarily to support legacy TotalFreedom clones. However, it can be used in a variety of other configurations with minimal fuss.
For those who wish to contribute, we encourage you to fork the repository and submit pull requests. Below you will find guidelines that explain this process in further detail.
TFM 4.3 Reloaded is a CraftBukkit server plugin designed primarily to support legacy TotalFreedom
clones. However, it can be used in a variety of other configurations with minimal fuss.
For those who wish to contribute, we encourage you to fork the repository and submit pull requests.
Below you will find guidelines that explain this process in further detail.
## Quick Guide ##
1. Create or find an issue on our [Issue Tracker](https://github.com/TotalFreedom/TFM 4.3 Reloaded/issues).
2. Does your change fits TFM 4.3 Reloaded's goals?
1. Create or find an issue on our [Issue Tracker](https://github.com/TotalFreedom/TFM 4.3
Reloaded/issues).
2. Does your change fit TFM 4.3 Reloaded's goals?
3. Fork TFM 4.3 Reloaded if you haven't done so already.
4. Make a branch dedicated to your change.
5. Make your change.
@ -13,60 +18,74 @@ For those who wish to contribute, we encourage you to fork the repository and su
7. Push your branch and submit a pull request.
## Getting Started ##
* Search the issue tracker for your bug report or feature request.
* If the issue does not exist already, create it.
* Clearly describe the issue.
* If your issue is a bug, describe the steps needed to reproduce it.
* If your issue is a feature request, ensure it fits TFM 4.3 Reloaded's goals and describe your feature in detail.
* Clearly describe the issue.
* If your issue is a bug, describe the steps needed to reproduce it.
* If your issue is a feature request, ensure it fits TFM 4.3 Reloaded's goals and describe your
feature in detail.
* Fork the repository on GitHub.
## Does the change fit TFM 4.3 Reloaded's goals? ##
As a rough guideline, ask yourself the following questions to determine if your proposed change fits the TFM 4.3 Reloaded project's goals. Please remember that this is only a rough guideline and may or may not reflect the definitive answer to this question.
* Is the change in line with the principles of "Total Freedom"?
TotalFreedom is a freedom-based server. We don't normally make changes that restrict players unless absolutely necessary.
As a rough guideline, ask yourself the following questions to determine if your proposed change fits
the TFM 4.3 Reloaded project's goals. Please remember that this is only a rough guideline and may or
may not reflect the definitive answer to this question.
* Is the change directed towards the TotalFreedom server?
Changes must be directed towards the TotalFreedom server. Changes such as adding ranks, adding the name of other TotalFreedom-like servers will not likely be accepted.
* Is the change in line with the principles of "Total Freedom"? TotalFreedom is a freedom-based
server. We don't normally make changes that restrict players unless absolutely necessary.
* Does the change add a feature that involves micromanagement?
Pull requests that involve adding a micromanagement feature will likely not be accepted. This includes shorthands for multiple commands.
* Is the change directed towards the TotalFreedom server? Changes must be directed towards the
TotalFreedom server. Changes such as adding ranks, adding the name of other TotalFreedom-like
servers will not likely be accepted.
* Is a similar feature already present?
Features that have very similar alternatives will not be added. For example: A command that temporarily bans a player from the server is very similar to the _/tban_ command and thus will likely not be accepted.
* Does the change add a feature that involves micromanagement? Pull requests that involve adding a
micromanagement feature will likely not be accepted. This includes shorthands for multiple
commands.
* Is a similar feature already present? Features that have very similar alternatives will not be
added. For example: A command that temporarily bans a player from the server is very similar to
the _/tban_ command and thus will likely not be accepted.
## Making Changes ##
* Create a topic branch from where you want to base your work.
* This is usually the master branch.
* Name your branch something relevant to the change you are going to make.
* To quickly create a topic branch based on master, use `git checkout master` followed by `git checkout -b <name>`. Avoid working directly on the `master` branch.
* This is usually the master branch.
* Name your branch something relevant to the change you are going to make.
* To quickly create a topic branch based on master, use `git checkout master` followed
by `git checkout -b <name>`. Avoid working directly on the `master` branch.
* Make sure your change meets our [code requirements](#code-requirements).
### Code requirements ###
* Code must be written in [Allman style](http://en.wikipedia.org/wiki/Indent_style#Allman_style), and that it follows [Java Code Conventions](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf).__
* No tabs; use 4 spaces for indentation.
* Code must be written in [Google style](https://google.github.io/styleguide/javaguide.html), and
that it
follows [Java Code Conventions](http://www.oracle.com/technetwork/java/codeconventions-150003.pdf)
.__
* No spaces, use 4 tabs for indentation.
* No trailing whitespaces for code lines, comments or configuration files.
* No CRLF line endings, only LF is allowed.
* For Windows-based machines, you can configure Git to do this for your by running `git config --global core.autocrlf true`.
* If you're running a Linux or Mac OSX, you should run `git config --global core.autocrlf input` instead.
* For more information about line feeds. See this [this article](http://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/).
* No 80 character line limit or 'weird' midstatement newlines.
* Additions should be compiled, complete and tested before committing.
* Avoid using `org.bukkit.Server.dispatchCommand()`. Commits that make use of it will likely be rejected.
* Avoid using `org.bukkit.Server.dispatchCommand()`. Commits that make use of it will likely be
rejected.
* Files must always end with a newline.
* Avoid nested code structures.
* Avoid poor code.
## Committing your changes ##
* Check for unnecessary whitespace with `git diff --check` before committing.
* Describe your changes in the commit description.
* For a prolonged description, continue on a new line.
* The first description line should be once sentence and should not exceed 10 words.
* The first description line should contain either:
* For a bug-related issue: "Resolves _#issue_".
* For a feature request: "Fixes _#issue_".
* "#issue" is the issue number number you based your work on.
* For a bug-related issue: "Resolves _#issue_".
* For a feature request: "Fixes _#issue_".
* "#issue" is the issue number number you based your work on.
#### Example commit message ####
```
Fixed bugs with /saconfig clear. Resolves #167
Admins can now use /saconfig clear [ip] to remove the designated IP (only their own IPs can be removed.
@ -75,21 +94,28 @@ meaning you can't remove your current IP or an IP that doesn't belong to you.
```
## Submitting Your Changes ##
* Push your changes to the topic branch in your fork of the repository.
* Submit a pull request to this repository.
* Explain in detail what each one of your commits changes and point out any big changes.
* Explain in detail what each one of your commits changes and point out any big changes.
* Wait as a developer evaluates your changes.
* Do not add any prefixes or tags.
## Tips - How To Get Your Pull Request Accepted ##
* Please make sure your changes are written such as other features would be. For example: Commands have their own class and extend TFM_Command.
* Please make sure your changes are written such as other features would be. For example: Commands
have their own class and extend FreedomCommand.
* Do not increment the version number.
* If you want to add multiple changes, please make one pull request per change. This way, it's easier to accept your changes faster and won't block the other changes if there is an issue with a specific line of code.
* If you want to add multiple changes, please make one pull request per change. This way, it's
easier to accept your changes faster and won't block the other changes if there is an issue with a
specific line of code.
* Please avoid having to add files in the main namespace where possible.
* Please refrain from using an excessive amount of commits. As few as possible is generally the best.
* Please do not spread your contribution over several pull-requests.
* Please refrain from using an excessive amount of commits. As few as possible is generally the
best.
* Please do not spread your contribution over several pull-requests unless strictly necessary.
## Additional Resources ##
* [Bug tracker](https://github.com/TheDeus-Group/TFM-4.3-Reloaded/issues/)
* [General GitHub documentation](http://help.github.com/)
* [GitHub pull request documentation](http://help.github.com/send-pull-requests/)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,5 +1,6 @@
package me.StevenLawson.TotalFreedomMod.commands;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import me.StevenLawson.TotalFreedomMod.ban.Ban;
import me.StevenLawson.TotalFreedomMod.ban.BanManager;
@ -15,89 +16,102 @@ import org.bukkit.util.Vector;
@CommandPermissions(level = AdminLevel.SENIOR, source = SourceType.ONLY_CONSOLE)
public class Command_doom extends FreedomCommand {
@Override
public boolean run(final 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 doom(final CommandSender sender, final Player player) {
final TotalFreedomMod plugin = TotalFreedomMod.plugin;
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
new BukkitRunnable() {
@Override
public void run() {
Utilities.adminAction(sender.getName(), "Casting oblivion over " + player.getName(),
true);
Utilities.bcastMsg(player.getName() + " will be completely obliterated!",
ChatColor.RED);
Utilities.adminAction(sender.getName(), "Casting oblivion over " + player.getName(), true);
Utilities.bcastMsg(player.getName() + " will be completely obliterated!", ChatColor.RED);
final String ip = player.getAddress().getAddress().getHostAddress().trim();
final String ip = player.getAddress().getAddress().getHostAddress().trim();
// remove from superadmin
if (AdminList.isSuperAdmin(player)) {
Utilities.adminAction(sender.getName(),
"Removing " + player.getName() + " from the superadmin list.", true);
AdminList.removeSuperadmin(player);
}
// remove from superadmin
if (AdminList.isSuperAdmin(player))
{
Utilities.adminAction(sender.getName(), "Removing " + player.getName() + " from the superadmin list.", true);
AdminList.removeSuperadmin(player);
}
// remove from whitelist
player.setWhitelisted(false);
// remove from whitelist
player.setWhitelisted(false);
// deop
player.setOp(false);
// deop
player.setOp(false);
// ban IPs
for (String playerIp : PlayerList.getEntry(player).getIps()) {
BanManager.addIpBan(new Ban(playerIp, player.getName()));
}
// ban IPs
for (String playerIp : PlayerList.getEntry(player).getIps())
{
BanManager.addIpBan(new Ban(playerIp, player.getName()));
}
// ban uuid
BanManager.addUuidBan(player);
// ban uuid
BanManager.addUuidBan(player);
// set gamemode to survival
player.setGameMode(GameMode.SURVIVAL);
// set gamemode to survival
player.setGameMode(GameMode.SURVIVAL);
// clear inventory
player.closeInventory();
player.getInventory().clear();
// clear inventory
player.closeInventory();
player.getInventory().clear();
// ignite player
player.setFireTicks(10000);
// ignite player
player.setFireTicks(10000);
//removed explosion (it bypasses TFM's explosive toggle and makes a BIG hole that no one likes fixing)
//removed explosion (it bypasses TFM's explosive toggle and makes a BIG hole that no one likes fixing)
// Shoot the player in the sky
player.setVelocity(player.getVelocity().clone().add(new Vector(0, 20, 0)));
// Shoot the player in the sky
player.setVelocity(player.getVelocity().clone().add(new Vector(0, 20, 0)));
new BukkitRunnable() {
@Override
public void run() {
// strike lightning
player.getWorld().strikeLightning(player.getLocation());
new BukkitRunnable()
{
@Override
public void run()
{
// strike lightning
player.getWorld().strikeLightning(player.getLocation());
// kill (if not done already)
player.setHealth(0.0);
}
}.runTaskLater(plugin, 2L * 20L);
// kill (if not done already)
player.setHealth(0.0);
}
}.runTaskLater(plugin, 2L * 20L);
new BukkitRunnable() {
@Override
public void run() {
// message
Utilities.adminAction(sender.getName(),
"Banning " + player.getName() + ", IP: " + Utilities.getFuzzyIp(ip),
true);
new BukkitRunnable()
{
@Override
public void run()
{
// message
Utilities.adminAction(sender.getName(), "Banning " + player.getName() + ", IP: " + Utilities.getFuzzyIp(ip), true);
//removed explosion (it bypasses TFM's explosive toggle and makes a BIG hole that no one likes fixing)
//removed explosion (it bypasses TFM's explosive toggle and makes a BIG hole that no one likes fixing)
// kick player
player.kickPlayer(ChatColor.RED + "FUCKOFF, and get your shit together!");
}
}.runTaskLater(plugin, 3L * 20L);
}
}.runTask(plugin);
}
// kick player
player.kickPlayer(ChatColor.RED + "FUCKOFF, and get your shit together!");
}
}.runTaskLater(plugin, 3L * 20L);
return true;
}
@Override
public boolean run(final CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd,
String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length != 1) {
return false;
}
final Player player = getPlayer(args[0]);
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
doom(sender, player);
return true;
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -9,50 +9,49 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
public class Command_gcmd 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;
}
String arguments = String.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 < 2) {
return false;
}
if (arguments.toLowerCase().contains("wildcard") || arguments.toLowerCase().contains("gcmd")) {
playerMsg("What the hell are you trying to do, you stupid idiot...", ChatColor.RED);
return true;
}
String arguments = String.join(" ", args);
final Player player = getPlayer(args[0]);
if (arguments.toLowerCase().contains("wildcard") || arguments.toLowerCase().contains("gcmd")
|| arguments.toLowerCase().contains("moles")) {
playerMsg("What the hell are you trying to do, you stupid idiot...", ChatColor.RED);
if (sender_p != null) {
Command_smite.smite(sender_p);
}
return true;
}
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
final Player player = getPlayer(args[0]);
final String outCommand = StringUtils.join(args, " ", 1, args.length);
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
if (CommandBlocker.isCommandBlocked(outCommand, sender))
{
return true;
}
final String outCommand = StringUtils.join(args, " ", 1, args.length);
try
{
playerMsg(sender, "Sending command as " + player.getName() + ": " + outCommand);
if (server.dispatchCommand(player, outCommand))
{
playerMsg(sender, "Command sent.");
}
else
{
playerMsg(sender, "Unknown error sending command.");
}
}
catch (Throwable ex)
{
playerMsg(sender, "Error sending command: " + ex.getMessage());
}
if (CommandBlocker.isCommandBlocked(outCommand, sender)) {
return true;
}
return true;
}
try {
playerMsg(sender, "Sending command as " + player.getName() + ": " + outCommand);
if (server.dispatchCommand(player, outCommand)) {
playerMsg(sender, "Command sent.");
} else {
playerMsg(sender, "Unknown error sending command.");
}
} catch (Throwable ex) {
playerMsg(sender, "Error sending command: " + ex.getMessage());
}
return true;
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,5 +1,6 @@
package me.StevenLawson.TotalFreedomMod.commands;
import java.util.UUID;
import me.StevenLawson.TotalFreedomMod.admin.AdminList;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
@ -7,40 +8,57 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.UUID;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
public class Command_myadmin extends FreedomCommand {
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
final UUID uuid = sender_p.getUniqueId(); // Get the sender's uuid as a variable.
if(args.length == 1) {
if ("clearloginmsg".equalsIgnoreCase(args[0])) {
playerMsg(sender, ChatColor.GRAY + "Cleared your custom login message."); // Notify player that the login message has been set.
AdminList.getEntry(uuid).setCustomLoginMessage(""); // Set the custom login message to the value.
AdminList.save(AdminList.getEntry(uuid)); // Save the modified value to the super admin configuration.
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel,
String[] args, boolean senderIsConsole) {
AdminList.updateIndexLists(); // Update and refresh configuration.
return true;
} else {
return false;
}
} else if (args.length >= 2) {
if ("setlogin".equalsIgnoreCase(args[0])) {
final String inputMessage = StringUtils.join(args, " ", 1, args.length); // Parse the input provided.
playerMsg(sender, ChatColor.GRAY + "Set your custom login message."); // Notify player that the login message has been set.
playerMsg(sender, ChatColor.GRAY + "Your login message will show up as: \n" + ChatColor.AQUA + sender_p.getPlayer().getName() + " is " + ChatColor.translateAlternateColorCodes('&', inputMessage));
AdminList.getEntry(uuid).setCustomLoginMessage(inputMessage); // Set the custom login message to the value.
AdminList.save(AdminList.getEntry(uuid)); // Save the modified value to the super admin configuration.
final UUID uuid = sender_p.getUniqueId(); // Get the sender's uuid as a variable.
AdminList.updateIndexLists(); // Update and refresh configuration.
return true;
} else {
return false;
}
} else {
return false;
}
}
if (args.length == 1) {
if ("clearloginmsg".equalsIgnoreCase(args[0])) {
playerMsg(sender, ChatColor.GRAY
+ "Cleared your custom login message."); // Notify player that the login message has been set.
AdminList.getEntry(uuid)
.setCustomLoginMessage(""); // Set the custom login message to the value.
AdminList.save(AdminList.getEntry(
uuid)); // Save the modified value to the super admin configuration.
AdminList.updateIndexLists(); // Update and refresh configuration.
return true;
} else {
return false;
}
} else if (args.length >= 2) {
if ("setlogin".equalsIgnoreCase(args[0])) {
if (AdminList.getEntry(uuid)
== null) { // This means they're not actually in the super config. It will throw an exception if we don't return here.
return true;
}
final String inputMessage = StringUtils.join(args, " ", 1,
args.length); // Parse the input provided.
playerMsg(sender, ChatColor.GRAY
+ "Set your custom login message."); // Notify player that the login message has been set.
playerMsg(sender,
ChatColor.GRAY + "Your login message will show up as: \n" + ChatColor.AQUA
+ sender_p.getPlayer().getName() + " is "
+ ChatColor.translateAlternateColorCodes('&', inputMessage));
AdminList.getEntry(uuid).setCustomLoginMessage(
inputMessage); // Set the custom login message to the value.
AdminList.save(AdminList.getEntry(
uuid)); // Save the modified value to the super admin configuration.
AdminList.updateIndexLists(); // Update and refresh configuration.
return true;
} else {
return false;
}
} else {
return false;
}
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,77 +0,0 @@
package me.StevenLawson.TotalFreedomMod.commands;
import me.StevenLawson.TotalFreedomMod.util.Utilities;
import me.StevenLawson.TotalFreedomMod.world.RollbackManager;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, blockHostConsole = true)
public class Command_rollback extends FreedomCommand {
@Override
public boolean run(CommandSender sender, org.bukkit.entity.Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) {
if (args.length == 0 || args.length > 2) {
return false;
}
if (args.length == 1) {
if ("purgeall".equals(args[0])) {
Utilities.adminAction(sender.getName(), "Purging all rollback history", false);
playerMsg(sender, "Purged all rollback history for " + RollbackManager.purgeEntries() + " players.");
}
else
{
final String playerName = RollbackManager.findPlayer(args[0]);
if (playerName == null)
{
playerMsg(sender, "That player has no entries stored.");
return true;
}
if (RollbackManager.canUndoRollback(playerName))
{
playerMsg(sender, "That player has just been rolled back.");
}
Utilities.adminAction(sender.getName(), "Rolling back player: " + playerName, false);
playerMsg(sender, "Rolled back " + RollbackManager.rollback(playerName) + " edits for " + playerName + ".");
playerMsg(sender, "If this rollback was a mistake, use /rollback undo " + playerName + " within 40 seconds to reverse the rollback.");
}
return true;
}
if (args.length == 2)
{
if ("purge".equalsIgnoreCase(args[0]))
{
final String playerName = RollbackManager.findPlayer(args[1]);
if (playerName == null)
{
playerMsg(sender, "That player has no entries stored.");
return true;
}
playerMsg(sender, "Purged " + RollbackManager.purgeEntries(playerName) + " rollback history entries for " + playerName + ".");
return true;
}
if ("undo".equalsIgnoreCase(args[0]))
{
final String playerName = RollbackManager.findPlayer(args[1]);
if (playerName == null)
{
playerMsg(sender, "That player hasn't been rolled back recently.");
return true;
}
Utilities.adminAction(sender.getName(), "Reverting rollback for player: " + playerName, false);
playerMsg(sender, "Reverted " + RollbackManager.undoRollback(playerName) + " edits for " + playerName + ".");
return true;
}
}
return false;
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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