Adds Something that is missing

Adds Futil.strictcolorize (that filters Banned colors on smite and gtfo)

Adds Actual Server-TFM features
Adds Wipewarps
adds wipecoreprotectdata
adds spectator
adds rainbownick
adds rainbowtag
This commit is contained in:
marcocorriero 2017-11-16 23:32:09 +01:00
parent 489bbf4fc9
commit 2443d3eaca
26 changed files with 510 additions and 167 deletions

3
.gitignore vendored
View File

@ -32,3 +32,6 @@ manifest.mf
.Trashes .Trashes
ehthumbs.db ehthumbs.db
Thumbs.db Thumbs.db
src/main/java/me/totalfreedom/totalfreedommod/command/Command_pvpspy.java
src/main/java/me/totalfreedom/totalfreedommod/util/EnchantManager.java
src/main/java/me/totalfreedom/totalfreedommod/command/Command_enchant.java

View File

@ -68,7 +68,7 @@ public class Command_blockcmd extends FreedomCommand
if (isAdmin(player)) if (isAdmin(player))
{ {
msg(player.getName() + " is an admin, and cannot have their commands blocked."); msg(player.getName() + " is a Superadmin, and cannot have their commands blocked.");
return true; return true;
} }

View File

@ -23,7 +23,7 @@ public class Command_blockedit extends FreedomCommand
return false; return false;
} }
if (args[0].equals("list")) { if (args[0].equals("list")) {
this.msg("Block edits blocked for players:"); this.msg("Blocked block edits players:");
int count = 0; int count = 0;
for (final Player mp : this.server.getOnlinePlayers()) { for (final Player mp : this.server.getOnlinePlayers()) {
final FPlayer info = ((TotalFreedomMod)this.plugin).pl.getPlayer(mp); final FPlayer info = ((TotalFreedomMod)this.plugin).pl.getPlayer(mp);
@ -51,7 +51,7 @@ public class Command_blockedit extends FreedomCommand
return true; return true;
} }
if (args[0].equals("all")) { if (args[0].equals("all")) {
FUtil.adminAction(sender.getName(), "Blocking block edits for all non-admins.", true); FUtil.adminAction(sender.getName(), "Blocking block edits for all non-Superadmins", true);
int counter = 0; int counter = 0;
for (final Player player : this.server.getOnlinePlayers()) { for (final Player player : this.server.getOnlinePlayers()) {
if (!((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player)) { if (!((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player)) {
@ -60,7 +60,7 @@ public class Command_blockedit extends FreedomCommand
++counter; ++counter;
} }
} }
this.msg("Blocked block edits for " + counter + " players."); this.msg("Blocked all block edit for " + counter + " players.");
return true; return true;
} }
final boolean smite = args[0].equals("-s"); final boolean smite = args[0].equals("-s");
@ -81,14 +81,14 @@ public class Command_blockedit extends FreedomCommand
} }
final FPlayer playerdata2 = ((TotalFreedomMod)this.plugin).pl.getPlayer(player2); final FPlayer playerdata2 = ((TotalFreedomMod)this.plugin).pl.getPlayer(player2);
if (playerdata2.isEditBlock()) { if (playerdata2.isEditBlock()) {
FUtil.adminAction(sender.getName(), "Unblocking block edits for " + player2.getName(), true); FUtil.adminAction(sender.getName(), "Unblocking all block edits for " + player2.getName(), true);
playerdata2.setEditBlocked(false); playerdata2.setEditBlocked(false);
this.msg("Unblocking block edits for " + player2.getName()); this.msg("Unblocking all block edits for " + player2.getName());
this.msg((CommandSender)player2, "Your block edits have been unblocked.", ChatColor.RED); this.msg((CommandSender)player2, "You block edits have been unblocked.", ChatColor.RED);
} }
else { else {
if (((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player2)) { if (((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player2)) {
this.msg(player2.getName() + " is an admin, and cannot have their block edits blocked."); this.msg(player2.getName() + " is a superadmin, and his block edits can't be blocked .");
return true; return true;
} }
FUtil.adminAction(sender.getName(), "Blocking block edits for " + player2.getName(), true); FUtil.adminAction(sender.getName(), "Blocking block edits for " + player2.getName(), true);
@ -97,10 +97,10 @@ public class Command_blockedit extends FreedomCommand
Command_smite.smite(player2, sender); Command_smite.smite(player2, sender);
} }
if (reason != null) { if (reason != null) {
this.msg((CommandSender)player2, "Your block edits have been blocked. Reason: " + reason, ChatColor.RED); this.msg((CommandSender)player2, "You block edits have been blocked. Reason: " + reason, ChatColor.RED);
} }
else { else {
this.msg((CommandSender)player2, "Your block edits have been blocked.", ChatColor.RED); this.msg((CommandSender)player2, "You block edits have been blocked.", ChatColor.RED);
} }
this.msg("Blocked all block edits for " + player2.getName()); this.msg("Blocked all block edits for " + player2.getName());
} }

View File

@ -23,7 +23,7 @@ public class Command_blockpvp extends FreedomCommand
return false; return false;
} }
if (args[0].equals("list")) { if (args[0].equals("list")) {
this.msg("PVP is blocked for players:"); this.msg("Disabled PVP mode players:");
int count = 0; int count = 0;
for (final Player mp : this.server.getOnlinePlayers()) { for (final Player mp : this.server.getOnlinePlayers()) {
final FPlayer info = ((TotalFreedomMod)this.plugin).pl.getPlayer(mp); final FPlayer info = ((TotalFreedomMod)this.plugin).pl.getPlayer(mp);
@ -38,7 +38,7 @@ public class Command_blockpvp extends FreedomCommand
return true; return true;
} }
if (args[0].equals("purge")) { if (args[0].equals("purge")) {
FUtil.adminAction(sender.getName(), "Enabling PVP for all players.", true); FUtil.adminAction(sender.getName(), "Enabling PVP mode for all players.", true);
int count = 0; int count = 0;
for (final Player mp : this.server.getOnlinePlayers()) { for (final Player mp : this.server.getOnlinePlayers()) {
final FPlayer info = ((TotalFreedomMod)this.plugin).pl.getPlayer(mp); final FPlayer info = ((TotalFreedomMod)this.plugin).pl.getPlayer(mp);
@ -47,11 +47,11 @@ public class Command_blockpvp extends FreedomCommand
++count; ++count;
} }
} }
this.msg("Enabled PVP for " + count + " players."); this.msg("Enabling PVP mode for " + count + " players.");
return true; return true;
} }
if (args[0].equals("all")) { if (args[0].equals("all")) {
FUtil.adminAction(sender.getName(), "Disabling PVP for all non-admins", true); FUtil.adminAction(sender.getName(), "Disabling PVP mode for all non-Superadmins", true);
int counter = 0; int counter = 0;
for (final Player player : this.server.getOnlinePlayers()) { for (final Player player : this.server.getOnlinePlayers()) {
if (!((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player)) { if (!((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player)) {
@ -60,7 +60,7 @@ public class Command_blockpvp extends FreedomCommand
++counter; ++counter;
} }
} }
this.msg("Disabling PVP for " + counter + " players."); this.msg("Disabling PVP mode for " + counter + " players.");
return true; return true;
} }
final boolean smite = args[0].equals("-s"); final boolean smite = args[0].equals("-s");
@ -81,28 +81,28 @@ public class Command_blockpvp extends FreedomCommand
} }
final FPlayer playerdata2 = ((TotalFreedomMod)this.plugin).pl.getPlayer(player2); final FPlayer playerdata2 = ((TotalFreedomMod)this.plugin).pl.getPlayer(player2);
if (playerdata2.isPVPBlock()) { if (playerdata2.isPVPBlock()) {
FUtil.adminAction(sender.getName(), "Enabling PVP for " + player2.getName(), true); FUtil.adminAction(sender.getName(), "Enabling PVP mode for " + player2.getName(), true);
playerdata2.setPVPBlock(false); playerdata2.setPVPBlock(false);
this.msg("Enabling PVP for " + player2.getName()); this.msg("Enabling PVP mode for " + player2.getName());
this.msg((CommandSender)player2, "Your PVP have been enabled.", ChatColor.GREEN); this.msg((CommandSender)player2, "Your PVP mode have been enabled.", ChatColor.GREEN);
} }
else { else {
if (((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player2)) { if (((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player2)) {
this.msg(player2.getName() + " is an admin, and his PVP cannot be disabled."); this.msg(player2.getName() + " is a superadmin, and his PVP mode can't be disabled.");
return true; return true;
} }
FUtil.adminAction(sender.getName(), "Disabling PVP for " + player2.getName(), true); FUtil.adminAction(sender.getName(), "Disabling PVP mode for " + player2.getName(), true);
playerdata2.setPVPBlock(true); playerdata2.setPVPBlock(true);
if (smite) { if (smite) {
Command_smite.smite(player2, sender); Command_smite.smite(player2, sender);
} }
if (reason != null) { if (reason != null) {
this.msg((CommandSender)player2, "Your PVP has been disabled. Reason: " + reason, ChatColor.RED); this.msg((CommandSender)player2, "Your PVP Mode has been disabled. Reason: " + reason, ChatColor.RED);
} }
else { else {
this.msg((CommandSender)player2, "Your PVP has been disabled.", ChatColor.RED); this.msg((CommandSender)player2, "Your PVP Mode has been disabled.", ChatColor.RED);
} }
this.msg("Disabled PVP for " + player2.getName()); this.msg("Disabled PVP mode for " + player2.getName());
} }
return true; return true;
} }

