Compare commits

..

52 Commits
v2.22 ... v3.0

Author SHA1 Message Date
fd372066eb Incremented version to 3.00 2013-08-14 17:39:51 +02:00
122bef2d5a DromedaryCase 2013-08-14 16:55:37 +02:00
339518f4f4 Take two: Cleanup 2013-08-14 16:01:42 +02:00
8ce0defb52 Readd Command_premium.java 2013-08-14 09:32:14 -04:00
ec6e8431e3 Revert "Added /premium"
This reverts commit 0964871e8b.
2013-08-14 09:28:19 -04:00
0964871e8b Added /premium
cleanup
2013-08-14 15:12:30 +02:00
422a7716f3 /nf tweaks. 2013-08-13 21:39:12 -04:00
f1ab8296e4 Tweaks to jumppad physics. 2013-08-13 16:54:20 -04:00
f9cbf11abb JumpPads cleanup 2013-08-13 14:53:33 -04:00
b0090a5412 More tweaks to nonuke and spam prevention. 2013-08-13 13:42:43 -04:00
b94efb525f Added timeout check to nonuke, so lag doesn't ban people. 2013-08-13 13:22:29 -04:00
5c8f98089e Merge branch 'master' into mg_untested 2013-08-13 12:29:12 -04:00
7879fa24e4 Minor changes to JumpPads 2013-08-13 18:21:37 +02:00
6fcaed6253 Finished Jumppads 2013-08-13 17:16:33 +02:00
656dbf8867 Started work on Jumppads 2013-08-13 16:08:00 +02:00
23032e6f9a Added NickFilter. 2013-08-13 09:51:20 -04:00
ad5a236bc2 PlayerMoveEvent optimization. 2013-08-13 08:36:33 -04:00
e23db244a5 Add teleport listener to AdminWorld monitor. 2013-08-12 22:01:28 -04:00
eb4622fc28 AdminWorld tweaks. 2013-08-12 21:33:21 -04:00
0f6b053727 Added /findip 2013-08-12 21:35:59 +02:00
259335958a Merge branch 'master' of https://github.com/TotalFreedom/TotalFreedomMod 2013-08-12 20:54:35 +02:00
31375b82c3 Tweaked /tag some more, I think this will work best. 2013-08-12 20:54:19 +02:00
0a2d5c8258 Reworked /dtoggle. 2013-08-12 14:49:33 -04:00
bac25258b0 Added /lockdown 2013-08-12 20:47:36 +02:00
c69918d725 Create Command_dtoggle
This is a replacement for DisdFreedom dtoggle, something we had to add on CJFreedom shortly after we lost his plugin :)
2013-08-12 19:28:41 +01:00
c1d0c01524 Merge branch 'master' of https://github.com/TotalFreedom/TotalFreedomMod 2013-08-12 14:19:33 -04:00
a59e6added Tweaks to Command_tag 2013-08-12 14:19:17 -04:00
56493adcae Merge pull request #67 from Wild1145/patch-4
Block Op's from using &k.
2013-08-12 10:59:52 -07:00
4b91de7414 More AdminWorld tweaks. 2013-08-12 12:51:30 -04:00
c636ee043a Merge branch 'mg_incomplete' of https://github.com/TotalFreedom/TotalFreedomMod into mg_incomplete 2013-08-12 12:41:12 -04:00
6a5306dd7a More AdminWorld tweaks. 2013-08-12 12:38:46 -04:00
4603dc5613 Block Op's from using bad codes
This will block a op from using a set of colour codes you to not want them to use, like &k
2013-08-12 17:10:08 +01:00
af7e6c5d41 AdminWorld welcome sign now facing the right direction :)
Added teleporting message to /adminworld
2013-08-12 17:58:28 +02:00
699d366efb Revert accidental change of this file. 2013-08-12 10:11:04 -04:00
41ed416a51 Merge branch 'master' into mg_incomplete 2013-08-12 10:05:01 -04:00
074630f720 Finished adminworld, still needs testing. 2013-08-12 10:03:12 -04:00
4e3c9a6b9e Batch format fix 2013-08-12 14:41:04 +02:00
bea480c1f1 Merge branch 'master' into mg_incomplete
Conflicts:
	appinfo.properties
	buildnumber.properties
2013-08-12 08:14:55 -04:00
69fd3566af Added /tag clearall and /tag clear <name> 2013-08-12 12:50:39 +02:00
f3ac19a616 Added /tag
Minor cleanup
2013-08-12 12:31:30 +02:00
696ec119c6 Made /saconfig clean a senior command 2013-08-12 11:24:23 +02:00
326c3f6a2b Incomplete features:
-Adminworld
-Better entity wiping
2013-08-11 22:02:18 -04:00
38b1035020 Added Command_trail.
+1 points for no external changes.
2013-08-10 15:50:45 -04:00
1ae6eb8a5a Consolidate loggers. 2013-08-10 15:50:07 -04:00
2c4eca8551 Remove deprecated methods and variables. 2013-08-10 13:17:32 -04:00
f23c61d0b3 Rework Command_health 2013-08-10 12:39:50 -04:00
c10e0deb8b Added formatting parameters to project configuration. 2013-08-09 20:17:08 -04:00
d4dfe06ec0 Formatting cleanup.
Added ignore for unchecked cast warning.
2013-08-09 20:11:17 -04:00
bcd9658b3d Added release link to permban kick message 2013-08-09 17:57:45 +02:00
9b62731e94 Merged branch unfinished 2013-08-09 17:11:30 +02:00
03553b6254 Finished TFM_ServiceChecker, added /services 2013-08-09 17:09:13 +02:00
5b34facdd3 Started work on ServiceChecker 2013-08-04 20:49:43 +02:00
95 changed files with 2100 additions and 898 deletions

View File

@ -1,6 +1,5 @@
#Fri, 09 Aug 2013 15:38:23 +0200 #Wed, 14 Aug 2013 15:57:37 +0200
program.VERSION=2.22
program.BUILDNUM=378
program.BUILDDATE=08/09/2013 03\:38 PM
program.VERSION=3.00
program.BUILDNUM=459
program.BUILDDATE=08/14/2013 03\:57 PM

View File

@ -1,3 +1,3 @@
#Build Number for ANT. Do not edit! #Build Number for ANT. Do not edit!
#Fri Aug 09 15:38:23 CEST 2013 #Wed Aug 14 15:57:37 CEST 2013
build.number=379 build.number=460

View File

@ -5,6 +5,22 @@ annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
application.title=TotalFreedomMod application.title=TotalFreedomMod
application.vendor=Michael application.vendor=Michael
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.expand-tabs=true
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.indent-shift-width=4
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.spaces-per-tab=4
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.tab-size=4
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-limit-width=0
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.project.text-line-wrap=none
auxiliary.org-netbeans-modules-editor-indent.CodeStyle.usedProfile=project
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.blankLinesAfterClassHeader=0
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.classDeclBracePlacement=NEW_LINE
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.enableCommentFormatting=false
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.methodDeclBracePlacement=NEW_LINE
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.otherBracePlacement=NEW_LINE
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeCatchOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeElseOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeFinallyOnNewLine=true
auxiliary.org-netbeans-modules-editor-indent.text.x-java.CodeStyle.project.placeWhileOnNewLine=true
build.classes.dir=${build.dir}/classes build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned: # This directory is removed when the project is cleaned:

View File

@ -1,4 +1,4 @@
# TotalFreedomMod v2.22 Configuration # TotalFreedomMod v3.00 Configuration
# by Madgeek1450 and DarthSalamon # by Madgeek1450 and DarthSalamon
# Block placement prevention: # Block placement prevention:
@ -135,3 +135,6 @@ pet_protect_enabled: true
# Logs Registration # Logs Registration
logs_register_password: logs_register_password:
logs_register_url: logs_register_url:
# Mojang service checker
service_checker_url: http://status.mojang.com/check

View File

@ -23,6 +23,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
@ -31,7 +32,7 @@ import org.bukkit.generator.ChunkGenerator;
public class CleanroomChunkGenerator extends ChunkGenerator public class CleanroomChunkGenerator extends ChunkGenerator
{ {
private Logger log = Logger.getLogger("Minecraft-Server"); private static final Logger log = Bukkit.getLogger();
private short[] layer; private short[] layer;
private byte[] layerDataValues; private byte[] layerDataValues;

View File

@ -29,11 +29,11 @@ public class Command_adminmode extends TFM_Command
{ {
TotalFreedomMod.adminOnlyMode = true; TotalFreedomMod.adminOnlyMode = true;
TFM_Util.adminAction(sender.getName(), "Closing the server to non-superadmins.", true); TFM_Util.adminAction(sender.getName(), "Closing the server to non-superadmins.", true);
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
p.kickPlayer("Server is now closed to non-superadmins."); player.kickPlayer("Server is now closed to non-superadmins.");
} }
} }
return true; return true;

View File

@ -0,0 +1,27 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_AdminWorld;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Go to the AdminWorld.", usage = "/<command>")
public class Command_adminworld extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (sender_p.getWorld() == TFM_AdminWorld.getInstance().getAdminWorld())
{
playerMsg("Going to the main world.");
sender_p.teleport(server.getWorlds().get(0).getSpawnLocation());
}
else
{
playerMsg("Going to the AdminWorld.");
TFM_AdminWorld.getInstance().sendToAdminWorld(sender_p);
}
return true;
}
}

View File

@ -23,9 +23,9 @@ public class Command_blockcmd extends TFM_Command
{ {
TFM_Util.adminAction(sender.getName(), "Unblocking commands for all players", true); TFM_Util.adminAction(sender.getName(), "Unblocking commands for all players", true);
int counter = 0; int counter = 0;
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
if (playerdata.allCommandsBlocked()) if (playerdata.allCommandsBlocked())
{ {
counter += 1; counter += 1;
@ -36,28 +36,28 @@ public class Command_blockcmd extends TFM_Command
return true; return true;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage()); playerMsg(ex.getMessage());
return true; return true;
} }
if (TFM_SuperadminList.isUserSuperadmin(p)) if (TFM_SuperadminList.isUserSuperadmin(player))
{ {
playerMsg(p.getName() + " is a Superadmin, and cannot have their commands blocked."); playerMsg(player.getName() + " is a Superadmin, and cannot have their commands blocked.");
return true; return true;
} }
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.setCommandsBlocked(!playerdata.allCommandsBlocked()); playerdata.setCommandsBlocked(!playerdata.allCommandsBlocked());
TFM_Util.adminAction(sender.getName(), (playerdata.allCommandsBlocked() ? "B" : "Unb") + "locking all commands for " + p.getName(), true); TFM_Util.adminAction(sender.getName(), (playerdata.allCommandsBlocked() ? "B" : "Unb") + "locking all commands for " + player.getName(), true);
playerMsg((playerdata.allCommandsBlocked() ? "B" : "Unb") + "locked all commands."); playerMsg((playerdata.allCommandsBlocked() ? "B" : "Unb") + "locked all commands.");
return true; return true;

View File

@ -21,18 +21,18 @@ public class Command_cage extends TFM_Command
return false; return false;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
sender.sendMessage(ex.getMessage()); sender.sendMessage(ex.getMessage());
return true; return true;
} }
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
Material cage_material_outer = Material.GLASS; Material cage_material_outer = Material.GLASS;
Material cage_material_inner = Material.AIR; Material cage_material_inner = Material.AIR;
@ -40,7 +40,7 @@ public class Command_cage extends TFM_Command
{ {
if (TFM_Util.isStopCommand(args[1])) if (TFM_Util.isStopCommand(args[1]))
{ {
TFM_Util.adminAction(sender.getName(), "Uncaging " + p.getName() + ".", true); TFM_Util.adminAction(sender.getName(), "Uncaging " + player.getName() + ".", true);
playerdata.setCaged(false); playerdata.setCaged(false);
playerdata.regenerateHistory(); playerdata.regenerateHistory();
@ -70,17 +70,17 @@ public class Command_cage extends TFM_Command
} }
} }
Location target_pos = p.getLocation().add(0, 1, 0); Location targetPos = player.getLocation().add(0, 1, 0);
playerdata.setCaged(true, target_pos, cage_material_outer, cage_material_inner); playerdata.setCaged(true, targetPos, cage_material_outer, cage_material_inner);
playerdata.regenerateHistory(); playerdata.regenerateHistory();
playerdata.clearHistory(); playerdata.clearHistory();
TFM_Util.buildHistory(target_pos, 2, playerdata); TFM_Util.buildHistory(targetPos, 2, playerdata);
TFM_Util.generateCube(target_pos, 2, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.OUTER)); TFM_Util.generateCube(targetPos, 2, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.OUTER));
TFM_Util.generateCube(target_pos, 1, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.INNER)); TFM_Util.generateCube(targetPos, 1, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.INNER));
p.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
TFM_Util.adminAction(sender.getName(), "Caging " + p.getName() + ".", true); TFM_Util.adminAction(sender.getName(), "Caging " + player.getName() + ".", true);
return true; return true;
} }

View File

@ -28,14 +28,14 @@ public class Command_cake extends TFM_Command
output.append(ChatColor.COLOR_CHAR).append(color_code).append(word).append(" "); output.append(ChatColor.COLOR_CHAR).append(color_code).append(word).append(" ");
} }
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
ItemStack heldItem = new ItemStack(Material.CAKE, 1); ItemStack heldItem = new ItemStack(Material.CAKE, 1);
p.getInventory().setItem(p.getInventory().firstEmpty(), heldItem); player.getInventory().setItem(player.getInventory().firstEmpty(), heldItem);
p.awardAchievement(Achievement.MINE_WOOD); player.awardAchievement(Achievement.MINE_WOOD);
p.awardAchievement(Achievement.BUILD_WORKBENCH); player.awardAchievement(Achievement.BUILD_WORKBENCH);
p.awardAchievement(Achievement.BUILD_HOE); player.awardAchievement(Achievement.BUILD_HOE);
p.awardAchievement(Achievement.BAKE_CAKE); player.awardAchievement(Achievement.BAKE_CAKE);
} }
TFM_Util.bcastMsg(output.toString()); TFM_Util.bcastMsg(output.toString());

View File

@ -13,15 +13,15 @@ public class Command_cartsit extends TFM_Command
@Override @Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{ {
Player target_player = sender_p; Player targetPlayer = sender_p;
if (args.length == 1) if (args.length == 1)
{ {
try try
{ {
target_player = getPlayer(args[0]); targetPlayer = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
sender.sendMessage(ex.getMessage()); sender.sendMessage(ex.getMessage());
return true; return true;
@ -30,26 +30,26 @@ public class Command_cartsit extends TFM_Command
if (senderIsConsole) if (senderIsConsole)
{ {
if (target_player == null) if (targetPlayer == null)
{ {
sender.sendMessage("When used from the console, you must define a target player: /cartsit <player>"); sender.sendMessage("When used from the console, you must define a target player: /cartsit <player>");
return true; return true;
} }
} }
else if (target_player != sender_p && !TFM_SuperadminList.isUserSuperadmin(sender)) else if (targetPlayer != sender_p && !TFM_SuperadminList.isUserSuperadmin(sender))
{ {
sender.sendMessage("Only superadmins can select another player as a /cartsit target."); sender.sendMessage("Only superadmins can select another player as a /cartsit target.");
return true; return true;
} }
if (target_player.isInsideVehicle()) if (targetPlayer.isInsideVehicle())
{ {
target_player.getVehicle().eject(); targetPlayer.getVehicle().eject();
} }
else else
{ {
Minecart nearest_cart = null; Minecart nearest_cart = null;
for (Minecart cart : target_player.getWorld().getEntitiesByClass(Minecart.class)) for (Minecart cart : targetPlayer.getWorld().getEntitiesByClass(Minecart.class))
{ {
if (cart.isEmpty()) if (cart.isEmpty())
{ {
@ -59,7 +59,7 @@ public class Command_cartsit extends TFM_Command
} }
else else
{ {
if (cart.getLocation().distanceSquared(target_player.getLocation()) < nearest_cart.getLocation().distanceSquared(target_player.getLocation())) if (cart.getLocation().distanceSquared(targetPlayer.getLocation()) < nearest_cart.getLocation().distanceSquared(targetPlayer.getLocation()))
{ {
nearest_cart = cart; nearest_cart = cart;
} }
@ -69,7 +69,7 @@ public class Command_cartsit extends TFM_Command
if (nearest_cart != null) if (nearest_cart != null)
{ {
nearest_cart.setPassenger(target_player); nearest_cart.setPassenger(targetPlayer);
} }
else else
{ {

View File

@ -21,11 +21,11 @@ public class Command_cmdlist extends TFM_Command
{ {
List<String> commands = new ArrayList<String>(); List<String> commands = new ArrayList<String>();
for (Plugin p : server.getPluginManager().getPlugins()) for (Plugin targetPlugin : server.getPluginManager().getPlugins())
{ {
try try
{ {
PluginDescriptionFile desc = p.getDescription(); PluginDescriptionFile desc = targetPlugin.getDescription();
Map<String, Map<String, Object>> map = (Map<String, Map<String, Object>>) desc.getCommands(); Map<String, Map<String, Object>> map = (Map<String, Map<String, Object>>) desc.getCommands();
if (map != null) if (map != null)

View File

@ -24,10 +24,10 @@ public class Command_creative extends TFM_Command
} }
} }
Player p; Player player;
if (args.length == 0) if (args.length == 0)
{ {
p = sender_p; player = sender_p;
} }
else else
{ {
@ -39,9 +39,9 @@ public class Command_creative extends TFM_Command
return true; return true;
} }
for (Player player : server.getOnlinePlayers()) for (Player targetPlayer : server.getOnlinePlayers())
{ {
player.setGameMode(GameMode.CREATIVE); targetPlayer.setGameMode(GameMode.CREATIVE);
} }
TFM_Util.adminAction(sender.getName(), "Changing everyone's gamemode to creative", false); TFM_Util.adminAction(sender.getName(), "Changing everyone's gamemode to creative", false);
@ -56,9 +56,9 @@ public class Command_creative extends TFM_Command
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
sender.sendMessage(ex.getMessage()); sender.sendMessage(ex.getMessage());
return true; return true;
@ -66,9 +66,9 @@ public class Command_creative extends TFM_Command
} }
playerMsg("Setting " + p.getName() + " to game mode 'Creative'."); playerMsg("Setting " + player.getName() + " to game mode 'Creative'.");
playerMsg(p, sender.getName() + " set your game mode to 'Creative'."); playerMsg(player, sender.getName() + " set your game mode to 'Creative'.");
p.setGameMode(GameMode.CREATIVE); player.setGameMode(GameMode.CREATIVE);
return true; return true;
} }

View File

@ -18,7 +18,7 @@ public class Command_deafen extends TFM_Command
@Override @Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{ {
for (final Player p : server.getOnlinePlayers()) for (final Player player : server.getOnlinePlayers())
{ {
for (double percent = 0.0; percent <= 1.0; percent += (1.0 / STEPS)) for (double percent = 0.0; percent <= 1.0; percent += (1.0 / STEPS))
{ {
@ -29,7 +29,7 @@ public class Command_deafen extends TFM_Command
@Override @Override
public void run() public void run()
{ {
p.playSound(randomOffset(p.getLocation(), 5.0), Sound.values()[random.nextInt(Sound.values().length)], 100.0f, pitch); 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)); }.runTaskLater(plugin, Math.round(20.0 * percent * 2.0));
} }

View File

@ -18,25 +18,25 @@ public class Command_deop extends TFM_Command
return false; return false;
} }
OfflinePlayer p = null; OfflinePlayer player = null;
for (Player onlinePlayer : server.getOnlinePlayers()) for (Player onlinePlayer : server.getOnlinePlayers())
{ {
if (args[0].equalsIgnoreCase(onlinePlayer.getName())) if (args[0].equalsIgnoreCase(onlinePlayer.getName()))
{ {
p = onlinePlayer; player = onlinePlayer;
} }
} }
// if the player is not online // if the player is not online
if (p == null) if (player == null)
{ {
p = server.getOfflinePlayer(args[0]); player = server.getOfflinePlayer(args[0]);
} }
TFM_Util.adminAction(sender.getName(), "De-opping " + p.getName(), false); TFM_Util.adminAction(sender.getName(), "De-opping " + player.getName(), false);
p.setOp(false); player.setOp(false);
return true; return true;
} }

View File

@ -15,10 +15,10 @@ public class Command_deopall extends TFM_Command
{ {
TFM_Util.adminAction(sender.getName(), "De-opping all players on the server", true); TFM_Util.adminAction(sender.getName(), "De-opping all players on the server", true);
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
p.setOp(false); player.setOp(false);
p.sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP); player.sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP);
} }
return true; return true;

View File

@ -74,13 +74,13 @@ public class Command_dispfill extends TFM_Command
{ {
for (int z_offset = -radius; z_offset <= radius; z_offset++) for (int z_offset = -radius; z_offset <= radius; z_offset++)
{ {
Block target_block = center_block.getRelative(x_offset, y_offset, z_offset); Block targetBlock = center_block.getRelative(x_offset, y_offset, z_offset);
if (target_block.getLocation().distanceSquared(center_location) < (radius * radius)) if (targetBlock.getLocation().distanceSquared(center_location) < (radius * radius))
{ {
if (target_block.getType().equals(Material.DISPENSER)) if (targetBlock.getType().equals(Material.DISPENSER))
{ {
sender.sendMessage("Filling dispenser @ " + TFM_Util.formatLocation(target_block.getLocation())); sender.sendMessage("Filling dispenser @ " + TFM_Util.formatLocation(targetBlock.getLocation()));
setDispenserContents(target_block, items_array); setDispenserContents(targetBlock, items_array);
affected++; affected++;
} }
} }
@ -98,9 +98,9 @@ public class Command_dispfill extends TFM_Command
return true; return true;
} }
private static void setDispenserContents(Block target_block, ItemStack[] items) private static void setDispenserContents(Block targetBlock, ItemStack[] items)
{ {
Dispenser dispenser = (Dispenser) target_block.getState(); Dispenser dispenser = (Dispenser) targetBlock.getState();
Inventory disp_inv = dispenser.getInventory(); Inventory disp_inv = dispenser.getInventory();
disp_inv.clear(); disp_inv.clear();
disp_inv.addItem(items); disp_inv.addItem(items);

View File

@ -22,53 +22,53 @@ public class Command_doom extends TFM_Command
return false; return false;
} }
final Player p; final Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
sender.sendMessage(ex.getMessage()); sender.sendMessage(ex.getMessage());
return true; return true;
} }
TFM_Util.adminAction(sender.getName(), "Casting oblivion over " + p.getName(), true); TFM_Util.adminAction(sender.getName(), "Casting oblivion over " + player.getName(), true);
TFM_Util.bcastMsg(p.getName() + " will be completely obliviated!", ChatColor.RED); TFM_Util.bcastMsg(player.getName() + " will be completely obliviated!", ChatColor.RED);
final String IP = p.getAddress().getAddress().getHostAddress().trim(); final String IP = player.getAddress().getAddress().getHostAddress().trim();
// remove from superadmin // remove from superadmin
if (TFM_SuperadminList.isUserSuperadmin(p)) if (TFM_SuperadminList.isUserSuperadmin(player))
{ {
TFM_Util.adminAction(sender.getName(), "Removing " + p.getName() + " from the superadmin list.", true); TFM_Util.adminAction(sender.getName(), "Removing " + player.getName() + " from the superadmin list.", true);
TFM_SuperadminList.removeSuperadmin(p); TFM_SuperadminList.removeSuperadmin(player);
} }
// remove from whitelist // remove from whitelist
p.setWhitelisted(false); player.setWhitelisted(false);
// deop // deop
p.setOp(false); player.setOp(false);
// ban IP // ban IP
TFM_ServerInterface.banIP(IP, null, null, null); TFM_ServerInterface.banIP(IP, null, null, null);
// ban name // ban name
TFM_ServerInterface.banUsername(p.getName(), null, null, null); TFM_ServerInterface.banUsername(player.getName(), null, null, null);
// set gamemode to survival // set gamemode to survival
p.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
// clear inventory // clear inventory
p.closeInventory(); player.closeInventory();
p.getInventory().clear(); player.getInventory().clear();
// ignite player // ignite player
p.setFireTicks(10000); player.setFireTicks(10000);
// generate explosion // generate explosion
p.getWorld().createExplosion(p.getLocation(), 4F); player.getWorld().createExplosion(player.getLocation(), 4F);
new BukkitRunnable() new BukkitRunnable()
{ {
@ -76,10 +76,10 @@ public class Command_doom extends TFM_Command
public void run() public void run()
{ {
// strike lightning // strike lightning
p.getWorld().strikeLightning(p.getLocation()); player.getWorld().strikeLightning(player.getLocation());
// kill (if not done already) // kill (if not done already)
p.setHealth(0.0); player.setHealth(0.0);
} }
}.runTaskLater(plugin, 20L * 2L); }.runTaskLater(plugin, 20L * 2L);
@ -89,13 +89,13 @@ public class Command_doom extends TFM_Command
public void run() public void run()
{ {
// message // message
TFM_Util.adminAction(sender.getName(), "Banning " + p.getName() + ", IP: " + IP, true); TFM_Util.adminAction(sender.getName(), "Banning " + player.getName() + ", IP: " + IP, true);
// generate explosion // generate explosion
p.getWorld().createExplosion(p.getLocation(), 4F); player.getWorld().createExplosion(player.getLocation(), 4F);
// kick player // kick player
p.kickPlayer(ChatColor.RED + "FUCKOFF, and get your shit together!"); player.kickPlayer(ChatColor.RED + "FUCKOFF, and get your shit together!");
} }
}.runTaskLater(plugin, 20L * 3L); }.runTaskLater(plugin, 20L * 3L);

View File

@ -0,0 +1,42 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Shortcut to enable/disable DisguiseCraft.", usage = "/<command>")
public class Command_dtoggle extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
Plugin disguiseCraft = server.getPluginManager().getPlugin("DisguiseCraft");
if (disguiseCraft != null)
{
PluginManager pluginManager = plugin.getServer().getPluginManager();
boolean enabled = disguiseCraft.isEnabled();
if (enabled)
{
pluginManager.disablePlugin(disguiseCraft);
}
else
{
pluginManager.enablePlugin(disguiseCraft);
}
TFM_Util.adminAction(sender.getName(), (!enabled ? "Enabled" : "Disabled") + " DisguiseCraft.", true);
}
else
{
sender.sendMessage("DisguiseCraft is not installed on this server.");
}
return true;
}
}

View File

@ -38,16 +38,16 @@ public class Command_expel extends TFM_Command
} }
Location sender_pos = sender_p.getLocation(); Location sender_pos = sender_p.getLocation();
for (Player p : sender_pos.getWorld().getPlayers()) for (Player player : sender_pos.getWorld().getPlayers())
{ {
if (!p.equals(sender_p)) if (!player.equals(sender_p))
{ {
Location target_pos = p.getLocation(); Location targetPos = player.getLocation();
boolean in_range = false; boolean in_range = false;
try try
{ {
in_range = target_pos.distanceSquared(sender_pos) < (radius * radius); in_range = targetPos.distanceSquared(sender_pos) < (radius * radius);
} }
catch (IllegalArgumentException ex) catch (IllegalArgumentException ex)
{ {
@ -55,8 +55,8 @@ public class Command_expel extends TFM_Command
if (in_range) if (in_range)
{ {
p.setVelocity(target_pos.clone().subtract(sender_pos).toVector().normalize().multiply(strength)); player.setVelocity(targetPos.clone().subtract(sender_pos).toVector().normalize().multiply(strength));
playerMsg("Pushing " + p.getName() + "."); playerMsg("Pushing " + player.getName() + ".");
} }
} }
} }

View File

@ -0,0 +1,37 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_UserList;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.apache.commons.lang.StringUtils;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Shows all IPs registered to a player", usage = "/<command> <player>")
public class Command_findip extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length != 1)
{
return false;
}
final Player player;
try
{
player = getPlayer(args[0]);
}
catch (PlayerNotFoundException ex)
{
playerMsg(ex.getMessage());
return true;
}
playerMsg("Player IPs: " + StringUtils.join(TFM_UserList.getInstance(TotalFreedomMod.plugin).getEntry(player).getIpAddresses(), ", "));
return true;
}
}

View File

@ -62,9 +62,9 @@ public class Command_fr extends TFM_Command
TotalFreedomMod.freezePurgeTask.cancel(); TotalFreedomMod.freezePurgeTask.cancel();
} }
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.setFrozen(false); playerdata.setFrozen(false);
} }
@ -72,22 +72,22 @@ public class Command_fr extends TFM_Command
} }
else else
{ {
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;
} }
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.setFrozen(!playerdata.isFrozen()); playerdata.setFrozen(!playerdata.isFrozen());
playerMsg(p.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + "."); playerMsg(player.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
playerMsg(p, "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".", ChatColor.AQUA); playerMsg(player, "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".", ChatColor.AQUA);
} }
} }

