From 67a3483924c8af9e7998f8a64ca4d895b0b31f88 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sun, 28 Aug 2016 14:26:21 +1000 Subject: [PATCH] Sort of cleanup /ls to be nicer. --- Commands/Fun/CmdLavaSurvival.cs | 743 +++++++++++++++----------------- 1 file changed, 354 insertions(+), 389 deletions(-) diff --git a/Commands/Fun/CmdLavaSurvival.cs b/Commands/Fun/CmdLavaSurvival.cs index d50e4c3e3..f0efa874d 100644 --- a/Commands/Fun/CmdLavaSurvival.cs +++ b/Commands/Fun/CmdLavaSurvival.cs @@ -1,413 +1,378 @@ /* - Copyright 2011 MCForge - Created by Techjar (Jordan S.) - - Dual-licensed under the Educational Community License, Version 2.0 and - the GNU General Public License, Version 3 (the "Licenses"); you may - not use this file except in compliance with the Licenses. You may - obtain a copy of the Licenses at - - http://www.opensource.org/licenses/ecl2.php - http://www.gnu.org/licenses/gpl-3.0.html - - Unless required by applicable law or agreed to in writing, - software distributed under the Licenses are distributed on an "AS IS" - BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - or implied. See the Licenses for the specific language governing - permissions and limitations under the Licenses. -*/ + Copyright 2011 MCForge + Created by Techjar (Jordan S.) + + Dual-licensed under the Educational Community License, Version 2.0 and + the GNU General Public License, Version 3 (the "Licenses"); you may + not use this file except in compliance with the Licenses. You may + obtain a copy of the Licenses at + + http://www.opensource.org/licenses/ecl2.php + http://www.gnu.org/licenses/gpl-3.0.html + + Unless required by applicable law or agreed to in writing, + software distributed under the Licenses are distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the Licenses for the specific language governing + permissions and limitations under the Licenses. + */ using System; using MCGalaxy.Games; namespace MCGalaxy.Commands { - public sealed class CmdLavaSurvival : Command - { - public override string name { get { return "lavasurvival"; } } - public override string shortcut { get { return "ls"; } } - public override string type { get { return CommandTypes.Games; } } - public override bool museumUsable { get { return false; } } - public override LevelPermission defaultRank { get { return LevelPermission.Guest; } } - public CmdLavaSurvival() { } + public sealed class CmdLavaSurvival : Command + { + public override string name { get { return "lavasurvival"; } } + public override string shortcut { get { return "ls"; } } + public override string type { get { return CommandTypes.Games; } } + public override bool museumUsable { get { return false; } } + public override LevelPermission defaultRank { get { return LevelPermission.Guest; } } + public CmdLavaSurvival() { } - public override void Use(Player p, string message) - { - if (String.IsNullOrEmpty(message)) { Help(p); return; } - string[] s = message.ToLower().Split(' '); - if (p == null && (s[0] == "go" || s[0] == "setup")) { Player.Message(p, "The \"" + s[0] + "\" command can only be used in-game!"); return; } + public override void Use(Player p, string message) { + if (message == "") { Help(p); return; } + string[] args = message.ToLower().Split(' '); - if (s[0] == "go") - { - if (!Server.lava.active) { Player.Message(p, "There is no Lava Survival game right now."); return; } - PlayerActions.ChangeMap(p, Server.lava.map.name); - return; - } - if (s[0] == "info") - { - if (!Server.lava.active) { Player.Message(p, "There is no Lava Survival game right now."); return; } - if (!Server.lava.roundActive) { Player.Message(p, "The round of Lava Survival hasn't started yet."); return; } - Server.lava.AnnounceRoundInfo(p, p == null); - Server.lava.AnnounceTimeLeft(!Server.lava.flooded, true, p, p == null); - return; - } - if (p == null || p.Rank >= Server.lava.controlRank) - { - if (s[0] == "start") - { - switch (Server.lava.Start(s.Length > 1 ? s[1] : "")) - { - case 0: - Chat.MessageAll("Lava Survival has started! Join the fun with /ls go"); - return; - case 1: - Player.Message(p, "There is already an active Lava Survival game."); - return; - case 2: - Player.Message(p, "You must have at least 3 configured maps to play Lava Survival."); - return; - case 3: - Player.Message(p, "The specified map doesn't exist."); - return; - default: - Player.Message(p, "An unknown error occurred."); - return; - } - } - if (s[0] == "stop") - { - switch (Server.lava.Stop()) - { - case 0: - Chat.MessageAll("Lava Survival has ended! We hope you had fun!"); - return; - case 1: - Player.Message(p, "There isn't an active Lava Survival game."); - return; - default: - Player.Message(p, "An unknown error occurred."); - return; - } - } - if (s[0] == "end") - { - if (!Server.lava.active) { Player.Message(p, "There isn't an active Lava Survival game."); return; } - if (Server.lava.roundActive) Server.lava.EndRound(); - else if (Server.lava.voteActive) Server.lava.EndVote(); - else Player.Message(p, "There isn't an active round or vote to end."); - return; - } - } - if (p == null || p.Rank >= Server.lava.setupRank) - { - if (s[0] == "setup") - { - if (s.Length < 2) { SetupHelp(p); return; } - if (Server.lava.active) { Player.Message(p, "You cannot configure Lava Survival while a game is active."); return; } - if (s[1] == "map") - { - if (s.Length < 3) { SetupHelp(p, "map"); return; } - Level foundLevel = LevelInfo.FindMatches(p, s[2]); - if (foundLevel == null) { - return; - } - else - { - if (foundLevel == Server.mainLevel) { Player.Message(p, "You cannot use the main map for Lava Survival."); return; } - if (Server.lava.HasMap(foundLevel.name)) - { - Server.lava.RemoveMap(foundLevel.name); - foundLevel.motd = "ignore"; - foundLevel.overload = 1500; - foundLevel.unload = true; - foundLevel.loadOnGoto = true; - Level.SaveSettings(foundLevel); - Player.Message(p, "Map \"" + foundLevel.name + "\" has been removed."); - return; - } - else - { - Server.lava.AddMap(foundLevel.name); + switch (args[0]) { + case "go": HandleGo(p, args); return; + case "info": HandleInfo(p, args); return; + case "start": HandleStart(p, args); return; + case "stop": HandleStop(p, args); return; + case "end": HandleEnd(p, args); return; + case "setup" HandleSetup(p, args); return; + } + Help(p); + } + + void HandleGo(Player p, string[] args) { + if (p == null) { Player.Message(p, "/{0} go can only be used in-game.", name)); return; } + if (!Server.lava.active) { Player.Message(p, "There is no Lava Survival game right now."); return; } + PlayerActions.ChangeMap(p, Server.lava.map.name); + } + + void HandleInfo(Player p, string[] args) { + if (!Server.lava.active) { Player.Message(p, "There is no Lava Survival game right now."); return; } + if (!Server.lava.roundActive) { Player.Message(p, "The round of Lava Survival hasn't started yet."); return; } + Server.lava.AnnounceRoundInfo(p, p == null); + Server.lava.AnnounceTimeLeft(!Server.lava.flooded, true, p, p == null); + } + + void HandleStart(Player p, string[] args) { + if (p != null && p.Rank < Server.lava.controlRank) { + Formatter.MessageNeedMinPerm(p, "start lava survival", Server.lava.controlRank); return; + } + + string map = args.Length > 1 ? args[1] : ""; + switch (Server.lava.Start(map)) { + case 0: Chat.MessageAll("Lava Survival has started! Join the fun with /ls go"); return; + case 1: Player.Message(p, "There is already an active Lava Survival game."); return; + case 2: Player.Message(p, "You must have at least 3 configured maps to play Lava Survival."); return; + case 3: Player.Message(p, "The specified map doesn't exist."); return; + default: Player.Message(p, "An unknown error occurred."); return; + } + } + + void HandleStop(Player p, string[] args) { + if (p != null && p.Rank < Server.lava.controlRank) { + Formatter.MessageNeedMinPerm(p, "stop lava survival", Server.lava.controlRank); return; + } + + switch (Server.lava.Stop()) { + case 0: Chat.MessageAll("Lava Survival has ended! We hope you had fun!"); return; + case 1: Player.Message(p, "There isn't an active Lava Survival game."); return; + default: Player.Message(p, "An unknown error occurred."); return; + } + } + + void HandleEnd(Player p, string[] args) { + if (p != null && p.Rank < Server.lava.controlRank) { + Formatter.MessageNeedMinPerm(p, "end a round", Server.lava.controlRank); return; + } + + if (!Server.lava.active) { Player.Message(p, "There isn't an active Lava Survival game."); return; } + if (Server.lava.roundActive) Server.lava.EndRound(); + else if (Server.lava.voteActive) Server.lava.EndVote(); + else Player.Message(p, "There isn't an active round or vote to end."); + } - LavaSurvival.MapSettings settings = Server.lava.LoadMapSettings(foundLevel.name); - settings.blockFlood = new Vec3U16((ushort)(foundLevel.Width / 2), (ushort)(foundLevel.Height - 1), (ushort)(foundLevel.Length / 2)); - settings.blockLayer = new Vec3U16(0, (ushort)(foundLevel.Height / 2), 0); - ushort x = (ushort)(foundLevel.Width / 2), y = (ushort)(foundLevel.Height / 2), z = (ushort)(foundLevel.Length / 2); - settings.safeZone = new Vec3U16[] { new Vec3U16((ushort)(x - 3), y, (ushort)(z - 3)), new Vec3U16((ushort)(x + 3), (ushort)(y + 4), (ushort)(z + 3)) }; - Server.lava.SaveMapSettings(settings); + void HandleSetup(Player p, string[] args) { + if (p != null && p.Rank < Server.lava.setupRank) { + Formatter.MessageNeedMinPerm(p, "setup lava survival", Server.lava.setupRank); return; + } + if (p == null) { Player.Message(p, "/{0} setup can only be used in-game.", name)); return; } + if (args.Length < 2) { SetupHelp(p); return; } + if (Server.lava.active) { Player.Message(p, "You cannot configure Lava Survival while a game is active."); return; } + + switch (args[1]) { + case "map": HandleSetupMap(p, args); return; + case "block": HandleSetupBlock(p, args); return; + case "safe": HandleSafeZone(p, args); return; + case "safezone": HandleSafeZone(p, args); return; + case "settings": HandleSettings(p, args); return; + case "mapsettings" HandleMapSettings(p, args); return; + } + SetupHelp(p); + } + + void HandleSetupMap(Player p, string[] args) { + if (args.Length < 3) { SetupHelp(p, "map"); return; } + Level lvl = LevelInfo.FindMatches(p, args[2]); + if (lvl == null) return; + if (lvl == Server.mainLevel) { Player.Message(p, "You cannot use the main map for Lava Survival."); return; } + + if (Server.lava.HasMap(lvl.name)) { + Server.lava.RemoveMap(lvl.name); + lvl.motd = "ignore"; + lvl.overload = 1500; + lvl.unload = true; + lvl.loadOnGoto = true; + Player.Message(p, "Map \"" + lvl.name + "\" has been removed."); + } else { + Server.lava.AddMap(lvl.name); - foundLevel.motd = "Lava Survival: " + foundLevel.name.Capitalize(); - foundLevel.overload = 1000000; - foundLevel.unload = false; - foundLevel.loadOnGoto = false; - Level.SaveSettings(foundLevel); - Player.Message(p, "Map \"" + foundLevel.name + "\" has been added."); - return; - } - } - } - if (s[1] == "block") - { - if (!Server.lava.HasMap(p.level.name)) { Player.Message(p, "Add the map before configuring it."); return; } - if (s.Length < 3) { SetupHelp(p, "block"); return; } + LavaSurvival.MapSettings settings = Server.lava.LoadMapSettings(lvl.name); + settings.blockFlood = new Vec3U16((ushort)(lvl.Width / 2), (ushort)(lvl.Height - 1), (ushort)(lvl.Length / 2)); + settings.blockLayer = new Vec3U16(0, (ushort)(lvl.Height / 2), 0); + ushort x = (ushort)(lvl.Width / 2), y = (ushort)(lvl.Height / 2), z = (ushort)(lvl.Length / 2); + settings.safeZone = new Vec3U16[] { new Vec3U16((ushort)(x - 3), y, (ushort)(z - 3)), new Vec3U16((ushort)(x + 3), (ushort)(y + 4), (ushort)(z + 3)) }; + Server.lava.SaveMapSettings(settings); - if (s[2] == "flood") - { - Player.Message(p, "Place or destroy the block you want to be the total flood block spawn point."); - CatchPos cpos; cpos.mode = 0; - cpos.x = 0; cpos.y = 0; cpos.z = 0; - p.blockchangeObject = cpos; - p.ClearBlockchange(); - p.Blockchange += PlacedMark1; - return; - } - if (s[2] == "layer") - { - Player.Message(p, "Place or destroy the block you want to be the layer flood base spawn point."); - CatchPos cpos; cpos.mode = 1; - cpos.x = 0; cpos.y = 0; cpos.z = 0; - p.blockchangeObject = cpos; - p.ClearBlockchange(); - p.Blockchange += PlacedMark1; - return; - } + lvl.motd = "Lava Survival: " + lvl.name.Capitalize(); + lvl.overload = 1000000; + lvl.unload = false; + lvl.loadOnGoto = false; + Player.Message(p, "Map \"" + lvl.name + "\" has been added."); + } + Level.SaveSettings(lvl); + } + + void HandleSetupBlock(Player p, string[] args) { + if (!Server.lava.HasMap(p.level.name)) { Player.Message(p, "Add the map before configuring it."); return; } + if (args.Length < 3) { SetupHelp(p, "block"); return; } + CatchPos cpos = default(CatchPos); - SetupHelp(p, "block"); - return; - } - if (s[1] == "safezone" || s[1] == "safe") - { - Player.Message(p, "Place two blocks to determine the edges."); - CatchPos cpos; cpos.mode = 2; - cpos.x = 0; cpos.y = 0; cpos.z = 0; - p.blockchangeObject = cpos; - p.ClearBlockchange(); - p.Blockchange += PlacedMark1; - return; - } - if (s[1] == "settings") - { - if (s.Length < 3) - { - Player.Message(p, "Maps: &b" + Server.lava.Maps.Join(", ")); - Player.Message(p, "Setup rank: " + Group.findPerm(Server.lava.setupRank).ColoredName); - Player.Message(p, "Control rank: " + Group.findPerm(Server.lava.controlRank).ColoredName); - Player.Message(p, "Start on server startup: " + (Server.lava.startOnStartup ? "&aON" : "&cOFF")); - Player.Message(p, "Send AFK to main: " + (Server.lava.sendAfkMain ? "&aON" : "&cOFF")); - Player.Message(p, "Vote count: &b" + Server.lava.voteCount); - Player.Message(p, "Vote time: &b" + Server.lava.voteTime + " minute" + (Server.lava.voteTime == 1 ? "" : "s")); - return; - } + if (args[2] == "flood") { + Player.Message(p, "Place or destroy the block you want to be the total flood block spawn point."); + cpos.mode = 0; + } else if (args[2] == "layer") { + Player.Message(p, "Place or destroy the block you want to be the layer flood base spawn point."); + cpos.mode = 1; + } else { + SetupHelp(p, "block"); return; + } + + p.blockchangeObject = cpos; + p.ClearBlockchange(); + p.Blockchange += PlacedMark1; + } + + void HandleSetupSafeZone(Player p, string[] args) { + Player.Message(p, "Place two blocks to determine the edges."); + CatchPos cpos = default(CatchPos); + cpos.mode = 2; + p.blockchangeObject = cpos; + p.ClearBlockchange(); + p.Blockchange += PlacedMark1; + } + + void HandleSetupSettings(Player p, string[] args) { + if (args.Length < 3) { + Player.Message(p, "Maps: &b" + Server.lava.Maps.Join(", ")); + Player.Message(p, "Setup rank: " + Group.findPerm(Server.lava.setupRank).ColoredName); + Player.Message(p, "Control rank: " + Group.findPerm(Server.lava.controlRank).ColoredName); + Player.Message(p, "Start on server startup: " + (Server.lava.startOnStartup ? "&aON" : "&cOFF")); + Player.Message(p, "Send AFK to main: " + (Server.lava.sendAfkMain ? "&aON" : "&cOFF")); + Player.Message(p, "Vote count: &b" + Server.lava.voteCount); + Player.Message(p, "Vote time: &b" + Server.lava.voteTime + " minute" + (Server.lava.voteTime == 1 ? "" : "s")); + return; + } - try - { - switch (s[2]) - { - case "sendafkmain": - Server.lava.sendAfkMain = !Server.lava.sendAfkMain; - Player.Message(p, "Send AFK to main: " + (Server.lava.sendAfkMain ? "&aON" : "&cOFF")); - break; - case "votecount": - Server.lava.voteCount = (byte)Utils.Clamp(decimal.Parse(s[3]), 2, 10); - Player.Message(p, "Vote count: &b" + Server.lava.voteCount); - break; - case "votetime": - Server.lava.voteTime = double.Parse(s[3]); - Player.Message(p, "Vote time: &b" + Server.lava.voteTime + "minute" + (Server.lava.voteTime == 1 ? "" : "s")); - break; - default: - SetupHelp(p, "settings"); - return; - } - Server.lava.SaveSettings(); - return; - } - catch { Player.Message(p, "INVALID INPUT"); return; } - } - if (s[1] == "mapsettings") - { - if (!Server.lava.HasMap(p.level.name)) { Player.Message(p, "Add the map before configuring it."); return; } - LavaSurvival.MapSettings settings = Server.lava.LoadMapSettings(p.level.name); - if (s.Length < 4) - { - Player.Message(p, "Fast lava chance: &b" + settings.fast + "%"); - Player.Message(p, "Killer lava/water chance: &b" + settings.killer + "%"); - Player.Message(p, "Destroy blocks chance: &b" + settings.destroy + "%"); - Player.Message(p, "Water flood chance: &b" + settings.water + "%"); - Player.Message(p, "Layer flood chance: &b" + settings.layer + "%"); - Player.Message(p, "Layer height: &b" + settings.layerHeight + " block" + (settings.layerHeight == 1 ? "" : "s")); - Player.Message(p, "Layer count: &b" + settings.layerCount); - Player.Message(p, "Layer time: &b" + settings.layerInterval + " minute" + (settings.layerInterval == 1 ? "" : "s")); - Player.Message(p, "Round time: &b" + settings.roundTime + " minute" + (settings.roundTime == 1 ? "" : "s")); - Player.Message(p, "Flood time: &b" + settings.floodTime + " minute" + (settings.floodTime == 1 ? "" : "s")); - Player.Message(p, "Flood position: &b" + settings.blockFlood.ToString(", ")); - Player.Message(p, "Layer position: &b" + settings.blockLayer.ToString(", ")); - Player.Message(p, "Safe zone: &b({0}) ({1})", settings.safeZone[0].ToString(", "), settings.safeZone[1].ToString(", ")); - return; - } + try { + switch (args[2]) { + case "sendafkmain": + Server.lava.sendAfkMain = !Server.lava.sendAfkMain; + Player.Message(p, "Send AFK to main: " + (Server.lava.sendAfkMain ? "&aON" : "&cOFF")); + break; + case "votecount": + Server.lava.voteCount = (byte)Utils.Clamp(decimal.Parse(args[3]), 2, 10); + Player.Message(p, "Vote count: &b" + Server.lava.voteCount); + break; + case "votetime": + Server.lava.voteTime = double.Parse(args[3]); + Player.Message(p, "Vote time: &b" + Server.lava.voteTime + "minute" + (Server.lava.voteTime == 1 ? "" : "s")); + break; + default: + SetupHelp(p, "settings"); return; + } + } catch { Player.Message(p, "INVALID INPUT"); return; } + Server.lava.SaveSettings(); + } + + void HandleSetupMapSettings(Player p, string[] args) { + if (!Server.lava.HasMap(p.level.name)) { Player.Message(p, "Add the map before configuring it."); return; } + LavaSurvival.MapSettings settings = Server.lava.LoadMapSettings(p.level.name); + if (args.Length < 4) { + Player.Message(p, "Fast lava chance: &b" + settings.fast + "%"); + Player.Message(p, "Killer lava/water chance: &b" + settings.killer + "%"); + Player.Message(p, "Destroy blocks chance: &b" + settings.destroy + "%"); + Player.Message(p, "Water flood chance: &b" + settings.water + "%"); + Player.Message(p, "Layer flood chance: &b" + settings.layer + "%"); + Player.Message(p, "Layer height: &b" + settings.layerHeight + " block" + (settings.layerHeight == 1 ? "" : "s")); + Player.Message(p, "Layer count: &b" + settings.layerCount); + Player.Message(p, "Layer time: &b" + settings.layerInterval + " minute" + (settings.layerInterval == 1 ? "" : "s")); + Player.Message(p, "Round time: &b" + settings.roundTime + " minute" + (settings.roundTime == 1 ? "" : "s")); + Player.Message(p, "Flood time: &b" + settings.floodTime + " minute" + (settings.floodTime == 1 ? "" : "s")); + Player.Message(p, "Flood position: &b" + settings.blockFlood.ToString(", ")); + Player.Message(p, "Layer position: &b" + settings.blockLayer.ToString(", ")); + Player.Message(p, "Safe zone: &b({0}) ({1})", settings.safeZone[0].ToString(", "), settings.safeZone[1].ToString(", ")); + return; + } - try - { - switch (s[2]) - { - case "fast": - settings.fast = (byte)Utils.Clamp(decimal.Parse(s[3]), 0, 100); - Player.Message(p, "Fast lava chance: &b" + settings.fast + "%"); - break; - case "killer": - settings.killer = (byte)Utils.Clamp(decimal.Parse(s[3]), 0, 100); - Player.Message(p, "Killer lava/water chance: &b" + settings.killer + "%"); - break; - case "destroy": - settings.destroy = (byte)Utils.Clamp(decimal.Parse(s[3]), 0, 100); - Player.Message(p, "Destroy blocks chance: &b" + settings.destroy + "%"); - break; - case "water": - settings.water = (byte)Utils.Clamp(decimal.Parse(s[3]), 0, 100); - Player.Message(p, "Water flood chance: &b" + settings.water + "%"); - break; - case "layer": - settings.layer = (byte)Utils.Clamp(decimal.Parse(s[3]), 0, 100); - Player.Message(p, "Layer flood chance: &b" + settings.layer + "%"); - break; - case "layerheight": - settings.layerHeight = int.Parse(s[3]); - Player.Message(p, "Layer height: &b" + settings.layerHeight + " block" + (settings.layerHeight == 1 ? "" : "s")); - break; - case "layercount": - settings.layerCount = int.Parse(s[3]); - Player.Message(p, "Layer count: &b" + settings.layerCount); - break; - case "layertime": - settings.layerInterval = double.Parse(s[3]); - Player.Message(p, "Layer time: &b" + settings.layerInterval + " minute" + (settings.layerInterval == 1 ? "" : "s")); - break; - case "roundtime": - settings.roundTime = double.Parse(s[3]); - Player.Message(p, "Round time: &b" + settings.roundTime + " minute" + (settings.roundTime == 1 ? "" : "s")); - break; - case "floodtime": - settings.floodTime = double.Parse(s[3]); - Player.Message(p, "Flood time: &b" + settings.floodTime + " minute" + (settings.floodTime == 1 ? "" : "s")); - break; - default: - SetupHelp(p, "mapsettings"); - return; - } - } - catch { Player.Message(p, "INVALID INPUT"); return; } - Server.lava.SaveMapSettings(settings); - return; - } - } - } + try { + switch (args[2]) { + case "fast": + settings.fast = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100); + Player.Message(p, "Fast lava chance: &b" + settings.fast + "%"); + break; + case "killer": + settings.killer = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100); + Player.Message(p, "Killer lava/water chance: &b" + settings.killer + "%"); + break; + case "destroy": + settings.destroy = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100); + Player.Message(p, "Destroy blocks chance: &b" + settings.destroy + "%"); + break; + case "water": + settings.water = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100); + Player.Message(p, "Water flood chance: &b" + settings.water + "%"); + break; + case "layer": + settings.layer = (byte)Utils.Clamp(decimal.Parse(args[3]), 0, 100); + Player.Message(p, "Layer flood chance: &b" + settings.layer + "%"); + break; + case "layerheight": + settings.layerHeight = int.Parse(args[3]); + Player.Message(p, "Layer height: &b" + settings.layerHeight + " block" + (settings.layerHeight == 1 ? "" : "s")); + break; + case "layercount": + settings.layerCount = int.Parse(args[3]); + Player.Message(p, "Layer count: &b" + settings.layerCount); + break; + case "layertime": + settings.layerInterval = double.Parse(args[3]); + Player.Message(p, "Layer time: &b" + settings.layerInterval + " minute" + (settings.layerInterval == 1 ? "" : "s")); + break; + case "roundtime": + settings.roundTime = double.Parse(args[3]); + Player.Message(p, "Round time: &b" + settings.roundTime + " minute" + (settings.roundTime == 1 ? "" : "s")); + break; + case "floodtime": + settings.floodTime = double.Parse(args[3]); + Player.Message(p, "Flood time: &b" + settings.floodTime + " minute" + (settings.floodTime == 1 ? "" : "s")); + break; + default: + SetupHelp(p, "mapsettings"); return; + } + } catch { Player.Message(p, "INVALID INPUT"); return; } + Server.lava.SaveMapSettings(settings); + } + + public override void Help(Player p) { + Player.Message(p, "/lavasurvival - Main command for Lava Survival."); + Player.Message(p, "The following params are available:"); + Player.Message(p, "go - Join the fun!"); + Player.Message(p, "info - View the current round info and time."); + + if (p == null || p.Rank >= Server.lava.controlRank) { + Player.Message(p, "start [map] - Start the Lava Survival game, optionally on the specified map."); + Player.Message(p, "stop - Stop the current Lava Survival game."); + Player.Message(p, "end - End the current round or vote."); + } + if (p == null || p.Rank >= Server.lava.setupRank) { + Player.Message(p, "setup - Setup lava survival, use it for more info."); + } + } - Help(p); - } - public override void Help(Player p) - { - Player.Message(p, "/lavasurvival - Main command for Lava Survival."); - Player.Message(p, "The following params are available:"); - Player.Message(p, "go - Join the fun!"); - Player.Message(p, "info - View the current round info and time."); - if (p == null || p.Rank >= Server.lava.controlRank) - { - Player.Message(p, "start [map] - Start the Lava Survival game, optionally on the specified map."); - Player.Message(p, "stop - Stop the current Lava Survival game."); - Player.Message(p, "end - End the current round or vote."); - } - if (p == null || p.Rank >= Server.lava.setupRank) - { - Player.Message(p, "setup - Setup lava survival, use it for more info."); - } - } + public void SetupHelp(Player p, string mode = "") { + switch (mode) { + case "map": + Player.Message(p, "Add or remove maps in Lava Survival."); + Player.Message(p, " - Adds or removes ."); + break; + case "block": + Player.Message(p, "View or set the block spawn positions."); + Player.Message(p, "flood - Set the position for the total flood block."); + Player.Message(p, "layer - Set the position for the layer flood base."); + break; + case "settings": + Player.Message(p, "View or change the settings for Lava Survival."); + Player.Message(p, "sendafkmain - Toggle sending AFK users to the main map when the map changes."); + Player.Message(p, "votecount <2-10> - Set how many maps will be in the next map vote."); + Player.Message(p, "votetime