From 41f2a0e232a06677778fb42da79bcee0515e4876 Mon Sep 17 00:00:00 2001 From: Steven Lawson Date: Mon, 28 Nov 2011 17:44:51 -0500 Subject: [PATCH] Misc --- src/config.yml | 4 + ...mmand_skylands.java => Command_ender.java} | 4 +- .../Commands/Command_fuckoff.java | 81 ++++++++ .../Commands/Command_kicknoob.java | 32 ++++ .../Commands/Command_moblimiter.java | 84 +++++++++ .../Commands/Command_nonuke.java | 65 ++++--- .../Commands/Command_qjail.java | 58 ------ .../Commands/Command_saconfig.java | 4 +- .../Commands/Command_setspawnworld.java | 35 ++++ .../Commands/Command_stacker.java | 47 ----- .../Commands/Command_tfsmite.java | 86 --------- .../Commands/Command_tossmob.java | 21 ++- .../Listener/TFM_BlockListener.java | 157 ++++++++-------- .../Listener/TFM_EntityListener.java | 68 +++---- .../Listener/TFM_PlayerListener.java | 177 ++++++++++++------ .../TotalFreedomMod/TFM_UserInfo.java | 11 -- .../TotalFreedomMod/TFM_Util.java | 38 +++- .../TotalFreedomMod/TotalFreedomMod.java | 13 +- src/plugin.yml | 27 +-- 19 files changed, 579 insertions(+), 433 deletions(-) rename src/me/StevenLawson/TotalFreedomMod/Commands/{Command_skylands.java => Command_ender.java} (80%) create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_fuckoff.java create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_kicknoob.java create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_moblimiter.java delete mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_qjail.java create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_setspawnworld.java delete mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_stacker.java delete mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfsmite.java diff --git a/src/config.yml b/src/config.yml index a79fddb4..af032693 100644 --- a/src/config.yml +++ b/src/config.yml @@ -38,6 +38,10 @@ mp44_enabled: false # Moblimiter: mob_limiter_enabled: true mob_limiter_max: 50 +mob_limiter_disable_dragon: true +mob_limiter_disable_ghast: true +mob_limiter_disable_slime: true +mob_limiter_disable_giant: true # Superadmins: Users that can always log in and use the most powerful commands: # When online-mode = false, only superadmin_ips will be used. diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_skylands.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_ender.java similarity index 80% rename from src/me/StevenLawson/TotalFreedomMod/Commands/Command_skylands.java rename to src/me/StevenLawson/TotalFreedomMod/Commands/Command_ender.java index 3f274510..08d980ca 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_skylands.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_ender.java @@ -5,12 +5,12 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class Command_skylands extends TFM_Command +public class Command_ender extends TFM_Command { @Override public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - TFM_Util.gotoWorld(sender, "skylands"); + TFM_Util.gotoWorld(sender, "the_end"); return true; } } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_fuckoff.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_fuckoff.java new file mode 100644 index 00000000..79976c04 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_fuckoff.java @@ -0,0 +1,81 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +import java.util.Arrays; +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; + +public class Command_fuckoff extends TFM_Command +{ + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if (senderIsConsole) + { + sender.sendMessage(TotalFreedomMod.NOT_FROM_CONSOLE); + return true; + } + + if (!TFM_Util.isUserSuperadmin(sender, plugin)) + { + sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); + return true; + } + + boolean permitted = false; + for (String name : Arrays.asList("madgeek1450", "markbyron")) + { + if (sender.getName().equalsIgnoreCase(name)) + { + permitted = true; + break; + } + } + + if (!permitted) + { + sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); + return true; + } + + if (args.length < 1) + { + return false; + } + + boolean fuckoff_enabled = false; + double fuckoff_range = 25.0; + + if (args[0].equalsIgnoreCase("on")) + { + fuckoff_enabled = true; + + if (args.length >= 2) + { + try + { + fuckoff_range = Math.max(5.0, Math.min(100.0, Double.parseDouble(args[1]))); + } + catch (NumberFormatException ex) + { + } + } + } + + if (TotalFreedomMod.fuckoffEnabledFor.containsKey(sender_p)) + { + TotalFreedomMod.fuckoffEnabledFor.remove(sender_p); + } + + if (fuckoff_enabled) + { + TotalFreedomMod.fuckoffEnabledFor.put(sender_p, new Double(fuckoff_range)); + } + + sender.sendMessage("Fuckoff " + (fuckoff_enabled ? ("enabled. Range: " + fuckoff_range + ".") : "disabled.")); + + return true; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_kicknoob.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_kicknoob.java new file mode 100644 index 00000000..bd024938 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_kicknoob.java @@ -0,0 +1,32 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +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; + +public class Command_kicknoob extends TFM_Command +{ + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if (!senderIsConsole || sender.getName().equalsIgnoreCase("remotebukkit")) + { + sender.sendMessage(ChatColor.GRAY + "This command may only be used from the Telnet or BukkitHttpd console."); + return true; + } + + sender.sendMessage("Disconnecting all non-superadmins."); + + for (Player p : plugin.getServer().getOnlinePlayers()) + { + if (!TFM_Util.isUserSuperadmin(p, plugin)) + { + p.kickPlayer("Disconnected by admin."); + } + } + + return true; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_moblimiter.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_moblimiter.java new file mode 100644 index 00000000..b0409ba5 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_moblimiter.java @@ -0,0 +1,84 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Command_moblimiter extends TFM_Command +{ + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if (!senderIsConsole || sender.getName().equalsIgnoreCase("remotebukkit")) + { + sender.sendMessage(ChatColor.GRAY + "This command may only be used from the Telnet or BukkitHttpd console."); + return true; + } + + if (args.length < 1) + { + return false; + } + + if (args[0].equalsIgnoreCase("on")) + { + TotalFreedomMod.mobLimiterEnabled = true; + } + else if (args[0].equalsIgnoreCase("off")) + { + TotalFreedomMod.mobLimiterEnabled = false; + } + else if (args[0].equalsIgnoreCase("dragon")) + { + TotalFreedomMod.mobLimiterDisableDragon = !TotalFreedomMod.mobLimiterDisableDragon; + } + else if (args[0].equalsIgnoreCase("giant")) + { + TotalFreedomMod.mobLimiterDisableGiant = !TotalFreedomMod.mobLimiterDisableGiant; + } + else if (args[0].equalsIgnoreCase("slime")) + { + TotalFreedomMod.mobLimiterDisableSlime = !TotalFreedomMod.mobLimiterDisableSlime; + } + else if (args[0].equalsIgnoreCase("ghast")) + { + TotalFreedomMod.mobLimiterDisableGhast = !TotalFreedomMod.mobLimiterDisableGhast; + } + else + { + if (args.length < 2) + { + return false; + } + + if (args[0].equalsIgnoreCase("setmax")) + { + try + { + TotalFreedomMod.mobLimiterMax = Math.max(0, Math.min(2000, Integer.parseInt(args[1]))); + } + catch (NumberFormatException nfex) + { + } + } + } + + if (TotalFreedomMod.mobLimiterEnabled) + { + sender.sendMessage("Moblimiter enabled. Maximum mobcount set to: " + TotalFreedomMod.mobLimiterMax + "."); + + sender.sendMessage("Dragon: " + (TotalFreedomMod.mobLimiterDisableDragon ? "disabled" : "enabled") + "."); + sender.sendMessage("Giant: " + (TotalFreedomMod.mobLimiterDisableGiant ? "disabled" : "enabled") + "."); + sender.sendMessage("Slime: " + (TotalFreedomMod.mobLimiterDisableSlime ? "disabled" : "enabled") + "."); + sender.sendMessage("Ghast: " + (TotalFreedomMod.mobLimiterDisableGhast ? "disabled" : "enabled") + "."); + } + else + { + sender.sendMessage("Moblimiter is disabled. No mob restrictions are in effect."); + } + + return true; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_nonuke.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_nonuke.java index 4ed12467..29edb699 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_nonuke.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_nonuke.java @@ -12,53 +12,52 @@ public class Command_nonuke extends TFM_Command @Override public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (senderIsConsole || TFM_Util.isUserSuperadmin(sender, plugin)) + if (!senderIsConsole || sender.getName().equalsIgnoreCase("remotebukkit")) { - if (args.length < 1) - { - return false; - } + sender.sendMessage(ChatColor.GRAY + "This command may only be used from the Telnet or BukkitHttpd console."); + return true; + } - if (args.length >= 2) - { - try - { - TotalFreedomMod.nukeMonitorRange = Math.max(1.0, Math.min(500.0, Double.parseDouble(args[1]))); - } - catch (NumberFormatException nfex) - { - } - } + if (args.length < 1) + { + return false; + } - if (args.length >= 3) + if (args.length >= 2) + { + try { - try - { - TotalFreedomMod.nukeMonitorCountBreak = Math.max(1, Math.min(500, Integer.parseInt(args[2]))); - } - catch (NumberFormatException nfex) - { - } + TotalFreedomMod.nukeMonitorRange = Math.max(1.0, Math.min(500.0, Double.parseDouble(args[1]))); } + catch (NumberFormatException nfex) + { + } + } - if (args[0].equalsIgnoreCase("on")) + if (args.length >= 3) + { + try { - TotalFreedomMod.nukeMonitor = true; - sender.sendMessage(ChatColor.GRAY + "Nuke monitor is enabled."); - sender.sendMessage(ChatColor.GRAY + "Anti-freecam range is set to " + TotalFreedomMod.nukeMonitorRange + " blocks."); - sender.sendMessage(ChatColor.GRAY + "Block throttle rate is set to " + TotalFreedomMod.nukeMonitorCountBreak + " blocks destroyed per 5 seconds."); + TotalFreedomMod.nukeMonitorCountBreak = Math.max(1, Math.min(500, Integer.parseInt(args[2]))); } - else + catch (NumberFormatException nfex) { - TotalFreedomMod.nukeMonitor = false; - sender.sendMessage("Nuke monitor is disabled."); } } + + if (args[0].equalsIgnoreCase("on")) + { + TotalFreedomMod.nukeMonitor = true; + sender.sendMessage(ChatColor.GRAY + "Nuke monitor is enabled."); + sender.sendMessage(ChatColor.GRAY + "Anti-freecam range is set to " + TotalFreedomMod.nukeMonitorRange + " blocks."); + sender.sendMessage(ChatColor.GRAY + "Block throttle rate is set to " + TotalFreedomMod.nukeMonitorCountBreak + " blocks destroyed per 5 seconds."); + } else { - sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); + TotalFreedomMod.nukeMonitor = false; + sender.sendMessage("Nuke monitor is disabled."); } - + return true; } } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qjail.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qjail.java deleted file mode 100644 index 98e50599..00000000 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qjail.java +++ /dev/null @@ -1,58 +0,0 @@ -package me.StevenLawson.TotalFreedomMod.Commands; - -public class Command_qjail extends TFM_Command -{ -// @Override -// public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) -// { -// if (senderIsConsole || TFM_Util.isUserSuperadmin(sender, plugin)) -// { -// if (args.length < 1) -// { -// return false; -// } -// -// Player p; -// try -// { -// p = getPlayer(args[0]); -// } -// catch (CantFindPlayerException ex) -// { -// sender.sendMessage(ex.getMessage()); -// return true; -// } -// -// //Deop -// p.setOp(false); -// -// //Set gamemode to survival: -// p.setGameMode(GameMode.SURVIVAL); -// -// //Clear inventory: -// p.getInventory().clear(); -// -// //Strike with lightning effect: -// final Location target_pos = p.getLocation(); -// for (int x = -1; x <= 1; x++) -// { -// 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); -// target_pos.getWorld().strikeLightning(strike_pos); -// } -// } -// -// //Send to jail "mgjail": -// Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("tjail %s mgjail 1y", p.getName().replace(" ", "").trim())); -// -// TFM_Util.bcastMsg(p.getName() + " has been JAILED!", ChatColor.RED); -// } -// else -// { -// sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); -// } -// -// return true; -// } -} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_saconfig.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_saconfig.java index 063f4d33..3d6d35e9 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_saconfig.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_saconfig.java @@ -71,7 +71,7 @@ public class Command_saconfig extends TFM_Command List user_ips = new ArrayList(); if (config.contains(user_name)) { - user_ips = config.getStringListFixed(user_name); + user_ips = (List) config.getStringList(user_name); } if (!user_ips.contains(new_ip)) @@ -122,7 +122,7 @@ public class Command_saconfig extends TFM_Command if (config.contains(user_name)) { - List user_ips = config.getStringListFixed(user_name); + List user_ips = (List) config.getStringList(user_name); for (String ip : user_ips) { TotalFreedomMod.superadmin_ips.remove(ip); diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_setspawnworld.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_setspawnworld.java new file mode 100644 index 00000000..2bca4266 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_setspawnworld.java @@ -0,0 +1,35 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +import me.StevenLawson.TotalFreedomMod.TFM_Util; +import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Command_setspawnworld extends TFM_Command +{ + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if (senderIsConsole) + { + sender.sendMessage(TotalFreedomMod.NOT_FROM_CONSOLE); + return true; + } + + if (!TFM_Util.isUserSuperadmin(sender, plugin)) + { + sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); + return true; + } + + Location pos = sender_p.getLocation(); + sender_p.getWorld().setSpawnLocation(pos.getBlockX(), pos.getBlockY(), pos.getBlockZ()); + + sender.sendMessage(ChatColor.GRAY + "Spawn location for this world set to: " + TFM_Util.formatLocation(sender_p.getWorld().getSpawnLocation())); + + return true; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stacker.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stacker.java deleted file mode 100644 index e68a4942..00000000 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stacker.java +++ /dev/null @@ -1,47 +0,0 @@ -package me.StevenLawson.TotalFreedomMod.Commands; - -public class Command_stacker extends TFM_Command -{ -// @Override -// public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) -// { -// if (senderIsConsole) -// { -// sender.sendMessage(TotalFreedomMod.NOT_FROM_CONSOLE); -// } -// else if (TFM_Util.isUserSuperadmin(sender, plugin)) -// { -// if (args.length >= 1) -// { -// if (TFM_Util.isStopCommand(args[0])) -// { -// for (World world : Bukkit.getWorlds()) -// { -// for (LivingEntity entity : world.getLivingEntities()) -// { -// entity.leaveVehicle(); -// } -// } -// return true; -// } -// } -// -// LivingEntity parent = sender_p; -// for (LivingEntity entity : sender_p.getWorld().getLivingEntities()) -// { -// if (parent != null) -// { -// parent.setPassenger(entity); -// } -// -// parent = entity; -// } -// } -// else -// { -// sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); -// } -// -// return true; -// } -} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfsmite.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfsmite.java deleted file mode 100644 index c7dd88e0..00000000 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tfsmite.java +++ /dev/null @@ -1,86 +0,0 @@ -package me.StevenLawson.TotalFreedomMod.Commands; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import me.StevenLawson.TotalFreedomMod.TFM_UserInfo; -import me.StevenLawson.TotalFreedomMod.TFM_Util; -import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class Command_tfsmite 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 (senderIsConsole || TFM_Util.isUserSuperadmin(sender, plugin)) - { - List targets = new ArrayList(); - - if (args[0].equalsIgnoreCase("all")) - { - targets = Arrays.asList(Bukkit.getOnlinePlayers()); - } - else - { - List matches = Bukkit.matchPlayer(args[0]); - if (matches.isEmpty()) - { - sender.sendMessage("Can't find user " + args[0]); - return true; - } - else - { - targets.add(matches.get(0)); - } - } - - for (Player p : targets) - { - TFM_Util.bcastMsg(p.getName() + " has been a naughty, naughty boy.", ChatColor.RED); - - //Deop - p.setOp(false); - - //Set gamemode to survival: - p.setGameMode(GameMode.SURVIVAL); - - //Clear inventory: - p.getInventory().clear(); - - //Flag for insta-kill: - TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(p); - playerdata.setForcedDeath(true); - - //Strike with lightning effect: - final Location target_pos = p.getLocation(); - for (int x = -1; x <= 1; x++) - { - 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); - target_pos.getWorld().strikeLightning(strike_pos); - } - } - } - } - else - { - sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); - } - - return true; - - } -} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tossmob.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tossmob.java index a0095350..49bb5720 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tossmob.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_tossmob.java @@ -1,5 +1,8 @@ package me.StevenLawson.TotalFreedomMod.Commands; +import java.util.Map.Entry; +import java.util.logging.Level; +import java.util.logging.Logger; import me.StevenLawson.TotalFreedomMod.TFM_UserInfo; import me.StevenLawson.TotalFreedomMod.TFM_Util; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; @@ -34,9 +37,25 @@ public class Command_tossmob extends TFM_Command return true; } - if ((creature = TFM_Util.getCreatureType(args[0])) == null) + if (args[0].equalsIgnoreCase("list")) + { + StringBuilder output = new StringBuilder("Supported mobs: "); + for (Entry mob : TFM_Util.mobtypes.entrySet()) + { + output.append(mob.getKey()).append(", "); + } + sender.sendMessage(ChatColor.GREEN + output.toString()); + return true; + } + + try + { + creature = TFM_Util.getCreatureType(args[0]); + } + catch (Exception ex) { sender.sendMessage(ChatColor.RED + args[0] + " is not a supported mob type. Using a pig instead."); + sender.sendMessage(ChatColor.RED + "By the way, you can type /tossmob list to see all possible mobs."); creature = CreatureType.PIG; } } diff --git a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_BlockListener.java b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_BlockListener.java index 4d781ea3..2f8c2078 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_BlockListener.java +++ b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_BlockListener.java @@ -69,9 +69,9 @@ public class TFM_BlockListener extends BlockListener { TFM_Util.bcastMsg(p.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."); - + playerdata.resetFreecamDestroyCount(); - + event.setCancelled(true); return; } @@ -83,6 +83,8 @@ public class TFM_BlockListener extends BlockListener TFM_Util.bcastMsg(p.getName() + " is breaking blocks too fast!", ChatColor.RED); TFM_Util.autoEject(p, "You are breaking blocks too fast. Nukers are not permitted on this server."); + playerdata.resetBlockDestroyCount(); + event.setCancelled(true); return; } @@ -118,9 +120,9 @@ public class TFM_BlockListener extends BlockListener { TFM_Util.bcastMsg(p.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."); - + playerdata.resetFreecamPlaceCount(); - + event.setCancelled(true); return; } @@ -132,98 +134,89 @@ public class TFM_BlockListener extends BlockListener TFM_Util.bcastMsg(p.getName() + " is placing blocks too fast!", ChatColor.RED); TFM_Util.autoEject(p, "You are placing blocks too fast."); + playerdata.resetBlockPlaceCount(); + event.setCancelled(true); return; } } ItemStack is = new ItemStack(event.getBlockPlaced().getType(), 1, (short) 0, event.getBlockPlaced().getData()); - if (is.getType() == Material.LAVA || is.getType() == Material.STATIONARY_LAVA) + switch (is.getType()) { - if (TotalFreedomMod.allowLavaPlace) + case LAVA: + case STATIONARY_LAVA: { - log.info(String.format("%s placed lava @ %s", - p.getName(), - TFM_Util.formatLocation(event.getBlock().getLocation()))); - - p.getInventory().clear(p.getInventory().getHeldItemSlot()); + if (TotalFreedomMod.allowLavaPlace) + { + log.info(String.format("%s placed lava @ %s", p.getName(), TFM_Util.formatLocation(event.getBlock().getLocation()))); + + p.getInventory().clear(p.getInventory().getHeldItemSlot()); + } + else + { + p.getInventory().setItem(p.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); + p.sendMessage(ChatColor.GRAY + "Lava placement is currently disabled."); + + event.setCancelled(true); + return; + } + break; } - else + case WATER: + case STATIONARY_WATER: { - int slot = p.getInventory().getHeldItemSlot(); - ItemStack heldItem = new ItemStack(Material.COOKIE, 1); - p.getInventory().setItem(slot, heldItem); - - p.sendMessage(ChatColor.GOLD + "LAVA NO FUN, YOU EAT COOKIE INSTEAD, NO?"); - - event.setCancelled(true); - return; + if (TotalFreedomMod.allowWaterPlace) + { + log.info(String.format("%s placed water @ %s", p.getName(), TFM_Util.formatLocation(event.getBlock().getLocation()))); + + p.getInventory().clear(p.getInventory().getHeldItemSlot()); + } + else + { + p.getInventory().setItem(p.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); + p.sendMessage(ChatColor.GRAY + "Water placement is currently disabled."); + + event.setCancelled(true); + return; + } + break; } - } - else if (is.getType() == Material.WATER || is.getType() == Material.STATIONARY_WATER) - { - if (TotalFreedomMod.allowWaterPlace) + case FIRE: { - log.info(String.format("%s placed water @ %s", - p.getName(), - TFM_Util.formatLocation(event.getBlock().getLocation()))); - - p.getInventory().clear(p.getInventory().getHeldItemSlot()); + if (TotalFreedomMod.allowFirePlace) + { + log.info(String.format("%s placed fire @ %s", p.getName(), TFM_Util.formatLocation(event.getBlock().getLocation()))); + + p.getInventory().clear(p.getInventory().getHeldItemSlot()); + } + else + { + p.getInventory().setItem(p.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); + p.sendMessage(ChatColor.GRAY + "Fire placement is currently disabled."); + + event.setCancelled(true); + return; + } + break; } - else + case TNT: { - int slot = p.getInventory().getHeldItemSlot(); - ItemStack heldItem = new ItemStack(Material.COOKIE, 1); - p.getInventory().setItem(slot, heldItem); - - p.sendMessage(ChatColor.GOLD + "Does this look like a waterpark to you?"); - - event.setCancelled(true); - return; - } - } - else if (is.getType() == Material.FIRE) - { - if (TotalFreedomMod.allowFirePlace) - { - log.info(String.format("%s placed fire @ %s", - p.getName(), - TFM_Util.formatLocation(event.getBlock().getLocation()))); - - p.getInventory().clear(p.getInventory().getHeldItemSlot()); - } - else - { - int slot = p.getInventory().getHeldItemSlot(); - ItemStack heldItem = new ItemStack(Material.COOKIE, 1); - p.getInventory().setItem(slot, heldItem); - - p.sendMessage(ChatColor.GOLD + "It's gettin (too) hot in here..."); - - event.setCancelled(true); - return; - } - } - else if (is.getType() == Material.TNT) - { - if (TotalFreedomMod.allowExplosions) - { - log.info(String.format("%s placed TNT @ %s", - p.getName(), - TFM_Util.formatLocation(event.getBlock().getLocation()))); - - p.getInventory().clear(p.getInventory().getHeldItemSlot()); - } - else - { - int slot = p.getInventory().getHeldItemSlot(); - ItemStack heldItem = new ItemStack(Material.COOKIE, 1); - p.getInventory().setItem(slot, heldItem); - - p.sendMessage(ChatColor.GRAY + "TNT is currently disabled."); - - event.setCancelled(true); - return; + if (TotalFreedomMod.allowExplosions) + { + log.info(String.format("%s placed TNT @ %s", p.getName(), TFM_Util.formatLocation(event.getBlock().getLocation()))); + + p.getInventory().clear(p.getInventory().getHeldItemSlot()); + } + else + { + p.getInventory().setItem(p.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); + + p.sendMessage(ChatColor.GRAY + "TNT is currently disabled."); + event.setCancelled(true); + return; + } + break; } } } diff --git a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java index e3818ce5..ef668df3 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java +++ b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java @@ -1,16 +1,9 @@ package me.StevenLawson.TotalFreedomMod.Listener; -import me.StevenLawson.TotalFreedomMod.TFM_UserInfo; -import me.StevenLawson.TotalFreedomMod.TFM_Util; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import org.bukkit.Bukkit; import org.bukkit.World; -import org.bukkit.entity.Creature; -import org.bukkit.entity.EnderDragon; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Ghast; -import org.bukkit.entity.Player; -import org.bukkit.entity.Slime; +import org.bukkit.entity.*; import org.bukkit.event.entity.*; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; @@ -60,24 +53,6 @@ public class TFM_EntityListener extends EntityListener @Override public void onEntityDamage(EntityDamageEvent event) { - if (event.getEntity() instanceof Player) - { - Player p = (Player) event.getEntity(); - if (p != null) - { - TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(p); - if (playerdata.getForcedDeath()) - { - event.setCancelled(false); - p.setFoodLevel(0); - p.setHealth(0); - event.setDamage(100); - playerdata.setForcedDeath(false); - return; - } - } - } - if (event.getCause() == DamageCause.LAVA && !TotalFreedomMod.allowLavaDamage) { event.setCancelled(true); @@ -90,16 +65,45 @@ public class TFM_EntityListener extends EntityListener { if (TotalFreedomMod.mobLimiterEnabled) { - if (event.getEntity() instanceof Ghast || event.getEntity() instanceof Slime || event.getEntity() instanceof EnderDragon) + Entity spawned = event.getEntity(); + + if (spawned instanceof EnderDragon) { - event.setCancelled(true); - return; + if (TotalFreedomMod.mobLimiterDisableDragon) + { + event.setCancelled(true); + return; + } } - + else if (spawned instanceof Ghast) + { + if (TotalFreedomMod.mobLimiterDisableGhast) + { + event.setCancelled(true); + return; + } + } + else if (spawned instanceof Slime) + { + if (TotalFreedomMod.mobLimiterDisableSlime) + { + event.setCancelled(true); + return; + } + } + else if (spawned instanceof Giant) + { + if (TotalFreedomMod.mobLimiterDisableGiant) + { + event.setCancelled(true); + return; + } + } + if (TotalFreedomMod.mobLimiterMax > 0) { int mobcount = 0; - + for (World world : Bukkit.getWorlds()) { for (Entity ent : world.getLivingEntities()) @@ -110,7 +114,7 @@ public class TFM_EntityListener extends EntityListener } } } - + if (mobcount > TotalFreedomMod.mobLimiterMax) { event.setCancelled(true); diff --git a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java index 7c7797bc..95431fa1 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java +++ b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java @@ -1,6 +1,7 @@ package me.StevenLawson.TotalFreedomMod.Listener; import java.util.Iterator; +import java.util.Map.Entry; import java.util.logging.Logger; import java.util.regex.Pattern; import me.StevenLawson.TotalFreedomMod.TFM_LandmineData; @@ -15,7 +16,6 @@ import org.bukkit.Material; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.TNTPrimed; -import org.bukkit.event.block.Action; import org.bukkit.event.player.*; import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; @@ -34,60 +34,74 @@ public class TFM_PlayerListener extends PlayerListener public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); - Action action = event.getAction(); - Material material = event.getMaterial(); - - if (action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) + + switch (event.getAction()) { - if (material == Material.WATER_BUCKET) + case RIGHT_CLICK_AIR: + case RIGHT_CLICK_BLOCK: { - player.getInventory().setItemInHand(new ItemStack(Material.COOKIE, 1)); - player.sendMessage(ChatColor.GOLD + "Does this look like a waterpark to you?"); - event.setCancelled(true); - return; - } - else if (material == Material.LAVA_BUCKET) - { - player.getInventory().setItemInHand(new ItemStack(Material.COOKIE, 1)); - player.sendMessage(ChatColor.GOLD + "LAVA NO FUN, YOU EAT COOKIE INSTEAD, NO?"); - event.setCancelled(true); - return; - } - } - else if (action == Action.LEFT_CLICK_AIR || action == Action.LEFT_CLICK_BLOCK) - { - if (material == Material.STICK) - { - TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(player); - if (playerdata.mobThrowerEnabled()) + switch (event.getMaterial()) { - Location player_pos = player.getLocation(); - Vector direction = player_pos.getDirection().normalize(); - - LivingEntity rezzed_mob = player.getWorld().spawnCreature(player_pos.add(direction.multiply(2.0)), playerdata.mobThrowerCreature()); - rezzed_mob.setVelocity(direction.multiply(playerdata.mobThrowerSpeed())); - playerdata.enqueueMob(rezzed_mob); - - event.setCancelled(true); + case WATER_BUCKET: + { + player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); + player.sendMessage(ChatColor.GRAY + "Water buckets are currently disabled."); + event.setCancelled(true); + return; + } + case LAVA_BUCKET: + { + player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1)); + player.sendMessage(ChatColor.GRAY + "Lava buckets are currently disabled."); + event.setCancelled(true); + return; + } } + break; } - else if (material == Material.SULPHUR) + case LEFT_CLICK_AIR: + case LEFT_CLICK_BLOCK: { - TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(player); - - if (playerdata.isMP44Armed()) + switch (event.getMaterial()) { - if (playerdata.toggleMP44Firing()) + case STICK: { - playerdata.startArrowShooter(plugin); - } - else - { - playerdata.stopArrowShooter(); - } + TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(player); + if (playerdata.mobThrowerEnabled()) + { + Location player_pos = player.getLocation(); + Vector direction = player_pos.getDirection().normalize(); - event.setCancelled(true); + LivingEntity rezzed_mob = player.getWorld().spawnCreature(player_pos.add(direction.multiply(2.0)), playerdata.mobThrowerCreature()); + rezzed_mob.setVelocity(direction.multiply(playerdata.mobThrowerSpeed())); + playerdata.enqueueMob(rezzed_mob); + + event.setCancelled(true); + return; + } + break; + } + case SULPHUR: + { + TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(player); + if (playerdata.isMP44Armed()) + { + if (playerdata.toggleMP44Firing()) + { + playerdata.startArrowShooter(plugin); + } + else + { + playerdata.stopArrowShooter(); + } + + event.setCancelled(true); + return; + } + break; + } } + break; } } } @@ -97,6 +111,37 @@ public class TFM_PlayerListener extends PlayerListener { Player p = event.getPlayer(); TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(p); + + for (Entry fuckoff : TotalFreedomMod.fuckoffEnabledFor.entrySet()) + { + Player fuckoff_player = fuckoff.getKey(); + + if (fuckoff_player.equals(p) || !fuckoff_player.isOnline()) + { + continue; + } + + double fuckoff_range = fuckoff.getValue().doubleValue(); + + Location mover_pos = p.getLocation(); + Location fuckoff_pos = fuckoff_player.getLocation(); + + double distance; + try + { + distance = mover_pos.distance(fuckoff_pos); + } + catch (IllegalArgumentException ex) + { + continue; + } + + if (distance < fuckoff_range) + { + event.setTo(fuckoff_pos.clone().add(mover_pos.subtract(fuckoff_pos).toVector().normalize().multiply(fuckoff_range * 1.1))); + break; + } + } boolean do_freeze = false; if (TotalFreedomMod.allPlayersFrozen) @@ -158,14 +203,14 @@ public class TFM_PlayerListener extends PlayerListener p.setVelocity(new Vector(0, playerdata.orbitStrength(), 0)); } } - + if (TotalFreedomMod.landminesEnabled && TotalFreedomMod.allowExplosions) { Iterator landmines = TFM_LandmineData.landmines.iterator(); while (landmines.hasNext()) { TFM_LandmineData landmine = landmines.next(); - + Location landmine_pos = landmine.landmine_pos; if (landmine_pos.getBlock().getType() != Material.TNT) { @@ -180,15 +225,15 @@ public class TFM_PlayerListener extends PlayerListener if (p.getLocation().distance(landmine_pos) <= landmine.radius) { landmine.landmine_pos.getBlock().setType(Material.AIR); - + TNTPrimed tnt1 = landmine_pos.getWorld().spawn(landmine_pos, TNTPrimed.class); tnt1.setFuseTicks(40); tnt1.setPassenger(p); tnt1.setVelocity(new Vector(0.0, 2.0, 0.0)); - + TNTPrimed tnt2 = landmine_pos.getWorld().spawn(p.getLocation(), TNTPrimed.class); tnt2.setFuseTicks(1); - + p.setGameMode(GameMode.SURVIVAL); landmines.remove(); } @@ -209,7 +254,8 @@ public class TFM_PlayerListener extends PlayerListener if (playerdata.getMsgCount() > 10) { TFM_Util.bcastMsg(p.getName() + " was automatically kicked for spamming chat.", ChatColor.RED); - TFM_Util.autoEject(p, "No Spamming"); + TFM_Util.autoEject(p, "Kicked for spamming chat."); + playerdata.resetMsgCount(); event.setCancelled(true); @@ -222,16 +268,17 @@ public class TFM_PlayerListener extends PlayerListener { String command = event.getMessage(); Player p = event.getPlayer(); - + TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(p); playerdata.incrementMsgCount(); - + if (playerdata.getMsgCount() > 10) { TFM_Util.bcastMsg(p.getName() + " was automatically kicked for spamming commands.", ChatColor.RED); - TFM_Util.autoEject(p, "No Spamming"); - playerdata.resetMsgCount(); + TFM_Util.autoEject(p, "Kicked for spamming commands."); + playerdata.resetMsgCount(); + TFM_Util.wipeDropEntities(true); event.setCancelled(true); @@ -247,6 +294,7 @@ public class TFM_PlayerListener extends PlayerListener boolean block_command = false; + //Commands that will auto-kick the user: if (Pattern.compile("^/stop").matcher(command).find()) { if (!TFM_Util.isUserSuperadmin(p, plugin)) @@ -268,7 +316,7 @@ public class TFM_PlayerListener extends PlayerListener block_command = true; } } - + if (block_command) { TFM_Util.autoEject(p, "That command is prohibited."); @@ -276,6 +324,7 @@ public class TFM_PlayerListener extends PlayerListener } else { + //Commands that will not auto-kick the user, but still deny: if (Pattern.compile("^/time").matcher(command).find()) { p.sendMessage(ChatColor.GRAY + "Server-side time changing is disabled. Please use /ptime to set your own personal time."); @@ -310,7 +359,12 @@ public class TFM_PlayerListener extends PlayerListener @Override public void onPlayerKick(PlayerKickEvent event) { - TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(event.getPlayer()); + Player p = event.getPlayer(); + if (TotalFreedomMod.fuckoffEnabledFor.containsKey(p)) + { + TotalFreedomMod.fuckoffEnabledFor.remove(p); + } + TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(p); playerdata.disarmMP44(); if (playerdata.isCaged()) { @@ -322,7 +376,12 @@ public class TFM_PlayerListener extends PlayerListener @Override public void onPlayerQuit(PlayerQuitEvent event) { - TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(event.getPlayer()); + Player p = event.getPlayer(); + if (TotalFreedomMod.fuckoffEnabledFor.containsKey(p)) + { + TotalFreedomMod.fuckoffEnabledFor.remove(p); + } + TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(p); playerdata.disarmMP44(); if (playerdata.isCaged()) { @@ -345,7 +404,7 @@ public class TFM_PlayerListener extends PlayerListener if (user_ip != null && !user_ip.isEmpty()) { TFM_Util.checkPartialSuperadminIP(user_ip, plugin); - + if (!TotalFreedomMod.superadmin_ips.contains(user_ip)) { TFM_Util.bcastMsg(p.getName() + " might be a fake! IP: " + user_ip, ChatColor.RED); diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java b/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java index bd69182e..8d779c30 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java @@ -18,7 +18,6 @@ public class TFM_UserInfo private int block_place_total = 0; private int freecam_destroy_count = 0; private int freecam_place_count = 0; - private boolean forced_death = false; private boolean user_caged = false; private Location user_cage_pos; private List user_cage_history = new ArrayList(); @@ -144,16 +143,6 @@ public class TFM_UserInfo } } - public boolean getForcedDeath() - { - return this.forced_death; - } - - public void setForcedDeath(boolean forced_death) - { - this.forced_death = forced_death; - } - public boolean isFrozen() { return this.user_frozen; diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java index e193fdce..c0256c46 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java @@ -38,21 +38,34 @@ public class TFM_Util { private static final Logger log = Logger.getLogger("Minecraft"); private static Map eject_tracker = new HashMap(); - private static final Map mobtypes = new HashMap(); - private static final List stop_commands = new ArrayList(); + public static final Map mobtypes = new HashMap(); + public static final List stop_commands = new ArrayList(); static { mobtypes.put("chicken", CreatureType.CHICKEN); mobtypes.put("cow", CreatureType.COW); mobtypes.put("creeper", CreatureType.CREEPER); + mobtypes.put("ghast", CreatureType.GHAST); + mobtypes.put("giant", CreatureType.GIANT); + mobtypes.put("monster", CreatureType.MONSTER); mobtypes.put("pig", CreatureType.PIG); + mobtypes.put("pigzombie", CreatureType.PIG_ZOMBIE); mobtypes.put("sheep", CreatureType.SHEEP); mobtypes.put("skeleton", CreatureType.SKELETON); + mobtypes.put("slime", CreatureType.SLIME); mobtypes.put("spider", CreatureType.SPIDER); + mobtypes.put("squid", CreatureType.SQUID); mobtypes.put("zombie", CreatureType.ZOMBIE); mobtypes.put("wolf", CreatureType.WOLF); - + mobtypes.put("cavespider", CreatureType.CAVE_SPIDER); + mobtypes.put("enderman", CreatureType.ENDERMAN); + mobtypes.put("silverfish", CreatureType.SILVERFISH); + mobtypes.put("enderdragon", CreatureType.ENDER_DRAGON); + mobtypes.put("villager", CreatureType.VILLAGER); + mobtypes.put("blaze", CreatureType.BLAZE); + mobtypes.put("mushroomcow", CreatureType.MUSHROOM_COW); + stop_commands.add("stop"); stop_commands.add("off"); stop_commands.add("end"); @@ -117,7 +130,7 @@ public class TFM_Util if (sender_p.getWorld().getName().equalsIgnoreCase(targetworld)) { sender.sendMessage(ChatColor.GRAY + "Going to main world."); - Bukkit.getServer().dispatchCommand(sender, "world 0"); + sender_p.teleport(Bukkit.getWorlds().get(0).getSpawnLocation()); return; } @@ -126,10 +139,12 @@ public class TFM_Util if (world.getName().equalsIgnoreCase(targetworld)) { sender.sendMessage(ChatColor.GRAY + "Going to world: " + targetworld); - Bukkit.getServer().dispatchCommand(sender, "mv tp " + targetworld); + sender_p.teleport(world.getSpawnLocation()); return; } } + + sender.sendMessage(ChatColor.GRAY + "World " + targetworld + " not found."); } else { @@ -327,7 +342,7 @@ public class TFM_Util fileloop: for (String user : config.getKeys(false)) { - List user_ips = config.getStringListFixed(user); + List user_ips = (List) config.getStringList(user); for (String ip : user_ips) { ip = ip.toLowerCase().trim(); @@ -395,9 +410,16 @@ public class TFM_Util } } - public static CreatureType getCreatureType(String mobname) + public static CreatureType getCreatureType(String mobname) throws Exception { - return TFM_Util.mobtypes.get(mobname.toLowerCase().trim()); + mobname = mobname.toLowerCase().trim(); + + if (!TFM_Util.mobtypes.containsKey(mobname)) + { + throw new Exception(); + } + + return TFM_Util.mobtypes.get(mobname); } public static void zip(File directory, File zipfile, boolean verbose, CommandSender sender) throws IOException diff --git a/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java b/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java index 40938466..00e143f9 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java +++ b/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java @@ -3,7 +3,9 @@ package me.StevenLawson.TotalFreedomMod; import java.io.File; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import me.StevenLawson.TotalFreedomMod.Commands.TFM_Command; @@ -35,6 +37,7 @@ public class TotalFreedomMod extends JavaPlugin public static final String NOT_FROM_CONSOLE = "This command may not be used from the console."; public static boolean allPlayersFrozen = false; + public static Map fuckoffEnabledFor = new HashMap(); @Override public void onEnable() @@ -137,6 +140,10 @@ public class TotalFreedomMod extends JavaPlugin public static boolean mp44Enabled = false; public static boolean mobLimiterEnabled = true; public static int mobLimiterMax = 50; + public static boolean mobLimiterDisableDragon = true; + public static boolean mobLimiterDisableGhast = true; + public static boolean mobLimiterDisableSlime = true; + public static boolean mobLimiterDisableGiant = true; public void loadMainConfig() { @@ -163,6 +170,10 @@ public class TotalFreedomMod extends JavaPlugin mp44Enabled = config.getBoolean("mp44_enabled", mp44Enabled); mobLimiterEnabled = config.getBoolean("mob_limiter_enabled", mobLimiterEnabled); mobLimiterMax = config.getInt("mob_limiter_max", mobLimiterMax); + mobLimiterDisableDragon = config.getBoolean("mob_limiter_disable_dragon", mobLimiterDisableDragon); + mobLimiterDisableGhast = config.getBoolean("mob_limiter_disable_ghast", mobLimiterDisableGhast); + mobLimiterDisableSlime = config.getBoolean("mob_limiter_disable_slime", mobLimiterDisableSlime); + mobLimiterDisableGiant = config.getBoolean("mob_limiter_disable_giant", mobLimiterDisableGiant); } public static List superadmins = new ArrayList(); @@ -180,7 +191,7 @@ public class TotalFreedomMod extends JavaPlugin { superadmins.add(user.toLowerCase().trim()); - List user_ips = config.getStringListFixed(user); + List user_ips = (List) config.getStringList(user); for (String ip : user_ips) { ip = ip.toLowerCase().trim(); diff --git a/src/plugin.yml b/src/plugin.yml index f82677e9..84d95793 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: TotalFreedomMod main: me.StevenLawson.TotalFreedomMod.TotalFreedomMod -version: 2.2 +version: 2.3 description: Plugin for the Total Freedom server. author: StevenLawson / Madgeek1450 commands: @@ -43,6 +43,9 @@ commands: fr: description: Superadmin command - Freeze all players (toggles on and off). usage: / + fuckoff: + description: Lawl + usage: / gadmin: description: Superadmin command - Use admin commands on someone by hash. Use mode 'list' to get a player's hash. Other modes are kick, nameban, ipban, ban, op, deop, ci usage: / [list | [ ] ] @@ -52,6 +55,9 @@ commands: gtfo: description: Superadmin command - Makes someone GTFO (deop and ip ban by username). usage: / + kicknoob: + description: Superadmin command - Kick all non-superadmins on server. + usage: / landmine: description: Set a landmine trap. usage: / @@ -64,7 +70,9 @@ commands: list: description: Lists the real names of all online players. usage: / - aliases: [listreal] + moblimiter: + description: Owner command - Controll mob rezzing parameters. + usage: / |dragon|giant|ghast|slime> mp: description: Purge all mobs in all worlds. usage: / @@ -110,12 +118,12 @@ commands: say: description: Broadcasts the given message as the console, includes sender name. usage: / - skylands: - description: Goto the skylands. + setspawnworld: + description: Superadmin Command - Set world spawnpoint. + usage: / + ender: + description: Goto the ender / "The End". usage: / -# stacker: -# description: Superadmin command - Stack people onto your head. For the lulz. -# usage: / [end] status: description: Show misc. server info. usage: / @@ -134,12 +142,9 @@ commands: tfipbanlist: description: Shows all banned IPs. Superadmins may optionally use 'purge' to clear the list. usage: / [purge] - tfsmite: - description: De-op, inventory clear, de-godmode, lightning, and kill your target. For naughty people only (or the entire server). - usage: / tossmob: description: Throw a mob in the direction you are facing when you left click with a stick. - usage: / [mobtype | off] [speed] + usage: / waterplace: description: Superadmin command - Enable/disable water placement. usage: /