View File

@ -30,77 +30,77 @@ public class Command_gadmin extends TFM_Command
playerMsg("[ Real Name ] : [ Display Name ] - Hash:"); playerMsg("[ Real Name ] : [ Display Name ] - Hash:");
} }
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
String hash = p.getUniqueId().toString().substring(0, 4); String hash = player.getUniqueId().toString().substring(0, 4);
if (mode.equals("list")) if (mode.equals("list"))
{ {
sender.sendMessage(ChatColor.GRAY + String.format("[ %s ] : [ %s ] - %s", sender.sendMessage(ChatColor.GRAY + String.format("[ %s ] : [ %s ] - %s",
p.getName(), player.getName(),
ChatColor.stripColor(p.getDisplayName()), ChatColor.stripColor(player.getDisplayName()),
hash)); hash));
} }
else if (hash.equalsIgnoreCase(args[1])) else if (hash.equalsIgnoreCase(args[1]))
{ {
if (mode.equals("kick")) if (mode.equals("kick"))
{ {
TFM_Util.adminAction(sender.getName(), String.format("Kicking: %s.", p.getName()), false); TFM_Util.adminAction(sender.getName(), String.format("Kicking: %s.", player.getName()), false);
p.kickPlayer("Kicked by Administrator"); player.kickPlayer("Kicked by Administrator");
} }
else if (mode.equals("nameban")) else if (mode.equals("nameban"))
{ {
TFM_ServerInterface.banUsername(p.getName(), null, null, null); TFM_ServerInterface.banUsername(player.getName(), null, null, null);
TFM_Util.adminAction(sender.getName(), String.format("Banning Name: %s.", p.getName()), true); TFM_Util.adminAction(sender.getName(), String.format("Banning Name: %s.", player.getName()), true);
p.kickPlayer("Username banned by Administrator."); player.kickPlayer("Username banned by Administrator.");
} }
else if (mode.equals("ipban")) else if (mode.equals("ipban"))
{ {
String user_ip = p.getAddress().getAddress().getHostAddress(); String user_ip = player.getAddress().getAddress().getHostAddress();
String[] ip_parts = user_ip.split("\\."); String[] ip_parts = user_ip.split("\\.");
if (ip_parts.length == 4) if (ip_parts.length == 4)
{ {
user_ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]); user_ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
} }
TFM_Util.adminAction(sender.getName(), String.format("Banning IP: %s.", p.getName(), user_ip), true); TFM_Util.adminAction(sender.getName(), String.format("Banning IP: %s.", player.getName(), user_ip), true);
TFM_ServerInterface.banIP(user_ip, null, null, null); TFM_ServerInterface.banIP(user_ip, null, null, null);
p.kickPlayer("IP address banned by Administrator."); player.kickPlayer("IP address banned by Administrator.");
} }
else if (mode.equals("ban")) else if (mode.equals("ban"))
{ {
String user_ip = p.getAddress().getAddress().getHostAddress(); String user_ip = player.getAddress().getAddress().getHostAddress();
String[] ip_parts = user_ip.split("\\."); String[] ip_parts = user_ip.split("\\.");
if (ip_parts.length == 4) if (ip_parts.length == 4)
{ {
user_ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]); user_ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
} }
TFM_Util.adminAction(sender.getName(), String.format("Banning Name: %s, IP: %s.", p.getName(), user_ip), true); TFM_Util.adminAction(sender.getName(), String.format("Banning Name: %s, IP: %s.", player.getName(), user_ip), true);
TFM_ServerInterface.banIP(user_ip, null, null, null); TFM_ServerInterface.banIP(user_ip, null, null, null);
TFM_ServerInterface.banUsername(p.getName(), null, null, null); TFM_ServerInterface.banUsername(player.getName(), null, null, null);
p.kickPlayer("IP and username banned by Administrator."); player.kickPlayer("IP and username banned by Administrator.");
} }
else if (mode.equals("op")) else if (mode.equals("op"))
{ {
TFM_Util.adminAction(sender.getName(), String.format("Opping %s.", p.getName()), false); TFM_Util.adminAction(sender.getName(), String.format("Opping %s.", player.getName()), false);
p.setOp(false); player.setOp(false);
p.sendMessage(TotalFreedomMod.YOU_ARE_OP); player.sendMessage(TotalFreedomMod.YOU_ARE_OP);
} }
else if (mode.equals("deop")) else if (mode.equals("deop"))
{ {
TFM_Util.adminAction(sender.getName(), String.format("Deopping %s.", p.getName()), false); TFM_Util.adminAction(sender.getName(), String.format("Deopping %s.", player.getName()), false);
p.setOp(false); player.setOp(false);
p.sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP); player.sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP);
} }
else if (mode.equals("ci")) else if (mode.equals("ci"))
{ {
p.getInventory().clear(); player.getInventory().clear();
} }
else if (mode.equals("fr")) else if (mode.equals("fr"))
{ {
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.setFrozen(!playerdata.isFrozen()); playerdata.setFrozen(!playerdata.isFrozen());
playerMsg(p.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + "."); playerMsg(player.getName() + " has been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
p.sendMessage(ChatColor.AQUA + "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + "."); player.sendMessage(ChatColor.AQUA + "You have been " + (playerdata.isFrozen() ? "frozen" : "unfrozen") + ".");
} }
return true; return true;

View File

@ -17,12 +17,12 @@ public class Command_gcmd extends TFM_Command
return false; return false;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
sender.sendMessage(ex.getMessage()); sender.sendMessage(ex.getMessage());
return true; return true;
@ -46,8 +46,8 @@ public class Command_gcmd extends TFM_Command
try try
{ {
playerMsg("Sending command as " + p.getName() + ": " + outcommand); playerMsg("Sending command as " + player.getName() + ": " + outcommand);
if (server.dispatchCommand(p, outcommand)) if (server.dispatchCommand(player, outcommand))
{ {
playerMsg("Command sent."); playerMsg("Command sent.");
} }

View File

@ -51,12 +51,12 @@ public class Command_glist extends TFM_Command
try try
{ {
Player p = getPlayer(args[1]); Player player = getPlayer(args[1]);
username = p.getName(); username = player.getName();
ip_addresses.add(p.getAddress().getAddress().getHostAddress()); ip_addresses.add(player.getAddress().getAddress().getHostAddress());
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
TFM_UserListEntry entry = TFM_UserList.getInstance(plugin).getEntry(args[1]); TFM_UserListEntry entry = TFM_UserList.getInstance(plugin).getEntry(args[1]);
@ -75,11 +75,11 @@ public class Command_glist extends TFM_Command
{ {
TFM_Util.adminAction(sender.getName(), "Banning " + username + " and IPs: " + StringUtils.join(ip_addresses, ","), true); TFM_Util.adminAction(sender.getName(), "Banning " + username + " and IPs: " + StringUtils.join(ip_addresses, ","), true);
Player p = server.getPlayerExact(username); Player player = server.getPlayerExact(username);
if (p != null) if (player != null)
{ {
TFM_ServerInterface.banUsername(p.getName(), null, null, null); TFM_ServerInterface.banUsername(player.getName(), null, null, null);
p.kickPlayer("You have been banned by " + sender.getName() + "\n If you think you have been banned wrongly, appeal here: http://www.totalfreedom.boards.net"); player.kickPlayer("You have been banned by " + sender.getName() + "\n If you think you have been banned wrongly, appeal here: http://www.totalfreedom.boards.net");
} }
else else
{ {

View File

@ -25,12 +25,12 @@ public class Command_gtfo extends TFM_Command
return false; return false;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;
@ -42,49 +42,49 @@ public class Command_gtfo extends TFM_Command
ban_reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); ban_reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
} }
TFM_Util.bcastMsg(p.getName() + " has been a VERY naughty, naughty boy.", ChatColor.RED); TFM_Util.bcastMsg(player.getName() + " has been a VERY naughty, naughty boy.", ChatColor.RED);
// Undo WorldEdits: // Undo WorldEdits:
TFM_WorldEditBridge.getInstance().undo(p, 15); TFM_WorldEditBridge.getInstance().undo(player, 15);
// rollback // rollback
TFM_RollbackManager.rollback(p.getName()); TFM_RollbackManager.rollback(player.getName());
// deop // deop
p.setOp(false); player.setOp(false);
// set gamemode to survival: // set gamemode to survival:
p.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
// clear inventory: // clear inventory:
p.getInventory().clear(); player.getInventory().clear();
// strike with lightning effect: // strike with lightning effect:
final Location target_pos = p.getLocation(); final Location targetPos = player.getLocation();
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(target_pos.getWorld(), target_pos.getBlockX() + x, target_pos.getBlockY(), target_pos.getBlockZ() + z); final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
target_pos.getWorld().strikeLightning(strike_pos); targetPos.getWorld().strikeLightning(strike_pos);
} }
} }
// ban IP address: // ban IP address:
String user_ip = p.getAddress().getAddress().getHostAddress(); String user_ip = player.getAddress().getAddress().getHostAddress();
String[] ip_parts = user_ip.split("\\."); String[] ip_parts = user_ip.split("\\.");
if (ip_parts.length == 4) if (ip_parts.length == 4)
{ {
user_ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]); user_ip = String.format("%s.%s.*.*", ip_parts[0], ip_parts[1]);
} }
TFM_Util.bcastMsg(String.format("Banning: %s, IP: %s.", p.getName(), user_ip), ChatColor.RED); TFM_Util.bcastMsg(String.format("Banning: %s, IP: %s.", player.getName(), user_ip), ChatColor.RED);
TFM_ServerInterface.banIP(user_ip, ban_reason, null, null); TFM_ServerInterface.banIP(user_ip, ban_reason, null, null);
// ban username: // ban username:
TFM_ServerInterface.banUsername(p.getName(), ban_reason, null, null); TFM_ServerInterface.banUsername(player.getName(), ban_reason, null, null);
// kick Player: // kick Player:
p.kickPlayer(ChatColor.RED + "GTFO" + (ban_reason != null ? ("\nReason: " + ChatColor.YELLOW + ban_reason) : "")); player.kickPlayer(ChatColor.RED + "GTFO" + (ban_reason != null ? ("\nReason: " + ChatColor.YELLOW + ban_reason) : ""));
return true; return true;
} }

View File

@ -23,11 +23,11 @@ public class Command_halt extends TFM_Command
{ {
TFM_Util.adminAction(sender.getName(), "Halting all non-superadmins.", true); TFM_Util.adminAction(sender.getName(), "Halting all non-superadmins.", true);
int counter = 0; int counter = 0;
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
TFM_PlayerData.getPlayerData(p).setHalted(true); TFM_PlayerData.getPlayerData(player).setHalted(true);
counter++; counter++;
} }
} }
@ -39,10 +39,10 @@ public class Command_halt extends TFM_Command
{ {
TFM_Util.adminAction(sender.getName(), "Unhalting all players.", true); TFM_Util.adminAction(sender.getName(), "Unhalting all players.", true);
int counter = 0; int counter = 0;
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
if (TFM_PlayerData.getPlayerData(p).isHalted()) if (TFM_PlayerData.getPlayerData(player).isHalted())
{ {
playerdata.setHalted(false); playerdata.setHalted(false);
counter++; counter++;
@ -76,28 +76,28 @@ public class Command_halt extends TFM_Command
return true; return true;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
sender.sendMessage(ex.getMessage()); sender.sendMessage(ex.getMessage());
return true; return true;
} }
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
if (!playerdata.isHalted()) if (!playerdata.isHalted())
{ {
TFM_Util.adminAction(sender.getName(), "Halting " + p.getName(), true); TFM_Util.adminAction(sender.getName(), "Halting " + player.getName(), true);
playerdata.setHalted(true); playerdata.setHalted(true);
return true; return true;
} }
else else
{ {
TFM_Util.adminAction(sender.getName(), "Unhalting " + p.getName(), true); TFM_Util.adminAction(sender.getName(), "Unhalting " + player.getName(), true);
playerdata.setHalted(false); playerdata.setHalted(false);
return true; return true;
} }

View File

@ -1,62 +1,100 @@
package me.StevenLawson.TotalFreedomMod.Commands; package me.StevenLawson.TotalFreedomMod.Commands;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.concurrent.atomic.AtomicInteger;
import me.StevenLawson.TotalFreedomMod.TFM_Log; import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_TickMeter;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.commons.lang.math.DoubleRange;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH) @CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "View ticks-per-second", usage = "/<command>") @CommandParameters(description = "View ticks-per-second", usage = "/<command>")
public class Command_health extends TFM_Command public class Command_health extends TFM_Command
{ {
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 @Override
public boolean run(final CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) public boolean run(final CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{ {
Runtime runtime = Runtime.getRuntime();
long usedMem = runtime.totalMemory() - runtime.freeMemory();
playerMsg("Reserved Memory: " + (double) runtime.totalMemory() / (double) BYTES_PER_MB + "mb");
playerMsg("Used Memory: " + new DecimalFormat("#").format((double) usedMem / (double) BYTES_PER_MB) + "mb (" + new DecimalFormat("#").format(((double) usedMem / (double) runtime.totalMemory()) * 100.0) + "%)");
playerMsg("Max Memory: " + (double) runtime.maxMemory() / (double) BYTES_PER_MB + "mb");
playerMsg("Calculating ticks per second, please wait...");
new BukkitRunnable() new BukkitRunnable()
{ {
@Override @Override
public void run() public void run()
{ {
try try
{ {
final TFM_TickMeter meter = new TFM_TickMeter(plugin); TFM_TickMeter tickMeter = new TFM_TickMeter(plugin);
meter.startTicking(); tickMeter.startTicking();
Thread.sleep(1000); // per second Thread.sleep(2500);
meter.stopTicking(); final double ticksPerSecond = tickMeter.stopTicking();
final Runtime runtime = Runtime.getRuntime();
final int mb = 1048576; // 1024 * 1024
final float usedMem = runtime.totalMemory() - runtime.freeMemory();
new BukkitRunnable() new BukkitRunnable()
{ {
@Override @Override
public void run() { public void run()
playerMsg("Reserved Memory: " + runtime.totalMemory() / mb + "mb"); {
playerMsg("Used Memory: " + new DecimalFormat("#").format(usedMem / mb) + "mb (" + new DecimalFormat("#").format((usedMem / runtime.totalMemory()) * 100) + "%)"); playerMsg("Ticks per second: " + (TPS_RANGE.containsDouble(ticksPerSecond) ? ChatColor.GREEN : ChatColor.RED) + ticksPerSecond);
playerMsg("Max Memory: " + runtime.maxMemory() / mb + "mb");
playerMsg("Ticks per second: " + (meter.getTicks() == 20 ? ChatColor.GREEN : ChatColor.RED) + meter.getTicks());
} }
}.runTask(TotalFreedomMod.plugin); }.runTask(plugin);
} }
catch (Exception iex) catch (Exception ex)
{ {
TFM_Log.warning("Exception in TFM_TickMeter: Thread was interupted in sleeping process."); TFM_Log.severe(ex);
TFM_Log.warning(ExceptionUtils.getStackTrace(iex));
} }
} }
}.runTaskAsynchronously(plugin);
}.runTaskAsynchronously(TotalFreedomMod.plugin);
return true; return true;
} }
private class TFM_TickMeter
{
private final AtomicInteger ticks = new AtomicInteger();
private final TotalFreedomMod plugin;
private long startTime;
private BukkitTask task;
public TFM_TickMeter(TotalFreedomMod plugin)
{
this.plugin = plugin;
}
public void startTicking()
{
startTime = System.currentTimeMillis();
ticks.set(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

@ -33,14 +33,14 @@ public class Command_invis extends TFM_Command
List<String> players = new ArrayList<String>(); List<String> players = new ArrayList<String>();
int smites = 0; int smites = 0;
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (p.hasPotionEffect(PotionEffectType.INVISIBILITY)) if (player.hasPotionEffect(PotionEffectType.INVISIBILITY))
{ {
players.add(p.getName()); players.add(player.getName());
if (smite && !TFM_SuperadminList.isUserSuperadmin(p)) if (smite && !TFM_SuperadminList.isUserSuperadmin(player))
{ {
Command_smite.smite(p); Command_smite.smite(player);
smites++; smites++;
} }
} }

View File

@ -0,0 +1,94 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Jumppads;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Manage jumppads", usage = "/<command> <on | off | info |sideways <on | off> | strength <strength (1-10)>>", aliases = "launchpads,jp")
public class Command_jumppads extends TFM_Command
{
@Override
public boolean run(CommandSender sender, 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("Jumppads: " + (TFM_Jumppads.getInstance().getMode().isOn() ? "Enabled" : "Disabled"), ChatColor.BLUE);
playerMsg("Sideways: " + (TFM_Jumppads.getInstance().getMode() == TFM_Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS ? "Enabled" : "Disabled"), ChatColor.BLUE);
playerMsg("Strength: " + (TFM_Jumppads.getInstance().getStrength() * 10 - 1), ChatColor.BLUE);
return true;
}
if (TFM_Util.isStopCommand(args[0]))
{
TFM_Util.adminAction(sender.getName(), "Disabling Jumppads", false);
TFM_Jumppads.getInstance().setMode(TFM_Jumppads.JumpPadMode.OFF);
}
else
{
TFM_Util.adminAction(sender.getName(), "Enabling Jumppads", false);
TFM_Jumppads.getInstance().setMode(TFM_Jumppads.JumpPadMode.MADGEEK);
}
}
else
{
if (TFM_Jumppads.getInstance().getMode() == TFM_Jumppads.JumpPadMode.OFF)
{
playerMsg("Jumppads are currently disabled, please enable them before changing jumppads settings.");
return true;
}
if (args[0].equalsIgnoreCase("sideways"))
{
if (TFM_Util.isStopCommand(args[1]))
{
TFM_Util.adminAction(sender.getName(), "Setting Jumppads mode to: Madgeek", false);
TFM_Jumppads.getInstance().setMode(TFM_Jumppads.JumpPadMode.MADGEEK);
}
else
{
TFM_Util.adminAction(sender.getName(), "Setting Jumppads mode to: Normal and Sideways", false);
TFM_Jumppads.getInstance().setMode(TFM_Jumppads.JumpPadMode.NORMAL_AND_SIDEWAYS);
}
}
else if (args[0].equalsIgnoreCase("strength"))
{
final float strength;
try
{
strength = Float.parseFloat(args[1]);
}
catch (NumberFormatException ex)
{
playerMsg("Invalid Strength");
return true;
}
if (strength > 10 || strength < 1)
{
playerMsg("Invalid Strength: The strength may be 1 through 10.");
return true;
}
TFM_Util.adminAction(sender.getName(), "Setting Jumppads strength to: " + String.valueOf(strength), false);
TFM_Jumppads.getInstance().setStrength((strength / 10) + 0.1F);
}
else
{
return false;
}
}
return true;
}
}

View File

@ -16,11 +16,11 @@ public class Command_kicknoob extends TFM_Command
{ {
TFM_Util.adminAction(sender.getName(), "Disconnecting all non-superadmins.", true); TFM_Util.adminAction(sender.getName(), "Disconnecting all non-superadmins.", true);
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
p.kickPlayer(ChatColor.RED + "Disconnected by admin."); player.kickPlayer(ChatColor.RED + "Disconnected by admin.");
} }
} }

View File

@ -18,18 +18,18 @@ public class Command_lastcmd extends TFM_Command
return false; return false;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;
} }
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
if (playerdata != null) if (playerdata != null)
{ {
@ -38,7 +38,7 @@ public class Command_lastcmd extends TFM_Command
{ {
last_command = "(none)"; last_command = "(none)";
} }
playerMsg(p.getName() + " - Last Command: " + last_command, ChatColor.GRAY); playerMsg(player.getName() + " - Last Command: " + last_command, ChatColor.GRAY);
} }
return true; return true;

