public void Execute(IRocketPlayer caller, string[] command)
        {
            if (command.Length != 1 && command.Length != 2)
            {
                UnturnedChat.Say(caller, $"Use /{Name} {Syntax}", Color.yellow);
                return;
            }

            var paycheckIndex = 0;
            var zones         = PaycheckPlugin.Config.PaycheckZones;

            if (command.Length == 2)
            {
                var paycheck = PaycheckHelper.FindBestMatchIndex(command[0]);
                if (paycheck == null)
                {
                    UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_paycheck_not_found", command[0]), Color.yellow);
                    return;
                }
                paycheckIndex = paycheck.Value;
                zones         = PaycheckPlugin.Config.Paychecks[paycheckIndex].PaycheckZones;
            }

            if (zones.Count == 0)
            {
                UnturnedChat.Say(caller,
                                 command.Length == 0
                                                ? PaycheckPlugin.Instance.Translate("command_default_no_zones")
                                                : PaycheckPlugin.Instance.Translate("command_paycheck_no_zones", PaycheckPlugin.Config.Paychecks[paycheckIndex].Name), Color.yellow);
                return;
            }

            if (!int.TryParse(command[command.Length - 1], out var index))
            {
                var bestMatchIndex = ZoneHelper.FindBestMatchIndex(zones, command[command.Length - 1]);
                if (bestMatchIndex != null)
                {
                    index = bestMatchIndex.Value;
                }
                else
                {
                    UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_delete_zone_no_parse"), Color.yellow);
                    return;
                }
            }
            else
            {
                index--;
                if (index >= zones.Count || index < 0)
                {
                    UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_invalid_out_of_bounds", index + 1, 1, zones.Count), Color.yellow);
                    return;
                }
            }

            // ReSharper disable once ConvertIfStatementToSwitchStatement
            if (command.Length == 1)
            {
                UnturnedChat.Say(caller,
                                 PaycheckPlugin.Instance.Translate("command_removed_zone_default",
                                                                   ZoneHelper.GetLocationString(PaycheckPlugin.Config.PaycheckZones[index])),
                                 Color.magenta);
                PaycheckPlugin.Config.PaycheckZones.RemoveAt(index);
            }
            else if (command.Length == 2)
            {
                UnturnedChat.Say(caller,
                                 PaycheckPlugin.Instance.Translate("command_removed_zone_paycheck",
                                                                   PaycheckPlugin.Config.Paychecks[paycheckIndex].Name,
                                                                   ZoneHelper.GetLocationString(PaycheckPlugin.Config.Paychecks[paycheckIndex].PaycheckZones[index])),
                                 Color.magenta);
                PaycheckPlugin.Config.Paychecks[paycheckIndex].PaycheckZones.RemoveAt(index);
            }
            PaycheckPlugin.Config.IsDirty = true;
        }
        public void Execute(IRocketPlayer caller, string[] command)
        {
            List <PaycheckZone> zones;
            Paycheck            paycheck = null;

            if (command.Length > 0)
            {
                paycheck = PaycheckHelper.FindBestMatch(command[0]);
                if (paycheck == null)
                {
                    UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_paycheck_not_found", command[0]), Color.yellow);
                    return;
                }
                zones = paycheck.PaycheckZones;
            }
            else
            {
                zones = PaycheckPlugin.Config.PaycheckZones;
            }

            if (zones.Count == 0)
            {
                UnturnedChat.Say(caller,
                                 command.Length == 0
                                                ? PaycheckPlugin.Instance.Translate("command_default_no_zones")
                                                : PaycheckPlugin.Instance.Translate("command_paycheck_no_zones", paycheck?.Name), Color.yellow);
                return;
            }

            var zonesString = new StringBuilder();

            for (var i = 0; i < zones.Count; i++)
            {
                zonesString.AppendFormat(" [{0}] - {1}x {2} {3}m,", i + 1, zones[i].Multiplier, ZoneHelper.GetLocationString(zones[i]), zones[i].Radius);
            }
            zonesString.Remove(zonesString.Length - 1, 1);
            UnturnedChat.Say(caller,
                             command.Length == 0
                                        ? PaycheckPlugin.Instance.Translate("command_list_default_zones", zonesString.ToString())
                                        : PaycheckPlugin.Instance.Translate("command_list_paycheck_zones", paycheck?.Name, zonesString.ToString()), Color.green);
        }
        public void Execute(IRocketPlayer caller, string[] command)
        {
            if (command.Length != 2 && command.Length != 3 && command.Length != 4)
            {
                UnturnedChat.Say(caller, $"Use /{Name} {Syntax}", Color.yellow);
                return;
            }

            if (!float.TryParse(command[command.Length - 1], out var multiplier))
            {
                UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_no_parse_multiplier", command[command.Length - 1]), Color.yellow);
                return;
            }

            if (!float.TryParse(command[command.Length - 2], out var radius))
            {
                UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_no_parse_radius", command[command.Length - 2]), Color.yellow);
                return;
            }

            // ReSharper disable once ConvertIfStatementToSwitchStatement
            if (command.Length == 2)
            {
                if (caller.Id == "Console")
                {
                    UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_no_console"), Color.yellow);
                    return;
                }
                var zone = new PaycheckZone(Vector3Helper.Round(((UnturnedPlayer)caller).Position), radius, multiplier);
                PaycheckPlugin.Config.PaycheckZones.Add(zone);
                UnturnedChat.Say(caller,
                                 PaycheckPlugin.Instance.Translate("command_created_zone_default",
                                                                   ZoneHelper.GetLocationString(zone),
                                                                   zone.Multiplier + "x",
                                                                   zone.Radius),
                                 Color.cyan);
            }
            else if (command.Length == 3)
            {
                var paycheckIndex = PaycheckHelper.FindBestMatchIndex(command[0]);
                if (paycheckIndex != null)
                {
                    if (caller.Id == "Console")
                    {
                        UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_no_console"), Color.yellow);
                        return;
                    }
                    var zone = new PaycheckZone(Vector3Helper.Round(((UnturnedPlayer)caller).Position), radius, multiplier);
                    PaycheckPlugin.Config.Paychecks[paycheckIndex.Value].PaycheckZones.Add(zone);
                    UnturnedChat.Say(caller,
                                     PaycheckPlugin.Instance.Translate("command_created_zone_paycheck",
                                                                       PaycheckPlugin.Config.Paychecks[paycheckIndex.Value].Name,
                                                                       ZoneHelper.GetLocationString(zone),
                                                                       zone.Multiplier + "x",
                                                                       zone.Radius),
                                     Color.cyan);
                }
                else
                {
                    var pointResult = Vector3Helper.Parse(command[0]);
                    if (pointResult != null)
                    {
                        var zone = new PaycheckZone(Vector3Helper.Round(pointResult.Value), radius, multiplier);
                        PaycheckPlugin.Config.PaycheckZones.Add(zone);
                        UnturnedChat.Say(caller,
                                         PaycheckPlugin.Instance.Translate("command_created_zone_default",
                                                                           ZoneHelper.GetLocationString(zone),
                                                                           zone.Multiplier + "x",
                                                                           zone.Radius),
                                         Color.cyan);
                    }
                    else if (NodeHelper.Exists(command[0]))
                    {
                        var zone = new PaycheckZone(command[0], radius, multiplier);
                        PaycheckPlugin.Config.PaycheckZones.Add(zone);
                        UnturnedChat.Say(caller,
                                         PaycheckPlugin.Instance.Translate("command_created_zone_default",
                                                                           ZoneHelper.GetLocationString(zone),
                                                                           zone.Multiplier + "x",
                                                                           zone.Radius),
                                         Color.cyan);
                    }
                    else
                    {
                        UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_no_parse_paycheck_or_location", command[0]), Color.yellow);
                        return;
                    }
                }
            }
            else if (command.Length == 4)
            {
                var paycheckIndex = PaycheckHelper.FindBestMatchIndex(command[0]);
                if (paycheckIndex == null)
                {
                    UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_created_zone_paycheck", command[0]), Color.yellow);
                    return;
                }
                var pointResult = Vector3Helper.Parse(command[1]);
                if (pointResult != null)
                {
                    var zone = new PaycheckZone(Vector3Helper.Round(pointResult.Value), radius, multiplier);
                    PaycheckPlugin.Config.Paychecks[paycheckIndex.Value].PaycheckZones.Add(zone);
                    UnturnedChat.Say(caller,
                                     PaycheckPlugin.Instance.Translate("command_created_zone_paycheck",
                                                                       PaycheckPlugin.Config.Paychecks[paycheckIndex.Value].Name,
                                                                       ZoneHelper.GetLocationString(zone),
                                                                       zone.Multiplier + "x",
                                                                       zone.Radius),
                                     Color.cyan);
                }
                else if (NodeHelper.Exists(command[1]))
                {
                    var zone = new PaycheckZone(command[1], radius, multiplier);
                    PaycheckPlugin.Config.Paychecks[paycheckIndex.Value].PaycheckZones.Add(zone);
                    UnturnedChat.Say(caller,
                                     PaycheckPlugin.Instance.Translate("command_created_zone_paycheck",
                                                                       PaycheckPlugin.Config.Paychecks[paycheckIndex.Value].Name,
                                                                       ZoneHelper.GetLocationString(zone),
                                                                       zone.Multiplier + "x",
                                                                       zone.Radius),
                                     Color.cyan);
                }
                else
                {
                    UnturnedChat.Say(caller, PaycheckPlugin.Instance.Translate("command_no_parse_location", command[1]), Color.yellow);
                    return;
                }
            }
            PaycheckPlugin.Config.IsDirty = true;
        }