View File

@ -13,7 +13,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH) @CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Place a cage around someone.", usage = "/<command> <purge | off | <partialname> [skull | block] [blockname | skullname]") @CommandParameters(description = "Place a cage around someone.", usage = "/<command> <purge | off | <partialname> [custom | block] [Block name | Player name(for skull)]")
public class Command_cage extends FreedomCommand public class Command_cage extends FreedomCommand
{ {
public static String playerSkullName; public static String playerSkullName;
@ -52,7 +52,7 @@ public class Command_cage extends FreedomCommand
playerdata3.getCageData().setCaged(false); playerdata3.getCageData().setCaged(false);
return true; return true;
} }
case "skull": { case "custom": {
outerMaterial = Material.SKULL; outerMaterial = Material.SKULL;
Command_cage.playerSkullName = args[2]; Command_cage.playerSkullName = args[2];
break; break;

View File

@ -24,7 +24,7 @@ public class Command_disguisetoggle extends FreedomCommand
} }
FUtil.adminAction(sender.getName(), (DisallowedDisguises.disabled ? "Enabling" : "Disabling") + " " + FUtil.adminAction(sender.getName(), (DisallowedDisguises.disabled ? "Enabling" : "Disabling") + " " +
"disguises.", false); "Disguises", false);
if (plugin.ldb.isDisguisesEnabled()) if (plugin.ldb.isDisguisesEnabled())
{ {

View File

@ -59,9 +59,16 @@ public class Command_gtfo extends FreedomCommand
plugin.rb.rollback(player.getName()); plugin.rb.rollback(player.getName());
} }
else
if (getServer().getPluginManager().isPluginEnabled("CoreProtect"))
{ {
plugin.cpb.rollback(player.getName()); try
{
server.dispatchCommand(sender, "co rollback t:1d r:#global #silent u:" + player.getName());
}
catch (NoClassDefFoundError ex)
{
}
} }
// Deop // Deop
@ -95,7 +102,7 @@ public class Command_gtfo extends FreedomCommand
.append(ip); .append(ip);
if (reason != null) if (reason != null)
{ {
bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(FUtil.colorize(reason)); bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(FUtil.StrictColorize(reason));
} }
FUtil.bcastMsg(bcast.toString()); FUtil.bcastMsg(bcast.toString());