View File

@ -25,9 +25,9 @@ public class Command_list extends TFM_Command
if (TFM_Util.isFromHostConsole(sender.getName())) if (TFM_Util.isFromHostConsole(sender.getName()))
{ {
List<String> player_names = new ArrayList<String>(); List<String> player_names = new ArrayList<String>();
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
player_names.add(p.getName()); player_names.add(player.getName());
} }
playerMsg("There are " + player_names.size() + "/" + server.getMaxPlayers() + " players online:\n" + StringUtils.join(player_names, ", "), ChatColor.WHITE); playerMsg("There are " + player_names.size() + "/" + server.getMaxPlayers() + " players online:\n" + StringUtils.join(player_names, ", "), ChatColor.WHITE);
return true; return true;
@ -50,9 +50,9 @@ public class Command_list extends TFM_Command
onlineStats.append(ChatColor.BLUE).append(" players online."); onlineStats.append(ChatColor.BLUE).append(" players online.");
List<String> player_names = new ArrayList<String>(); List<String> player_names = new ArrayList<String>();
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
boolean userSuperadmin = TFM_SuperadminList.isUserSuperadmin(p); boolean userSuperadmin = TFM_SuperadminList.isUserSuperadmin(player);
if (listFilter == ListFilter.SHOW_ADMINS && !userSuperadmin) if (listFilter == ListFilter.SHOW_ADMINS && !userSuperadmin)
{ {
@ -63,7 +63,7 @@ public class Command_list extends TFM_Command
if (userSuperadmin) if (userSuperadmin)
{ {
if (TFM_SuperadminList.isSeniorAdmin(p)) if (TFM_SuperadminList.isSeniorAdmin(player))
{ {
prefix = (ChatColor.LIGHT_PURPLE + "[SrA]"); prefix = (ChatColor.LIGHT_PURPLE + "[SrA]");
} }
@ -72,25 +72,25 @@ public class Command_list extends TFM_Command
prefix = (ChatColor.GOLD + "[SA]"); prefix = (ChatColor.GOLD + "[SA]");
} }
if (TFM_Util.DEVELOPERS.contains(p.getName())) if (TFM_Util.DEVELOPERS.contains(player.getName()))
{ {
prefix = (ChatColor.DARK_PURPLE + "[Dev]"); prefix = (ChatColor.DARK_PURPLE + "[Dev]");
} }
if (p.getName().equals("markbyron")) if (player.getName().equals("markbyron"))
{ {
prefix = (ChatColor.BLUE + "[Owner]"); prefix = (ChatColor.BLUE + "[Owner]");
} }
} }
else else
{ {
if (p.isOp()) if (player.isOp())
{ {
prefix = (ChatColor.RED + "[OP]"); prefix = (ChatColor.RED + "[OP]");
} }
} }
player_names.add(prefix + p.getName() + ChatColor.WHITE); player_names.add(prefix + player.getName() + ChatColor.WHITE);
} }
onlineUsers.append("Connected ").append(listFilter == ListFilter.SHOW_ADMINS ? "admins" : "players").append(": ").append(StringUtils.join(player_names, ", ")); onlineUsers.append("Connected ").append(listFilter == ListFilter.SHOW_ADMINS ? "admins" : "players").append(": ").append(StringUtils.join(player_names, ", "));

View File

@ -0,0 +1,34 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Prevents new players from joining the server", usage = "/<command> <on | off>")
public class Command_lockdown extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length != 1)
{
return false;
}
if (TFM_Util.isStopCommand(args[0]))
{
TFM_Util.adminAction(sender.getName(), "De-activating server lockdown", true);
TotalFreedomMod.lockdownEnabled = false;
}
else
{
TFM_Util.adminAction(sender.getName(), "Activating server lockdown", true);
TotalFreedomMod.lockdownEnabled = true;
}
return true;
}
}

View File

@ -21,18 +21,18 @@ public class Command_lockup extends TFM_Command
{ {
TFM_Util.adminAction(sender.getName(), "Locking up all players", true); TFM_Util.adminAction(sender.getName(), "Locking up all players", true);
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
startLockup(p); startLockup(player);
} }
playerMsg("Locked up all players."); playerMsg("Locked up all players.");
} }
else if (args[0].equalsIgnoreCase("purge")) else if (args[0].equalsIgnoreCase("purge"))
{ {
TFM_Util.adminAction(sender.getName(), "Unlocking all players", true); TFM_Util.adminAction(sender.getName(), "Unlocking all players", true);
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
cancelLockup(p); cancelLockup(player);
} }
playerMsg("Unlocked all players."); playerMsg("Unlocked all players.");
@ -46,37 +46,37 @@ public class Command_lockup extends TFM_Command
{ {
if (args[1].equalsIgnoreCase("on")) if (args[1].equalsIgnoreCase("on"))
{ {
final Player p; final Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
sender.sendMessage(ex.getMessage()); sender.sendMessage(ex.getMessage());
return true; return true;
} }
TFM_Util.adminAction(sender.getName(), "Locking up " + p.getName(), true); TFM_Util.adminAction(sender.getName(), "Locking up " + player.getName(), true);
startLockup(p); startLockup(player);
playerMsg("Locked up " + p.getName() + "."); playerMsg("Locked up " + player.getName() + ".");
} }
else if (TFM_Util.isStopCommand(args[1])) else if (TFM_Util.isStopCommand(args[1]))
{ {
final Player p; final Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
sender.sendMessage(ex.getMessage()); sender.sendMessage(ex.getMessage());
return true; return true;
} }
TFM_Util.adminAction(sender.getName(), "Unlocking " + p.getName(), true); TFM_Util.adminAction(sender.getName(), "Unlocking " + player.getName(), true);
cancelLockup(p); cancelLockup(player);
playerMsg("Unlocked " + p.getName() + "."); playerMsg("Unlocked " + player.getName() + ".");
} }
else else
{ {
@ -101,14 +101,14 @@ public class Command_lockup extends TFM_Command
} }
} }
private void cancelLockup(final Player p) private void cancelLockup(final Player player)
{ {
cancelLockup(TFM_PlayerData.getPlayerData(p)); cancelLockup(TFM_PlayerData.getPlayerData(player));
} }
private void startLockup(final Player p) private void startLockup(final Player player)
{ {
final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
cancelLockup(playerdata); cancelLockup(playerdata);
@ -117,9 +117,9 @@ public class Command_lockup extends TFM_Command
@Override @Override
public void run() public void run()
{ {
if (p.isOnline()) if (player.isOnline())
{ {
p.openInventory(p.getInventory()); player.openInventory(player.getInventory());
} }
else else
{ {

View File

@ -0,0 +1,125 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
@CommandParameters(description = "NickFilter: Prefix any command with this command to replace nicknames in that command with real names. Nicknames should be prefixed with a !.", usage = "/<command> <other_command> !<playernick>")
public class Command_nf extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
boolean nickMatched = false;
final List<String> outputCommand = new ArrayList<String>();
if (args.length >= 1)
{
final List<String> argsList = Arrays.asList(args);
for (String arg : argsList)
{
Player player = null;
Matcher matcher = Pattern.compile("^!(.+)$").matcher(arg);
if (matcher.find())
{
String displayName = matcher.group(1);
try
{
player = getPlayerByDisplayName(displayName);
}
catch (PlayerNotFoundException ex)
{
}
if (player == null)
{
try
{
player = getPlayerByDisplayNameAlt(displayName);
}
catch (PlayerNotFoundException ex)
{
sender.sendMessage(ChatColor.GRAY + "Can't find player by nickname: " + displayName);
return true;
}
}
}
if (player == null)
{
outputCommand.add(arg);
}
else
{
nickMatched = true;
outputCommand.add(player.getName());
}
}
}
if (!nickMatched)
{
sender.sendMessage("No nicknames replaced in command.");
return true;
}
String newCommand = StringUtils.join(outputCommand, " ");
sender.sendMessage("Sending command: \"" + newCommand + "\".");
server.dispatchCommand(sender, newCommand);
return true;
}
private static Player getPlayerByDisplayName(String needle) throws PlayerNotFoundException
{
needle = needle.toLowerCase().trim();
Player[] onlinePlayers = Bukkit.getOnlinePlayers();
for (Player player : onlinePlayers)
{
if (player.getDisplayName().toLowerCase().trim().contains(needle))
{
return player;
}
}
throw new PlayerNotFoundException();
}
private static Player getPlayerByDisplayNameAlt(String needle) throws PlayerNotFoundException
{
needle = needle.toLowerCase().trim();
Integer minEditDistance = null;
Player minEditMatch = null;
Player[] onlinePlayers = Bukkit.getOnlinePlayers();
for (Player player : onlinePlayers)
{
String haystack = player.getDisplayName().toLowerCase().trim();
int editDistance = StringUtils.getLevenshteinDistance(needle, haystack.toLowerCase());
if (minEditDistance == null || minEditDistance.intValue() > editDistance)
{
minEditDistance = editDistance;
minEditMatch = player;
}
}
if (minEditMatch == null)
{
throw new PlayerNotFoundException();
}
return minEditMatch;
}
}

View File

@ -43,9 +43,9 @@ public class Command_onlinemode extends TFM_Command
if (online_mode) if (online_mode)
{ {
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
p.kickPlayer("Server is activating \"online-mode=true\". Please reconnect."); player.kickPlayer("Server is activating \"online-mode=true\". Please reconnect.");
} }
} }

View File

@ -26,21 +26,21 @@ public class Command_op extends TFM_Command
return true; return true;
} }
OfflinePlayer p = null; OfflinePlayer player = null;
for (Player onlinePlayer : server.getOnlinePlayers()) for (Player onlinePlayer : server.getOnlinePlayers())
{ {
if (args[0].equalsIgnoreCase(onlinePlayer.getName())) if (args[0].equalsIgnoreCase(onlinePlayer.getName()))
{ {
p = onlinePlayer; player = onlinePlayer;
} }
} }
// if the player is not online // if the player is not online
if (p == null) if (player == null)
{ {
if (TFM_SuperadminList.isUserSuperadmin(sender) || senderIsConsole) if (TFM_SuperadminList.isUserSuperadmin(sender) || senderIsConsole)
{ {
p = server.getOfflinePlayer(args[0]); player = server.getOfflinePlayer(args[0]);
} }
else else
{ {
@ -50,8 +50,8 @@ public class Command_op extends TFM_Command
} }
} }
TFM_Util.adminAction(sender.getName(), "Opping " + p.getName(), false); TFM_Util.adminAction(sender.getName(), "Opping " + player.getName(), false);
p.setOp(true); player.setOp(true);
return true; return true;
} }

View File

@ -32,14 +32,14 @@ public class Command_opall extends TFM_Command
} }
} }
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
p.setOp(true); player.setOp(true);
p.sendMessage(TotalFreedomMod.YOU_ARE_OP); player.sendMessage(TotalFreedomMod.YOU_ARE_OP);
if (doSetGamemode) if (doSetGamemode)
{ {
p.setGameMode(targetGamemode); player.setGameMode(targetGamemode);
} }
} }

View File

@ -31,9 +31,9 @@ public class Command_ops extends TFM_Command
int offlineOPs = 0; int offlineOPs = 0;
int totalOPs = 0; int totalOPs = 0;
for (OfflinePlayer p : server.getOperators()) for (OfflinePlayer player : server.getOperators())
{ {
if (p.isOnline()) if (player.isOnline())
{ {
onlineOPs++; onlineOPs++;
} }
@ -61,13 +61,13 @@ public class Command_ops extends TFM_Command
TFM_Util.adminAction(sender.getName(), "Removing all operators", true); TFM_Util.adminAction(sender.getName(), "Removing all operators", true);
for (OfflinePlayer p : server.getOperators()) for (OfflinePlayer player : server.getOperators())
{ {
p.setOp(false); player.setOp(false);
if (p.isOnline()) if (player.isOnline())
{ {
p.getPlayer().sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP); player.getPlayer().sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP);
} }
} }

View File

@ -21,18 +21,18 @@ public class Command_orbit extends TFM_Command
return false; return false;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;
} }
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
double strength = 10.0; double strength = 10.0;
@ -40,7 +40,7 @@ public class Command_orbit extends TFM_Command
{ {
if (TFM_Util.isStopCommand(args[1])) if (TFM_Util.isStopCommand(args[1]))
{ {
playerMsg("Stopped orbiting " + p.getName()); playerMsg("Stopped orbiting " + player.getName());
playerdata.stopOrbiting(); playerdata.stopOrbiting();
return true; return true;
} }
@ -56,11 +56,11 @@ public class Command_orbit extends TFM_Command
} }
} }
p.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
playerdata.startOrbiting(strength); playerdata.startOrbiting(strength);
p.setVelocity(new Vector(0, strength, 0)); player.setVelocity(new Vector(0, strength, 0));
TFM_Util.adminAction(sender.getName(), "Orbiting " + p.getName() + ".", false); TFM_Util.adminAction(sender.getName(), "Orbiting " + player.getName() + ".", false);
return true; return true;
} }

View File

@ -58,20 +58,20 @@ public class Command_plugincontrol extends TFM_Command
else if (commandMode == CommandMode.RELOAD) else if (commandMode == CommandMode.RELOAD)
{ {
playerMsg("Disabling all plugins."); playerMsg("Disabling all plugins.");
for (Plugin p : pluginManager.getPlugins()) for (Plugin targetPlugin : pluginManager.getPlugins())
{ {
if (!p.getName().toLowerCase().startsWith("totalfreedommod")) if (!targetPlugin.getName().toLowerCase().startsWith("totalfreedommod"))
{ {
pluginManager.disablePlugin(p); pluginManager.disablePlugin(targetPlugin);
} }
} }
playerMsg("Enabling all plugins."); playerMsg("Enabling all plugins.");
for (Plugin p : pluginManager.getPlugins()) for (Plugin targetPlugin : pluginManager.getPlugins())
{ {
if (!p.getName().toLowerCase().startsWith("totalfreedommod")) if (!targetPlugin.getName().toLowerCase().startsWith("totalfreedommod"))
{ {
pluginManager.enablePlugin(p); pluginManager.enablePlugin(targetPlugin);
} }
} }
} }
@ -81,11 +81,11 @@ public class Command_plugincontrol extends TFM_Command
Plugin targetPlugin = null; Plugin targetPlugin = null;
for (Plugin p : pluginManager.getPlugins()) for (Plugin serverPlugin : pluginManager.getPlugins())
{ {
if (searchPluginName.equalsIgnoreCase(p.getName().toLowerCase().trim())) if (searchPluginName.equalsIgnoreCase(serverPlugin.getName().toLowerCase().trim()))
{ {
targetPlugin = p; targetPlugin = serverPlugin;
break; break;
} }
} }

View File

@ -16,7 +16,7 @@ import org.bukkit.potion.PotionEffectType;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH) @CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
@CommandParameters( @CommandParameters(
description = "Manipulate potion effects. Duration is measured in server ticks (~20 ticks per second).", description = "Manipulate potion effects. Duration is measured in server ticks (~20 ticks per second).",
usage = "/<command> <list | clear [target_name] | add <type> <duration> <amplifier> [target_name]>") usage = "/<command> <list | clear [target name] | add <type> <duration> <amplifier> [target name]>")
public class Command_potion extends TFM_Command public class Command_potion extends TFM_Command
{ {
@Override @Override
@ -62,7 +62,7 @@ public class Command_potion extends TFM_Command
{ {
target = getPlayer(args[1]); target = getPlayer(args[1]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;
@ -107,7 +107,7 @@ public class Command_potion extends TFM_Command
{ {
target = getPlayer(args[4]); target = getPlayer(args[4]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;

View File

@ -0,0 +1,72 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH)
@CommandParameters(description = "Validates if a given account is premium.", usage = "/<command> <player>", aliases = "prem")
public class Command_premium extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length != 1)
{
return false;
}
String name;
try
{
name = getPlayer(args[0]).getName();
}
catch (PlayerNotFoundException ex)
{
name = args[0];
}
final String playername = name;
new BukkitRunnable()
{
@Override
public void run()
{
try
{
final URL getUrl = new URL("https://minecraft.net/haspaid.jsp?user=" + playername);
final URLConnection urlConnection = getUrl.openConnection();
// Read the response
final BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
final String message = ("false".equalsIgnoreCase(in.readLine()) ? ChatColor.RED + "No" : ChatColor.DARK_GREEN + "Yes");
in.close();
new BukkitRunnable()
{
@Override
public void run()
{
playerMsg("Player " + playername + " is premium: " + message);
}
}.runTask(plugin);
}
catch (Exception ex)
{
TFM_Log.severe(ExceptionUtils.getStackTrace(ex));
playerMsg("There was an error querying the mojang server.", ChatColor.RED);
}
}
}.runTaskAsynchronously(plugin);
return true;
}
}

View File

@ -19,14 +19,14 @@ public class Command_purgeall extends TFM_Command
TFM_Util.adminAction(sender.getName(), "Purging all player data", true); TFM_Util.adminAction(sender.getName(), "Purging all player data", true);
// Purge entities // Purge entities
TFM_Util.wipeEntities(true, true); TFM_Util.TFM_EntityWiper.wipeEntities(true, true);
// Undisguise all players // Undisguise all players
TFM_DisguiseCraftBridge.undisguiseAllPlayers(); TFM_DisguiseCraftBridge.undisguiseAllPlayers();
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
// Unmute all players // Unmute all players
if (playerdata.isMuted()) if (playerdata.isMuted())
@ -59,9 +59,9 @@ public class Command_purgeall extends TFM_Command
} }
// Purge potion effects // Purge potion effects
for (PotionEffect potion_effect : p.getActivePotionEffects()) for (PotionEffect potion_effect : player.getActivePotionEffects())
{ {
p.removePotionEffect(potion_effect.getType()); player.removePotionEffect(potion_effect.getType());
} }
// Uncage // Uncage

View File

@ -26,20 +26,20 @@ public class Command_qdeop extends TFM_Command
boolean matched_player = false; boolean matched_player = false;
String target_name = args[0].toLowerCase(); String targetName = args[0].toLowerCase();
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (p.getName().toLowerCase().indexOf(target_name) != -1 || p.getDisplayName().toLowerCase().indexOf(target_name) != -1) if (player.getName().toLowerCase().indexOf(targetName) != -1 || player.getDisplayName().toLowerCase().indexOf(targetName) != -1)
{ {
matched_player = true; matched_player = true;
if (!silent) if (!silent)
{ {
TFM_Util.adminAction(sender.getName(), "De-opping " + p.getName(), false); TFM_Util.adminAction(sender.getName(), "De-opping " + player.getName(), false);
} }
p.setOp(false); player.setOp(false);
p.sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP); player.sendMessage(TotalFreedomMod.YOU_ARE_NOT_OP);
} }
} }

View File

@ -26,20 +26,20 @@ public class Command_qop extends TFM_Command
boolean matched_player = false; boolean matched_player = false;
String target_name = args[0].toLowerCase(); String targetName = args[0].toLowerCase();
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (p.getName().toLowerCase().indexOf(target_name) != -1 || p.getDisplayName().toLowerCase().indexOf(target_name) != -1) if (player.getName().toLowerCase().indexOf(targetName) != -1 || player.getDisplayName().toLowerCase().indexOf(targetName) != -1)
{ {
matched_player = true; matched_player = true;
if (!silent) if (!silent)
{ {
TFM_Util.adminAction(sender.getName(), "Opping " + p.getName(), false); TFM_Util.adminAction(sender.getName(), "Opping " + player.getName(), false);
} }
p.setOp(true); player.setOp(true);
p.sendMessage(TotalFreedomMod.YOU_ARE_OP); player.sendMessage(TotalFreedomMod.YOU_ARE_OP);
} }
} }

View File

