1. Remove marco from dev
2. Add namehistory
3. Fix grammar issues
4. Actually use CoreProtect bridge to rollback players
5.  Improve automatic wiper
This commit is contained in:
Lemon
2017-10-13 23:35:11 +05:00
committed by GitHub
parent 3c09bc7995
commit ed2f15cc54
38 changed files with 1562 additions and 461 deletions

View File

@ -10,4 +10,4 @@ public class CommandFailException extends RuntimeException
super(message);
}
}
}

View File

@ -42,4 +42,4 @@ public class CommandLoader extends FreedomService
handler.clearCommands();
}
}
}

View File

@ -12,4 +12,4 @@ public @interface CommandParameters
String usage();
String aliases() default ""; // "alias1,alias2,alias3" - no spaces
}
}

View File

@ -13,4 +13,4 @@ public @interface CommandPermissions
SourceType source();
boolean blockHostConsole() default false;
}
}

View File

@ -11,7 +11,8 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.OP, source = SourceType.BOTH)
@CommandParameters(description = "Go to the AdminWorld.",
usage = "/<command> [guest < list | purge | add <player> | remove <player> > | time <morning | noon | evening | night> | weather <off | on | storm>]")
usage = "/<command> [guest < list | purge | add <player> | remove <player> > | time <morning | noon | evening | night> | weather <off | on | storm>]",
aliases = "aw")
public class Command_adminworld extends FreedomCommand
{

View File

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

View File

@ -0,0 +1,109 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import java.util.Iterator;
import org.bukkit.ChatColor;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.ArrayUtils;
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.SUPER_ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Blocks all block placing for player with brute force.", usage = "/<command> [[-s] <player> [reason] | list | purge | all]", aliases = "editmute")
public class Command_blockedit extends FreedomCommand
{
public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, String[] args, final boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
if (args[0].equals("list")) {
this.msg("Block edits blocked for players:");
int count = 0;
for (final Player mp : this.server.getOnlinePlayers()) {
final FPlayer info = ((TotalFreedomMod)this.plugin).pl.getPlayer(mp);
if (info.isEditBlock()) {
this.msg("- " + mp.getName());
++count;
}
}
if (count == 0) {
this.msg("- none");
}
return true;
}
if (args[0].equals("purge")) {
FUtil.adminAction(sender.getName(), "Unblocking block edits for all players.", true);
int count = 0;
for (final Player mp : this.server.getOnlinePlayers()) {
final FPlayer info = ((TotalFreedomMod)this.plugin).pl.getPlayer(mp);
if (info.isEditBlock()) {
info.setEditBlocked(false);
++count;
}
}
this.msg("Unblocked all block edit for " + count + " players.");
return true;
}
if (args[0].equals("all")) {
FUtil.adminAction(sender.getName(), "Blocking block edits for all non-admins.", true);
int counter = 0;
for (final Player player : this.server.getOnlinePlayers()) {
if (!((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player)) {
final FPlayer playerdata = ((TotalFreedomMod)this.plugin).pl.getPlayer(player);
playerdata.setEditBlocked(true);
++counter;
}
}
this.msg("Blocked block edits for " + counter + " players.");
return true;
}
final boolean smite = args[0].equals("-s");
if (smite) {
args = (String[])ArrayUtils.subarray((Object[])args, 1, args.length);
if (args.length < 1) {
return false;
}
}
final Player player2 = this.getPlayer(args[0]);
if (player2 == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
String reason = null;
if (args.length > 1) {
reason = StringUtils.join((Object[])args, " ", 1, args.length);
}
final FPlayer playerdata2 = ((TotalFreedomMod)this.plugin).pl.getPlayer(player2);
if (playerdata2.isEditBlock()) {
FUtil.adminAction(sender.getName(), "Unblocking block edits for " + player2.getName(), true);
playerdata2.setEditBlocked(false);
this.msg("Unblocking block edits for " + player2.getName());
this.msg((CommandSender)player2, "Your block edits have been unblocked.", ChatColor.RED);
}
else {
if (((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player2)) {
this.msg(player2.getName() + " is an admin, and cannot have their block edits blocked.");
return true;
}
FUtil.adminAction(sender.getName(), "Blocking block edits for " + player2.getName(), true);
playerdata2.setEditBlocked(true);
if (smite) {
Command_smite.smite(player2, sender);
}
if (reason != null) {
this.msg((CommandSender)player2, "Your block edits have been blocked. Reason: " + reason, ChatColor.RED);
}
else {
this.msg((CommandSender)player2, "Your block edits have been blocked.", ChatColor.RED);
}
this.msg("Blocked all block edits for " + player2.getName());
}
return true;
}
}

View File

@ -0,0 +1,109 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import java.util.Iterator;
import org.bukkit.ChatColor;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.ArrayUtils;
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.SUPER_ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Toggle PVP mode for players.", usage = "/<command> [[-s] <player> [reason] | list | purge | all]", aliases = "pvpblock,pvpmode,pvpman,pvman")
public class Command_blockpvp extends FreedomCommand
{
public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, String[] args, final boolean senderIsConsole) {
if (args.length == 0) {
return false;
}
if (args[0].equals("list")) {
this.msg("PVP is blocked for players:");
int count = 0;
for (final Player mp : this.server.getOnlinePlayers()) {
final FPlayer info = ((TotalFreedomMod)this.plugin).pl.getPlayer(mp);
if (info.isPVPBlock()) {
this.msg("- " + mp.getName());
++count;
}
}
if (count == 0) {
this.msg("- none");
}
return true;
}
if (args[0].equals("purge")) {
FUtil.adminAction(sender.getName(), "Enabling PVP for all players.", true);
int count = 0;
for (final Player mp : this.server.getOnlinePlayers()) {
final FPlayer info = ((TotalFreedomMod)this.plugin).pl.getPlayer(mp);
if (info.isPVPBlock()) {
info.setPVPBlock(false);
++count;
}
}
this.msg("Enabled PVP for " + count + " players.");
return true;
}
if (args[0].equals("all")) {
FUtil.adminAction(sender.getName(), "Disabling PVP for all non-admins", true);
int counter = 0;
for (final Player player : this.server.getOnlinePlayers()) {
if (!((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player)) {
final FPlayer playerdata = ((TotalFreedomMod)this.plugin).pl.getPlayer(player);
playerdata.setPVPBlock(true);
++counter;
}
}
this.msg("Disabling PVP for " + counter + " players.");
return true;
}
final boolean smite = args[0].equals("-s");
if (smite) {
args = (String[])ArrayUtils.subarray((Object[])args, 1, args.length);
if (args.length < 1) {
return false;
}
}
final Player player2 = this.getPlayer(args[0]);
if (player2 == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
String reason = null;
if (args.length > 1) {
reason = StringUtils.join((Object[])args, " ", 1, args.length);
}
final FPlayer playerdata2 = ((TotalFreedomMod)this.plugin).pl.getPlayer(player2);
if (playerdata2.isPVPBlock()) {
FUtil.adminAction(sender.getName(), "Enabling PVP for " + player2.getName(), true);
playerdata2.setPVPBlock(false);
this.msg("Enabling PVP for " + player2.getName());
this.msg((CommandSender)player2, "Your PVP have been enabled.", ChatColor.GREEN);
}
else {
if (((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player2)) {
this.msg(player2.getName() + " is an admin, and his PVP cannot be disabled.");
return true;
}
FUtil.adminAction(sender.getName(), "Disabling PVP for " + player2.getName(), true);
playerdata2.setPVPBlock(true);
if (smite) {
Command_smite.smite(player2, sender);
}
if (reason != null) {
this.msg((CommandSender)player2, "Your PVP has been disabled. Reason: " + reason, ChatColor.RED);
}
else {
this.msg((CommandSender)player2, "Your PVP has been disabled.", ChatColor.RED);
}
this.msg("Disabled PVP for " + player2.getName());
}
return true;
}
}

View File

@ -0,0 +1,42 @@
package me.totalfreedom.totalfreedommod.command;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;
import me.totalfreedom.totalfreedommod.util.FUtil;
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
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 = "Blocks redstone on the server.", usage = "/<command>", aliases = "bre")
public class Command_blockredstone extends FreedomCommand
{
public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole)
{
if (ConfigEntry.ALLOW_REDSTONE.getBoolean())
{
ConfigEntry.ALLOW_REDSTONE.setBoolean(false);
FUtil.adminAction(sender.getName(), "Blocking all redstone", true);
new BukkitRunnable()
{
public void run()
{
if (!ConfigEntry.ALLOW_REDSTONE.getBoolean())
{
FUtil.adminAction("TotalFreedom", "Unblocking all redstone", false);
ConfigEntry.ALLOW_REDSTONE.setBoolean(true);
}
}
}.runTaskLater((Plugin) this.plugin, 6000L);
}
else
{
ConfigEntry.ALLOW_REDSTONE.setBoolean(true);
FUtil.adminAction(sender.getName(), "Unblocking all redstone", true);
}
return true;
}
}

View File

@ -1,8 +1,10 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
@ -11,100 +13,77 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Place a cage around someone.", usage = "/<command> <purge | off | <partialname> [outermaterial] [innermaterial]>")
@CommandParameters(description = "Place a cage around someone.", usage = "/<command> <purge | off | <partialname> [skull | block] [blockname | skullname]")
public class Command_cage extends FreedomCommand
{
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length == 0)
{
public static String playerSkullName;
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) {
return false;
}
if ("off".equals(args[0]) && sender instanceof Player)
{
if ("off".equals(args[0]) && sender instanceof Player) {
FUtil.adminAction(sender.getName(), "Uncaging " + sender.getName(), true);
FPlayer playerdata = plugin.pl.getPlayer(playerSender);
final FPlayer playerdata = ((TotalFreedomMod)this.plugin).pl.getPlayer(playerSender);
playerdata.getCageData().setCaged(false);
return true;
}
else if ("purge".equals(args[0]))
{
if ("purge".equals(args[0])) {
FUtil.adminAction(sender.getName(), "Uncaging all players", true);
for (Player player : server.getOnlinePlayers())
{
FPlayer playerdata = plugin.pl.getPlayer(player);
playerdata.getCageData().setCaged(false);
for (final Player player : this.server.getOnlinePlayers()) {
final FPlayer playerdata2 = ((TotalFreedomMod)this.plugin).pl.getPlayer(player);
playerdata2.getCageData().setCaged(false);
}
return true;
}
final Player player = getPlayer(args[0]);
if (player == null)
{
final Player player2 = this.getPlayer(args[0]);
if (player2 == null) {
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
return true;
}
FPlayer playerdata = plugin.pl.getPlayer(player);
final FPlayer playerdata3 = ((TotalFreedomMod)this.plugin).pl.getPlayer(player2);
Material outerMaterial = Material.GLASS;
Material innerMaterial = Material.AIR;
if (args.length >= 2)
{
if ("off".equals(args[1]))
{
FUtil.adminAction(sender.getName(), "Uncaging " + player.getName(), true);
playerdata.getCageData().setCaged(false);
return true;
}
else
{
if ("darth".equalsIgnoreCase(args[1]))
{
outerMaterial = Material.SKULL;
if (args.length >= 2 && null != args[1]) {
final String s = args[1];
switch (s) {
case "off": {
FUtil.adminAction(sender.getName(), "Uncaging " + player2.getName(), true);
playerdata3.getCageData().setCaged(false);
return true;
}
else if (Material.matchMaterial(args[1]) != null)
{
outerMaterial = Material.matchMaterial(args[1]);
case "skull": {
outerMaterial = Material.SKULL;
Command_cage.playerSkullName = args[2];
break;
}
case "block": {
if (Material.matchMaterial(args[2]) != null) {
outerMaterial = Material.matchMaterial(args[2]);
break;
}
sender.sendMessage(ChatColor.RED + "Invalid block!");
break;
}
}
}
if (args.length >= 3)
{
if (args[2].equalsIgnoreCase("water"))
{
if (args.length >= 3) {
if (args[2].equalsIgnoreCase("water")) {
innerMaterial = Material.STATIONARY_WATER;
}
else if (args[2].equalsIgnoreCase("lava"))
{
else if (args[2].equalsIgnoreCase("lava")) {
innerMaterial = Material.STATIONARY_LAVA;
}
}
Location targetPos = player.getLocation().clone().add(0, 1, 0);
playerdata.getCageData().cage(targetPos, outerMaterial, innerMaterial);
player.setGameMode(GameMode.SURVIVAL);
if (outerMaterial != Material.SKULL)
{
FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true);
final Location targetPos = player2.getLocation().clone().add(0.0, 1.0, 0.0);
playerdata3.getCageData().cage(targetPos, outerMaterial, innerMaterial);
player2.setGameMode(GameMode.SURVIVAL);
if (outerMaterial != Material.SKULL) {
FUtil.adminAction(sender.getName(), "Caging " + player2.getName(), true);
}
else
{
FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in PURE_DARTH", true);
else {
FUtil.adminAction(sender.getName(), "Caging " + player2.getName() + " in " + Command_cage.playerSkullName, true);
}
return true;
}
}

View File

@ -1,54 +1,49 @@
package me.totalfreedom.totalfreedommod.command;
import java.util.Random;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import java.util.Iterator;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.Achievement;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.Material;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.command.Command;
import org.bukkit.entity.Player;
import org.bukkit.command.CommandSender;
import java.util.Random;
import me.totalfreedom.totalfreedommod.rank.Rank;
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "For the people that are still alive.", usage = "/<command>")
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, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
private final Random random;
public Command_cake() {
this.random = new Random();
}
public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole) {
final StringBuilder output = new StringBuilder();
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(" ");
final String[] split;
final String[] words = split = "But there's no sense crying over every mistake. You just keep on trying till you run out of cake.".split(" ");
for (final String word : split) {
output.append(FUtil.rainbowChatColor()).append(word).append(" ");
}
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());
heldItemMeta.setDisplayName(ChatColor.WHITE + "The " + ChatColor.DARK_GRAY + "Lie");
heldItem.setItemMeta(heldItemMeta);
for (final Player player : server.getOnlinePlayers())
{
for (final Player player : this.server.getOnlinePlayers()) {
final int firstEmpty = player.getInventory().firstEmpty();
if (firstEmpty >= 0)
{
if (firstEmpty >= 0) {
player.getInventory().setItem(firstEmpty, heldItem);
}
player.awardAchievement(Achievement.BAKE_CAKE);
}
FUtil.bcastMsg(output.toString());
return true;
}
}

View File

@ -0,0 +1,24 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.rank.Rank;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Spy on Chest Movements", usage = "/<command>", aliases = "chspy")
public class Command_chestspy extends FreedomCommand
{
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
FPlayer playerdata = plugin.pl.getPlayer(playerSender);
playerdata.setChestMonitor(!playerdata.ChestMonitorEnabled());
msg("ChestSpy " + (playerdata.ChestMonitorEnabled()? "enabled." : "disabled."));
return true;
}
}

View File

@ -1,6 +1,7 @@
package me.totalfreedom.totalfreedommod.command;
//import me.libraryaddict.disguise.DisallowedDisguises;
import me.libraryaddict.disguise.DisallowedDisguises;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.command.Command;
@ -15,7 +16,7 @@ public class Command_disguisetoggle extends FreedomCommand
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{/*
{
if (!plugin.ldb.isPluginEnabled())
{
msg(ChatColor.RED + "LibsDisguises is not enabled.");
@ -23,7 +24,7 @@ public class Command_disguisetoggle extends FreedomCommand
}
FUtil.adminAction(sender.getName(), (DisallowedDisguises.disabled ? "Enabling" : "Disabling") + " " +
"Disguises", false);
"disguises.", false);
if (plugin.ldb.isDisguisesEnabled())
{
@ -38,10 +39,5 @@ public class Command_disguisetoggle extends FreedomCommand
msg("Disguises are now " + (!DisallowedDisguises.disabled ? "enabled." : "disabled."));
return true;
*/
msg("This command has been disabled for technical reasons. Contact a developer for additional information.");
return true;
}
}

View File

@ -83,7 +83,7 @@ public class Command_doom extends FreedomCommand
public void run()
{
// strike lightning
player.getWorld().strikeLightning(player.getLocation());
player.getWorld().strikeLightningEffect(player.getLocation());
// kill (if not done already)
player.setHealth(0.0);

View File

@ -0,0 +1,24 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.rank.Rank;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Spy on Dropped Items", usage = "/<command>", aliases = "dropspy")
public class Command_dropspy extends FreedomCommand
{
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
FPlayer playerdata = plugin.pl.getPlayer(playerSender);
playerdata.setDropMonitor(!playerdata.DropMonitorEnabled());
msg("DropSpy " + (playerdata.DropMonitorEnabled() ? "enabled." : "disabled."));
return true;
}
}

View File

@ -198,7 +198,7 @@ public class Command_gadmin extends FreedomCommand
}
case SMITE:
{
Command_smite.smite(target);
Command_smite.smite(target, sender);
break;
}

View File

@ -11,8 +11,10 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH, blockHostConsole = true)
@CommandParameters(description = "Bans or unbans any player, even those who are not logged in anymore.", usage = "/<command> <purge | ban <username> [reason] | unban <username>>")
@CommandParameters(description = "Bans or unbans any player, even those who are not logged in anymore.", usage = "/<command> <ban <username> [reason] | unban <username> | banip <ip> <reason> | unbanip <ip> | nameban <name> | unbanname <name>>")
public class Command_glist extends FreedomCommand
{
@ -38,78 +40,158 @@ public class Command_glist extends FreedomCommand
return false;
}
if (args.length < 2)
{
return false;
}
String username;
final List<String> ips = new ArrayList<>();
final Player player = getPlayer(args[1]);
if (player == null)
{
final PlayerData entry = plugin.pl.getData(args[1]);
if (entry == null)
{
msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
return true;
}
username = entry.getUsername();
ips.addAll(entry.getIps());
}
else
{
final PlayerData entry = plugin.pl.getData(player);
username = player.getName();
ips.addAll(entry.getIps());
}
if ("ban".equals(args[0]))
{
FUtil.adminAction(sender.getName(), "Banning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
final String reason = args.length > 2 ? StringUtils.join(args, " ", 2, args.length) : null;
Ban ban = Ban.forPlayerName(username, sender, null, reason);
for (String ip : ips)
{
ban.addIp(ip);
ban.addIp(FUtil.getFuzzyIp(ip));
}
plugin.bm.addBan(ban);
if (player != null)
{
player.kickPlayer(ban.bakeKickMessage());
}
return true;
}
if ("unban".equals(args[0]))
{
FUtil.adminAction(sender.getName(), "Unbanning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
plugin.bm.removeBan(plugin.bm.getByUsername(username));
for (String ip : ips)
{
Ban ban = plugin.bm.getByIp(ip);
if (ban != null)
if (args.length < 2)
{
plugin.bm.removeBan(ban);
return false;
}
ban = plugin.bm.getByIp(FUtil.getFuzzyIp(ip));
if (ban != null)
String username = null;
final List<String> ips = new ArrayList<>();
boolean usingIp = false;
String banIp = null;
if (args[1].matches("^([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))$") || args[1].matches("^([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\\.([*])\\.([*])$"))
{
plugin.bm.removeBan(ban);
usingIp = true;
banIp = args[1];
}
final Player player = getPlayer(args[1]);
if (!usingIp)
{
if (player == null)
{
final PlayerData entry = plugin.pl.getData(args[1]);
if (entry == null)
{
msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
return true;
}
username = entry.getUsername();
ips.addAll(entry.getIps());
}
else
{
final PlayerData entry = plugin.pl.getData(player);
username = entry.getUsername();
ips.addAll(entry.getIps());
}
}
switch (args[0])
{
case "ban":
case "gtfo":
if (usingIp)
{
msg("Please specify a player, not an ip.");
return true;
}
final String playerBanReason = args.length > 2 ? StringUtils.join(args, " ", 2, args.length) : null;
Ban playerBan = Ban.forPlayerName(username, sender, null, playerBanReason);
for (String ip : ips)
{
playerBan.addIp(ip);
playerBan.addIp(FUtil.getFuzzyIp(ip));
}
FUtil.adminAction(sender.getName(), "Banning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
plugin.bm.addBan(playerBan);
if (player != null)
{
player.kickPlayer(playerBan.bakeKickMessage());
}
return true;
case "unban":
case "pardon":
if (usingIp)
{
msg("Please specify a player, not an ip.");
return true;
}
FUtil.adminAction(sender.getName(), "Unbanning " + username + " and IPs: " + StringUtils.join(ips, ", "), true);
plugin.bm.removeBan(plugin.bm.getByUsername(username));
for (String ip : ips)
{
Ban playerUnban = plugin.bm.getByIp(ip);
if (playerUnban != null)
{
plugin.bm.removeBan(playerUnban);
}
playerUnban = plugin.bm.getByIp(FUtil.getFuzzyIp(ip));
if (playerUnban != null)
{
plugin.bm.removeBan(playerUnban);
}
}
return true;
case "nameban":
case "banname":
if (usingIp)
{
msg("Please specify a name, not an ip.");
return true;
}
final String nameBanReason = args.length > 2 ? StringUtils.join(args, " ", 2, args.length) : null;
Ban nameBan = Ban.forPlayerName(username, sender, null, nameBanReason);
FUtil.adminAction(sender.getName(), "Banning IGN: " + username, true);
plugin.bm.addBan(nameBan);
if (player != null)
{
player.kickPlayer(nameBan.bakeKickMessage());
}
return true;
case "unbanname":
case "nameunban":
if (usingIp)
{
msg("Please specify a name, not an ip.");
return true;
}
FUtil.adminAction(sender.getName(), "Unbanning IGN: " + username, true);
plugin.bm.removeBan(plugin.bm.getByUsername(username));
return true;
case "banip":
case "ipban":
if (!usingIp)
{
msg("Please specify an IP.");
return true;
}
final String ipBanReason = args.length > 2 ? StringUtils.join(args, " ", 2, args.length) : null;
Ban ipBan = Ban.forPlayerIp(banIp, sender, null, ipBanReason);
plugin.bm.addBan(ipBan);
FUtil.adminAction(sender.getName(), "Banning IP: " + banIp, true);
return true;
case "unbanip":
case "pardonip":
if (!usingIp)
{
msg("Please specify an IP.");
return true;
}
FUtil.adminAction(sender.getName(), "Unbanning IP: " + banIp, true);
Ban ipUnban = plugin.bm.getByIp(banIp);
if (ipUnban != null)
{
plugin.bm.removeBan(ipUnban);
plugin.bm.unbanIp(banIp);
}
ipUnban = plugin.bm.getByIp(FUtil.getFuzzyIp(banIp));
if (ipUnban != null)
{
plugin.bm.removeBan(ipUnban);
plugin.bm.unbanIp(banIp);
}
return true;
default:
return false;
}
}
return true;
}
return false;
}
}

View File

@ -6,6 +6,7 @@ import me.totalfreedom.totalfreedommod.util.FUtil;
import net.pravian.aero.util.Ips;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import static org.bukkit.Bukkit.getServer;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Location;
@ -21,7 +22,6 @@ public class Command_gtfo extends FreedomCommand
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length == 0)
{
return false;
@ -43,17 +43,26 @@ public class Command_gtfo extends FreedomCommand
FUtil.bcastMsg(player.getName() + " has been a VERY naughty, naughty boy.", ChatColor.RED);
// Undo WorldEdits
try
//checks if there is CoreProtect loaded and installed , if not it skips the rollback and uses coreprotect directly
if (!getServer().getPluginManager().isPluginEnabled("CoreProtect"))
{
plugin.web.undo(player, 15);
}
catch (NoClassDefFoundError ex)
{
}
// Undo WorldEdits
try
{
plugin.web.undo(player, 15);
}
catch (NoClassDefFoundError ex)
{
}
// Rollback
plugin.rb.rollback(player.getName());
// Rollback
plugin.rb.rollback(player.getName());
}
else
{
plugin.cpb.rollback(player.getName());
}
// Deop
player.setOp(false);
@ -71,7 +80,7 @@ public class Command_gtfo extends FreedomCommand
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);
targetPos.getWorld().strikeLightningEffect(strike_pos);
}
}
@ -86,16 +95,19 @@ public class Command_gtfo extends FreedomCommand
.append(ip);
if (reason != null)
{
bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason);
bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(FUtil.colorize(reason));
}
FUtil.bcastMsg(bcast.toString());
// Ban player
plugin.bm.addBan(Ban.forPlayerFuzzy(player, sender, null, reason));
// Kill player
player.setHealth(0.0);
// Kick player
player.kickPlayer(ChatColor.RED + "GTFO");
return true;
}
}
}