View File

@ -0,0 +1,68 @@
package me.totalfreedom.totalfreedommod.command;
import java.util.Iterator;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import me.totalfreedom.totalfreedommod.util.FUtil;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.entity.Player;
import org.bukkit.command.CommandSender;
import me.totalfreedom.totalfreedommod.rank.Rank;
@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Essentials Interface Command - Rainbowify your nickname.", usage = "/<command> <<nick> | off>")
public class Command_rainbownick extends FreedomCommand
{
public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole)
{
if (args.length != 1)
{
return false;
}
if ("off".equals(args[0]))
{
((TotalFreedomMod) this.plugin).esb.setNickname(sender.getName(), null);
this.msg("Nickname cleared.");
return true;
}
final String nickPlain = ChatColor.stripColor(FUtil.colorize(args[0].trim()));
if (!nickPlain.matches("^[a-zA-Z_0-9" + ChatColor.COLOR_CHAR + "]+$"))
{
msg("That nickname contains invalid characters.");
return true;
}
if (nickPlain.length() < 4 || nickPlain.length() > 30)
{
this.msg("Your nickname must be between 4 and 30 characters long.");
return true;
}
for (final Player player : Bukkit.getOnlinePlayers())
{
if (player == playerSender)
{
continue;
}
if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nickPlain))
{
this.msg("That nickname is already in use.");
return true;
}
}
final StringBuilder newNick = new StringBuilder();
final char[] charArray;
final char[] chars = charArray = nickPlain.toCharArray();
for (final char c : charArray)
{
newNick.append(FUtil.rainbowChatColor()).append(c);
}
newNick.append(ChatColor.WHITE);
((TotalFreedomMod) this.plugin).esb.setNickname(sender.getName(), newNick.toString());
this.msg("Your nickname is now: " + newNick.toString());
return true;
}
}

View File

@ -0,0 +1,51 @@
package me.totalfreedom.totalfreedommod.command;
import java.util.Arrays;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import java.util.Iterator;
import java.util.List;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import org.bukkit.ChatColor;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.entity.Player;
import org.bukkit.command.CommandSender;
import me.totalfreedom.totalfreedommod.rank.Rank;
@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Gives you a tag with Rainbow", usage = "/<command> <tag>", aliases = "tn")
public class Command_rainbowtag extends FreedomCommand
{
public static final List<String> FORBIDDEN_WORDS = Arrays.asList(new String[]
{
"admin", "owner", "moderator", "developer", "console", "SRA", "TCA", "SA"
});
public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole)
{
if (args.length < 1)
{
return false;
}
final StringBuilder tag = new StringBuilder();
for (final char c : ChatColor.stripColor(FUtil.colorize(StringUtils.join((Object[]) args, " "))).toCharArray())
{
tag.append(FUtil.rainbowChatColor()).append(c);
}
final String tagStr = tag.toString();
for (final String word : FORBIDDEN_WORDS)
{
if (tagStr.contains(word))
{
this.msg("That tag contains a forbidden word.");
return true;
}
}
final FPlayer data = ((TotalFreedomMod) this.plugin).pl.getPlayer(playerSender);
data.setTag(tagStr);
this.msg("Set tag to " + (Object) tag);
return true;
}
}