@ -21,13 +21,13 @@ public class Command_radar extends TFM_Command
List<TFM_RadarData> radar_data = new ArrayList<TFM_RadarData>(); List<TFM_RadarData> radar_data = new ArrayList<TFM_RadarData>();
for (Player p : sender_pos.getWorld().getPlayers()) for (Player player : sender_pos.getWorld().getPlayers())
{ {
if (!p.equals(sender_p)) if (!player.equals(sender_p))
{ {
try try
{ {
radar_data.add(new TFM_RadarData(p, sender_pos.distance(p.getLocation()), p.getLocation())); radar_data.add(new TFM_RadarData(player, sender_pos.distance(player.getLocation()), player.getLocation()));
} }
catch (IllegalArgumentException ex) catch (IllegalArgumentException ex)
{ {

View File

@ -15,9 +15,9 @@ public class Command_rank extends TFM_Command
{ {
if (senderIsConsole && args.length < 1) if (senderIsConsole && args.length < 1)
{ {
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
playerMsg(p.getName() + " is " + TFM_Util.getRank(p)); playerMsg(player.getName() + " is " + TFM_Util.getRank(player));
} }
return true; return true;
} }
@ -33,18 +33,18 @@ public class Command_rank extends TFM_Command
return true; return true;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
sender.sendMessage(ex.getMessage()); sender.sendMessage(ex.getMessage());
return true; return true;
} }
playerMsg(p.getName() + " is " + TFM_Util.getRank(p), ChatColor.AQUA); playerMsg(player.getName() + " is " + TFM_Util.getRank(player), ChatColor.AQUA);
return true; return true;
} }

View File

@ -2,7 +2,6 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util; import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
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;
@ -16,7 +15,7 @@ public class Command_rawsay extends TFM_Command
{ {
if (args.length > 0) if (args.length > 0)
{ {
TFM_Util.bcastMsg(ChatColor.translateAlternateColorCodes('&', StringUtils.join(args, " "))); TFM_Util.bcastMsg(TFM_Util.colorise(StringUtils.join(args, " ")));
} }
return true; return true;

View File

@ -13,7 +13,7 @@ public class Command_rd extends TFM_Command
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{ {
TFM_Util.adminAction(sender.getName(), "Removing all server entities.", true); TFM_Util.adminAction(sender.getName(), "Removing all server entities.", true);
playerMsg((TFM_Util.wipeEntities(true, true)) + " enties removed."); playerMsg((TFM_Util.TFM_EntityWiper.wipeEntities(true, true)) + " enties removed.");
return true; return true;
} }

View File

@ -51,14 +51,14 @@ public class Command_ro extends TFM_Command
} }
} }
Player target_player = null; Player targetPlayer = null;
if (args.length == 3) if (args.length == 3)
{ {
try try
{ {
target_player = getPlayer(args[2]); targetPlayer = getPlayer(args[2]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;
@ -67,18 +67,18 @@ public class Command_ro extends TFM_Command
int affected = 0; int affected = 0;
if (target_player == null) if (targetPlayer == null)
{ {
TFM_Util.adminAction(sender.getName(), "Removing all " + from_material.name() + " within " + radius + " blocks of all players. Brace for lag...", senderIsConsole); TFM_Util.adminAction(sender.getName(), "Removing all " + from_material.name() + " within " + radius + " blocks of all players. Brace for lag...", senderIsConsole);
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
affected += TFM_Util.replaceBlocks(p.getLocation(), from_material, Material.AIR, radius); affected += TFM_Util.replaceBlocks(player.getLocation(), from_material, Material.AIR, radius);
} }
} }
else else
{ {
TFM_Util.adminAction(sender.getName(), "Removing all " + from_material.name() + " within " + radius + " blocks of " + target_player.getName() + ".", senderIsConsole); TFM_Util.adminAction(sender.getName(), "Removing all " + from_material.name() + " within " + radius + " blocks of " + targetPlayer.getName() + ".", senderIsConsole);
affected += TFM_Util.replaceBlocks(target_player.getLocation(), from_material, Material.AIR, radius); affected += TFM_Util.replaceBlocks(targetPlayer.getLocation(), from_material, Material.AIR, radius);
} }
TFM_Util.adminAction(sender.getName(), "Remove complete. " + affected + " blocks removed.", senderIsConsole); TFM_Util.adminAction(sender.getName(), "Remove complete. " + affected + " blocks removed.", senderIsConsole);

View File

@ -60,7 +60,7 @@ public class Command_rollback extends TFM_Command
playerName = player.getName(); playerName = player.getName();
} }
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
} }

View File

@ -26,15 +26,15 @@ public class Command_saconfig extends TFM_Command
} }
else else
{ {
if (!senderIsConsole) if (!TFM_SuperadminList.isSeniorAdmin(sender))
{ {
playerMsg("This command may only be used from the console."); playerMsg(TotalFreedomMod.MSG_NO_PERMS);
return true; return true;
} }
if (args[0].equals("clean")) if (args[0].equals("clean"))
{ {
TFM_Util.adminAction(sender.getName(), "Cleaning superadmin list.", true); TFM_Util.adminAction(sender.getName(), "Cleaning superadmin list", true);
TFM_SuperadminList.cleanSuperadminList(true); TFM_SuperadminList.cleanSuperadminList(true);
playerMsg("Superadmins: " + StringUtils.join(TFM_SuperadminList.getSuperadminNames(), ", "), ChatColor.YELLOW); playerMsg("Superadmins: " + StringUtils.join(TFM_SuperadminList.getSuperadminNames(), ", "), ChatColor.YELLOW);
} }
@ -66,7 +66,7 @@ public class Command_saconfig extends TFM_Command
{ {
superadmin = TFM_SuperadminList.getAdminEntry(getPlayer(args[1]).getName().toLowerCase()); superadmin = TFM_SuperadminList.getAdminEntry(getPlayer(args[1]).getName().toLowerCase());
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
} }
} }
@ -77,7 +77,7 @@ public class Command_saconfig extends TFM_Command
} }
else else
{ {
playerMsg(ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', superadmin.toString()))); playerMsg(ChatColor.stripColor(TFM_Util.colorise(superadmin.toString())));
} }
return true; return true;
@ -91,14 +91,14 @@ public class Command_saconfig extends TFM_Command
if (args[0].equalsIgnoreCase("add")) if (args[0].equalsIgnoreCase("add"))
{ {
Player p = null; Player player = null;
String admin_name = null; String admin_name = null;
try try
{ {
p = getPlayer(args[1]); player = getPlayer(args[1]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
TFM_Superadmin superadmin = TFM_SuperadminList.getAdminEntry(args[1].toLowerCase()); TFM_Superadmin superadmin = TFM_SuperadminList.getAdminEntry(args[1].toLowerCase());
if (superadmin != null) if (superadmin != null)
@ -112,10 +112,10 @@ public class Command_saconfig extends TFM_Command
} }
} }
if (p != null) if (player != null)
{ {
TFM_Util.adminAction(sender.getName(), "Adding " + p.getName() + " to the superadmin list.", true); TFM_Util.adminAction(sender.getName(), "Adding " + player.getName() + " to the superadmin list.", true);
TFM_SuperadminList.addSuperadmin(p); TFM_SuperadminList.addSuperadmin(player);
} }
else if (admin_name != null) else if (admin_name != null)
{ {
@ -131,24 +131,24 @@ public class Command_saconfig extends TFM_Command
return true; return true;
} }
String target_name = args[1]; String targetName = args[1];
try try
{ {
target_name = getPlayer(target_name).getName(); targetName = getPlayer(targetName).getName();
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
} }
if (!TFM_SuperadminList.getSuperadminNames().contains(target_name.toLowerCase())) if (!TFM_SuperadminList.getSuperadminNames().contains(targetName.toLowerCase()))
{ {
playerMsg("Superadmin not found: " + target_name); playerMsg("Superadmin not found: " + targetName);
return true; return true;
} }
TFM_Util.adminAction(sender.getName(), "Removing " + target_name + " from the superadmin list", true); TFM_Util.adminAction(sender.getName(), "Removing " + targetName + " from the superadmin list", true);
TFM_SuperadminList.removeSuperadmin(target_name); TFM_SuperadminList.removeSuperadmin(targetName);
if (!TotalFreedomMod.twitterbotEnabled) if (!TotalFreedomMod.twitterbotEnabled)
{ {
@ -157,15 +157,15 @@ public class Command_saconfig extends TFM_Command
// Twitterbot // Twitterbot
TFM_TwitterHandler twitterbot = TFM_TwitterHandler.getInstance(plugin); TFM_TwitterHandler twitterbot = TFM_TwitterHandler.getInstance(plugin);
String reply = twitterbot.delTwitter(target_name); String reply = twitterbot.delTwitter(targetName);
if ("ok".equals(reply)) if ("ok".equals(reply))
{ {
TFM_Util.adminAction(sender.getName(), "Removing " + target_name + " from TwitterBot", true); TFM_Util.adminAction(sender.getName(), "Removing " + targetName + " from TwitterBot", true);
} }
else if ("disabled".equals(reply)) else if ("disabled".equals(reply))
{ {
TFM_Util.playerMsg(sender, "Warning: Could not check if player has a twitter handle!"); TFM_Util.playerMsg(sender, "Warning: Could not check if player has a twitter handle!");
TFM_Util.playerMsg(sender, "TwitterBot has been temporarily disabled,, please wait until it get re-enabled", ChatColor.RED); TFM_Util.playerMsg(sender, "TwitterBot has been temporarily disabled, please wait until it gets re-enabled", ChatColor.RED);
} }
else if ("failed".equals(reply)) else if ("failed".equals(reply))
{ {
@ -184,7 +184,7 @@ public class Command_saconfig extends TFM_Command
} }
else if ("notfound".equals(reply)) else if ("notfound".equals(reply))
{ {
TFM_Util.playerMsg(sender, target_name + " did not have a twitter handle registered to their name.", ChatColor.GREEN); TFM_Util.playerMsg(sender, targetName + " did not have a twitter handle registered to their name.", ChatColor.GREEN);
} }
} }

View File

@ -27,9 +27,9 @@ public class Command_say extends TFM_Command
{ {
TFM_Util.bcastMsg("Server is going offline.", ChatColor.GRAY); TFM_Util.bcastMsg("Server is going offline.", ChatColor.GRAY);
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
p.kickPlayer("Server is going offline, come back in a few minutes."); player.kickPlayer("Server is going offline, come back in a few minutes.");
} }
server.shutdown(); server.shutdown();

View File

@ -0,0 +1,28 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_ServiceChecker;
import me.StevenLawson.TotalFreedomMod.TFM_ServiceChecker.TFM_ServiceChecker_ServiceStatus;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
@CommandParameters(description = "Shows the status of all Mojang services", usage = "/<command>")
public class Command_services extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
playerMsg("Mojang Services" + ChatColor.WHITE + ":", ChatColor.BLUE);
for (TFM_ServiceChecker_ServiceStatus service : TFM_ServiceChecker.getInstance().getAllStatuses())
{
playerMsg(service.getFormattedStatus());
}
playerMsg("Version" + ChatColor.WHITE + ": " + TFM_ServiceChecker.getInstance().version, ChatColor.DARK_PURPLE);
playerMsg("Last Check" + ChatColor.WHITE + ": " + TFM_ServiceChecker.getInstance().lastCheck, ChatColor.DARK_PURPLE);
return true;
}
}

View File

@ -15,9 +15,9 @@ public class Command_setl extends TFM_Command
{ {
TFM_Util.adminAction(sender.getName(), "Setting everyone's Worldedit block modification limit to 500.", true); TFM_Util.adminAction(sender.getName(), "Setting everyone's Worldedit block modification limit to 500.", true);
TFM_WorldEditBridge web = TFM_WorldEditBridge.getInstance(); TFM_WorldEditBridge web = TFM_WorldEditBridge.getInstance();
for (final Player p : server.getOnlinePlayers()) for (final Player player : server.getOnlinePlayers())
{ {
web.setLimit(p, 500); web.setLimit(player, 500);
} }
return true; return true;
} }

View File

@ -21,48 +21,48 @@ public class Command_smite extends TFM_Command
return false; return false;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;
} }
smite(p); smite(player);
return true; return true;
} }
public static void smite(final Player p) public static void smite(final Player player)
{ {
TFM_Util.bcastMsg(p.getName() + " has been a naughty, naughty boy.", ChatColor.RED); TFM_Util.bcastMsg(player.getName() + " has been a naughty, naughty boy.", ChatColor.RED);
//Deop //Deop
p.setOp(false); player.setOp(false);
//Set gamemode to survival: //Set gamemode to survival:
p.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
//Clear inventory: //Clear inventory:
p.getInventory().clear(); player.getInventory().clear();
//Strike with lightning effect: //Strike with lightning effect:
final Location target_pos = p.getLocation(); final Location targetPos = player.getLocation();
final World world = p.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, target_pos.getBlockX() + x, target_pos.getBlockY(), target_pos.getBlockZ() + z); final Location strike_pos = new Location(world, targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
world.strikeLightning(strike_pos); world.strikeLightning(strike_pos);
} }
} }
//Kill: //Kill:
p.setHealth(0.0); player.setHealth(0.0);
} }
} }

View File

@ -1,25 +1,12 @@
package me.StevenLawson.TotalFreedomMod.Commands; package me.StevenLawson.TotalFreedomMod.Commands;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
@CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH) @CommandPermissions(level = AdminLevel.ALL, source = SourceType.BOTH)
@CommandParameters(description = "Show misc. server info.", usage = "/<command>") @CommandParameters(description = "Show misc. server info.", usage = "/<command>")
@ -50,66 +37,6 @@ public class Command_status extends TFM_Command
playerMsg(String.format("World %d: %s - %d players.", i++, world.getName(), world.getPlayers().size()), ChatColor.BLUE); playerMsg(String.format("World %d: %s - %d players.", i++, world.getName(), world.getPlayers().size()), ChatColor.BLUE);
} }
new BukkitRunnable()
{
@SuppressWarnings("unchecked")
@Override
public void run()
{
try
{
URL mojang_status = new URL("http://status.mojang.com/check");
BufferedReader in = new BufferedReader(new InputStreamReader(mojang_status.openStream()));
JSONArray status_json = (JSONArray) JSONValue.parse(in.readLine());
in.close();
Map<String, Boolean> service_status = new HashMap<String, Boolean>();
Iterator status_it = status_json.iterator();
while (status_it.hasNext())
{
JSONObject service = (JSONObject) status_it.next();
Iterator service_it = service.entrySet().iterator();
while (service_it.hasNext())
{
Entry<String, String> pair = (Entry<String, String>) service_it.next();
service_status.put(pair.getKey(), (pair.getValue().equals("green") ? Boolean.TRUE : Boolean.FALSE));
}
}
final List<String> status_output = new ArrayList<String>();
Iterator<Entry<String, Boolean>> output_it = service_status.entrySet().iterator();
while (output_it.hasNext())
{
Entry<String, Boolean> pair = output_it.next();
String service_name = pair.getKey();
boolean service_online = pair.getValue().booleanValue();
if (SERVICE_MAP.containsKey(service_name))
{
service_name = SERVICE_MAP.get(service_name);
}
status_output.add(String.format("%s is %s", service_name, (service_online ? ChatColor.GREEN + "ONLINE" + ChatColor.GRAY : ChatColor.RED + "OFFLINE" + ChatColor.GRAY)));
}
new BukkitRunnable()
{
@Override
public void run()
{
playerMsg(String.format("Mojang Service Status: %s.", StringUtils.join(status_output, ", ")), ChatColor.GRAY);
}
}.runTask(plugin);
}
catch (Exception ex)
{
TFM_Log.severe(ex);
}
}
}.runTaskAsynchronously(plugin);
return true; return true;
} }
} }

View File

@ -66,11 +66,11 @@ public class Command_stfu extends TFM_Command
TFM_PlayerData playerdata; TFM_PlayerData playerdata;
int counter = 0; int counter = 0;
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
playerdata = TFM_PlayerData.getPlayerData(p); playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.setMuted(true); playerdata.setMuted(true);
counter++; counter++;
} }
@ -87,9 +87,9 @@ public class Command_stfu extends TFM_Command
public void run() public void run()
{ {
TFM_Util.adminAction("MuteTimer", "Unmuting all players", false); TFM_Util.adminAction("MuteTimer", "Unmuting all players", false);
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
TFM_PlayerData.getPlayerData(p).setMuted(false); TFM_PlayerData.getPlayerData(player).setMuted(false);
} }
} }
}.runTaskLater(plugin, 20L * 60L * 5L); }.runTaskLater(plugin, 20L * 60L * 5L);
@ -98,35 +98,35 @@ public class Command_stfu extends TFM_Command
} }
else else
{ {
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
sender.sendMessage(ex.getMessage()); sender.sendMessage(ex.getMessage());
return true; return true;
} }
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
if (playerdata.isMuted()) if (playerdata.isMuted())
{ {
TFM_Util.adminAction(sender.getName(), "Unmuting " + p.getName(), true); TFM_Util.adminAction(sender.getName(), "Unmuting " + player.getName(), true);
playerdata.setMuted(false); playerdata.setMuted(false);
playerMsg("Unmuted " + p.getName()); playerMsg("Unmuted " + player.getName());
} }
else else
{ {
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
TFM_Util.adminAction(sender.getName(), "Muting " + p.getName(), true); TFM_Util.adminAction(sender.getName(), "Muting " + player.getName(), true);
playerdata.setMuted(true); playerdata.setMuted(true);
playerMsg("Muted " + p.getName()); playerMsg("Muted " + player.getName());
} }
else else
{ {
playerMsg(p.getName() + " is a superadmin, and can't be muted."); playerMsg(player.getName() + " is a superadmin, and can't be muted.");
} }
} }
} }

View File

@ -15,9 +15,9 @@ public class Command_stop extends TFM_Command
{ {
TFM_Util.bcastMsg("Server is going offline!", ChatColor.LIGHT_PURPLE); TFM_Util.bcastMsg("Server is going offline!", ChatColor.LIGHT_PURPLE);
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
p.kickPlayer("Server is going offline, come back in about 20 seconds."); player.kickPlayer("Server is going offline, come back in about 20 seconds.");
} }
server.shutdown(); server.shutdown();

View File

@ -3,7 +3,6 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList; import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util; import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.command.Command; import org.bukkit.command.Command;
@ -26,11 +25,11 @@ public class Command_survival extends TFM_Command
} }
} }
Player p; Player player;
if (args.length == 0) if (args.length == 0)
{ {
p = sender_p; player = sender_p;
} }
else else
{ {
@ -42,9 +41,9 @@ public class Command_survival extends TFM_Command
return true; return true;
} }
for (Player player : server.getOnlinePlayers()) for (Player targetPlayer : server.getOnlinePlayers())
{ {
player.setGameMode(GameMode.SURVIVAL); targetPlayer.setGameMode(GameMode.SURVIVAL);
} }
TFM_Util.adminAction(sender.getName(), "Changing everyone's gamemode to survival", false); TFM_Util.adminAction(sender.getName(), "Changing everyone's gamemode to survival", false);
@ -55,9 +54,9 @@ public class Command_survival extends TFM_Command
{ {
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;
@ -70,9 +69,9 @@ public class Command_survival extends TFM_Command
} }
} }
playerMsg("Setting " + p.getName() + " to game mode 'Survival'."); playerMsg("Setting " + player.getName() + " to game mode 'Survival'.");
p.sendMessage(sender.getName() + " set your game mode to 'Survival'."); player.sendMessage(sender.getName() + " set your game mode to 'Survival'.");
p.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
return true; return true;
} }

View File

@ -0,0 +1,128 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.Arrays;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
@CommandParameters(description = "Sets yourself a prefix", usage = "/<command> <<prefix> | off | clear <player> | clearall>")
public class Command_tag extends TFM_Command
{
public static final List<String> FORBIDDEN_WORDS = Arrays.asList(new String[]
{
"admin", "owner", "moderator", "developer", "&k"
});
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length == 1)
{
if ("clearall".equals(args[0]))
{
if (!TFM_SuperadminList.isUserSuperadmin(sender))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
return true;
}
TFM_Util.adminAction(sender.getName(), "Removing all tags", false);
int count = 0;
for (Player player : server.getOnlinePlayers())
{
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
if (playerdata.getTag() != null)
{
count++;
TFM_PlayerData.getPlayerData(player).setTag(null);
}
}
playerMsg(count + " tag(s) removed.");
return true;
}
if (senderIsConsole)
{
playerMsg("Only in-game players can set tags. Use \"/tag clearall\" to reset all tags.");
return true;
}
if (TFM_Util.isStopCommand(args[0]))
{
TFM_PlayerData.getPlayerData(sender_p).setTag(null);
playerMsg("Your tag has been removed.");
return true;
}
if (args[0].length() > 15)
{
playerMsg("That tag is too long.");
return true;
}
if (!TFM_SuperadminList.isUserSuperadmin(sender))
{
for (String word : FORBIDDEN_WORDS)
{
if (args[0].toLowerCase().contains(word.toLowerCase()))
{
if (word.contains(String.valueOf(ChatColor.COLOR_CHAR)))
{
playerMsg("That tag contains a forbidden color-code.");
}
else
{
playerMsg("That tag contains a forbidden word.");
}
return true;
}
}
}
TFM_PlayerData.getPlayerData(sender_p).setTag(args[0]);
playerMsg("Tag set.");
return true;
}
else if (args.length == 2)
{
if ("clear".equals(args[0]))
{
if (!TFM_SuperadminList.isUserSuperadmin(sender))
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
return true;
}
final Player player;
try
{
player = getPlayer(args[1]);
}
catch (PlayerNotFoundException ex)
{
playerMsg(ex.getMessage());
return true;
}
TFM_PlayerData.getPlayerData(player).setTag(null);
playerMsg("Removed " + player.getName() + "'s tag.");
return true;
}
return false;
}
return false;
}
}

View File

@ -19,21 +19,21 @@ public class Command_tban extends TFM_Command
return false; return false;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;
} }
TFM_Util.adminAction(sender.getName(), "NOPE: " + p.getName(), true); TFM_Util.adminAction(sender.getName(), "NOPE: " + player.getName(), true);
TFM_ServerInterface.banUsername(p.getName(), ChatColor.RED + "You have been temporarily banned for 5 minutes", TFM_ServerInterface.banUsername(player.getName(), ChatColor.RED + "You have been temporarily banned for 5 minutes",
sender.getName(), TFM_Util.parseDateOffset("5m")); sender.getName(), TFM_Util.parseDateOffset("5m"));
p.kickPlayer(ChatColor.RED + "NOPE!\nYou have been temporarily banned for five minutes."); player.kickPlayer(ChatColor.RED + "NOPE!\nYou have been temporarily banned for five minutes.");
return true; return true;
} }

View File

@ -25,18 +25,18 @@ public class Command_tempban extends TFM_Command
return false; return false;
} }
Player p; Player player;
try try
{ {
p = getPlayer(args[0]); player = getPlayer(args[0]);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
playerMsg(ex.getMessage(), ChatColor.RED); playerMsg(ex.getMessage(), ChatColor.RED);
return true; return true;
} }
StringBuilder bcast_msg = new StringBuilder("Temporarily banned " + p.getName()); StringBuilder bcast_msg = new StringBuilder("Temporarily banned " + player.getName());
Date ban_duration = TFM_Util.parseDateOffset("30m"); Date ban_duration = TFM_Util.parseDateOffset("30m");
if (args.length >= 2) if (args.length >= 2)
@ -57,9 +57,9 @@ public class Command_tempban extends TFM_Command
} }
TFM_Util.adminAction(sender.getName(), bcast_msg.toString(), true); TFM_Util.adminAction(sender.getName(), bcast_msg.toString(), true);
TFM_ServerInterface.banUsername(p.getName(), ban_reason, sender.getName(), ban_duration); TFM_ServerInterface.banUsername(player.getName(), ban_reason, sender.getName(), ban_duration);
TFM_ServerInterface.banIP(p.getAddress().getAddress().getHostAddress().trim(), ban_reason, sender.getName(), ban_duration); TFM_ServerInterface.banIP(player.getAddress().getAddress().getHostAddress().trim(), ban_reason, sender.getName(), ban_duration);
p.kickPlayer(sender.getName() + " - " + bcast_msg.toString()); player.kickPlayer(sender.getName() + " - " + bcast_msg.toString());
return true; return true;
} }

View File

@ -46,14 +46,14 @@ public class Command_tfbanlist extends TFM_Command
StringBuilder banned_players = new StringBuilder(); StringBuilder banned_players = new StringBuilder();
banned_players.append("Banned Players: "); banned_players.append("Banned Players: ");
boolean first = true; boolean first = true;
for (OfflinePlayer p : server.getBannedPlayers()) for (OfflinePlayer player : server.getBannedPlayers())
{ {
if (!first) if (!first)
{ {
banned_players.append(", "); banned_players.append(", ");
} }
first = false; first = false;
banned_players.append(p.getName().trim()); banned_players.append(player.getName().trim());
} }
playerMsg(banned_players.toString()); playerMsg(banned_players.toString());