View File

@ -11,7 +11,7 @@ import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Shows (and optionally clears) invisisible players", usage = "/<command> [clear]")
@CommandParameters(description = "Shows (optionally clears) invisisible players", usage = "/<command> (clear)")
public class Command_invis extends FreedomCommand
{
@ -19,11 +19,12 @@ public class Command_invis extends FreedomCommand
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
boolean clear = false;
if (args.length >= 1)
{
if (args[0].equalsIgnoreCase("clear"))
{
FUtil.adminAction(sender.getName(), "Clearing invisibility for all players", false);
FUtil.adminAction(sender.getName(), "Clearing all invis potion effect from all players", true);
clear = true;
}
else
@ -32,7 +33,7 @@ public class Command_invis extends FreedomCommand
}
}
List<String> players = new ArrayList<>();
List<String> players = new ArrayList<String>();
int clears = 0;
for (Player player : server.getOnlinePlayers())
@ -42,7 +43,7 @@ public class Command_invis extends FreedomCommand
players.add(player.getName());
if (clear && !plugin.al.isAdmin(player))
{
player.removePotionEffect(PotionEffectType.INVISIBILITY);
player.removePotionEffect((PotionEffectType.INVISIBILITY));
clears++;
}
}
@ -50,17 +51,16 @@ public class Command_invis extends FreedomCommand
if (players.isEmpty())
{
msg("There are no invisible players");
sender.sendMessage("There are no invisible players");
return true;
}
if (clear)
{
msg("Cleared invisibility effect from " + clears + " players");
sender.sendMessage("Cleared " + clears + " players");
}
else
{
msg("Invisible players (" + players.size() + "): " + StringUtils.join(players, ", "));
sender.sendMessage("Invisible players (" + players.size() + "): " + StringUtils.join(players, ", "));
}
return true;