View File

@ -16,73 +16,58 @@ import org.bukkit.entity.Player;
public class Command_smite extends FreedomCommand public class Command_smite extends FreedomCommand
{ {
@Override public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole)
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{ {
if (args.length < 1) if (args.length < 1)
{ {
return false; return false;
} }
final Player player = this.getPlayer(args[0]);
final Player player = getPlayer(args[0]);
String reason = null; String reason = null;
if (args.length > 1) if (args.length > 1)
{ {
reason = StringUtils.join(args, " ", 1, args.length); reason = StringUtils.join((Object[]) args, " ", 1, args.length);
} }
if (player == null) if (player == null)
{ {
msg(FreedomCommand.PLAYER_NOT_FOUND); this.msg(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
smite(player, sender, reason);
return true; return true;
} }
smite(player, reason); public static void smite(final Player player, final CommandSender sender)
return true;
}
public static void smite(Player player)
{ {
smite(player, null); smite(player, sender, null);
} }
public static void smite(Player player, String reason) public static void smite(final Player player, final CommandSender sender, final String reason)
{ {
FUtil.bcastMsg(player.getName() + " has been a naughty, naughty boy.", ChatColor.RED); FUtil.bcastMsg(player.getName() + " has been a naughty, naughty boy.", ChatColor.RED);
if (reason != null) if (reason != null)
{ {
FUtil.bcastMsg(" Reason: " + reason, ChatColor.YELLOW); FUtil.bcastMsg(ChatColor.RED + " Reason: " + ChatColor.YELLOW + FUtil.StrictColorize(reason));
} }
FUtil.bcastMsg(ChatColor.RED + " Smitten by: " + ChatColor.YELLOW + sender.getName());
// Deop
player.setOp(false); player.setOp(false);
// Set gamemode to survival
player.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
// Clear inventory
player.getInventory().clear(); player.getInventory().clear();
// Strike with lightning effect
final Location targetPos = player.getLocation(); final Location targetPos = player.getLocation();
final World world = player.getWorld(); final World world = player.getWorld();
for (int x = -1; x <= 1; x++) for (int x = -1; x <= 1; ++x)
{ {
for (int z = -1; z <= 1; z++) for (int z = -1; z <= 1; ++z)
{ {
final Location strike_pos = new Location(world, targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); final Location strike_pos = new Location(world, (double) (targetPos.getBlockX() + x), (double) targetPos.getBlockY(), (double) (targetPos.getBlockZ() + z));
world.strikeLightning(strike_pos); world.strikeLightningEffect(strike_pos);
} }
} }
// Kill
player.setHealth(0.0); player.setHealth(0.0);
player.sendMessage(ChatColor.RED + "You've been smitten by: " + ChatColor.YELLOW + sender.getName());
if (reason != null) if (reason != null)
{ {
player.sendMessage(ChatColor.RED + "You've been smitten. Reason: " + ChatColor.YELLOW + reason); player.sendMessage(ChatColor.RED + "Reason: " + ChatColor.YELLOW + FUtil.StrictColorize(reason));
} }
} }
} }

View File

@ -0,0 +1,38 @@
package me.totalfreedom.totalfreedommod.command;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
import org.bukkit.entity.Player;
import org.bukkit.command.CommandSender;
import me.totalfreedom.totalfreedommod.rank.Rank;
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Quickly change your own gamemode to spectator.", usage = "/<command>", aliases = "gmsp")
public class Command_spectator extends FreedomCommand
{
public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) {
if (args.length == 0) {
if (this.isConsole()) {
sender.sendMessage("When used from the console, you must define a target player.");
return true;
}
playerSender.setGameMode(GameMode.SPECTATOR);
this.msg("Gamemode set to spectator.");
return true;
}
else {
this.checkRank(Rank.SUPER_ADMIN);
final Player player = this.getPlayer(args[0]);
if (player == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
this.msg("Setting " + player.getName() + " to game mode spectator");
this.msg((CommandSender)player, sender.getName() + " set your game mode to spectator");
player.setGameMode(GameMode.SPECTATOR);
return true;
}
}
}

View File

@ -130,7 +130,7 @@ public class Command_stfu extends FreedomCommand
if (smite) if (smite)
{ {
Command_smite.smite(player); Command_smite.smite(player, sender);
} }
if (reason != null) if (reason != null)

View File

@ -18,7 +18,7 @@ public class Command_tag extends FreedomCommand
public static final List<String> FORBIDDEN_WORDS = Arrays.asList(new String[] public static final List<String> FORBIDDEN_WORDS = Arrays.asList(new String[]
{ {
"admin", "owner", "moderator", "developer", "console" "admin", "owner", "moderator", "developer", "console", "SRA", "TCA", "SA"
}); });
@Override @Override

View File

@ -1,5 +1,7 @@
package me.totalfreedom.totalfreedommod.command; package me.totalfreedom.totalfreedommod.command;
import java.util.Arrays;
import java.util.List;
import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.FUtil;
@ -14,6 +16,11 @@ import org.bukkit.entity.Player;
public class Command_tagnyan extends FreedomCommand public class Command_tagnyan extends FreedomCommand
{ {
public static final List<String> FORBIDDEN_WORDS = Arrays.asList(new String[]
{
"admin", "owner", "moderator", "developer", "console", "SRA", "TCA", "SA"
});
@Override @Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{ {

View File

@ -48,7 +48,7 @@ public class Command_tban extends FreedomCommand
for (int z = -1; z <= 1; z++) for (int z = -1; z <= 1; z++)
{ {
final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
targetPos.getWorld().strikeLightning(strike_pos); targetPos.getWorld().strikeLightningEffect(strike_pos);
} }
} }

View File

@ -62,7 +62,7 @@ public class Command_tempban extends FreedomCommand
for (int z = -1; z <= 1; z++) for (int z = -1; z <= 1; z++)
{ {
final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z); final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
targetPos.getWorld().strikeLightning(strike_pos); targetPos.getWorld().strikeLightningEffect(strike_pos);
} }
} }

