Merge branch 'general-devel' of github.com:TShock/TShock into general-devel
This commit is contained in:
commit
5bdb11c69c
10 changed files with 1310 additions and 1062 deletions
|
|
@ -66,20 +66,26 @@ namespace TShockAPI
|
|||
public List<string> Names { get; protected set; }
|
||||
public bool AllowServer { get; set; }
|
||||
public bool DoLog { get; set; }
|
||||
public string Permission { get; protected set; }
|
||||
public List<string> Permissions { get; protected set; }
|
||||
private CommandDelegate command;
|
||||
|
||||
public Command(List<string> permissionsneeded, CommandDelegate cmd, params string[] names)
|
||||
: this(cmd, names)
|
||||
{
|
||||
Permissions = permissionsneeded;
|
||||
}
|
||||
|
||||
public Command(string permissionneeded, CommandDelegate cmd, params string[] names)
|
||||
: this(cmd, names)
|
||||
{
|
||||
Permission = permissionneeded;
|
||||
Permissions = new List<string> { permissionneeded };
|
||||
}
|
||||
|
||||
public Command(CommandDelegate cmd, params string[] names)
|
||||
{
|
||||
if (names == null || names.Length < 1)
|
||||
throw new NotSupportedException();
|
||||
Permission = null;
|
||||
Permissions = null;
|
||||
Names = new List<string>(names);
|
||||
command = cmd;
|
||||
AllowServer = true;
|
||||
|
|
@ -88,7 +94,7 @@ namespace TShockAPI
|
|||
|
||||
public bool Run(string msg, TSPlayer ply, List<string> parms)
|
||||
{
|
||||
if (!ply.Group.HasPermission(Permission))
|
||||
if (!CanRun(ply))
|
||||
return false;
|
||||
|
||||
try
|
||||
|
|
@ -111,7 +117,14 @@ namespace TShockAPI
|
|||
|
||||
public bool CanRun(TSPlayer ply)
|
||||
{
|
||||
return ply.Group.HasPermission(Permission);
|
||||
if (Permissions == null)
|
||||
return true;
|
||||
foreach (var Permission in Permissions)
|
||||
{
|
||||
if (ply.Group.HasPermission(Permission))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -133,14 +146,15 @@ namespace TShockAPI
|
|||
ChatCommands.Add(new Command(Permissions.cfg, SetSpawn, "setspawn") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.grow, Grow, "grow") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.item, Item, "item", "i") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.tp, Home, "home") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.home, Home, "home") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.canpartychat, PartyChat, "p") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.tp, Spawn, "spawn") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.spawn, Spawn, "spawn") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.tp, TP, "tp") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.tp, TPHere, "tphere") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.tphere, TPHere, "tphere") { AllowServer = false });
|
||||
ChatCommands.Add(new Command(Permissions.tpallow, TPAllow, "tpallow") { AllowServer = false });
|
||||
add(Permissions.kick, Kick, "kick");
|
||||
add(Permissions.ban, Ban, "ban", "banip", "listbans", "unban", "unbanip", "clearbans");
|
||||
add(Permissions.ban, DeprecateBans, "banip", "listbans", "unban", "unbanip", "clearbans");
|
||||
add(Permissions.ban, Ban, "ban");
|
||||
add(Permissions.whitelist, Whitelist, "whitelist");
|
||||
add(Permissions.maintenance, Off, "off", "exit");
|
||||
add(Permissions.maintenance, Restart, "restart"); //Added restart command
|
||||
|
|
@ -161,7 +175,9 @@ namespace TShockAPI
|
|||
add(Permissions.spawnboss, SkeletronPrime, "skeletronp", "prime");
|
||||
add(Permissions.spawnboss, Hardcore, "hardcore");
|
||||
add(Permissions.spawnmob, SpawnMob, "spawnmob", "sm");
|
||||
add(Permissions.warp, Warp, "warp", "setwarp", "delwarp", "sendwarp", "sw");
|
||||
add(Permissions.warp, Warp, "warp");
|
||||
add(Permissions.managewarp, DeprecateWarp, "setwarp", "delwarp", "hidewarp");
|
||||
add(Permissions.tphere, DeprecateWarp, "sendwarp", "sw");
|
||||
add(Permissions.managegroup, AddGroup, "addgroup");
|
||||
add(Permissions.managegroup, DeleteGroup, "delgroup");
|
||||
add(Permissions.managegroup, ModifyGroup, "modgroup");
|
||||
|
|
@ -209,6 +225,8 @@ namespace TShockAPI
|
|||
add(Permissions.cfg, WorldInfo, "world");
|
||||
add(Permissions.savessi, SaveSSI, "savessi");
|
||||
add(Permissions.savessi, OverrideSSI, "overridessi", "ossi");
|
||||
add(Permissions.xmas, ForceXmas, "forcexmas");
|
||||
add(Permissions.settempgroup, TempGroup, "tempgroup");
|
||||
//add(null, TestCallbackCommand, "test");
|
||||
}
|
||||
|
||||
|
|
@ -223,9 +241,12 @@ namespace TShockAPI
|
|||
string cmdName = args[0].ToLower();
|
||||
args.RemoveAt(0);
|
||||
|
||||
Command cmd = ChatCommands.FirstOrDefault(c => c.HasAlias(cmdName));
|
||||
if (Hooks.PlayerHooks.OnPlayerCommand(player, cmdName, cmdText, args))
|
||||
return true;
|
||||
|
||||
if (cmd == null)
|
||||
IEnumerable<Command> cmds = ChatCommands.Where(c => c.HasAlias(cmdName));
|
||||
|
||||
if (cmds.Count() == 0)
|
||||
{
|
||||
if (player.AwaitingResponse.ContainsKey(cmdName))
|
||||
{
|
||||
|
|
@ -237,23 +258,25 @@ namespace TShockAPI
|
|||
player.SendErrorMessage("Invalid command entered. Type /help for a list of valid commands.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!cmd.CanRun(player))
|
||||
{
|
||||
TShock.Utils.SendLogs(string.Format("{0} tried to execute /{1}.", player.Name, cmdText), Color.Red);
|
||||
player.SendErrorMessage("You do not have access to that command.");
|
||||
}
|
||||
else if (!cmd.AllowServer && !player.RealPlayer)
|
||||
{
|
||||
player.SendErrorMessage("You must use this command in-game.");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cmd.DoLog)
|
||||
TShock.Utils.SendLogs(string.Format("{0} executed: /{1}.", player.Name, cmdText), Color.Red);
|
||||
cmd.Run(cmdText, player, args);
|
||||
}
|
||||
return true;
|
||||
foreach (Command cmd in cmds)
|
||||
{
|
||||
if (!cmd.CanRun(player))
|
||||
{
|
||||
TShock.Utils.SendLogs(string.Format("{0} tried to execute /{1}.", player.Name, cmdText), Color.Red);
|
||||
player.SendErrorMessage("You do not have access to that command.");
|
||||
}
|
||||
else if (!cmd.AllowServer && !player.RealPlayer)
|
||||
{
|
||||
player.SendErrorMessage("You must use this command in-game.");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cmd.DoLog)
|
||||
TShock.Utils.SendLogs(string.Format("{0} executed: /{1}.", player.Name, cmdText), Color.Red);
|
||||
cmd.Run(cmdText, player, args);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -414,6 +437,7 @@ namespace TShockAPI
|
|||
args.Player.IgnoreActionsForDisabledArmor = "none";
|
||||
|
||||
args.Player.Group = group;
|
||||
args.Player.tempGroup = null;
|
||||
args.Player.UserAccountName = user.Name;
|
||||
args.Player.UserID = TShock.Users.GetUserID(args.Player.UserAccountName);
|
||||
args.Player.IsLoggedIn = true;
|
||||
|
|
@ -437,6 +461,8 @@ namespace TShockAPI
|
|||
args.Player.LoginHarassed = false;
|
||||
|
||||
}
|
||||
|
||||
Hooks.PlayerHooks.OnPlayerLogin(args.Player);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -798,10 +824,19 @@ namespace TShockAPI
|
|||
}
|
||||
}
|
||||
|
||||
private static void DeprecateBans(CommandArgs args)
|
||||
{
|
||||
args.Player.SendInfoMessage("All ban commands were merged into one in TShock 4.0.");
|
||||
args.Player.SendInfoMessage("Syntax: /ban [option] [arguments]");
|
||||
args.Player.SendInfoMessage("Options: list, listip, clear, add, addip, del, delip");
|
||||
args.Player.SendInfoMessage("Arguments: list, listip, clear [code], add [name], addip [ip], del [name], delip [name]");
|
||||
args.Player.SendInfoMessage("In addition, a reason may be provided for all new bans after the arguments.");
|
||||
return;
|
||||
}
|
||||
|
||||
private static void Ban(CommandArgs args)
|
||||
{
|
||||
|
||||
if (args.Parameters[0].ToLower() == "help")
|
||||
if (args.Parameters.Count == 0 || args.Parameters[0].ToLower() == "help")
|
||||
{
|
||||
args.Player.SendInfoMessage("All ban commands were merged into one in TShock 4.0.");
|
||||
args.Player.SendInfoMessage("Syntax: /ban [option] [arguments]");
|
||||
|
|
@ -1136,6 +1171,74 @@ namespace TShockAPI
|
|||
}
|
||||
}
|
||||
|
||||
private static void ForceXmas(CommandArgs args)
|
||||
{
|
||||
if(args.Parameters.Count == 0)
|
||||
{
|
||||
args.Player.SendErrorMessage("Usage: /forcexmas [true/false]");
|
||||
args.Player.SendInfoMessage(
|
||||
String.Format("The server is currently {0} force Christmas mode.",
|
||||
(TShock.Config.ForceXmas ? "in" : "not in")));
|
||||
return;
|
||||
}
|
||||
|
||||
if(args.Parameters[0].ToLower() == "true")
|
||||
{
|
||||
TShock.Config.ForceXmas = true;
|
||||
Main.checkXMas();
|
||||
}
|
||||
else if(args.Parameters[0].ToLower() == "false")
|
||||
{
|
||||
TShock.Config.ForceXmas = false;
|
||||
Main.checkXMas();
|
||||
}
|
||||
else
|
||||
{
|
||||
args.Player.SendErrorMessage("Usage: /forcexmas [true/false]");
|
||||
return;
|
||||
}
|
||||
|
||||
args.Player.SendInfoMessage(
|
||||
String.Format("The server is currently {0} force Christmas mode.",
|
||||
(TShock.Config.ForceXmas ? "in" : "not in")));
|
||||
}
|
||||
|
||||
public static void TempGroup(CommandArgs args)
|
||||
{
|
||||
if (args.Parameters.Count < 2)
|
||||
{
|
||||
args.Player.SendInfoMessage("Invalid usage");
|
||||
args.Player.SendInfoMessage("Usage: /tempgroup <username> <new group>");
|
||||
return;
|
||||
}
|
||||
|
||||
List<TSPlayer> ply = TShock.Utils.FindPlayer(args.Parameters[0]);
|
||||
if(ply.Count < 1)
|
||||
{
|
||||
args.Player.SendErrorMessage(string.Format("Could not find player {0}.", args.Parameters[0]));
|
||||
return;
|
||||
}
|
||||
|
||||
if (ply.Count > 1)
|
||||
{
|
||||
args.Player.SendErrorMessage(string.Format("Found more than one match for {0}.", args.Parameters[0]));
|
||||
return;
|
||||
}
|
||||
|
||||
if(!TShock.Groups.GroupExists(args.Parameters[1]))
|
||||
{
|
||||
args.Player.SendErrorMessage(string.Format("Could not find group {0}", args.Parameters[1]));
|
||||
return;
|
||||
}
|
||||
|
||||
Group g = TShock.Utils.GetGroup(args.Parameters[1]);
|
||||
|
||||
ply[0].tempGroup = g;
|
||||
|
||||
args.Player.SendSuccessMessage(string.Format("You have changed {0}'s group to {1}", ply[0].Name, g.Name));
|
||||
ply[0].SendSuccessMessage(string.Format("Your group has temporarily been changed to {0}", g.Name));
|
||||
}
|
||||
|
||||
#endregion Player Management Commands
|
||||
|
||||
#region Server Maintenence Commands
|
||||
|
|
@ -1619,6 +1722,17 @@ namespace TShockAPI
|
|||
args.Player.TPAllow = !args.Player.TPAllow;
|
||||
}
|
||||
|
||||
private static void DeprecateWarp(CommandArgs args)
|
||||
{
|
||||
args.Player.SendInfoMessage("All warp commands were merged into one in TShock 4.0.");
|
||||
args.Player.SendInfoMessage("Previous warps with spaces should be wrapped in single quotes.");
|
||||
args.Player.SendInfoMessage("Invalid syntax. Syntax: /warp [command] [arguments]");
|
||||
args.Player.SendInfoMessage("Commands: add, del, hide, list, send, [warpname]");
|
||||
args.Player.SendInfoMessage("Arguments: add [warp name], del [warp name], list [page]");
|
||||
args.Player.SendInfoMessage("Arguments: send [player] [warp name], hide [warp name] [Enable(true/false)]");
|
||||
args.Player.SendInfoMessage("Examples: /warp add foobar, /warp hide foobar true, /warp foobar");
|
||||
}
|
||||
|
||||
private static void Warp(CommandArgs args)
|
||||
{
|
||||
bool hasManageWarpPermission = args.Player.Group.HasPermission(Permissions.managewarp);
|
||||
|
|
@ -2267,8 +2381,19 @@ namespace TShockAPI
|
|||
return;
|
||||
}
|
||||
|
||||
int amount = Convert.ToInt32(args.Parameters[0]);
|
||||
int.TryParse(args.Parameters[0], out amount);
|
||||
int amount = -1;
|
||||
if (!int.TryParse(args.Parameters[0], out amount))
|
||||
{
|
||||
args.Player.SendWarningMessage(string.Format("Invalid spawnrate ({0})", args.Parameters[0]));
|
||||
return;
|
||||
}
|
||||
|
||||
if (amount < 0)
|
||||
{
|
||||
args.Player.SendWarningMessage("Spawnrate cannot be negative!");
|
||||
return;
|
||||
}
|
||||
|
||||
NPC.defaultSpawnRate = amount;
|
||||
TShock.Config.DefaultSpawnRate = amount;
|
||||
TSPlayer.All.SendInfoMessage(string.Format("{0} changed the spawn rate to {1}.", args.Player.Name, amount));
|
||||
|
|
|
|||
|
|
@ -243,6 +243,10 @@ namespace TShockAPI
|
|||
|
||||
[Description("Hide stat tracker console messages.")] public bool HideStatTrackerDebugMessages = true;
|
||||
|
||||
[Description("Force Christmas only events to occur all year.")] public bool ForceXmas = false;
|
||||
|
||||
[Description("Allows groups on the banned item allowed list to spawn banned items.")] public bool AllowAllowedGroupsToSpawnBannedItems = false;
|
||||
|
||||
/// <summary>
|
||||
/// Reads a configuration file from a given path
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -238,25 +238,21 @@ namespace TShockAPI.DB
|
|||
return false;
|
||||
}
|
||||
Region top = null;
|
||||
for (int i = 0; i < Regions.Count; i++)
|
||||
{
|
||||
if (Regions[i].InArea(x,y) )
|
||||
{
|
||||
if (top == null)
|
||||
top = Regions[i];
|
||||
else
|
||||
{
|
||||
if (Regions[i].Z > top.Z)
|
||||
top = Regions[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (Region region in Regions.ToList())
|
||||
{
|
||||
if (region.InArea(x, y))
|
||||
{
|
||||
if (top == null || region.Z > top.Z)
|
||||
top = region;
|
||||
}
|
||||
}
|
||||
return top == null || top.HasPermissionToBuildInRegion(ply);
|
||||
}
|
||||
|
||||
public bool InArea(int x, int y)
|
||||
{
|
||||
foreach (Region region in Regions)
|
||||
foreach (Region region in Regions.ToList())
|
||||
{
|
||||
if (x >= region.Area.Left && x <= region.Area.Right &&
|
||||
y >= region.Area.Top && y <= region.Area.Bottom &&
|
||||
|
|
@ -271,7 +267,7 @@ namespace TShockAPI.DB
|
|||
public List<string> InAreaRegionName(int x, int y)
|
||||
{
|
||||
List<string> regions = new List<string>() { };
|
||||
foreach (Region region in Regions)
|
||||
foreach (Region region in Regions.ToList())
|
||||
{
|
||||
if (x >= region.Area.Left && x <= region.Area.Right &&
|
||||
y >= region.Area.Top && y <= region.Area.Bottom &&
|
||||
|
|
@ -286,7 +282,7 @@ namespace TShockAPI.DB
|
|||
public List<Region> InAreaRegion(int x, int y)
|
||||
{
|
||||
List<Region> regions = new List<Region>() { };
|
||||
foreach (Region region in Regions)
|
||||
foreach (Region region in Regions.ToList())
|
||||
{
|
||||
if (x >= region.Area.Left && x <= region.Area.Right &&
|
||||
y >= region.Area.Top && y <= region.Area.Bottom &&
|
||||
|
|
|
|||
|
|
@ -1372,6 +1372,7 @@ namespace TShockAPI
|
|||
args.Player.IgnoreActionsForDisabledArmor = "none";
|
||||
|
||||
args.Player.Group = group;
|
||||
args.Player.tempGroup = null;
|
||||
args.Player.UserAccountName = args.Player.Name;
|
||||
args.Player.UserID = TShock.Users.GetUserID(args.Player.UserAccountName);
|
||||
args.Player.IsLoggedIn = true;
|
||||
|
|
@ -1384,6 +1385,7 @@ namespace TShockAPI
|
|||
}
|
||||
args.Player.SendMessage("Authenticated as " + args.Player.Name + " successfully.", Color.LimeGreen);
|
||||
Log.ConsoleInfo(args.Player.Name + " authenticated successfully as user " + args.Player.Name + ".");
|
||||
Hooks.PlayerHooks.OnPlayerLogin(args.Player);
|
||||
return true;
|
||||
}
|
||||
TShock.Utils.ForceKick(args.Player, "Invalid user account password.", true);
|
||||
|
|
@ -1442,13 +1444,15 @@ namespace TShockAPI
|
|||
Log.Info(string.Format("{0} ({1}) from '{2}' group from '{3}' joined. ({4}/{5})", args.Player.Name, args.Player.IP,
|
||||
args.Player.Group.Name, args.Player.Country, TShock.Utils.ActivePlayers(),
|
||||
TShock.Config.MaxSlots));
|
||||
TShock.Utils.Broadcast(string.Format("{0} ({1}) has joined.", args.Player.Name, args.Player.Country), Color.Yellow);
|
||||
if (!args.Player.SilentJoinInProgress)
|
||||
TShock.Utils.Broadcast(string.Format("{0} ({1}) has joined.", args.Player.Name, args.Player.Country), Color.Yellow);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Info(string.Format("{0} ({1}) from '{2}' group joined. ({3}/{4})", args.Player.Name, args.Player.IP,
|
||||
args.Player.Group.Name, TShock.Utils.ActivePlayers(), TShock.Config.MaxSlots));
|
||||
TShock.Utils.Broadcast(args.Player.Name + " has joined.", Color.Yellow);
|
||||
if (!args.Player.SilentJoinInProgress)
|
||||
TShock.Utils.Broadcast(args.Player.Name + " has joined.", Color.Yellow);
|
||||
}
|
||||
|
||||
if (TShock.Config.DisplayIPToAdmins)
|
||||
|
|
|
|||
62
TShockAPI/Hooks/PlayerHooks.cs
Normal file
62
TShockAPI/Hooks/PlayerHooks.cs
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace TShockAPI.Hooks
|
||||
{
|
||||
public class PlayerLoginEventArgs
|
||||
{
|
||||
public TSPlayer Player { get; set; }
|
||||
public PlayerLoginEventArgs(TSPlayer ply)
|
||||
{
|
||||
Player = ply;
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerCommandEventArgs : HandledEventArgs
|
||||
{
|
||||
public TSPlayer Player { get; set; }
|
||||
public string CommandName { get; set; }
|
||||
public string CommandText { get; set; }
|
||||
public List<string> Parameters { get; set; }
|
||||
}
|
||||
|
||||
public static class PlayerHooks
|
||||
{
|
||||
public delegate void PlayerLoginD(PlayerLoginEventArgs e);
|
||||
public static event PlayerLoginD PlayerLogin;
|
||||
public delegate void PlayerCommandD(PlayerCommandEventArgs e);
|
||||
public static event PlayerCommandD PlayerCommand;
|
||||
|
||||
public static void OnPlayerLogin(TSPlayer ply)
|
||||
{
|
||||
if(PlayerLogin == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerLoginEventArgs args = new PlayerLoginEventArgs(ply);
|
||||
PlayerLogin(args);
|
||||
}
|
||||
|
||||
public static bool OnPlayerCommand(TSPlayer player, string cmdName, string cmdText, List<string> args)
|
||||
{
|
||||
if (PlayerCommand == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
PlayerCommandEventArgs playerCommandEventArgs = new PlayerCommandEventArgs()
|
||||
{
|
||||
Player = player,
|
||||
CommandName = cmdName,
|
||||
CommandText = cmdText,
|
||||
Parameters = args
|
||||
|
||||
};
|
||||
PlayerCommand(playerCommandEventArgs);
|
||||
return playerCommandEventArgs.Handled;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -169,6 +169,13 @@ namespace TShockAPI
|
|||
[Description("User can use rest api calls.")]
|
||||
public static readonly string restapi;
|
||||
|
||||
[Description("User can force the server to Christmas mode.")] public static readonly string xmas;
|
||||
|
||||
[Description("User can use /home.")] public static readonly string home;
|
||||
|
||||
[Description("User can use /spawn.")] public static readonly string spawn;
|
||||
|
||||
[Description("User can elevate other users' groups temporarily.")] public static readonly string settempgroup;
|
||||
static Permissions()
|
||||
{
|
||||
foreach (var field in typeof (Permissions).GetFields())
|
||||
|
|
@ -189,7 +196,7 @@ namespace TShockAPI
|
|||
{
|
||||
if (Commands.ChatCommands.Count < 1)
|
||||
Commands.InitCommands();
|
||||
return Commands.ChatCommands.Where(c => c.Permission == perm).ToList();
|
||||
return Commands.ChatCommands.Where(c => c.Permissions.Contains(perm)).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -223,6 +223,7 @@ namespace TShockAPI
|
|||
ProjectileHooks.SetDefaults += OnProjectileSetDefaults;
|
||||
WorldHooks.StartHardMode += OnStartHardMode;
|
||||
WorldHooks.SaveWorld += SaveManager.Instance.OnSaveWorld;
|
||||
WorldHooks.ChristmasCheck += OnXmasCheck;
|
||||
NetHooks.NameCollision += NetHooks_NameCollision;
|
||||
|
||||
GetDataHandlers.InitGetDataHandler();
|
||||
|
|
@ -323,6 +324,7 @@ namespace TShockAPI
|
|||
ProjectileHooks.SetDefaults -= OnProjectileSetDefaults;
|
||||
WorldHooks.StartHardMode -= OnStartHardMode;
|
||||
WorldHooks.SaveWorld -= SaveManager.Instance.OnSaveWorld;
|
||||
WorldHooks.ChristmasCheck -= OnXmasCheck;
|
||||
NetHooks.NameCollision -= NetHooks_NameCollision;
|
||||
|
||||
if (File.Exists(Path.Combine(SavePath, "tshock.pid")))
|
||||
|
|
@ -367,6 +369,17 @@ namespace TShockAPI
|
|||
return;
|
||||
}
|
||||
|
||||
void OnXmasCheck(ChristmasCheckEventArgs args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if(Config.ForceXmas)
|
||||
{
|
||||
args.Xmas = true;
|
||||
args.Handled = true;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Handles exceptions that we didn't catch or that Red fucked up
|
||||
/// </summary>
|
||||
|
|
@ -812,12 +825,9 @@ namespace TShockAPI
|
|||
|
||||
if (tsplr != null && tsplr.ReceivedInfo)
|
||||
{
|
||||
if (!tsplr.SilentKickInProgress || tsplr.State > 1)
|
||||
if (!tsplr.SilentKickInProgress && tsplr.State >= 3)
|
||||
{
|
||||
if (tsplr.State >= 2)
|
||||
{
|
||||
Utils.Broadcast(tsplr.Name + " left", Color.Yellow);
|
||||
}
|
||||
Utils.Broadcast(tsplr.Name + " left", Color.Yellow);
|
||||
}
|
||||
Log.Info(string.Format("{0} disconnected.", tsplr.Name));
|
||||
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@
|
|||
<ItemGroup>
|
||||
<Compile Include="BackupManager.cs" />
|
||||
<Compile Include="DB\RegionManager.cs" />
|
||||
<Compile Include="Hooks\PlayerHooks.cs" />
|
||||
<Compile Include="SaveManager.cs" />
|
||||
<Compile Include="DB\BanManager.cs" />
|
||||
<Compile Include="DB\InventoryManager.cs" />
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue