Change toggleexpert command to change the world mode

This commit is contained in:
Chris 2020-05-19 13:20:45 +09:30
parent 35198647a1
commit 240b6b71b0

View file

@ -470,9 +470,9 @@ namespace TShockAPI
}); });
#endregion #endregion
#region World Commands #region World Commands
add(new Command(Permissions.toggleexpert, ToggleExpert, "expert", "expertmode") add(new Command(Permissions.toggleexpert, ChangeWorldMode, "worldmode", "gamemode")
{ {
HelpText = "Toggles expert mode." HelpText = "Changes the world mode."
}); });
add(new Command(Permissions.antibuild, ToggleAntiBuild, "antibuild") add(new Command(Permissions.antibuild, ToggleAntiBuild, "antibuild")
{ {
@ -2143,17 +2143,45 @@ namespace TShockAPI
} }
} }
private static void ToggleExpert(CommandArgs args) static Dictionary<string, int> _worldModes = new Dictionary<string, int>
{ {
const int NormalMode = 0; { "normal", 1 },
const int ExpertMode = 1; { "expert", 2 },
if (Main.GameMode != ExpertMode) { "master", 3 },
Main.GameMode = ExpertMode; { "creative", 4 },
else if (Main.GameMode == ExpertMode) };
Main.GameMode = NormalMode;
TSPlayer.All.SendData(PacketTypes.WorldInfo); private static void ChangeWorldMode(CommandArgs args)
args.Player.SendSuccessMessage("Expert mode is now {0}.", Main.expertMode ? "on" : "off"); {
if (args.Parameters.Count < 1)
{
args.Player.SendErrorMessage("Invalid syntax! Proper syntax: {0}worldmode <mode>", Specifier);
args.Player.SendErrorMessage("Valid mode: {0}", String.Join(", ", _worldModes.Keys));
return;
}
int mode;
if (int.TryParse(args.Parameters[0], out mode))
{
if (mode < 1 || mode > 4)
{
args.Player.SendErrorMessage("Invalid mode! Valid modes: {0}", String.Join(", ", _worldModes.Keys));
return;
}
}
else if (_worldModes.ContainsKey(args.Parameters[0].ToLowerInvariant()))
{
mode = _worldModes[args.Parameters[0].ToLowerInvariant()];
}
else
{
args.Player.SendErrorMessage("Invalid mode! Valid modes: {0}", String.Join(", ", _worldModes.Keys));
return;
}
Main.GameMode = mode;
args.Player.SendSuccessMessage("World mode set to {0}", _worldModes.Keys.ElementAt(mode - 1));
} }
private static void Hardmode(CommandArgs args) private static void Hardmode(CommandArgs args)