View File

@ -16,9 +16,8 @@ public class Command_tfm extends TFM_Command
playerMsg("TotalFreedomMod for 'TotalFreedom', the original all-op server.", ChatColor.GOLD); playerMsg("TotalFreedomMod for 'TotalFreedom', the original all-op server.", ChatColor.GOLD);
playerMsg(String.format("Version " + ChatColor.BLUE + "%s.%s" + ChatColor.BLUE + ", built %s.", TotalFreedomMod.pluginVersion, TotalFreedomMod.buildNumber, TotalFreedomMod.buildDate), ChatColor.GOLD); playerMsg(String.format("Version " + ChatColor.BLUE + "%s.%s" + ChatColor.BLUE + ", built %s.", TotalFreedomMod.pluginVersion, TotalFreedomMod.buildNumber, TotalFreedomMod.buildDate), ChatColor.GOLD);
playerMsg("Created by Madgeek1450 and DarthSalamon.", ChatColor.GOLD); playerMsg("Created by Madgeek1450 and DarthSalamon.", ChatColor.GOLD);
playerMsg("Visit " + ChatColor.AQUA + "http://totalfreedom.me/" + ChatColor.GREEN + " for more information.", ChatColor.DARK_GREEN); playerMsg("Visit " + ChatColor.AQUA + "http://totalfreedom.me/" + ChatColor.GREEN + " for more information.", ChatColor.GREEN);
return true; return true;
} }
} }

View File

@ -0,0 +1,108 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.plugin.RegisteredListener;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Pretty rainbow trails.", usage = "/<command> [off]")
public class Command_trail extends TFM_Command
{
private static Listener movementListener = null;
private static final List<Player> trailPlayers = new ArrayList<Player>();
private static final Random RANDOM = new Random();
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length > 0 && TFM_Util.isStopCommand(args[0]))
{
trailPlayers.remove(sender_p);
playerMsg("Trail disabled.");
}
else
{
if (!trailPlayers.contains(sender_p))
{
trailPlayers.add(sender_p);
}
playerMsg("Trail enabled. Use \"/trail off\" to disable.");
}
if (!trailPlayers.isEmpty())
{
registerMovementHandler();
}
else
{
unregisterMovementHandler();
}
return true;
}
private static void registerMovementHandler()
{
if (getRegisteredListener(movementListener) == null)
{
Bukkit.getPluginManager().registerEvents(movementListener = new Listener()
{
@EventHandler(priority = EventPriority.NORMAL)
public void onPlayerMove(PlayerMoveEvent event)
{
Player player = event.getPlayer();
if (trailPlayers.contains(player))
{
Block fromBlock = event.getFrom().getBlock();
if (fromBlock.isEmpty())
{
Block toBlock = event.getTo().getBlock();
if (!fromBlock.equals(toBlock))
{
fromBlock.setType(Material.WOOL);
fromBlock.setData((byte) RANDOM.nextInt(16));
}
}
}
}
}, TotalFreedomMod.plugin);
}
}
private static void unregisterMovementHandler()
{
Listener registeredListener = getRegisteredListener(movementListener);
if (registeredListener != null)
{
PlayerMoveEvent.getHandlerList().unregister(registeredListener);
}
}
private static Listener getRegisteredListener(Listener listener)
{
RegisteredListener[] registeredListeners = PlayerMoveEvent.getHandlerList().getRegisteredListeners();
for (RegisteredListener registeredListener : registeredListeners)
{
if (registeredListener.getListener() == listener)
{
return listener;
}
}
return null;
}
}

View File

@ -35,9 +35,9 @@ public class Command_whitelist extends TFM_Command
int offlineWPs = 0; int offlineWPs = 0;
int totalWPs = 0; int totalWPs = 0;
for (OfflinePlayer p : server.getWhitelistedPlayers()) for (OfflinePlayer player : server.getWhitelistedPlayers())
{ {
if (p.isOnline()) if (player.isOnline())
{ {
onlineWPs++; onlineWPs++;
} }
@ -88,18 +88,18 @@ public class Command_whitelist extends TFM_Command
String search_name = args[1].trim().toLowerCase(); String search_name = args[1].trim().toLowerCase();
OfflinePlayer p; OfflinePlayer player;
try try
{ {
p = getPlayer(search_name); player = getPlayer(search_name);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
p = server.getOfflinePlayer(search_name); player = server.getOfflinePlayer(search_name);
} }
TFM_Util.adminAction(sender.getName(), "Adding " + p.getName() + " to the whitelist.", false); TFM_Util.adminAction(sender.getName(), "Adding " + player.getName() + " to the whitelist.", false);
p.setWhitelisted(true); player.setWhitelisted(true);
return true; return true;
} }
@ -113,20 +113,20 @@ public class Command_whitelist extends TFM_Command
String search_name = args[1].trim().toLowerCase(); String search_name = args[1].trim().toLowerCase();
OfflinePlayer p; OfflinePlayer player;
try try
{ {
p = getPlayer(search_name); player = getPlayer(search_name);
} }
catch (CantFindPlayerException ex) catch (PlayerNotFoundException ex)
{ {
p = server.getOfflinePlayer(search_name); player = server.getOfflinePlayer(search_name);
} }
if (p.isWhitelisted()) if (player.isWhitelisted())
{ {
TFM_Util.adminAction(sender.getName(), "Removing " + p.getName() + " from the whitelist.", false); TFM_Util.adminAction(sender.getName(), "Removing " + player.getName() + " from the whitelist.", false);
p.setWhitelisted(false); player.setWhitelisted(false);
return true; return true;
} }
else else
@ -142,11 +142,11 @@ public class Command_whitelist extends TFM_Command
{ {
TFM_Util.adminAction(sender.getName(), "Adding all online players to the whitelist.", false); TFM_Util.adminAction(sender.getName(), "Adding all online players to the whitelist.", false);
int counter = 0; int counter = 0;
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (!p.isWhitelisted()) if (!player.isWhitelisted())
{ {
p.setWhitelisted(true); player.setWhitelisted(true);
counter++; counter++;
} }
} }

View File

@ -52,14 +52,14 @@ public class Command_whohas extends TFM_Command
List<String> players = new ArrayList<String>(); List<String> players = new ArrayList<String>();
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (p.getInventory().contains(material)) if (player.getInventory().contains(material))
{ {
players.add(p.getName()); players.add(player.getName());
if (smite & !TFM_SuperadminList.isUserSuperadmin(p)) if (smite & !TFM_SuperadminList.isUserSuperadmin(player))
{ {
Command_smite.smite(p); Command_smite.smite(player);
} }
} }
} }

View File

@ -36,9 +36,9 @@ public class Command_wildcard extends TFM_Command
String base_command = StringUtils.join(args, " "); String base_command = StringUtils.join(args, " ");
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
String out_command = base_command.replaceAll("\\x3f", p.getName()); String out_command = base_command.replaceAll("\\x3f", player.getName());
playerMsg("Running Command: " + out_command); playerMsg("Running Command: " + out_command);
server.dispatchCommand(sender, out_command); server.dispatchCommand(sender, out_command);
} }

View File

@ -17,9 +17,9 @@ public class Command_wipeflatlands extends TFM_Command
TFM_Util.bcastMsg("Server is going offline for flatlands wipe.", ChatColor.GRAY); TFM_Util.bcastMsg("Server is going offline for flatlands wipe.", ChatColor.GRAY);
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
p.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.");
} }
server.shutdown(); server.shutdown();

View File