View File

@ -1,6 +1,8 @@
package me.totalfreedom.totalfreedommod.command; package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.GameRuleHandler;
import me.totalfreedom.totalfreedommod.GameRuleHandler.GameRule; import me.totalfreedom.totalfreedommod.GameRuleHandler.GameRule;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.FUtil;
@ -25,6 +27,8 @@ public class Command_toggle extends FreedomCommand
msg("- fluidspread"); msg("- fluidspread");
msg("- lavadmg"); msg("- lavadmg");
msg("- firespread"); msg("- firespread");
msg("- frostwalk");
msg("- firework");
msg("- prelog"); msg("- prelog");
msg("- lockdown"); msg("- lockdown");
msg("- petprotect"); msg("- petprotect");
@ -34,133 +38,103 @@ public class Command_toggle extends FreedomCommand
return false; return false;
} }
if (args[0].equals("waterplace")) if (args[0].equals("waterplace")) {
{ this.toggle("Water placement is", ConfigEntry.ALLOW_WATER_PLACE);
toggle("Water placement is", ConfigEntry.ALLOW_WATER_PLACE);
return true; return true;
} }
if (args[0].equals("frostwalk")) {
if (args[0].equals("fireplace")) this.toggle("Frost walker enchantment is ", ConfigEntry.ALLOW_FROSTWALKER);
{
toggle("Fire placement is", ConfigEntry.ALLOW_FIRE_PLACE);
return true; return true;
} }
if (args[0].equals("fireplace")) {
if (args[0].equals("lavaplace")) this.toggle("Fire placement is", ConfigEntry.ALLOW_FIRE_PLACE);
{
toggle("Lava placement is", ConfigEntry.ALLOW_LAVA_PLACE);
return true; return true;
} }
if (args[0].equals("lavaplace")) {
if (args[0].equals("fluidspread")) this.toggle("Lava placement is", ConfigEntry.ALLOW_LAVA_PLACE);
{
toggle("Fluid spread is", ConfigEntry.ALLOW_FLUID_SPREAD);
return true; return true;
} }
/*if (args[0].equals("explosivearrows"))
if (args[0].equals("lavadmg"))
{ {
toggle("Lava damage is", ConfigEntry.ALLOW_LAVA_DAMAGE); toggle("Explosive arrows are now", ConfigEntry.MAKE_ARROW_EXPLOSIVE);
return true;
}*/
if (args[0].equals("fluidspread")) {
this.toggle("Fluid spread is", ConfigEntry.ALLOW_FLUID_SPREAD);
return true; return true;
} }
if (args[0].equals("lavadmg")) {
if (args[0].equals("firespread")) this.toggle("Lava damage is", ConfigEntry.ALLOW_LAVA_DAMAGE);
{
toggle("Fire spread is", ConfigEntry.ALLOW_FIRE_SPREAD);
plugin.gr.setGameRule(GameRule.DO_FIRE_TICK, ConfigEntry.ALLOW_FIRE_SPREAD.getBoolean());
return true; return true;
} }
if (args[0].equals("firespread")) {
if (args[0].equals("prelog")) this.toggle("Fire spread is", ConfigEntry.ALLOW_FIRE_SPREAD);
{ ((TotalFreedomMod)this.plugin).gr.setGameRule(GameRuleHandler.GameRule.DO_FIRE_TICK, ConfigEntry.ALLOW_FIRE_SPREAD.getBoolean());
toggle("Command prelogging is", ConfigEntry.ENABLE_PREPROCESS_LOG);
return true; return true;
} }
if (args[0].equals("prelog")) {
if (args[0].equals("lockdown")) this.toggle("Command prelogging is", ConfigEntry.ENABLE_PREPROCESS_LOG);
{ return true;
boolean active = !plugin.lp.isLockdownEnabled(); }
plugin.lp.setLockdownEnabled(active); if (args[0].equals("lockdown")) {
final boolean active = !((TotalFreedomMod)this.plugin).lp.isLockdownEnabled();
((TotalFreedomMod)this.plugin).lp.setLockdownEnabled(active);
FUtil.adminAction(sender.getName(), (active ? "A" : "De-a") + "ctivating server lockdown", true); FUtil.adminAction(sender.getName(), (active ? "A" : "De-a") + "ctivating server lockdown", true);
return true; return true;
} }
if (args[0].equals("petprotect")) {
if (args[0].equals("petprotect")) this.toggle("Tamed pet protection is", ConfigEntry.ENABLE_PET_PROTECT);
{
toggle("Tamed pet protection is", ConfigEntry.ENABLE_PET_PROTECT);
return true; return true;
} }
if (args[0].equals("entitywipe")) {
if (args[0].equals("entitywipe")) this.toggle("Automatic entity wiping is", ConfigEntry.AUTO_ENTITY_WIPE);
{
toggle("Automatic entity wiping is", ConfigEntry.AUTO_ENTITY_WIPE);
return true; return true;
} }
if (args[0].equals("firework")) {
if (args[0].equals("nonuke")) this.toggle("Firework explosion is", ConfigEntry.ALLOW_FIREWORK_EXPLOSION);
{ return true;
if (args.length >= 2) }
{ if (args[0].equals("nonuke")) {
try if (args.length >= 2) {
{ try {
ConfigEntry.NUKE_MONITOR_RANGE.setDouble(Math.max(1.0, Math.min(500.0, Double.parseDouble(args[1])))); ConfigEntry.NUKE_MONITOR_RANGE.setDouble(Math.max(1.0, Math.min(500.0, Double.parseDouble(args[1]))));
} }
catch (NumberFormatException nfex) catch (NumberFormatException ex2) {}
{
} }
} if (args.length >= 3) {
try {
if (args.length >= 3)
{
try
{
ConfigEntry.NUKE_MONITOR_COUNT_BREAK.setInteger(Math.max(1, Math.min(500, Integer.parseInt(args[2])))); ConfigEntry.NUKE_MONITOR_COUNT_BREAK.setInteger(Math.max(1, Math.min(500, Integer.parseInt(args[2]))));
} }
catch (NumberFormatException nfex) catch (NumberFormatException ex3) {}
{
} }
this.toggle("Nuke monitor is", ConfigEntry.NUKE_MONITOR_ENABLED);
if (ConfigEntry.NUKE_MONITOR_ENABLED.getBoolean()) {
this.msg("Anti-freecam range is set to " + ConfigEntry.NUKE_MONITOR_RANGE.getDouble() + " blocks.");
this.msg("Block throttle rate is set to " + ConfigEntry.NUKE_MONITOR_COUNT_BREAK.getInteger() + " blocks destroyed per 5 seconds.");
} }
toggle("Nuke monitor is", ConfigEntry.NUKE_MONITOR_ENABLED);
if (ConfigEntry.NUKE_MONITOR_ENABLED.getBoolean())
{
msg("Anti-freecam range is set to " + ConfigEntry.NUKE_MONITOR_RANGE.getDouble() + " blocks.");
msg("Block throttle rate is set to " + ConfigEntry.NUKE_MONITOR_COUNT_BREAK.getInteger() + " blocks destroyed per 5 seconds.");
}
return true; return true;
} }
if (args[0].equals("explosives")) if (args[0].equals("explosives")) {
{ if (args.length == 2) {
if (args.length == 2) try {
{
try
{
ConfigEntry.EXPLOSIVE_RADIUS.setDouble(Math.max(1.0, Math.min(30.0, Double.parseDouble(args[1])))); ConfigEntry.EXPLOSIVE_RADIUS.setDouble(Math.max(1.0, Math.min(30.0, Double.parseDouble(args[1]))));
} }
catch (NumberFormatException ex) catch (NumberFormatException ex) {
{ this.msg(ex.getMessage());
msg(ex.getMessage());
return true; return true;
} }
} }
this.toggle("Explosions are", ConfigEntry.ALLOW_EXPLOSIONS);
toggle("Explosions are", ConfigEntry.ALLOW_EXPLOSIONS); if (ConfigEntry.ALLOW_EXPLOSIONS.getBoolean()) {
this.msg("Radius set to " + ConfigEntry.EXPLOSIVE_RADIUS.getDouble());
if (ConfigEntry.ALLOW_EXPLOSIONS.getBoolean())
{
msg("Radius set to " + ConfigEntry.EXPLOSIVE_RADIUS.getDouble());
} }
return true; return true;
} }
return false; return false;
} }
private void toggle(String name, ConfigEntry entry) private void toggle(final String name, final ConfigEntry entry) {
{ this.msg(name + " now " + (entry.setBoolean(!entry.getBoolean()) ? "enabled." : "disabled."));
msg(name + " now " + (entry.setBoolean(!entry.getBoolean()) ? "enabled." : "disabled."));
} }
} }