View File

@ -0,0 +1,54 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.rank.Rank;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = " Look into another player's inventory, optionally take items out.", usage = "/<command> <player>", aliases = "inv,insee")
public class Command_invsee extends FreedomCommand
{
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length != 1)
{
msg("You need to specify a player.");
return false;
}
Player player = getPlayer(args[0]);
if (player == null)
{
msg("This player is not online.");
return false;
}
if (playerSender == player)
{
msg("You cannot invsee yourself.");
return true;
}
if (plugin.al.isAdmin(player) && !plugin.al.isAdmin(playerSender))
{
msg("You can't spy on admins!");
return true;
}
playerSender.closeInventory();
FPlayer fPlayer = plugin.pl.getPlayer(playerSender);
fPlayer.setInvsee(true);
Inventory playerInv = player.getInventory();
playerSender.openInventory(playerInv);
return true;
}
}

View File

@ -1,120 +1,119 @@
package me.totalfreedom.totalfreedommod.command;
import java.util.ArrayList;
import me.totalfreedom.totalfreedommod.rank.Displayable;
import java.util.Iterator;
import java.util.List;
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.rank.Displayable;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang3.StringUtils;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.command.CommandSender;
import me.totalfreedom.totalfreedommod.rank.Rank;
@CommandPermissions(level = Rank.IMPOSTOR, source = SourceType.BOTH)
@CommandParameters(description = "Lists the real names of all online players.", usage = "/<command> [-a | -i | -f]", aliases = "who")
public class Command_list extends FreedomCommand
{
private static enum ListFilter
{
PLAYERS,
ADMINS,
FAMOUS_PLAYERS,
IMPOSTORS;
}
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length > 1)
{
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 (FUtil.isFromHostConsole(sender.getName()))
{
final List<String> names = new ArrayList<>();
for (Player player : server.getOnlinePlayers())
{
if (FUtil.isFromHostConsole(sender.getName())) {
final List<String> names = new ArrayList<String>();
for (final Player player : this.server.getOnlinePlayers()) {
names.add(player.getName());
}
msg("There are " + names.size() + "/" + server.getMaxPlayers() + " players online:\n" + StringUtils.join(names, ", "), ChatColor.WHITE);
this.msg("There are " + names.size() + "/" + this.server.getMaxPlayers() + " players online:\n" + StringUtils.join((Iterable)names, ", "), ChatColor.WHITE);
return true;
}
final ListFilter listFilter;
if (args.length == 1)
{
switch (args[0])
{
case "-a":
ListFilter listFilter = null;
if (args.length == 1) {
final String s = args[0];
switch (s) {
case "-a": {
listFilter = ListFilter.ADMINS;
break;
case "-i":
}
case "-v": {
listFilter = ListFilter.VANISHED_ADMINS;
break;
}
case "-i": {
listFilter = ListFilter.IMPOSTORS;
break;
case "-f":
}
case "-f": {
listFilter = ListFilter.FAMOUS_PLAYERS;
break;
default:
}
default: {
return false;
}
}
}
else
{
else {
listFilter = ListFilter.PLAYERS;
}
if (listFilter == ListFilter.VANISHED_ADMINS && !((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)playerSender)) {
this.msg("/list [-a | -i | -f ]", ChatColor.WHITE);
return true;
}
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("There are ").append(ChatColor.RED).append(this.server.getOnlinePlayers().size() - Command_vanish.vanished.size());
onlineStats.append(ChatColor.BLUE).append(" out of a maximum ").append(ChatColor.RED).append(this.server.getMaxPlayers());
onlineStats.append(ChatColor.BLUE).append(" players online.");
final List<String> names = new ArrayList<>();
for (Player player : server.getOnlinePlayers())
{
if (listFilter == ListFilter.ADMINS && !plugin.al.isAdmin(player))
{
final List<String> names2 = new ArrayList<String>();
for (final Player player2 : this.server.getOnlinePlayers()) {
if (listFilter == ListFilter.ADMINS && !((TotalFreedomMod)this.plugin).al.isAdmin((CommandSender)player2)) {
continue;
}
if (listFilter == ListFilter.IMPOSTORS && !plugin.al.isAdminImpostor(player))
{
if (listFilter == ListFilter.ADMINS && Command_vanish.vanished.contains(player2)) {
continue;
}
if (listFilter == ListFilter.FAMOUS_PLAYERS && !ConfigEntry.FAMOUS_PLAYERS.getList().contains(player.getName().toLowerCase()))
{
if (listFilter == ListFilter.VANISHED_ADMINS && !Command_vanish.vanished.contains(player2)) {
continue;
}
Displayable display = plugin.rm.getDisplay(player);
names.add(display.getColoredTag() + player.getName());
if (listFilter == ListFilter.IMPOSTORS && !((TotalFreedomMod)this.plugin).al.isAdminImpostor(player2)) {
continue;
}
if (listFilter == ListFilter.FAMOUS_PLAYERS && !ConfigEntry.FAMOUS_PLAYERS.getList().contains(player2.getName().toLowerCase())) {
continue;
}
if (listFilter == ListFilter.PLAYERS && Command_vanish.vanished.contains(player2)) {
continue;
}
final Displayable display = ((TotalFreedomMod)this.plugin).rm.getDisplay((CommandSender)player2);
names2.add(display.getColoredTag() + player2.getName());
}
String playerType = listFilter == null ? "players" : listFilter.toString().toLowerCase().replace('_', ' ');
final String playerType = (listFilter == null) ? "players" : listFilter.toString().toLowerCase().replace('_', ' ');
onlineUsers.append("Connected ");
onlineUsers.append(playerType + ": ");
onlineUsers.append(StringUtils.join(names, ChatColor.WHITE + ", "));
if (senderIsConsole)
{
onlineUsers.append(StringUtils.join((Iterable)names2, ChatColor.WHITE + ", "));
if (senderIsConsole) {
sender.sendMessage(ChatColor.stripColor(onlineStats.toString()));
sender.sendMessage(ChatColor.stripColor(onlineUsers.toString()));
}
else
{
else {
sender.sendMessage(onlineStats.toString());
sender.sendMessage(onlineUsers.toString());
}
names2.clear();
return true;
}
private enum ListFilter
{
PLAYERS,
ADMINS,
VANISHED_ADMINS,
FAMOUS_PLAYERS,
IMPOSTORS;
}
}

View File

@ -0,0 +1,24 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.rank.Rank;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.totalfreedom.totalfreedommod.util.History;
@CommandPermissions(level = Rank.SUPER_ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Check name history of username.", usage = "/<command> <username>")
public class Command_namehistory extends FreedomCommand
{
@Override
public boolean run(final CommandSender sender, final Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length != 1)
{
return false;
}
History.reportHistory(sender, args[0]);
return true;
}
}

View File

@ -1,6 +1,7 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FLog;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
@ -43,29 +44,27 @@ public class Command_onlinemode extends FreedomCommand
return false;
}
// try
// {
// plugin.si.setOnlineMode(onlineMode);
//
// if (onlineMode)
// {
// for (Player player : server.getOnlinePlayers())
// {
// player.kickPlayer("Server is activating \"online-mode=true\". Please reconnect.");
// }
// }
//
// FUtil.adminAction(sender.getName(), "Turning player validation " + (onlineMode ? "on" : "off") + ".", true);
//
// server.reload();
// }
// catch (Exception ex)
// {
// FLog.severe(ex);
// }
FUtil.adminAction(sender.getName(), "Online-Mode toggling is temporarily disabled.", true);
}
try
{
plugin.si.setOnlineMode(onlineMode);
if (onlineMode)
{
for (Player player : server.getOnlinePlayers())
{
player.kickPlayer("Server is activating \"online-mode=true\". Please reconnect.");
}
}
FUtil.adminAction(sender.getName(), "Turning player validation " + (onlineMode ? "on" : "off") + ".", true);
server.reload();
}
catch (Exception ex)
{
FLog.severe(ex);
}
}
return true;
}
}