@ -2,17 +2,17 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
public class CantFindPlayerException extends Exception public class PlayerNotFoundException extends Exception
{ {
// apparently, java needs this // apparently, java needs this
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public CantFindPlayerException() public PlayerNotFoundException()
{ {
super(ChatColor.GRAY + "Can't find player."); super(ChatColor.GRAY + "Can't find player.");
} }
public CantFindPlayerException(String msg) public PlayerNotFoundException(String msg)
{ {
super(ChatColor.GRAY + "Can't find player: " + msg); super(ChatColor.GRAY + "Can't find player: " + msg);
} }

View File

@ -138,19 +138,19 @@ public abstract class TFM_Command
return true; return true;
} }
public Player getPlayer(final String partialname) throws CantFindPlayerException public Player getPlayer(final String partialname) throws PlayerNotFoundException
{ {
List<Player> matches = server.matchPlayer(partialname); List<Player> matches = server.matchPlayer(partialname);
if (matches.isEmpty()) if (matches.isEmpty())
{ {
for (Player p : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (p.getDisplayName().toLowerCase().contains(partialname.toLowerCase())) if (player.getDisplayName().toLowerCase().contains(partialname.toLowerCase()))
{ {
return p; return player;
} }
} }
throw new CantFindPlayerException(partialname); throw new PlayerNotFoundException(partialname);
} }
else else
{ {

View File

@ -1,5 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Listener; package me.StevenLawson.TotalFreedomMod.Listener;
import me.StevenLawson.TotalFreedomMod.TFM_Heartbeat;
import me.StevenLawson.TotalFreedomMod.TFM_Log; import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData; import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_ProtectedArea; import me.StevenLawson.TotalFreedomMod.TFM_ProtectedArea;
@ -40,14 +41,14 @@ public class TFM_BlockListener implements Listener
@EventHandler(priority = EventPriority.NORMAL) @EventHandler(priority = EventPriority.NORMAL)
public void onBlockBreak(BlockBreakEvent event) public void onBlockBreak(BlockBreakEvent event)
{ {
Player p = event.getPlayer(); Player player = event.getPlayer();
Location block_pos = event.getBlock().getLocation(); Location block_pos = event.getBlock().getLocation();
if (TotalFreedomMod.nukeMonitor) if (TotalFreedomMod.nukeMonitor)
{ {
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
Location player_pos = p.getLocation(); Location player_pos = player.getLocation();
boolean out_of_range = false; boolean out_of_range = false;
if (!player_pos.getWorld().equals(block_pos.getWorld())) if (!player_pos.getWorld().equals(block_pos.getWorld()))
@ -61,11 +62,10 @@ public class TFM_BlockListener implements Listener
if (out_of_range) if (out_of_range)
{ {
playerdata.incrementFreecamDestroyCount(); if (playerdata.incrementAndGetFreecamDestroyCount() > TotalFreedomMod.freecamTriggerCount)
if (playerdata.getFreecamDestroyCount() > TotalFreedomMod.freecamTriggerCount)
{ {
TFM_Util.bcastMsg(p.getName() + " has been flagged for possible freecam nuking.", ChatColor.RED); TFM_Util.bcastMsg(player.getName() + " has been flagged for possible freecam nuking.", ChatColor.RED);
TFM_Util.autoEject(p, "Freecam (extended range) block breaking is not permitted on this server."); TFM_Util.autoEject(player, "Freecam (extended range) block breaking is not permitted on this server.");
playerdata.resetFreecamDestroyCount(); playerdata.resetFreecamDestroyCount();
@ -74,22 +74,29 @@ public class TFM_BlockListener implements Listener
} }
} }
playerdata.incrementBlockDestroyCount(); Long lastRan = TFM_Heartbeat.getLastRan();
if (playerdata.getBlockDestroyCount() > TotalFreedomMod.nukeMonitorCountBreak) if (lastRan == null || lastRan + TotalFreedomMod.HEARTBEAT_RATE * 1000L < System.currentTimeMillis())
{ {
TFM_Util.bcastMsg(p.getName() + " is breaking blocks too fast!", ChatColor.RED); //TFM_Log.warning("Heartbeat service timeout - can't check block place/break rates.");
TFM_Util.autoEject(p, "You are breaking blocks too fast. Nukers are not permitted on this server."); }
else
{
if (playerdata.incrementAndGetBlockDestroyCount() > TotalFreedomMod.nukeMonitorCountBreak)
{
TFM_Util.bcastMsg(player.getName() + " is breaking blocks too fast!", ChatColor.RED);
TFM_Util.autoEject(player, "You are breaking blocks too fast. Nukers are not permitted on this server.");
playerdata.resetBlockDestroyCount(); playerdata.resetBlockDestroyCount();
event.setCancelled(true); event.setCancelled(true);
return; return;
}
} }
} }
if (TotalFreedomMod.protectedAreasEnabled) if (TotalFreedomMod.protectedAreasEnabled)
{ {
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
if (TFM_ProtectedArea.isInProtectedArea(block_pos)) if (TFM_ProtectedArea.isInProtectedArea(block_pos))
{ {
@ -108,14 +115,14 @@ public class TFM_BlockListener implements Listener
@EventHandler(priority = EventPriority.HIGH) @EventHandler(priority = EventPriority.HIGH)
public void onBlockPlace(BlockPlaceEvent event) public void onBlockPlace(BlockPlaceEvent event)
{ {
Player p = event.getPlayer(); Player player = event.getPlayer();
Location block_pos = event.getBlock().getLocation(); Location block_pos = event.getBlock().getLocation();
if (TotalFreedomMod.nukeMonitor) if (TotalFreedomMod.nukeMonitor)
{ {
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
Location player_pos = p.getLocation(); Location player_pos = player.getLocation();
boolean out_of_range = false; boolean out_of_range = false;
if (!player_pos.getWorld().equals(block_pos.getWorld())) if (!player_pos.getWorld().equals(block_pos.getWorld()))
@ -129,11 +136,10 @@ public class TFM_BlockListener implements Listener
if (out_of_range) if (out_of_range)
{ {
playerdata.incrementFreecamPlaceCount(); if (playerdata.incrementAndGetFreecamPlaceCount() > TotalFreedomMod.freecamTriggerCount)
if (playerdata.getFreecamPlaceCount() > TotalFreedomMod.freecamTriggerCount)
{ {
TFM_Util.bcastMsg(p.getName() + " has been flagged for possible freecam building.", ChatColor.RED); TFM_Util.bcastMsg(player.getName() + " has been flagged for possible freecam building.", ChatColor.RED);
TFM_Util.autoEject(p, "Freecam (extended range) block building is not permitted on this server."); TFM_Util.autoEject(player, "Freecam (extended range) block building is not permitted on this server.");
playerdata.resetFreecamPlaceCount(); playerdata.resetFreecamPlaceCount();
@ -142,22 +148,29 @@ public class TFM_BlockListener implements Listener
} }
} }
playerdata.incrementBlockPlaceCount(); Long lastRan = TFM_Heartbeat.getLastRan();
if (playerdata.getBlockPlaceCount() > TotalFreedomMod.nukeMonitorCountPlace) if (lastRan == null || lastRan + TotalFreedomMod.HEARTBEAT_RATE * 1000L < System.currentTimeMillis())
{ {
TFM_Util.bcastMsg(p.getName() + " is placing blocks too fast!", ChatColor.RED); //TFM_Log.warning("Heartbeat service timeout - can't check block place/break rates.");
TFM_Util.autoEject(p, "You are placing blocks too fast."); }
else
{
if (playerdata.incrementAndGetBlockPlaceCount() > TotalFreedomMod.nukeMonitorCountPlace)
{
TFM_Util.bcastMsg(player.getName() + " is placing blocks too fast!", ChatColor.RED);
TFM_Util.autoEject(player, "You are placing blocks too fast.");
playerdata.resetBlockPlaceCount(); playerdata.resetBlockPlaceCount();
event.setCancelled(true); event.setCancelled(true);
return; return;
}
} }
} }
if (TotalFreedomMod.protectedAreasEnabled) if (TotalFreedomMod.protectedAreasEnabled)
{ {
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
if (TFM_ProtectedArea.isInProtectedArea(block_pos)) if (TFM_ProtectedArea.isInProtectedArea(block_pos))
{ {
@ -174,14 +187,14 @@ public class TFM_BlockListener implements Listener
{ {
if (TotalFreedomMod.allowLavaPlace) if (TotalFreedomMod.allowLavaPlace)
{ {
TFM_Log.info(String.format("%s placed lava @ %s", p.getName(), TFM_Util.formatLocation(event.getBlock().getLocation()))); TFM_Log.info(String.format("%s placed lava @ %s", player.getName(), TFM_Util.formatLocation(event.getBlock().getLocation())));
p.getInventory().clear(p.getInventory().getHeldItemSlot()); player.getInventory().clear(player.getInventory().getHeldItemSlot());
} }
else else
{ {
p.getInventory().setItem(p.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1));
p.sendMessage(ChatColor.GRAY + "Lava placement is currently disabled."); player.sendMessage(ChatColor.GRAY + "Lava placement is currently disabled.");
event.setCancelled(true); event.setCancelled(true);
} }
@ -192,14 +205,14 @@ public class TFM_BlockListener implements Listener
{ {
if (TotalFreedomMod.allowWaterPlace) if (TotalFreedomMod.allowWaterPlace)
{ {
TFM_Log.info(String.format("%s placed water @ %s", p.getName(), TFM_Util.formatLocation(event.getBlock().getLocation()))); TFM_Log.info(String.format("%s placed water @ %s", player.getName(), TFM_Util.formatLocation(event.getBlock().getLocation())));
p.getInventory().clear(p.getInventory().getHeldItemSlot()); player.getInventory().clear(player.getInventory().getHeldItemSlot());
} }
else else
{ {
p.getInventory().setItem(p.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1));
p.sendMessage(ChatColor.GRAY + "Water placement is currently disabled."); player.sendMessage(ChatColor.GRAY + "Water placement is currently disabled.");
event.setCancelled(true); event.setCancelled(true);
} }
@ -209,14 +222,14 @@ public class TFM_BlockListener implements Listener
{ {
if (TotalFreedomMod.allowFirePlace) if (TotalFreedomMod.allowFirePlace)
{ {
TFM_Log.info(String.format("%s placed fire @ %s", p.getName(), TFM_Util.formatLocation(event.getBlock().getLocation()))); TFM_Log.info(String.format("%s placed fire @ %s", player.getName(), TFM_Util.formatLocation(event.getBlock().getLocation())));
p.getInventory().clear(p.getInventory().getHeldItemSlot()); player.getInventory().clear(player.getInventory().getHeldItemSlot());
} }
else else
{ {
p.getInventory().setItem(p.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1));
p.sendMessage(ChatColor.GRAY + "Fire placement is currently disabled."); player.sendMessage(ChatColor.GRAY + "Fire placement is currently disabled.");
event.setCancelled(true); event.setCancelled(true);
} }
@ -226,15 +239,15 @@ public class TFM_BlockListener implements Listener
{ {
if (TotalFreedomMod.allowExplosions) if (TotalFreedomMod.allowExplosions)
{ {
TFM_Log.info(String.format("%s placed TNT @ %s", p.getName(), TFM_Util.formatLocation(event.getBlock().getLocation()))); TFM_Log.info(String.format("%s placed TNT @ %s", player.getName(), TFM_Util.formatLocation(event.getBlock().getLocation())));
p.getInventory().clear(p.getInventory().getHeldItemSlot()); player.getInventory().clear(player.getInventory().getHeldItemSlot());
} }
else else
{ {
p.getInventory().setItem(p.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1));
p.sendMessage(ChatColor.GRAY + "TNT is currently disabled."); player.sendMessage(ChatColor.GRAY + "TNT is currently disabled.");
event.setCancelled(true); event.setCancelled(true);
} }
break; break;

View File

@ -125,9 +125,9 @@ public class TFM_EntityListener implements Listener
{ {
int mobcount = 0; int mobcount = 0;
for (Entity ent : event.getLocation().getWorld().getLivingEntities()) for (Entity entity : event.getLocation().getWorld().getLivingEntities())
{ {
if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime || ent instanceof EnderDragon) if (!(entity instanceof HumanEntity))
{ {
mobcount++; mobcount++;
} }

View File

@ -30,6 +30,7 @@ import org.bukkit.util.Vector;
public class TFM_PlayerListener implements Listener public class TFM_PlayerListener implements Listener
{ {
private static final List<String> BLOCKED_MUTED_CMDS = Arrays.asList(StringUtils.split("say,me,msg,m,tell,r,reply,mail,email", ",")); private static final List<String> BLOCKED_MUTED_CMDS = Arrays.asList(StringUtils.split("say,me,msg,m,tell,r,reply,mail,email", ","));
private static final int MSG_PER_HEARTBEAT = 10;
@EventHandler(priority = EventPriority.HIGH) @EventHandler(priority = EventPriority.HIGH)
public void onPlayerInteract(PlayerInteractEvent event) public void onPlayerInteract(PlayerInteractEvent event)
@ -50,7 +51,6 @@ public class TFM_PlayerListener implements Listener
player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1));
player.sendMessage(ChatColor.GRAY + "Water buckets are currently disabled."); player.sendMessage(ChatColor.GRAY + "Water buckets are currently disabled.");
event.setCancelled(true); event.setCancelled(true);
return;
} }
break; break;
} }
@ -61,7 +61,6 @@ public class TFM_PlayerListener implements Listener
player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1));
player.sendMessage(ChatColor.GRAY + "Lava buckets are currently disabled."); player.sendMessage(ChatColor.GRAY + "Lava buckets are currently disabled.");
event.setCancelled(true); event.setCancelled(true);
return;
} }
break; break;
} }
@ -123,21 +122,21 @@ public class TFM_PlayerListener implements Listener
{ {
if (TFM_SuperadminList.isSeniorAdmin(player, true)) if (TFM_SuperadminList.isSeniorAdmin(player, true))
{ {
Block target_block; Block targetBlock;
if (event.getAction().equals(Action.LEFT_CLICK_AIR)) if (event.getAction().equals(Action.LEFT_CLICK_AIR))
{ {
target_block = player.getTargetBlock(null, 120); targetBlock = player.getTargetBlock(null, 120);
} }
else else
{ {
target_block = event.getClickedBlock(); targetBlock = event.getClickedBlock();
} }
if (target_block != null) if (targetBlock != null)
{ {
player.getWorld().createExplosion(target_block.getLocation(), 4F, true); player.getWorld().createExplosion(targetBlock.getLocation(), 4F, true);
player.getWorld().strikeLightning(target_block.getLocation()); player.getWorld().strikeLightning(targetBlock.getLocation());
} }
else else
{ {
@ -161,10 +160,10 @@ public class TFM_PlayerListener implements Listener
Vector player_dir = player_location.getDirection().normalize(); Vector player_dir = player_location.getDirection().normalize();
double distance = 150.0; double distance = 150.0;
Block target_block = player.getTargetBlock(null, Math.round((float) distance)); Block targetBlock = player.getTargetBlock(null, Math.round((float) distance));
if (target_block != null) if (targetBlock != null)
{ {
distance = player_location.distance(target_block.getLocation()); distance = player_location.distance(targetBlock.getLocation());
} }
final List<Block> affected = new ArrayList<Block>(); final List<Block> affected = new ArrayList<Block>();
@ -215,24 +214,49 @@ public class TFM_PlayerListener implements Listener
} }
} }
@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerTeleport(PlayerTeleportEvent event)
{
TFM_AdminWorld.getInstance().validateMovement(event);
}
@EventHandler(priority = EventPriority.NORMAL) @EventHandler(priority = EventPriority.NORMAL)
public void onPlayerMove(PlayerMoveEvent event) public void onPlayerMove(PlayerMoveEvent event)
{ {
Player p = event.getPlayer(); final Location from = event.getFrom();
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); final Location to = event.getTo();
try
{
if (from.getWorld() == to.getWorld() && from.distanceSquared(to) < (0.0001 * 0.0001))
{
// If player just rotated, but didn't move, don't process this event.
return;
}
}
catch (IllegalArgumentException ex)
{
}
if (!TFM_AdminWorld.getInstance().validateMovement(event))
{
return;
}
Player player = event.getPlayer();
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
for (Entry<Player, Double> fuckoff : TotalFreedomMod.fuckoffEnabledFor.entrySet()) for (Entry<Player, Double> fuckoff : TotalFreedomMod.fuckoffEnabledFor.entrySet())
{ {
Player fuckoff_player = fuckoff.getKey(); Player fuckoff_player = fuckoff.getKey();
if (fuckoff_player.equals(p) || !fuckoff_player.isOnline()) if (fuckoff_player.equals(player) || !fuckoff_player.isOnline())
{ {
continue; continue;
} }
double fuckoff_range = fuckoff.getValue().doubleValue(); double fuckoff_range = fuckoff.getValue().doubleValue();
Location mover_pos = p.getLocation(); Location mover_pos = player.getLocation();
Location fuckoff_pos = fuckoff_player.getLocation(); Location fuckoff_pos = fuckoff_player.getLocation();
double distanceSquared; double distanceSquared;
@ -255,7 +279,7 @@ public class TFM_PlayerListener implements Listener
boolean do_freeze = false; boolean do_freeze = false;
if (TotalFreedomMod.allPlayersFrozen) if (TotalFreedomMod.allPlayersFrozen)
{ {
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
do_freeze = true; do_freeze = true;
} }
@ -270,49 +294,53 @@ public class TFM_PlayerListener implements Listener
if (do_freeze) if (do_freeze)
{ {
Location from = event.getFrom(); Location freezeTo = to.clone();
Location to = event.getTo().clone();
to.setX(from.getX()); freezeTo.setX(from.getX());
to.setY(from.getY()); freezeTo.setY(from.getY());
to.setZ(from.getZ()); freezeTo.setZ(from.getZ());
event.setTo(to); event.setTo(freezeTo);
} }
if (playerdata.isCaged()) if (playerdata.isCaged())
{ {
Location target_pos = p.getLocation().add(0, 1, 0); Location targetPos = player.getLocation().add(0, 1, 0);
boolean out_of_cage; boolean out_of_cage;
if (!target_pos.getWorld().equals(playerdata.getCagePos().getWorld())) if (!targetPos.getWorld().equals(playerdata.getCagePos().getWorld()))
{ {
out_of_cage = true; out_of_cage = true;
} }
else else
{ {
out_of_cage = target_pos.distanceSquared(playerdata.getCagePos()) > (2.5 * 2.5); out_of_cage = targetPos.distanceSquared(playerdata.getCagePos()) > (2.5 * 2.5);
} }
if (out_of_cage) if (out_of_cage)
{ {
playerdata.setCaged(true, target_pos, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.OUTER), playerdata.getCageMaterial(TFM_PlayerData.CageLayer.INNER)); playerdata.setCaged(true, targetPos, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.OUTER), playerdata.getCageMaterial(TFM_PlayerData.CageLayer.INNER));
playerdata.regenerateHistory(); playerdata.regenerateHistory();
playerdata.clearHistory(); playerdata.clearHistory();
TFM_Util.buildHistory(target_pos, 2, playerdata); TFM_Util.buildHistory(targetPos, 2, playerdata);
TFM_Util.generateCube(target_pos, 2, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.OUTER)); TFM_Util.generateCube(targetPos, 2, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.OUTER));
TFM_Util.generateCube(target_pos, 1, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.INNER)); TFM_Util.generateCube(targetPos, 1, playerdata.getCageMaterial(TFM_PlayerData.CageLayer.INNER));
} }
} }
if (playerdata.isOrbiting()) if (playerdata.isOrbiting())
{ {
if (p.getVelocity().length() < playerdata.orbitStrength() * (2.0 / 3.0)) if (player.getVelocity().length() < playerdata.orbitStrength() * (2.0 / 3.0))
{ {
p.setVelocity(new Vector(0, playerdata.orbitStrength(), 0)); player.setVelocity(new Vector(0, playerdata.orbitStrength(), 0));
} }
} }
if (TFM_Jumppads.getInstance().getMode().isOn())
{
TFM_Jumppads.getInstance().PlayerMoveEvent(event);
}
if (TotalFreedomMod.landminesEnabled && TotalFreedomMod.allowExplosions) if (TotalFreedomMod.landminesEnabled && TotalFreedomMod.allowExplosions)
{ {
Iterator<TFM_LandmineData> landmines = TFM_LandmineData.landmines.iterator(); Iterator<TFM_LandmineData> landmines = TFM_LandmineData.landmines.iterator();
@ -327,29 +355,30 @@ public class TFM_PlayerListener implements Listener
continue; continue;
} }
if (!landmine.player.equals(p)) if (!landmine.player.equals(player))
{ {
if (p.getWorld().equals(landmine_pos.getWorld())) if (player.getWorld().equals(landmine_pos.getWorld()))
{ {
if (p.getLocation().distanceSquared(landmine_pos) <= (landmine.radius * landmine.radius)) if (player.getLocation().distanceSquared(landmine_pos) <= (landmine.radius * landmine.radius))
{ {
landmine.landmine_pos.getBlock().setType(Material.AIR); landmine.landmine_pos.getBlock().setType(Material.AIR);
TNTPrimed tnt1 = landmine_pos.getWorld().spawn(landmine_pos, TNTPrimed.class); TNTPrimed tnt1 = landmine_pos.getWorld().spawn(landmine_pos, TNTPrimed.class);
tnt1.setFuseTicks(40); tnt1.setFuseTicks(40);
tnt1.setPassenger(p); tnt1.setPassenger(player);
tnt1.setVelocity(new Vector(0.0, 2.0, 0.0)); tnt1.setVelocity(new Vector(0.0, 2.0, 0.0));
TNTPrimed tnt2 = landmine_pos.getWorld().spawn(p.getLocation(), TNTPrimed.class); TNTPrimed tnt2 = landmine_pos.getWorld().spawn(player.getLocation(), TNTPrimed.class);
tnt2.setFuseTicks(1); tnt2.setFuseTicks(1);
p.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
landmines.remove(); landmines.remove();
} }
} }
} }
} }
} }
} }
@EventHandler(priority = EventPriority.NORMAL) @EventHandler(priority = EventPriority.NORMAL)
@ -363,28 +392,35 @@ public class TFM_PlayerListener implements Listener
{ {
try try
{ {
final Player p = event.getPlayer(); final Player player = event.getPlayer();
String message = event.getMessage().trim(); String message = event.getMessage().trim();
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.incrementMsgCount();
// Check for spam // Check for spam
if (playerdata.getMsgCount() > 10) Long lastRan = TFM_Heartbeat.getLastRan();
if (lastRan == null || lastRan + TotalFreedomMod.HEARTBEAT_RATE * 1000L < System.currentTimeMillis())
{ {
TFM_Util.bcastMsg(p.getName() + " was automatically kicked for spamming chat.", ChatColor.RED); //TFM_Log.warning("Heartbeat service timeout - can't check block place/break rates.");
TFM_Util.autoEject(p, "Kicked for spamming chat."); }
else
{
if (playerdata.incrementAndGetMsgCount() > MSG_PER_HEARTBEAT)
{
TFM_Util.bcastMsg(player.getName() + " was automatically kicked for spamming chat.", ChatColor.RED);
TFM_Util.autoEject(player, "Kicked for spamming chat.");
playerdata.resetMsgCount(); playerdata.resetMsgCount();
event.setCancelled(true); event.setCancelled(true);
return; return;
}
} }
// Check for message repeat // Check for message repeat
if (playerdata.getLastMessage().equalsIgnoreCase(message)) if (playerdata.getLastMessage().equalsIgnoreCase(message))
{ {
TFM_Util.playerMsg(p, "Please do not repeat messages."); TFM_Util.playerMsg(player, "Please do not repeat messages.");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -393,9 +429,9 @@ public class TFM_PlayerListener implements Listener
// Check for muted // Check for muted
if (playerdata.isMuted()) if (playerdata.isMuted())
{ {
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
p.sendMessage(ChatColor.RED + "You are muted, STFU!"); player.sendMessage(ChatColor.RED + "You are muted, STFU!");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -412,7 +448,7 @@ public class TFM_PlayerListener implements Listener
if (message.length() > 100) if (message.length() > 100)
{ {
message = message.substring(0, 100); message = message.substring(0, 100);
TFM_Util.playerMsg(p, "Message was shortened because it was too long to send."); TFM_Util.playerMsg(player, "Message was shortened because it was too long to send.");
} }
// Check for caps // Check for caps
@ -435,13 +471,20 @@ public class TFM_PlayerListener implements Listener
// Check for adminchat // Check for adminchat
if (playerdata.inAdminChat()) if (playerdata.inAdminChat())
{ {
TFM_Util.adminChatMessage(p, message, false); TFM_Util.adminChatMessage(player, message, false);
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
// Finally, set message // Finally, set message
event.setMessage(message); event.setMessage(message);
// Set the tag
if (playerdata.getTag() != null)
{
player.setDisplayName((playerdata.getTag() + " " + player.getDisplayName().replaceAll(" ", "")));
}
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -453,20 +496,19 @@ public class TFM_PlayerListener implements Listener
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event)
{ {
String command = event.getMessage(); String command = event.getMessage();
Player p = event.getPlayer(); Player player = event.getPlayer();
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.incrementMsgCount();
playerdata.setLastCommand(command); playerdata.setLastCommand(command);
if (playerdata.getMsgCount() > 10) if (playerdata.incrementAndGetMsgCount() > MSG_PER_HEARTBEAT)
{ {
TFM_Util.bcastMsg(p.getName() + " was automatically kicked for spamming commands.", ChatColor.RED); TFM_Util.bcastMsg(player.getName() + " was automatically kicked for spamming commands.", ChatColor.RED);
TFM_Util.autoEject(p, "Kicked for spamming commands."); TFM_Util.autoEject(player, "Kicked for spamming commands.");
playerdata.resetMsgCount(); playerdata.resetMsgCount();
TFM_Util.wipeEntities(true, true); TFM_Util.TFM_EntityWiper.wipeEntities(true, true);
event.setCancelled(true); event.setCancelled(true);
return; return;
@ -474,7 +516,7 @@ public class TFM_PlayerListener implements Listener
if (playerdata.allCommandsBlocked()) if (playerdata.allCommandsBlocked())
{ {
TFM_Util.playerMsg(p, "Your commands have been blocked by an admin.", ChatColor.RED); TFM_Util.playerMsg(player, "Your commands have been blocked by an admin.", ChatColor.RED);
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -482,13 +524,13 @@ public class TFM_PlayerListener implements Listener
// Block commands if player is muted // Block commands if player is muted
if (playerdata.isMuted()) if (playerdata.isMuted())
{ {
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
for (String test_command : BLOCKED_MUTED_CMDS) for (String test_command : BLOCKED_MUTED_CMDS)
{ {
if (Pattern.compile("^/" + test_command.toLowerCase() + " ").matcher(command).find()) if (Pattern.compile("^/" + test_command.toLowerCase() + " ").matcher(command).find())
{ {
p.sendMessage(ChatColor.RED + "That command is blocked while you are muted."); player.sendMessage(ChatColor.RED + "That command is blocked while you are muted.");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -502,7 +544,7 @@ public class TFM_PlayerListener implements Listener
if (TotalFreedomMod.preprocessLogEnabled) if (TotalFreedomMod.preprocessLogEnabled)
{ {
TFM_Log.info(String.format("[PREPROCESS_COMMAND] %s(%s): %s", p.getName(), ChatColor.stripColor(p.getDisplayName()), command), true); TFM_Log.info(String.format("[PREPROCESS_COMMAND] %s(%s): %s", player.getName(), ChatColor.stripColor(player.getDisplayName()), command), true);
} }
command = command.toLowerCase().trim(); command = command.toLowerCase().trim();
@ -514,13 +556,13 @@ public class TFM_PlayerListener implements Listener
event.setCancelled(true); event.setCancelled(true);
} }
if (!TFM_SuperadminList.isUserSuperadmin(p)) if (!TFM_SuperadminList.isUserSuperadmin(player))
{ {
for (Player pl : Bukkit.getOnlinePlayers()) for (Player pl : Bukkit.getOnlinePlayers())
{ {
if (TFM_SuperadminList.isUserSuperadmin(pl) && TFM_PlayerData.getPlayerData(pl).cmdspyEnabled()) if (TFM_SuperadminList.isUserSuperadmin(pl) && TFM_PlayerData.getPlayerData(pl).cmdspyEnabled())
{ {
TFM_Util.playerMsg(pl, p.getName() + ": " + command); TFM_Util.playerMsg(pl, player.getName() + ": " + command);
} }
} }
} }
@ -545,12 +587,12 @@ public class TFM_PlayerListener implements Listener
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onPlayerKick(PlayerKickEvent event) public void onPlayerKick(PlayerKickEvent event)
{ {
Player p = event.getPlayer(); Player player = event.getPlayer();
if (TotalFreedomMod.fuckoffEnabledFor.containsKey(p)) if (TotalFreedomMod.fuckoffEnabledFor.containsKey(player))
{ {
TotalFreedomMod.fuckoffEnabledFor.remove(p); TotalFreedomMod.fuckoffEnabledFor.remove(player);
} }
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.disarmMP44(); playerdata.disarmMP44();
if (playerdata.isCaged()) if (playerdata.isCaged())
{ {
@ -562,12 +604,12 @@ public class TFM_PlayerListener implements Listener
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onPlayerQuit(PlayerQuitEvent event) public void onPlayerQuit(PlayerQuitEvent event)
{ {
Player p = event.getPlayer(); Player player = event.getPlayer();
if (TotalFreedomMod.fuckoffEnabledFor.containsKey(p)) if (TotalFreedomMod.fuckoffEnabledFor.containsKey(player))
{ {
TotalFreedomMod.fuckoffEnabledFor.remove(p); TotalFreedomMod.fuckoffEnabledFor.remove(player);
} }
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.disarmMP44(); playerdata.disarmMP44();
if (playerdata.isCaged()) if (playerdata.isCaged())
{ {
@ -581,41 +623,41 @@ public class TFM_PlayerListener implements Listener
{ {
try try
{ {
final Player p = event.getPlayer(); final Player player = event.getPlayer();
final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); final TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.setSuperadminIdVerified(null); playerdata.setSuperadminIdVerified(null);
TFM_UserList.getInstance(TotalFreedomMod.plugin).addUser(p); TFM_UserList.getInstance(TotalFreedomMod.plugin).addUser(player);
boolean superadmin_impostor = TFM_SuperadminList.isSuperadminImpostor(p); boolean superadmin_impostor = TFM_SuperadminList.isSuperadminImpostor(player);
if (superadmin_impostor || TFM_SuperadminList.isUserSuperadmin(p)) if (superadmin_impostor || TFM_SuperadminList.isUserSuperadmin(player))
{ {
TFM_Util.bcastMsg(ChatColor.AQUA + p.getName() + " is " + TFM_Util.getRank(p)); TFM_Util.bcastMsg(ChatColor.AQUA + player.getName() + " is " + TFM_Util.getRank(player));
if (superadmin_impostor) if (superadmin_impostor)
{ {
p.getInventory().clear(); player.getInventory().clear();
p.setOp(false); player.setOp(false);
p.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
TFM_Util.bcastMsg("Warning: " + p.getName() + " has been flagged as an impostor!", ChatColor.RED); TFM_Util.bcastMsg("Warning: " + player.getName() + " has been flagged as an impostor!", ChatColor.RED);
} }
else else
{ {
if (TFM_SuperadminList.verifyIdentity(p.getName(), p.getAddress().getAddress().getHostAddress())) if (TFM_SuperadminList.verifyIdentity(player.getName(), player.getAddress().getAddress().getHostAddress()))
{ {
playerdata.setSuperadminIdVerified(Boolean.TRUE); playerdata.setSuperadminIdVerified(Boolean.TRUE);
TFM_SuperadminList.updateLastLogin(p); TFM_SuperadminList.updateLastLogin(player);
} }
else else
{ {
playerdata.setSuperadminIdVerified(Boolean.FALSE); playerdata.setSuperadminIdVerified(Boolean.FALSE);
TFM_Util.bcastMsg("Warning: " + p.getName() + " is an admin, but is using a username not registered to one of their IPs.", ChatColor.RED); TFM_Util.bcastMsg("Warning: " + player.getName() + " is an admin, but is using a username not registered to one of their IPs.", ChatColor.RED);
} }
p.setOp(true); player.setOp(true);
} }
} }
@ -626,7 +668,7 @@ public class TFM_PlayerListener implements Listener
@Override @Override
public void run() public void run()
{ {
p.sendMessage(ChatColor.RED + "Server is currently closed to non-superadmins."); player.sendMessage(ChatColor.RED + "Server is currently closed to non-superadmins.");
} }
}.runTaskLater(TotalFreedomMod.plugin, 20L * 3L); }.runTaskLater(TotalFreedomMod.plugin, 20L * 3L);
} }

View File

@ -51,7 +51,7 @@ public class TFM_ServerListener implements Listener
{ {
topLevelCommand = topLevelCommand.toLowerCase().trim(); topLevelCommand = topLevelCommand.toLowerCase().trim();
//We need to make it look like the command is coming from the console, so keep the player's name without the Player instance via dummy: // We need to make it look like the command is coming from the console, so keep the player's name without the Player instance via dummy:
if (TFM_CommandBlockerNew.getInstance().isCommandBlocked(topLevelCommand, new TFM_ServerListener_DummyCommandSender(player.getName()), false)) if (TFM_CommandBlockerNew.getInstance().isCommandBlocked(topLevelCommand, new TFM_ServerListener_DummyCommandSender(player.getName()), false))
{ {
player.sendMessage(ChatColor.GRAY + "That command is blocked."); player.sendMessage(ChatColor.GRAY + "That command is blocked.");

View File

@ -0,0 +1,149 @@
package me.StevenLawson.TotalFreedomMod;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.WorldType;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.scheduler.BukkitRunnable;
public class TFM_AdminWorld
{
private static final long CACHE_CLEAR_FREQUENCY = 30L * 1000L; //30 seconds, milliseconds
private static final long TP_COOLDOWN_TIME = 500L; //0.5 seconds, milliseconds
private static final String GENERATION_PARAMETERS = "16,stone,32,dirt,1,grass";
private static final String ADMINWORLD_NAME = "adminworld";
//
private final Map<Player, Long> teleportCooldown = new HashMap<Player, Long>();
private final Map<CommandSender, Boolean> superadminCache = new HashMap<CommandSender, Boolean>();
//
private Long cacheLastCleared = null;
private World adminWorld = null;
private TFM_AdminWorld()
{
}
public void sendToAdminWorld(Player player)
{
if (!TFM_SuperadminList.isUserSuperadmin(player))
{
return;
}
player.teleport(getAdminWorld().getSpawnLocation());
}
public boolean validateMovement(PlayerMoveEvent event)
{
if (adminWorld != null)
{
if (event.getTo().getWorld() == adminWorld)
{
final Player player = event.getPlayer();
if (!cachedIsUserSuperadmin(player))
{
Long lastTP = teleportCooldown.get(player);
long currentTimeMillis = System.currentTimeMillis();
if (lastTP == null || lastTP.longValue() + TP_COOLDOWN_TIME <= currentTimeMillis)
{
teleportCooldown.put(player, currentTimeMillis);
TFM_Log.info(player.getName() + " attempted to access the AdminWorld.");
new BukkitRunnable()
{
@Override
public void run()
{
player.teleport(Bukkit.getWorlds().get(0).getSpawnLocation());
}
}.runTaskLater(TotalFreedomMod.plugin, 1L);
}
event.setCancelled(true);
return false;
}
}
}
return true;
}
public World getAdminWorld()
{
if (adminWorld == null || !Bukkit.getWorlds().contains(adminWorld))
{
generateWorld();
}
return adminWorld;
}
public void wipeSuperadminCache()
{
cacheLastCleared = System.currentTimeMillis();
superadminCache.clear();
}
private boolean cachedIsUserSuperadmin(CommandSender user)
{
long currentTimeMillis = System.currentTimeMillis();
if (cacheLastCleared == null || cacheLastCleared.longValue() + CACHE_CLEAR_FREQUENCY <= currentTimeMillis)
{
cacheLastCleared = currentTimeMillis;
superadminCache.clear();
}
Boolean cached = superadminCache.get(user);
if (cached == null)
{
cached = TFM_SuperadminList.isUserSuperadmin(user);
superadminCache.put(user, cached);
}
return cached;
}
private void generateWorld()
{
WorldCreator adminWorldCreator = new WorldCreator(ADMINWORLD_NAME);
adminWorldCreator.generateStructures(false);
adminWorldCreator.type(WorldType.NORMAL);
adminWorldCreator.environment(World.Environment.NORMAL);
adminWorldCreator.generator(new CleanroomChunkGenerator(GENERATION_PARAMETERS));
adminWorld = Bukkit.getServer().createWorld(adminWorldCreator);
adminWorld.setSpawnFlags(false, false);
adminWorld.setSpawnLocation(0, 50, 0);
Block welcomeSignBlock = adminWorld.getBlockAt(0, 50, 0);
welcomeSignBlock.setType(Material.SIGN_POST);
org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign) welcomeSignBlock.getState();
org.bukkit.material.Sign signData = (org.bukkit.material.Sign) welcomeSign.getData();
signData.setFacingDirection(BlockFace.NORTH);
welcomeSign.setLine(0, ChatColor.GREEN + "AdminWorld");
welcomeSign.setLine(1, ChatColor.DARK_GRAY + "---");
welcomeSign.setLine(2, ChatColor.YELLOW + "Spawn Point");
welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---");
welcomeSign.update();
TFM_GameRuleHandler.commitGameRules();
}
public static TFM_AdminWorld getInstance()
{
return TFM_AdminWorldHolder.INSTANCE;
}
private static class TFM_AdminWorldHolder
{
private static final TFM_AdminWorld INSTANCE = new TFM_AdminWorld();
}
}

View File

@ -71,7 +71,7 @@ public class TFM_CommandBlocker
} }
else else
{ {
sender.sendMessage(ChatColor.GRAY + ChatColor.translateAlternateColorCodes('&', parts[3])); sender.sendMessage(ChatColor.GRAY + TFM_Util.colorise(parts[3]));
} }
} }

View File

@ -308,7 +308,7 @@ public class TFM_CommandBlockerNew
} }
else else
{ {
response = ChatColor.GRAY + ChatColor.translateAlternateColorCodes('&', this.message); response = ChatColor.GRAY + TFM_Util.colorise(this.message);
} }
sender.sendMessage(response); sender.sendMessage(response);

View File

@ -9,6 +9,7 @@ public class TFM_Heartbeat extends BukkitRunnable
{ {
private final TotalFreedomMod plugin; private final TotalFreedomMod plugin;
private final Server server; private final Server server;
private static Long lastRan = null;
public TFM_Heartbeat(TotalFreedomMod instance) public TFM_Heartbeat(TotalFreedomMod instance)
{ {
@ -16,12 +17,19 @@ public class TFM_Heartbeat extends BukkitRunnable
this.server = plugin.getServer(); this.server = plugin.getServer();
} }
public static Long getLastRan()
{
return lastRan;
}
@Override @Override
public void run() public void run()
{ {
for (Player p : server.getOnlinePlayers()) lastRan = System.currentTimeMillis();
for (Player player : server.getOnlinePlayers())
{ {
TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(p); TFM_PlayerData playerdata = TFM_PlayerData.getPlayerData(player);
playerdata.resetMsgCount(); playerdata.resetMsgCount();
playerdata.resetBlockDestroyCount(); playerdata.resetBlockDestroyCount();
playerdata.resetBlockPlaceCount(); playerdata.resetBlockPlaceCount();
@ -29,7 +37,7 @@ public class TFM_Heartbeat extends BukkitRunnable
if (TotalFreedomMod.autoEntityWipe) if (TotalFreedomMod.autoEntityWipe)
{ {
TFM_Util.wipeEntities(!TotalFreedomMod.allowExplosions, false); TFM_Util.TFM_EntityWiper.wipeEntities(!TotalFreedomMod.allowExplosions, false);
} }
if (TotalFreedomMod.disableWeather) if (TotalFreedomMod.disableWeather)

View File

@ -0,0 +1,134 @@
package me.StevenLawson.TotalFreedomMod;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.util.Vector;
public class TFM_Jumppads
{
public static final Material BLOCK_ID = Material.WOOL;
public static final double DAMPING_COEFFICIENT = 0.8;
public final Map<Player, Boolean> canPushMap = new HashMap<Player, Boolean>();
private JumpPadMode mode = JumpPadMode.OFF;
private double strength = 0.4;
public void PlayerMoveEvent(PlayerMoveEvent event)
{
if (mode == JumpPadMode.OFF)
{
return;
}
final Player player = event.getPlayer();
final Block block = event.getTo().getBlock();
final Vector velocity = player.getVelocity().clone();
if (mode == JumpPadMode.MADGEEK)
{
Boolean canPush = canPushMap.get(player);
if (canPush == null)
{
canPush = true;
}
if (block.getRelative(0, -1, 0).getType() == BLOCK_ID)
{
if (canPush)
{
velocity.multiply(strength + 0.85).multiply(-1.0);
}
canPush = false;
}
else
{
canPush = true;
}
canPushMap.put(player, canPush);
}
else
{
if (block.getRelative(0, -1, 0).getType() == BLOCK_ID)
{
velocity.add(new Vector(0.0, strength, 0.0));
}
if (mode == JumpPadMode.NORMAL_AND_SIDEWAYS)
{
if (block.getRelative(1, 0, 0).getType() == BLOCK_ID)
{
velocity.add(new Vector(-DAMPING_COEFFICIENT * strength, 0.0, 0.0));
}
if (block.getRelative(-1, 0, 0).getType() == BLOCK_ID)
{
velocity.add(new Vector(DAMPING_COEFFICIENT * strength, 0.0, 0.0));
}
if (block.getRelative(0, 0, 1).getType() == BLOCK_ID)
{
velocity.add(new Vector(0.0, 0.0, -DAMPING_COEFFICIENT * strength));
}
if (block.getRelative(0, 0, -1).getType() == BLOCK_ID)
{
velocity.add(new Vector(0.0, 0.0, DAMPING_COEFFICIENT * strength));
}
}
}
if (!player.getVelocity().equals(velocity))
{
player.setFallDistance(0.0f);
player.setVelocity(velocity);
}
}
public JumpPadMode getMode()
{
return mode;
}
public void setMode(JumpPadMode mode)
{
this.mode = mode;
}
public double getStrength()
{
return strength;
}
public void setStrength(double strength)
{
this.strength = strength;
}
public static enum JumpPadMode
{
OFF(false), NORMAL(true), NORMAL_AND_SIDEWAYS(true), MADGEEK(true);
private boolean on;
JumpPadMode(boolean on)
{
this.on = on;
}
public boolean isOn()
{
return on;
}
}
public static TFM_Jumppads getInstance()
{
return TFM_JumpadsHolder.INSTANCE;
}
private static class TFM_JumpadsHolder
{
private static final TFM_Jumppads INSTANCE = new TFM_Jumppads();
}
}

View File

@ -2,10 +2,11 @@ package me.StevenLawson.TotalFreedomMod;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.bukkit.Bukkit;
public class TFM_Log public class TFM_Log
{ {
private static final Logger logger = Logger.getLogger("Minecraft-Server"); private static final Logger logger = Bukkit.getLogger();
private TFM_Log() private TFM_Log()
{ {

View File

@ -53,6 +53,7 @@ public class TFM_PlayerData
private Boolean superadmin_id_verified = null; private Boolean superadmin_id_verified = null;
private String last_command = ""; private String last_command = "";
private boolean cmdspy_enabled = false; private boolean cmdspy_enabled = false;
private String tag = null;
public TFM_PlayerData(Player player) public TFM_PlayerData(Player player)
{ {
@ -61,9 +62,9 @@ public class TFM_PlayerData
this.player_name = player.getName(); this.player_name = player.getName();
} }
public static TFM_PlayerData getPlayerData(Player p) public static TFM_PlayerData getPlayerData(Player player)
{ {
TFM_PlayerData playerdata = TFM_PlayerData.userinfo.get(p); TFM_PlayerData playerdata = TFM_PlayerData.userinfo.get(player);
if (playerdata == null) if (playerdata == null)
{ {
@ -73,7 +74,7 @@ public class TFM_PlayerData
Entry<Player, TFM_PlayerData> pair = it.next(); Entry<Player, TFM_PlayerData> pair = it.next();
TFM_PlayerData playerdata_test = pair.getValue(); TFM_PlayerData playerdata_test = pair.getValue();
if (playerdata_test.player_name.equalsIgnoreCase(p.getName())) if (playerdata_test.player_name.equalsIgnoreCase(player.getName()))
{ {
if (Bukkit.getOnlineMode()) if (Bukkit.getOnlineMode())
{ {
@ -82,7 +83,7 @@ public class TFM_PlayerData
} }
else else
{ {
if (playerdata_test.ip_address.equalsIgnoreCase(p.getAddress().getAddress().getHostAddress())) if (playerdata_test.ip_address.equalsIgnoreCase(player.getAddress().getAddress().getHostAddress()))
{ {
playerdata = playerdata_test; playerdata = playerdata_test;
break; break;
@ -94,8 +95,8 @@ public class TFM_PlayerData
if (playerdata == null) if (playerdata == null)
{ {
playerdata = new TFM_PlayerData(p); playerdata = new TFM_PlayerData(player);
TFM_PlayerData.userinfo.put(p, playerdata); TFM_PlayerData.userinfo.put(player, playerdata);
} }
return playerdata; return playerdata;
@ -218,24 +219,14 @@ public class TFM_PlayerData
this.msg_count = 0; this.msg_count = 0;
} }
public void incrementMsgCount() public int incrementAndGetMsgCount()
{ {
this.msg_count++; return this.msg_count++;
} }
public int getMsgCount() public int incrementAndGetBlockDestroyCount()
{ {
return msg_count; return this.block_destroy_total++;
}
public void incrementBlockDestroyCount()
{
this.block_destroy_total++;
}
public int getBlockDestroyCount()
{
return block_destroy_total;
} }
public void resetBlockDestroyCount() public void resetBlockDestroyCount()
@ -243,14 +234,9 @@ public class TFM_PlayerData
this.block_destroy_total = 0; this.block_destroy_total = 0;
} }
public void incrementBlockPlaceCount() public int incrementAndGetBlockPlaceCount()
{ {
this.block_place_total++; return this.block_place_total++;
}
public int getBlockPlaceCount()
{
return block_place_total;
} }
public void resetBlockPlaceCount() public void resetBlockPlaceCount()
@ -258,14 +244,9 @@ public class TFM_PlayerData
this.block_place_total = 0; this.block_place_total = 0;
} }
public void incrementFreecamDestroyCount() public int incrementAndGetFreecamDestroyCount()
{ {
this.freecam_destroy_count++; return this.freecam_destroy_count++;
}
public int getFreecamDestroyCount()
{
return freecam_destroy_count;
} }
public void resetFreecamDestroyCount() public void resetFreecamDestroyCount()
@ -273,14 +254,9 @@ public class TFM_PlayerData
this.freecam_destroy_count = 0; this.freecam_destroy_count = 0;
} }
public void incrementFreecamPlaceCount() public int incrementAndGetFreecamPlaceCount()
{ {
this.freecam_place_count++; return this.freecam_place_count++;
}
public int getFreecamPlaceCount()
{
return freecam_place_count;
} }
public void resetFreecamPlaceCount() public void resetFreecamPlaceCount()
@ -504,4 +480,21 @@ public class TFM_PlayerData
{ {
return cmdspy_enabled; return cmdspy_enabled;
} }
public void setTag(String tag)
{
if (tag == null)
{
this.tag = null;
}
else
{
this.tag = TFM_Util.colorise(tag) + ChatColor.WHITE;
}
}
public String getTag()
{
return this.tag;
}
} }

View File

@ -130,9 +130,9 @@ public class TFM_ServerInterface
final BanList banByIP = player_list.getIPBans(); final BanList banByIP = player_list.getIPBans();
final BanList banByName = player_list.getNameBans(); final BanList banByName = player_list.getNameBans();
final Player p = event.getPlayer(); final Player player = event.getPlayer();
final String player_name = p.getName(); final String player_name = player.getName();
final String player_ip = event.getAddress().getHostAddress().trim().toLowerCase(); final String player_ip = event.getAddress().getHostAddress().trim().toLowerCase();
if (player_name.trim().length() <= 2) if (player_name.trim().length() <= 2)
@ -146,7 +146,7 @@ public class TFM_ServerInterface
return; return;
} }
// not safe to use TFM_Util.isUserSuperadmin for player logging in because p.getAddress() will return a null until after player login. // not safe to use TFM_Util.isUserSuperadmin for player logging in because player.getAddress() will return a null until after player login.
boolean is_superadmin; boolean is_superadmin;
if (server.getOnlineMode()) if (server.getOnlineMode())
{ {
@ -227,7 +227,7 @@ public class TFM_ServerInterface
{ {
if (test_player.equalsIgnoreCase(player_name)) if (test_player.equalsIgnoreCase(player_name))
{ {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, ChatColor.RED + "Your username is permanently banned from this server."); event.disallow(PlayerLoginEvent.Result.KICK_BANNED, ChatColor.RED + "Your username is permanently banned from this server.\nRelease procedures are available at http://bit.ly/PermBan");
return; return;
} }
} }
@ -236,7 +236,7 @@ public class TFM_ServerInterface
{ {
if (TFM_Util.fuzzyIpMatch(test_ip, player_ip, 4)) if (TFM_Util.fuzzyIpMatch(test_ip, player_ip, 4))
{ {
event.disallow(PlayerLoginEvent.Result.KICK_BANNED, ChatColor.RED + "Your IP address is permanently banned from this server."); event.disallow(PlayerLoginEvent.Result.KICK_BANNED, ChatColor.RED + "Your IP address is permanently banned from this server.\nRelease procedures are available at http://bit.ly/PermBan");
return; return;
} }
} }
@ -253,6 +253,12 @@ public class TFM_ServerInterface
return; return;
} }
if (TotalFreedomMod.lockdownEnabled)
{
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Server is currently in lockdown mode.");
return;
}
if (player_list.hasWhitelist) if (player_list.hasWhitelist)
{ {
if (!player_list.getWhitelisted().contains(player_name.toLowerCase())) if (!player_list.getWhitelisted().contains(player_name.toLowerCase()))
@ -295,6 +301,11 @@ public class TFM_ServerInterface
} }
} }
} }
if (TotalFreedomMod.lockdownEnabled)
{
TFM_Util.playerMsg(player, "Warning: Server is currenty in lockdown-mode, new players will not be able to join!", ChatColor.RED);
}
} }
} }

View File

@ -0,0 +1,205 @@
package me.StevenLawson.TotalFreedomMod;
import java.io.BufferedReader;
import java.io.InputStreamReader;
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 org.bukkit.ChatColor;
import org.bukkit.scheduler.BukkitRunnable;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
public class TFM_ServiceChecker
{
public final Map<String, TFM_ServiceChecker_ServiceStatus> services = new HashMap<String, TFM_ServiceChecker_ServiceStatus>();
public String lastCheck = "Unknown";
public String version = "1.0-Mojang";
public TFM_ServiceChecker()
{
services.put("minecraft.net", new TFM_ServiceChecker_ServiceStatus("Minecraft.net"));
services.put("account.mojang.com", new TFM_ServiceChecker_ServiceStatus("Mojang Account Website"));
services.put("authserver.mojang.com", new TFM_ServiceChecker_ServiceStatus("Mojang Authentication"));
services.put("skins.minecraft.net", new TFM_ServiceChecker_ServiceStatus("Minecraft Skins"));
services.put("auth.mojang.com", new TFM_ServiceChecker_ServiceStatus("Mojang Authentiation (Legacy)"));
services.put("login.minecraft.net", new TFM_ServiceChecker_ServiceStatus("Minecraft Logins (Legacy)"));
services.put("session.minecraft.net", new TFM_ServiceChecker_ServiceStatus("Minecraft Sessions (Legacy)"));
}
@SuppressWarnings("unchecked")
public BukkitRunnable getUpdateRunnable()
{
return new BukkitRunnable()
{
@Override
public void run()
{
try
{
URL mojang_status = new URL(TotalFreedomMod.serviceCheckerURL);
BufferedReader in = new BufferedReader(new InputStreamReader(mojang_status.openStream()));
JSONArray status_json = (JSONArray) JSONValue.parse(in.readLine());
in.close();
TFM_ServiceChecker serviceChecker = TFM_ServiceChecker.getInstance();
Iterator status_it = status_json.iterator();
while (status_it.hasNext())
{
JSONObject service = (JSONObject) status_it.next();
Iterator service_it = service.entrySet().iterator();
while (service_it.hasNext())
{
Entry<String, String> pair = (Entry<String, String>) service_it.next();
if ("lastcheck".equals(pair.getKey()))
{
serviceChecker.lastCheck = pair.getValue();
continue;
}
if ("version".equals(pair.getKey()))
{
serviceChecker.version = pair.getValue();
continue;
}
if (pair.getValue().contains(":"))
{
String[] statusString = pair.getValue().split(":");
TFM_ServiceChecker_ServiceStatus status = serviceChecker.services.get(pair.getKey());
status.setColor(statusString[0]);
status.setMessage(statusString[1]);
status.setUptime(statusString[2]);
}
else
{
TFM_ServiceChecker_ServiceStatus status = serviceChecker.services.get(pair.getKey());
status.setColor(pair.getValue());
status.setMessage(("red".equals(pair.getValue()) ? "Offline" : ("yellow".equals(pair.getValue()) ? "Problem" : "Online")));
}
}
}
}
catch (Exception ex)
{
TFM_Log.severe("Error updating mojang services from " + TotalFreedomMod.serviceCheckerURL);
TFM_Log.severe(ex);
}
}
};
}
public List<TFM_ServiceChecker_ServiceStatus> getAllStatuses()
{
List<TFM_ServiceChecker_ServiceStatus> ServicesList = new ArrayList<TFM_ServiceChecker_ServiceStatus>();
for (String key : services.keySet())
{
ServicesList.add(services.get(key));
}
return ServicesList;
}
public static TFM_ServiceChecker getInstance()
{
return TFM_ServiceCheckerHolder.INSTANCE;
}
private static class TFM_ServiceCheckerHolder
{
private static final TFM_ServiceChecker INSTANCE = new TFM_ServiceChecker();
}
public class TFM_ServiceChecker_ServiceStatus
{
private String name;
private String uptime = "100.0"; // skins.minecraft.net, minecraft.net, etc..
private ChatColor color = ChatColor.DARK_GREEN;
private String message = "Online"; // Online, Offline, Quite Slow, 404 Error, 500 Error, etc..
public TFM_ServiceChecker_ServiceStatus(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public String getUptime()
{
return uptime;
}
public float getUptimeFloat()
{
return Float.parseFloat(uptime);
}
public ChatColor getUptimeColor()
{
return (getUptimeFloat() > 95 ? ChatColor.GREEN : (getUptimeFloat() > 90 ? ChatColor.GOLD : ChatColor.RED));
}
public ChatColor getColor()
{
return color;
}
public String getMessage()
{
return message;
}
public String getFormattedStatus()
{
String status = ChatColor.BLUE + "- " + ChatColor.GRAY + name + ChatColor.WHITE + ": " + color + message + ChatColor.WHITE;
if (!TFM_ServiceChecker.getInstance().version.contains("Mojang"))
{
status += " (" + getUptimeColor() + getUptime() + ChatColor.WHITE + "%)";
}
return status;
}
public void setUptime(String uptime)
{
this.uptime = uptime;
}
public void setColor(ChatColor color)
{
this.color = color;
}
public void setColor(String color)
{
if ("green".equals(color))
{
this.color = ChatColor.DARK_GREEN;
}
else if ("yellow".equals(color))
{
this.color = ChatColor.YELLOW;
}
else
{
this.color = ChatColor.RED;
}
}
public void setMessage(String message)
{
this.message = message;
}
}
}

View File

@ -121,6 +121,8 @@ public class TFM_SuperadminList
superadminNames = TFM_Util.removeDuplicates(superadminNames); superadminNames = TFM_Util.removeDuplicates(superadminNames);
superadminIPs = TFM_Util.removeDuplicates(superadminIPs); superadminIPs = TFM_Util.removeDuplicates(superadminIPs);
seniorAdminNames = TFM_Util.removeDuplicates(seniorAdminNames); seniorAdminNames = TFM_Util.removeDuplicates(seniorAdminNames);
TFM_AdminWorld.getInstance().wipeSuperadminCache();
} }
public static void saveSuperadminList() public static void saveSuperadminList()
@ -171,9 +173,9 @@ public class TFM_SuperadminList
} }
} }
public static TFM_Superadmin getAdminEntry(Player p) public static TFM_Superadmin getAdminEntry(Player player)
{ {
return getAdminEntry(p.getName().toLowerCase()); return getAdminEntry(player.getName().toLowerCase());
} }
public static TFM_Superadmin getAdminEntryByIP(String ip) public static TFM_Superadmin getAdminEntryByIP(String ip)
@ -191,9 +193,9 @@ public class TFM_SuperadminList
return null; return null;
} }
public static void updateLastLogin(Player p) public static void updateLastLogin(Player player)
{ {
TFM_Superadmin admin_entry = getAdminEntry(p); TFM_Superadmin admin_entry = getAdminEntry(player);
if (admin_entry != null) if (admin_entry != null)
{ {
admin_entry.setLastLogin(new Date()); admin_entry.setLastLogin(new Date());
@ -322,11 +324,11 @@ public class TFM_SuperadminList
return false; return false;
} }
Player p = (Player) user; Player player = (Player) user;
if (superadminNames.contains(p.getName().toLowerCase())) if (superadminNames.contains(player.getName().toLowerCase()))
{ {
return !isUserSuperadmin(p); return !isUserSuperadmin(player);
} }
return false; return false;
@ -364,10 +366,10 @@ public class TFM_SuperadminList
} }
} }
public static void addSuperadmin(Player p) public static void addSuperadmin(Player player)
{ {
String admin_name = p.getName().toLowerCase(); String admin_name = player.getName().toLowerCase();
List<String> ips = Arrays.asList(p.getAddress().getAddress().getHostAddress()); List<String> ips = Arrays.asList(player.getAddress().getAddress().getHostAddress());
addSuperadmin(admin_name, ips); addSuperadmin(admin_name, ips);
} }
@ -397,9 +399,9 @@ public class TFM_SuperadminList
} }
} }
public static void removeSuperadmin(Player p) public static void removeSuperadmin(Player player)
{ {
removeSuperadmin(p.getName()); removeSuperadmin(player.getName());
} }
public static void cleanSuperadminList(boolean verbose) public static void cleanSuperadminList(boolean verbose)

View File

@ -1,38 +0,0 @@
package me.StevenLawson.TotalFreedomMod;
public class TFM_TickMeter
{
int ticks;
int taskId;
final TotalFreedomMod plugin;
public TFM_TickMeter(TotalFreedomMod plugin)
{
this.plugin = plugin;
}
public int startTicking()
{
int tId = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable()
{
@Override
public void run()
{
ticks += 1;
}
}, 1L, 1L); // ticks (20 in 1 second)
taskId = tId;
return tId;
}
public void stopTicking()
{
plugin.getServer().getScheduler().cancelTask(taskId);
}
public int getTicks()
{
return ticks;
}
}

View File

@ -49,7 +49,7 @@ public class TFM_TwitterHandler
String line = "failed"; String line = "failed";
try try
{ {
URL getUrl = new URL(TotalFreedomMod.twitterbotUrl + "?auth=" + TotalFreedomMod.twitterbotSecret + "&" + queryString); URL getUrl = new URL(TotalFreedomMod.twitterbotURL + "?auth=" + TotalFreedomMod.twitterbotSecret + "&" + queryString);
URLConnection urlConnection = getUrl.openConnection(); URLConnection urlConnection = getUrl.openConnection();
// Read the response // Read the response
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

View File

@ -16,12 +16,12 @@ public class TFM_UserList
{ {
private static final String USERLIST_FILENAME = "userlist.yml"; private static final String USERLIST_FILENAME = "userlist.yml";
private static TFM_UserList instance = null; private static TFM_UserList instance = null;
private Map<String, TFM_UserListEntry> _userlist = new HashMap<String, TFM_UserListEntry>(); private Map<String, TFM_UserListEntry> userlist = new HashMap<String, TFM_UserListEntry>();
private final TotalFreedomMod _plugin; private final TotalFreedomMod plugin;
protected TFM_UserList(TotalFreedomMod plugin) protected TFM_UserList(TotalFreedomMod plugin)
{ {
_plugin = plugin; this.plugin = plugin;
primeList(); primeList();
} }
@ -30,19 +30,19 @@ public class TFM_UserList
{ {
try try
{ {
_userlist.clear(); userlist.clear();
FileConfiguration saved_userlist = YamlConfiguration.loadConfiguration(new File(_plugin.getDataFolder(), USERLIST_FILENAME)); FileConfiguration saved_userlist = YamlConfiguration.loadConfiguration(new File(plugin.getDataFolder(), USERLIST_FILENAME));
for (String username : saved_userlist.getKeys(false)) for (String username : saved_userlist.getKeys(false))
{ {
TFM_UserListEntry entry = new TFM_UserListEntry(username, saved_userlist.getStringList(username)); TFM_UserListEntry entry = new TFM_UserListEntry(username, saved_userlist.getStringList(username));
_userlist.put(username, entry); userlist.put(username, entry);
} }
for (Player p : _plugin.getServer().getOnlinePlayers()) for (Player player : plugin.getServer().getOnlinePlayers())
{ {
addUser(p); addUser(player);
} }
exportList(); exportList();
@ -58,14 +58,14 @@ public class TFM_UserList
{ {
FileConfiguration new_userlist = new YamlConfiguration(); FileConfiguration new_userlist = new YamlConfiguration();
for (TFM_UserListEntry entry : _userlist.values()) for (TFM_UserListEntry entry : userlist.values())
{ {
new_userlist.set(entry.getUsername(), entry.getIpAddresses()); new_userlist.set(entry.getUsername(), entry.getIpAddresses());
} }
try try
{ {
new_userlist.save(new File(_plugin.getDataFolder(), USERLIST_FILENAME)); new_userlist.save(new File(plugin.getDataFolder(), USERLIST_FILENAME));
} }
catch (IOException ex) catch (IOException ex)
{ {
@ -82,22 +82,22 @@ public class TFM_UserList
return instance; return instance;
} }
public void addUser(Player p) public void addUser(Player player)
{ {
addUser(p.getName(), p.getAddress().getAddress().getHostAddress()); addUser(player.getName(), player.getAddress().getAddress().getHostAddress());
} }
public void addUser(String username, String ip_address) public void addUser(String username, String ip_address)
{ {
username = username.toLowerCase(); username = username.toLowerCase();
TFM_UserListEntry entry = _userlist.get(username); TFM_UserListEntry entry = userlist.get(username);
if (entry == null) if (entry == null)
{ {
entry = new TFM_UserListEntry(username); entry = new TFM_UserListEntry(username);
} }
_userlist.put(username, entry); userlist.put(username, entry);
if (entry.addIpAddress(ip_address)) if (entry.addIpAddress(ip_address))
{ {
@ -105,23 +105,23 @@ public class TFM_UserList
} }
} }
public TFM_UserListEntry getEntry(Player p) public TFM_UserListEntry getEntry(Player player)
{ {
return getEntry(p.getName()); return getEntry(player.getName());
} }
public TFM_UserListEntry getEntry(String username) public TFM_UserListEntry getEntry(String username)
{ {
return _userlist.get(username.toLowerCase()); return userlist.get(username.toLowerCase());
} }
public void purge() public void purge()
{ {
_userlist.clear(); userlist.clear();
for (Player p : _plugin.getServer().getOnlinePlayers()) for (Player player : plugin.getServer().getOnlinePlayers())
{ {
addUser(p); addUser(player);
} }
exportList(); exportList();
@ -132,7 +132,7 @@ public class TFM_UserList
needle = needle.toLowerCase().trim(); needle = needle.toLowerCase().trim();
Integer minEditDistance = null; Integer minEditDistance = null;
String minEditMatch = null; String minEditMatch = null;
Iterator<String> it = _userlist.keySet().iterator(); Iterator<String> it = userlist.keySet().iterator();
while (it.hasNext()) while (it.hasNext())
{ {
String haystack = it.next(); String haystack = it.next();
@ -148,35 +148,35 @@ public class TFM_UserList
public class TFM_UserListEntry public class TFM_UserListEntry
{ {
private String _username; private String username;
private List<String> _ip_addresses = new ArrayList<String>(); private List<String> ip_addresses = new ArrayList<String>();
public TFM_UserListEntry(String username, List<String> ip_addresses) public TFM_UserListEntry(String username, List<String> ip_addresses)
{ {
_username = username; this.username = username;
_ip_addresses = ip_addresses; this.ip_addresses = ip_addresses;
} }
public TFM_UserListEntry(String username) public TFM_UserListEntry(String username)
{ {
_username = username; this.username = username;
} }
public List<String> getIpAddresses() public List<String> getIpAddresses()
{ {
return _ip_addresses; return ip_addresses;
} }
public String getUsername() public String getUsername()
{ {
return _username; return username;
} }
public boolean addIpAddress(String ip_address) public boolean addIpAddress(String ip_address)
{ {
if (!_ip_addresses.contains(ip_address)) if (!ip_addresses.contains(ip_address))
{ {
_ip_addresses.add(ip_address); ip_addresses.add(ip_address);
return true; return true;
} }
return false; return false;

View File

@ -55,9 +55,9 @@ public class TFM_Util
{ {
TFM_Log.info(message, true); TFM_Log.info(message, true);
for (Player p : Bukkit.getOnlinePlayers()) for (Player player : Bukkit.getOnlinePlayers())
{ {
p.sendMessage((color == null ? "" : color) + message); player.sendMessage((color == null ? "" : color) + message);
} }
} }
@ -83,12 +83,6 @@ public class TFM_Util
TFM_Util.bcastMsg(adminName + " - " + action, (isRed ? ChatColor.RED : ChatColor.AQUA)); TFM_Util.bcastMsg(adminName + " - " + action, (isRed ? ChatColor.RED : ChatColor.AQUA));
} }
@Deprecated
public static String implodeStringList(String glue, List<String> pieces)
{
return StringUtils.join(pieces, glue);
}
public static String formatLocation(Location in_loc) public static String formatLocation(Location in_loc)
{ {
return String.format("%s: (%d, %d, %d)", return String.format("%s: (%d, %d, %d)",
@ -240,31 +234,81 @@ public class TFM_Util
} }
} }
@Deprecated public static class TFM_EntityWiper
public static boolean isUserSuperadmin(CommandSender user)
{ {
return TFM_SuperadminList.isUserSuperadmin(user); private static final List<Class<? extends Entity>> WIPEABLES = new ArrayList<Class<? extends Entity>>();
}
public static int wipeEntities(boolean wipe_explosives, boolean wipe_vehicles) static
{
int removed = 0;
for (World world : Bukkit.getWorlds())
{ {
for (Entity ent : world.getEntities()) WIPEABLES.add(EnderCrystal.class);
WIPEABLES.add(EnderSignal.class);
WIPEABLES.add(ExperienceOrb.class);
WIPEABLES.add(Projectile.class);
WIPEABLES.add(FallingBlock.class);
WIPEABLES.add(Firework.class);
WIPEABLES.add(Item.class);
}
private TFM_EntityWiper()
{
throw new AssertionError();
}
private static boolean canWipe(Entity entity, boolean wipeExplosives, boolean wipeVehicles)
{
if (wipeExplosives)
{ {
if (ent instanceof Projectile if (Explosive.class.isAssignableFrom(entity.getClass()))
|| ent instanceof Item
|| ent instanceof ExperienceOrb
|| (ent instanceof Explosive && wipe_explosives)
|| (ent instanceof Vehicle && wipe_vehicles))
{ {
ent.remove(); return true;
removed++;
} }
} }
if (wipeVehicles)
{
if (Boat.class.isAssignableFrom(entity.getClass()))
{
return true;
}
else if (Minecart.class.isAssignableFrom(entity.getClass()))
{
return true;
}
}
Iterator<Class<? extends Entity>> it = WIPEABLES.iterator();
while (it.hasNext())
{
if (it.next().isAssignableFrom(entity.getClass()))
{
return true;
}
}
return false;
}
public static int wipeEntities(boolean wipeExplosives, boolean wipeVehicles)
{
int removed = 0;
Iterator<World> worlds = Bukkit.getWorlds().iterator();
while (worlds.hasNext())
{
Iterator<Entity> entities = worlds.next().getEntities().iterator();
while (entities.hasNext())
{
Entity entity = entities.next();
if (canWipe(entity, wipeExplosives, wipeVehicles))
{
entity.remove();
removed++;
}
}
}
return removed;
} }
return removed;
} }
public static boolean deleteFolder(File file) public static boolean deleteFolder(File file)
@ -352,14 +396,14 @@ public class TFM_Util
STRIKE_ONE, STRIKE_TWO, STRIKE_THREE; STRIKE_ONE, STRIKE_TWO, STRIKE_THREE;
} }
public static void autoEject(Player p, String kickMessage) public static void autoEject(Player player, String kickMessage)
{ {
EjectMethod method = EjectMethod.STRIKE_ONE; EjectMethod method = EjectMethod.STRIKE_ONE;
String player_ip = null; String player_ip = null;
try try
{ {
player_ip = p.getAddress().getAddress().getHostAddress(); player_ip = player.getAddress().getAddress().getHostAddress();
Integer num_kicks = TFM_Util.eject_tracker.get(player_ip); Integer num_kicks = TFM_Util.eject_tracker.get(player_ip);
if (num_kicks == null) if (num_kicks == null)
@ -388,11 +432,11 @@ public class TFM_Util
{ {
} }
TFM_Log.info("autoEject -> name: " + p.getName() + " - player_ip: " + player_ip + " - method: " + method.toString()); TFM_Log.info("autoEject -> name: " + player.getName() + " - player_ip: " + player_ip + " - method: " + method.toString());
p.setOp(false); player.setOp(false);
p.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
p.getInventory().clear(); player.getInventory().clear();
switch (method) switch (method)
{ {
@ -402,11 +446,11 @@ public class TFM_Util
c.add(Calendar.MINUTE, 1); c.add(Calendar.MINUTE, 1);
Date expires = c.getTime(); Date expires = c.getTime();
TFM_Util.bcastMsg(ChatColor.RED + p.getName() + " has been banned for 1 minute."); TFM_Util.bcastMsg(ChatColor.RED + player.getName() + " has been banned for 1 minute.");
TFM_Util.banIP(player_ip, kickMessage, "AutoEject", expires); TFM_ServerInterface.banIP(player_ip, kickMessage, "AutoEject", expires);
TFM_Util.banUsername(p.getName(), kickMessage, "AutoEject", expires); TFM_ServerInterface.banUsername(player.getName(), kickMessage, "AutoEject", expires);
p.kickPlayer(kickMessage); player.kickPlayer(kickMessage);
break; break;
} }
@ -416,28 +460,28 @@ public class TFM_Util
c.add(Calendar.MINUTE, 3); c.add(Calendar.MINUTE, 3);
Date expires = c.getTime(); Date expires = c.getTime();
TFM_Util.bcastMsg(ChatColor.RED + p.getName() + " has been banned for 3 minutes."); TFM_Util.bcastMsg(ChatColor.RED + player.getName() + " has been banned for 3 minutes.");
TFM_Util.banIP(player_ip, kickMessage, "AutoEject", expires); TFM_ServerInterface.banIP(player_ip, kickMessage, "AutoEject", expires);
TFM_Util.banUsername(p.getName(), kickMessage, "AutoEject", expires); TFM_ServerInterface.banUsername(player.getName(), kickMessage, "AutoEject", expires);
p.kickPlayer(kickMessage); player.kickPlayer(kickMessage);
break; break;
} }
case STRIKE_THREE: case STRIKE_THREE:
{ {
//Bukkit.banIP(player_ip); //Bukkit.banIP(player_ip);
TFM_Util.banIP(player_ip, kickMessage, "AutoEject", null); TFM_ServerInterface.banIP(player_ip, kickMessage, "AutoEject", null);
String[] ip_address_parts = player_ip.split("\\."); String[] ip_address_parts = player_ip.split("\\.");
//Bukkit.banIP(); //Bukkit.banIP();
TFM_Util.banIP(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*", kickMessage, "AutoEject", null); TFM_ServerInterface.banIP(ip_address_parts[0] + "." + ip_address_parts[1] + ".*.*", kickMessage, "AutoEject", null);
//p.setBanned(true); //p.setBanned(true);
TFM_Util.banUsername(p.getName(), kickMessage, "AutoEject", null); TFM_ServerInterface.banUsername(player.getName(), kickMessage, "AutoEject", null);
TFM_Util.bcastMsg(ChatColor.RED + p.getName() + " has been banned permanently."); TFM_Util.bcastMsg(ChatColor.RED + player.getName() + " has been banned permanently.");
p.kickPlayer(kickMessage); player.kickPlayer(kickMessage);
break; break;
} }
@ -459,12 +503,6 @@ public class TFM_Util
Bukkit.getServer().createWorld(flatlands); Bukkit.getServer().createWorld(flatlands);
} }
@Deprecated
public static boolean isSuperadminImpostor(CommandSender user)
{
return TFM_SuperadminList.isSuperadminImpostor(user);
}
public static String getRank(CommandSender sender) public static String getRank(CommandSender sender)
{ {
if (TFM_SuperadminList.isSuperadminImpostor(sender)) if (TFM_SuperadminList.isSuperadminImpostor(sender))
@ -507,42 +545,6 @@ public class TFM_Util
return "a " + ChatColor.GREEN + "non-OP" + ChatColor.AQUA + "."; return "a " + ChatColor.GREEN + "non-OP" + ChatColor.AQUA + ".";
} }
@Deprecated
public static void banUsername(String name, String reason, String source, Date expire_date)
{
TFM_ServerInterface.banUsername(name, reason, source, expire_date);
}
@Deprecated
public static void unbanUsername(String name)
{
TFM_ServerInterface.unbanUsername(name);
}
@Deprecated
public static boolean isNameBanned(String name)
{
return TFM_ServerInterface.isNameBanned(name);
}
@Deprecated
public static void banIP(String ip, String reason, String source, Date expire_date)
{
TFM_ServerInterface.banIP(ip, reason, source, expire_date);
}
@Deprecated
public static void unbanIP(String ip)
{
TFM_ServerInterface.unbanIP(ip);
}
@Deprecated
public static boolean isIPBanned(String ip)
{
return TFM_ServerInterface.isIPBanned(ip);
}
public static Date parseDateOffset(String time) public static Date parseDateOffset(String time)
{ {
Pattern timePattern = Pattern.compile( Pattern timePattern = Pattern.compile(
@ -651,9 +653,9 @@ public class TFM_Util
public static String playerListToNames(Set<OfflinePlayer> players) public static String playerListToNames(Set<OfflinePlayer> players)
{ {
List<String> player_names = new ArrayList<String>(); List<String> player_names = new ArrayList<String>();
for (OfflinePlayer p : players) for (OfflinePlayer player : players)
{ {
player_names.add(p.getName()); player_names.add(player.getName());
} }
return StringUtils.join(player_names, ", "); return StringUtils.join(player_names, ", ");
} }
@ -891,11 +893,11 @@ public class TFM_Util
String name = sender.getName() + " " + getPrefix(sender, senderIsConsole); String name = sender.getName() + " " + getPrefix(sender, senderIsConsole);
TFM_Log.info("[ADMIN] " + name + ": " + message); TFM_Log.info("[ADMIN] " + name + ": " + message);
for (Player p : Bukkit.getOnlinePlayers()) for (Player player : Bukkit.getOnlinePlayers())
{ {
if (TFM_SuperadminList.isUserSuperadmin(p)) if (TFM_SuperadminList.isUserSuperadmin(player))
{ {
p.sendMessage("[" + ChatColor.AQUA + "ADMIN" + ChatColor.WHITE + "] " + ChatColor.DARK_RED + name + ": " + ChatColor.AQUA + message); player.sendMessage("[" + ChatColor.AQUA + "ADMIN" + ChatColor.WHITE + "] " + ChatColor.DARK_RED + name + ": " + ChatColor.AQUA + message);
} }
} }
} }
@ -979,4 +981,9 @@ public class TFM_Util
{ {
return COLOR_POOL.get(RANDOM.nextInt(COLOR_POOL.size())); return COLOR_POOL.get(RANDOM.nextInt(COLOR_POOL.size()));
} }
public static String colorise(String string)
{
return ChatColor.translateAlternateColorCodes('&', string);
}
} }

View File

@ -38,14 +38,14 @@ public class TFM_WorldEditBridge
return this.worldEditPlugin; return this.worldEditPlugin;
} }
public BukkitPlayer getBukkitPlayer(Player p) public BukkitPlayer getBukkitPlayer(Player player)
{ {
try try
{ {
WorldEditPlugin wep = this.getWorldEditPlugin(); WorldEditPlugin wep = this.getWorldEditPlugin();
if (wep != null) if (wep != null)
{ {
return wep.wrapPlayer(p); return wep.wrapPlayer(player);
} }
} }
catch (Exception ex) catch (Exception ex)
@ -55,14 +55,14 @@ public class TFM_WorldEditBridge
return null; return null;
} }
public LocalSession getPlayerSession(Player p) public LocalSession getPlayerSession(Player player)
{ {
try try
{ {
WorldEditPlugin wep = this.getWorldEditPlugin(); WorldEditPlugin wep = this.getWorldEditPlugin();
if (wep != null) if (wep != null)
{ {
return wep.getSession(p); return wep.getSession(player);
} }
} }
catch (Exception ex) catch (Exception ex)
@ -72,14 +72,14 @@ public class TFM_WorldEditBridge
return null; return null;
} }
public void undo(Player p, int count) public void undo(Player player, int count)
{ {
try try
{ {
LocalSession session = getPlayerSession(p); LocalSession session = getPlayerSession(player);
if (session != null) if (session != null)
{ {
BukkitPlayer bukkitPlayer = this.getBukkitPlayer(p); BukkitPlayer bukkitPlayer = this.getBukkitPlayer(player);
if (bukkitPlayer != null) if (bukkitPlayer != null)
{ {
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
@ -95,11 +95,11 @@ public class TFM_WorldEditBridge
} }
} }
public void setLimit(Player p, int limit) public void setLimit(Player player, int limit)
{ {
try try
{ {
LocalSession session = getPlayerSession(p); LocalSession session = getPlayerSession(player);
if (session != null) if (session != null)
{ {
session.setBlockChangeLimit(limit); session.setBlockChangeLimit(limit);

View File

@ -29,7 +29,7 @@ public class TotalFreedomMod extends JavaPlugin
public static final Server server = Bukkit.getServer(); public static final Server server = Bukkit.getServer();
// //
public static final long HEARTBEAT_RATE = 5L; //Seconds public static final long HEARTBEAT_RATE = 5L; //Seconds
public static final long SERVICE_CHECKER_RATE = 30L; public static final long SERVICE_CHECKER_RATE = 120L;
// //
public static final String CONFIG_FILE = "config.yml"; public static final String CONFIG_FILE = "config.yml";
public static final String SUPERADMIN_FILE = "superadmin.yml"; public static final String SUPERADMIN_FILE = "superadmin.yml";
@ -49,6 +49,7 @@ public class TotalFreedomMod extends JavaPlugin
public static boolean allPlayersFrozen = false; public static boolean allPlayersFrozen = false;
public static BukkitTask freezePurgeTask = null; public static BukkitTask freezePurgeTask = null;
public static BukkitTask mutePurgeTask = null; public static BukkitTask mutePurgeTask = null;
public static boolean lockdownEnabled = false;
public static Map<Player, Double> fuckoffEnabledFor = new HashMap<Player, Double>(); public static Map<Player, Double> fuckoffEnabledFor = new HashMap<Player, Double>();
// //
public static String pluginVersion = ""; public static String pluginVersion = "";
@ -83,6 +84,8 @@ public class TotalFreedomMod extends JavaPlugin
TFM_Util.generateFlatlands(flatlandsGenerationParams); TFM_Util.generateFlatlands(flatlandsGenerationParams);
} }
TFM_AdminWorld.getInstance().getAdminWorld();
if (disableWeather) if (disableWeather)
{ {
for (World world : server.getWorlds()) for (World world : server.getWorlds())
@ -143,6 +146,8 @@ public class TotalFreedomMod extends JavaPlugin
TFM_Log.info("Plugin Enabled - Version: " + TotalFreedomMod.pluginVersion + "." + TotalFreedomMod.buildNumber + " by Madgeek1450 and DarthSalamon"); TFM_Log.info("Plugin Enabled - Version: " + TotalFreedomMod.pluginVersion + "." + TotalFreedomMod.buildNumber + " by Madgeek1450 and DarthSalamon");
TFM_ServiceChecker.getInstance().getUpdateRunnable().runTaskTimerAsynchronously(plugin, 40L, SERVICE_CHECKER_RATE * 20L);
new BukkitRunnable() new BukkitRunnable()
{ {
@Override @Override
@ -262,11 +267,12 @@ public class TotalFreedomMod extends JavaPlugin
public static double autoProtectRadius = 25.0D; public static double autoProtectRadius = 25.0D;
public static List<String> host_sender_names = Arrays.asList("rcon", "remotebukkit"); public static List<String> host_sender_names = Arrays.asList("rcon", "remotebukkit");
public static boolean twitterbotEnabled = false; public static boolean twitterbotEnabled = false;
public static String twitterbotUrl = ""; public static String twitterbotURL = "";
public static String twitterbotSecret = ""; public static String twitterbotSecret = "";
public static boolean petProtectEnabled = true; public static boolean petProtectEnabled = true;
public static String logsRegisterPassword = ""; public static String logsRegisterPassword = "";
public static String logsRegisterURL = ""; public static String logsRegisterURL = "";
public static String serviceCheckerURL = "http://status.mojang.com/check";
public static void loadMainConfig() public static void loadMainConfig()
{ {
@ -311,22 +317,18 @@ public class TotalFreedomMod extends JavaPlugin
autoProtectRadius = config.getDouble("auto_protect_radius", autoProtectRadius); autoProtectRadius = config.getDouble("auto_protect_radius", autoProtectRadius);
host_sender_names = config.getStringList("host_sender_names"); host_sender_names = config.getStringList("host_sender_names");
twitterbotEnabled = config.getBoolean("twitterbot_enabled", twitterbotEnabled); twitterbotEnabled = config.getBoolean("twitterbot_enabled", twitterbotEnabled);
twitterbotUrl = config.getString("twitterbot_url", twitterbotUrl); twitterbotURL = config.getString("twitterbot_url", twitterbotURL);
twitterbotSecret = config.getString("twitterbot_secret", twitterbotSecret); twitterbotSecret = config.getString("twitterbot_secret", twitterbotSecret);
petProtectEnabled = config.getBoolean("pet_protect_enabled", petProtectEnabled); petProtectEnabled = config.getBoolean("pet_protect_enabled", petProtectEnabled);
logsRegisterPassword = config.getString("logs_register_password", logsRegisterPassword); logsRegisterPassword = config.getString("logs_register_password", logsRegisterPassword);
logsRegisterURL = config.getString("logs_register_url", logsRegisterURL); logsRegisterURL = config.getString("logs_register_url", logsRegisterURL);
serviceCheckerURL = config.getString("service_checker_url", serviceCheckerURL);
} }
catch (Exception ex) catch (Exception ex)
{ {
TFM_Log.severe("Error loading main config: " + ex.getMessage()); TFM_Log.severe("Error loading main config: " + ex.getMessage());
} }
} }
//
@Deprecated
public static List<String> superadmins = new ArrayList<String>();
@Deprecated
public static List<String> superadmin_ips = new ArrayList<String>();
public static void loadSuperadminConfig() public static void loadSuperadminConfig()
{ {
@ -334,9 +336,6 @@ public class TotalFreedomMod extends JavaPlugin
{ {
TFM_SuperadminList.backupSavedList(); TFM_SuperadminList.backupSavedList();
TFM_SuperadminList.loadSuperadminList(); TFM_SuperadminList.loadSuperadminList();
superadmins = TFM_SuperadminList.getSuperadminNames();
superadmin_ips = TFM_SuperadminList.getSuperadminIPs();
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -1,6 +1,6 @@
name: TotalFreedomMod name: TotalFreedomMod
main: me.StevenLawson.TotalFreedomMod.TotalFreedomMod main: me.StevenLawson.TotalFreedomMod.TotalFreedomMod
version: 2.22 version: 3.00
description: Plugin for the Total Freedom server. description: Plugin for the Total Freedom server.
authors: [StevenLawson / Madgeek1450, JeromSar / DarthSalamon] authors: [StevenLawson / Madgeek1450, JeromSar / DarthSalamon]