View File

@ -1,6 +1,7 @@
package me.totalfreedom.totalfreedommod.command; package me.totalfreedom.totalfreedommod.command;
//import me.libraryaddict.disguise.DisallowedDisguises; //import me.libraryaddict.disguise.DisallowedDisguises;
import me.libraryaddict.disguise.DisallowedDisguises;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@ -14,7 +15,7 @@ public class Command_undisguiseall extends FreedomCommand
@Override @Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{ /* {
if (!plugin.ldb.isPluginEnabled()) if (!plugin.ldb.isPluginEnabled())
{ {
msg("LibsDisguises is not enabled."); msg("LibsDisguises is not enabled.");
@ -32,10 +33,5 @@ public class Command_undisguiseall extends FreedomCommand
plugin.ldb.undisguiseAll(false); plugin.ldb.undisguiseAll(false);
return true; return true;
*/
msg("This command has been disabled for technical reasons. Contact a developer for additional information.");
return true;
} }
} }

View File

@ -2,6 +2,10 @@ package me.totalfreedom.totalfreedommod.command;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import me.totalfreedom.totalfreedommod.command.CommandParameters;
import me.totalfreedom.totalfreedommod.command.CommandPermissions;
import me.totalfreedom.totalfreedommod.command.FreedomCommand;
import me.totalfreedom.totalfreedommod.command.SourceType;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.DepreciationAggregator; import me.totalfreedom.totalfreedommod.util.DepreciationAggregator;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;

