Add user account banning, similar to offline bans
Also removed logging of bans since... the command is logged as well
This commit is contained in:
parent
3e12e80a89
commit
16cf364d59
2 changed files with 26 additions and 9 deletions
|
|
@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
|
@ -1096,15 +1097,32 @@ namespace TShockAPI
|
||||||
|
|
||||||
List<TSPlayer> players = TShock.Utils.FindPlayer(args.Parameters[1]);
|
List<TSPlayer> players = TShock.Utils.FindPlayer(args.Parameters[1]);
|
||||||
if (players.Count == 0)
|
if (players.Count == 0)
|
||||||
args.Player.SendErrorMessage("Invalid player!");
|
{
|
||||||
|
var user = TShock.Users.GetUserByName(args.Parameters[1]);
|
||||||
|
if (user != null)
|
||||||
|
{
|
||||||
|
bool force = !args.Player.RealPlayer;
|
||||||
|
if (TShock.Groups.GetGroupByName(user.Group).HasPermission(Permissions.immunetoban) && !force)
|
||||||
|
args.Player.SendErrorMessage("You can't ban {0}!", user.Name);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var knownIps = JsonConvert.DeserializeObject<List<string>>(user.KnownIps);
|
||||||
|
string reason = args.Parameters.Count > 2 ? String.Join(" ", args.Parameters.Skip(2)) : "Misbehavior.";
|
||||||
|
TShock.Bans.AddBan(knownIps.Last(), user.Name, user.UUID, reason, false, args.Player.UserAccountName);
|
||||||
|
if (String.IsNullOrWhiteSpace(args.Player.UserAccountName))
|
||||||
|
TSPlayer.All.SendInfoMessage("{0} was {1}banned for '{2}'.", user.Name, force ? "force " : "", reason);
|
||||||
|
else
|
||||||
|
TSPlayer.All.SendInfoMessage("{0} {1}banned {2} for '{3}'.", args.Player.Name, force ? "force " : "", user.Name, reason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
args.Player.SendErrorMessage("Invalid player or account!");
|
||||||
|
}
|
||||||
else if (players.Count > 1)
|
else if (players.Count > 1)
|
||||||
TShock.Utils.SendMultipleMatchError(args.Player, players.Select(p => p.Name));
|
TShock.Utils.SendMultipleMatchError(args.Player, players.Select(p => p.Name));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string reason = args.Parameters.Count > 2
|
string reason = args.Parameters.Count > 2 ? String.Join(" ", args.Parameters.Skip(2)) : "Misbehavior.";
|
||||||
? String.Join(" ", args.Parameters.GetRange(2, args.Parameters.Count - 2))
|
|
||||||
: "Misbehavior.";
|
|
||||||
|
|
||||||
if (!TShock.Utils.Ban(players[0], reason, !args.Player.RealPlayer, args.Player.UserAccountName))
|
if (!TShock.Utils.Ban(players[0], reason, !args.Player.RealPlayer, args.Player.UserAccountName))
|
||||||
args.Player.SendErrorMessage("You can't ban {0}!", players[0].Name);
|
args.Player.SendErrorMessage("You can't ban {0}!", players[0].Name);
|
||||||
}
|
}
|
||||||
|
|
@ -1229,7 +1247,7 @@ namespace TShockAPI
|
||||||
|
|
||||||
var lines = new List<string>
|
var lines = new List<string>
|
||||||
{
|
{
|
||||||
"add <player> [reason] - Bans a player.",
|
"add <player> [reason] - Bans a player or user account if the player is not online.",
|
||||||
"addip <ip> [reason] - Bans an IP.",
|
"addip <ip> [reason] - Bans an IP.",
|
||||||
"addtemp <player> <time> [reason] - Temporarily bans a player.",
|
"addtemp <player> <time> [reason] - Temporarily bans a player.",
|
||||||
"del <player> - Unbans a player.",
|
"del <player> - Unbans a player.",
|
||||||
|
|
|
||||||
|
|
@ -681,12 +681,11 @@ namespace TShockAPI
|
||||||
string playerName = player.Name;
|
string playerName = player.Name;
|
||||||
TShock.Bans.AddBan(ip, playerName, uuid, reason, false, adminUserName);
|
TShock.Bans.AddBan(ip, playerName, uuid, reason, false, adminUserName);
|
||||||
player.Disconnect(string.Format("Banned: {0}", reason));
|
player.Disconnect(string.Format("Banned: {0}", reason));
|
||||||
Log.ConsoleInfo(string.Format("Banned {0} for : '{1}'", playerName, reason));
|
|
||||||
string verb = force ? "force " : "";
|
string verb = force ? "force " : "";
|
||||||
if (string.IsNullOrWhiteSpace(adminUserName))
|
if (string.IsNullOrWhiteSpace(adminUserName))
|
||||||
Broadcast(string.Format("{0} was {1}banned for '{2}'", playerName, verb, reason.ToLower()));
|
TSPlayer.All.SendInfoMessage("{0} was {1}banned for '{2}'.", playerName, verb, reason);
|
||||||
else
|
else
|
||||||
Broadcast(string.Format("{0} {1}banned {2} for '{3}'", adminUserName, verb, playerName, reason.ToLower()));
|
TSPlayer.All.SendInfoMessage("{0} {1}banned {2} for '{3}'.", adminUserName, verb, playerName, reason);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue