From 0f1fa3612a0763b2f551601cde8ec9c7c11963a5 Mon Sep 17 00:00:00 2001 From: Steven Lawson Date: Sat, 15 Sep 2012 17:00:44 -0400 Subject: [PATCH] Added adminmode. Made the /flatlands command check to see if flatlands is enabled. Made qop actually op :D Fixed bug in message truncation --- src/config.yml | 3 ++ .../Commands/Command_adminmode.java | 43 +++++++++++++++++++ .../Commands/Command_flatlands.java | 11 ++++- .../TotalFreedomMod/Commands/Command_qop.java | 4 +- .../Listener/TFM_PlayerListener.java | 28 ++++++++++-- .../TotalFreedomMod/TotalFreedomMod.java | 2 + src/plugin.yml | 3 ++ 7 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_adminmode.java diff --git a/src/config.yml b/src/config.yml index 3ed1b715..194dd7a6 100644 --- a/src/config.yml +++ b/src/config.yml @@ -50,3 +50,6 @@ mob_limiter_disable_giant: true generate_flatlands: true # Flatlands generation parameters, uses CleanroomGenerator syntax - http://dev.bukkit.org/server-mods/cleanroomgenerator/ flatlands_generation_params: 16,stone,32,dirt,1,grass + +# Admin-Only Mode +admin_only_mode: false diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_adminmode.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_adminmode.java new file mode 100644 index 00000000..f0e57be5 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_adminmode.java @@ -0,0 +1,43 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +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; + +public class Command_adminmode 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[0].equalsIgnoreCase("off")) + { + TotalFreedomMod.adminOnlyMode = false; + TFM_Util.bcastMsg("Server is now open to all players.", ChatColor.RED); + return true; + } + else if (args[0].equalsIgnoreCase("on")) + { + TotalFreedomMod.adminOnlyMode = true; + TFM_Util.bcastMsg("Server is now closed to non-superadmins.", ChatColor.RED); + for (Player p : server.getOnlinePlayers()) + { + if (TFM_Util.isUserSuperadmin(p)) + { + p.kickPlayer("Server is now closed to non-superadmins."); + } + } + return true; + } + + return false; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_flatlands.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_flatlands.java index 3698b2aa..a9935457 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_flatlands.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_flatlands.java @@ -1,6 +1,8 @@ package me.StevenLawson.TotalFreedomMod.Commands; 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; @@ -10,7 +12,14 @@ public class Command_flatlands extends TFM_Command @Override public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - TFM_Util.gotoWorld(sender, "flatlands"); + if (TotalFreedomMod.generateFlatlands) + { + TFM_Util.gotoWorld(sender, "flatlands"); + } + else + { + sender.sendMessage(ChatColor.GRAY + "Flatlands is currently disabled."); + } return true; } } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qop.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qop.java index 146095fe..8f23d080 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qop.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qop.java @@ -24,7 +24,7 @@ public class Command_qop extends TFM_Command matched_player = true; TFM_Util.adminAction(sender.getName(), "Opping " + p.getName(), false); - p.setOp(false); + p.setOp(true); p.sendMessage(TotalFreedomMod.YOU_ARE_OP); } if (!matched_player) @@ -34,7 +34,7 @@ public class Command_qop extends TFM_Command if (args[0].toLowerCase().startsWith(p.getDisplayName().toLowerCase())) { TFM_Util.adminAction(sender.getName(), "Opping " + p.getName(), false); - p.setOp(false); + p.setOp(true); p.sendMessage(TotalFreedomMod.YOU_ARE_OP); return true; diff --git a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java index 1b0ac642..a2a29f6c 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java +++ b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java @@ -329,7 +329,7 @@ public class TFM_PlayerListener implements Listener { if (!TFM_Util.isUserSuperadmin(p)) { - p.sendMessage(ChatColor.RED + "You're muted, STFU!"); + p.sendMessage(ChatColor.RED + "You are currently muted."); event.setCancelled(true); return; } @@ -341,7 +341,11 @@ public class TFM_PlayerListener implements Listener } // Truncate messages that are too long. - event.setMessage(event.getMessage().substring(0, 85)); + String message = event.getMessage(); + if (message.length() > 85) + { + event.setMessage(message.substring(0, 85)); + } event.setMessage(ChatColor.stripColor(event.getMessage())); } @@ -488,7 +492,7 @@ public class TFM_PlayerListener implements Listener { try { - Player p = event.getPlayer(); + final Player p = event.getPlayer(); TFM_UserList.getInstance(plugin).addUser(p); @@ -509,6 +513,18 @@ public class TFM_PlayerListener implements Listener p.setOp(true); } } + + if (TotalFreedomMod.adminOnlyMode) + { + plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() + { + @Override + public void run() + { + p.sendMessage(ChatColor.RED + "Server is currently closed to non-superadmins."); + } + }, 60L); + } } catch (Throwable ex) { @@ -652,6 +668,12 @@ public class TFM_PlayerListener implements Listener return; } + if (TotalFreedomMod.adminOnlyMode) + { + event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Server is currently closed to non-superadmins."); + return; + } + for (Player test_player : server.getOnlinePlayers()) { if (test_player.getName().equalsIgnoreCase(player_name)) diff --git a/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java b/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java index ee61115c..5b97ae9d 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java +++ b/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java @@ -167,6 +167,7 @@ public class TotalFreedomMod extends JavaPlugin public static boolean generateFlatlands = true; public static String flatlandsGenerationParams = "16,stone,32,dirt,1,grass"; public static boolean allowFliudSpread = false; + public static boolean adminOnlyMode = false; public void loadMainConfig() { @@ -201,6 +202,7 @@ public class TotalFreedomMod extends JavaPlugin generateFlatlands = config.getBoolean("generate_flatlands", generateFlatlands); flatlandsGenerationParams = config.getString("flatlands_generation_params", flatlandsGenerationParams); allowFliudSpread = config.getBoolean("allow_fluid_spread", allowFliudSpread); + adminOnlyMode = config.getBoolean("admin_only_mode", adminOnlyMode); } public static List superadmins = new ArrayList(); diff --git a/src/plugin.yml b/src/plugin.yml index 23891132..a5df26e4 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -4,6 +4,9 @@ version: 2.7 description: Plugin for the Total Freedom server. authors: [StevenLawson / Madgeek1450, JeromSar / DarthSalamon] commands: + adminmode: + description: Console-only command - Close server to non-superadmins. + usage: / [on | off] cage: description: Superadmin command - Place a cage around someone. usage: / [off | outermaterial] [water | lava]