View File

@ -0,0 +1,31 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
@CommandPermissions(level = Rank.TELNET_ADMIN, source = SourceType.ONLY_CONSOLE)
@CommandParameters(description = "Wipes the CoreProtect data for the flatlands", usage = "/<command>")
public class Command_wipecoreprotectdata extends FreedomCommand
{
@Override
public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
FUtil.adminAction(sender.getName(), "Wiping CoreProtect data for the flatlands", true);
new BukkitRunnable()
{
@Override
public void run()
{
plugin.cpb.clearDatabase(plugin.wm.flatlands.getWorld());
}
}.runTaskAsynchronously(plugin);
return true;
}
}

View File

@ -6,6 +6,7 @@ import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true) @CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
@CommandParameters(description = "Wipe the flatlands map. Requires manual restart after command is used.", usage = "/<command>") @CommandParameters(description = "Wipe the flatlands map. Requires manual restart after command is used.", usage = "/<command>")
@ -24,7 +25,21 @@ public class Command_wipeflatlands extends FreedomCommand
player.kickPlayer("Server is going offline for flatlands wipe, come back in a few minutes."); player.kickPlayer("Server is going offline for flatlands wipe, come back in a few minutes.");
} }
if (!plugin.cpb.isEnabled())
{
server.shutdown(); server.shutdown();
}
else
{
new BukkitRunnable()
{
@Override
public void run()
{
plugin.cpb.clearDatabase(plugin.wm.flatlands.getWorld(), true);
}
}.runTaskAsynchronously(plugin);
}
return true; return true;
} }

View File

@ -0,0 +1,77 @@
package me.totalfreedom.totalfreedommod.command;
import com.sk89q.worldguard.bukkit.RegionContainer;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import java.util.Map;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
@CommandPermissions(level = Rank.TELNET_ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Wipe all WorldGuard regions for a specified world.", usage = "/<command> <world>", aliases = "wiperegions")
public class Command_wiperegions extends FreedomCommand
{
public WorldGuardPlugin getWorldGuard()
{
Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("WorldGuard");
if (plugin == null || !(plugin instanceof WorldGuardPlugin))
{
return null;
}
return (WorldGuardPlugin) plugin;
}
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (getWorldGuard() == null)
{
msg("WorldGuard is not installed.", ChatColor.GRAY);
return true;
}
if (args.length != 1)
{
return false;
}
World world = server.getWorld(args[0]);
if (world == null)
{
msg("World : \"" + args[0] + "\" not found.", ChatColor.GRAY);
return true;
}
if (world.equals(plugin.wm.adminworld.getWorld()) && !plugin.rm.getRank(sender).isAtLeast(Rank.SENIOR_ADMIN))
{
msg("You do not have permission to wipe adminworld.", ChatColor.RED);
return true;
}
RegionContainer container = getWorldGuard().getRegionContainer();
RegionManager rm = container.get(world);
if (rm != null)
{
Map<String, ProtectedRegion> regions = rm.getRegions();
for (ProtectedRegion region : regions.values())
{
rm.removeRegion(region.getId());
}
FUtil.adminAction(sender.getName(), "Wiping regions for world: " + world.getName(), true);
return true;
}
else
{
msg(ChatColor.RED + "No regions have been found for world: \"" + world.getName() + "\".");
return true;
}
}
}

View File

@ -1,8 +1,12 @@
package me.totalfreedom.totalfreedommod.command; package me.totalfreedom.totalfreedommod.command;
import java.io.File; import java.io.File;
import java.util.List;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.Bukkit;
import static org.bukkit.Bukkit.getServer;
import org.bukkit.World;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -21,11 +25,24 @@ public class Command_wipeuserdata extends FreedomCommand
return true; return true;
} }
FUtil.adminAction(sender.getName(), "Wiping Essentials playerdata", true); FUtil.adminAction(sender.getName(), "Wiping Essentials and Worlds playerdata", true);
for (World w : Bukkit.getWorlds())
{
if (w.getName().equals(plugin.wm.adminworld.getWorld()))
{
return true;
}
FUtil.deleteFolder(new File(server.getPluginManager().getPlugin("Essentials").getDataFolder(), "userdata")); FUtil.deleteFolder(new File(server.getPluginManager().getPlugin("Essentials").getDataFolder(), "userdata"));
FUtil.deleteFolder(new File(Bukkit.getServer().getWorld(plugin.wm.flatlands.getName()).getWorldFolder().getName() + "playerdata"));
FUtil.deleteFolder(new File(Bukkit.getServer().getWorld(plugin.wm.flatlands.getName()).getWorldFolder().getName() + "stats"));
FUtil.deleteFolder(new File(Bukkit.getServer().getWorld(w.getName()).getWorldFolder().getName() + "stats"));
FUtil.deleteFolder(new File(Bukkit.getServer().getWorld(w.getName()).getWorldFolder().getName() + "playerdata"));
msg("All playerdata deleted."); msg("All playerdata deleted.");
return true; return true;
} }
return false;
}
} }

View File

@ -0,0 +1,35 @@
package me.totalfreedom.totalfreedommod.command;
import java.io.File;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
@CommandParameters(description = "Removes essentials warps", usage = "/<command>")
public class Command_wipewarps extends FreedomCommand
{
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (!server.getPluginManager().isPluginEnabled("Essentials"))
{
msg("Essentials is not enabled on this server");
return true;
}
FUtil.adminAction(sender.getName(), "Wiping Essentials Warps", true);
FUtil.deleteFolder(new File(server.getPluginManager().getPlugin("Essentials").getDataFolder(), "warps"));
server.dispatchCommand(sender, "plc reload essentials");
msg("All warps deleted.");
return true;
}
}

View File

@ -134,6 +134,11 @@ public abstract class FreedomCommand extends AbstractCommandBase<TotalFreedomMod
msg(sender, message, ChatColor.GRAY); msg(sender, message, ChatColor.GRAY);
} }
public CommandParameters getParams()
{
return this.params;
}
protected void msg(final String message) protected void msg(final String message)
{ {
msg(sender, message); msg(sender, message);
@ -159,6 +164,11 @@ public abstract class FreedomCommand extends AbstractCommandBase<TotalFreedomMod
return plugin.pl.getData(player); return plugin.pl.getData(player);
} }
public CommandPermissions getPerms()
{
return this.perms;
}
public static FreedomCommand getFrom(Command command) public static FreedomCommand getFrom(Command command)
{ {
try try

View File

@ -45,6 +45,14 @@ public class FUtil
public static final List<ChatColor> CHAT_COLOR_POOL; public static final List<ChatColor> CHAT_COLOR_POOL;
public static final List<ChatColor> CHAT_RAINBOW; public static final List<ChatColor> CHAT_RAINBOW;
private static Iterator<ChatColor> color; private static Iterator<ChatColor> color;
private static final ChatColor[] BLOCKED = new ChatColor[]
{
ChatColor.MAGIC,
ChatColor.STRIKETHROUGH,
ChatColor.ITALIC,
ChatColor.UNDERLINE,
ChatColor.BLACK
};
static { static {
RANDOM = new Random(); RANDOM = new Random();
@ -64,6 +72,7 @@ public class FUtil
} }
FUtil.color = FUtil.CHAT_RAINBOW.iterator(); FUtil.color = FUtil.CHAT_RAINBOW.iterator();
} }
private static final Pattern REGEX = Pattern.compile(ChatColor.COLOR_CHAR + "[" + StringUtils.join(BLOCKED, "") + "]", Pattern.CASE_INSENSITIVE);
private FUtil() private FUtil()
@ -389,6 +398,22 @@ private FUtil()
return ChatColor.translateAlternateColorCodes('&', string); return ChatColor.translateAlternateColorCodes('&', string);
} }
public static String StrictColorize(String string)
{
String string2 = ChatColor.translateAlternateColorCodes('&', string);
final Matcher matcher = REGEX.matcher(string2);
if (matcher.find())
{
final String filteredcolorize = matcher.replaceAll("&");
if(matcher.find(REGEX.matcher(ChatColor.BLACK)))
return filteredcolorize;
}
else
{
return string2;
}
}
public static Date getUnixDate(long unix) public static Date getUnixDate(long unix)
{ {
return new Date(unix * 1000); return new Date(unix * 1000);