diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index d6341b86..573f5e18 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -349,6 +349,13 @@ namespace TShockAPI args.Player.SendTileSquare(x, y); return true; } + if (type == 1 && tiletype == 21 && Tools.MaxChests()) + { + args.Player.SendMessage("Reached world's max chest limit, unable to place more!", Color.Red); + Log.Info("Reached world's chest limit, unable to place more."); + args.Player.SendTileSquare(x, y); + return true; + } } if (!args.Player.Group.HasPermission(Permissions.editspawn) && !TShock.Regions.CanBuild(x, y, args.Player) && TShock.Regions.InArea(x, y)) { @@ -395,7 +402,7 @@ namespace TShockAPI args.Player.TileThreshold++; var coords = new PointF(x, y); if (!args.Player.TilesDestroyed.ContainsKey(coords)) - args.Player.TilesDestroyed.Add(coords, Main.tile[x, y]); + args.Player.TilesDestroyed.Add(coords, Main.tile[x, y].Data); } if ((DateTime.UtcNow - args.Player.LastExplosive).TotalMilliseconds < 1000) @@ -480,12 +487,18 @@ namespace TShockAPI return true; } - if (type == 23 && (vely == 0f || velx == 0f)) //float.IsNaN((float)Math.Sqrt((double)(velx * velx + vely * vely)))) + if (type == 23) { - Tools.HandleGriefer(args.Player, TShock.Config.ProjectileAbuseReason); - return true; + if (velx == 0f && vely == 0f && dmg == 99) + { + Tools.HandleGriefer(args.Player, TShock.Config.ProjectileAbuseReason); + return true; + } + else if (velx == 0f || vely == 0f) + return true; } + if (type == 29 || type == 28 || type == 37) { Log.Debug(string.Format("Explosive(PlyXY:{0}_{1}, Type:{2})", args.Player.TileX, args.Player.TileY, type)); diff --git a/TShockAPI/Properties/AssemblyInfo.cs b/TShockAPI/Properties/AssemblyInfo.cs index ba4d3fd1..e57ee783 100644 --- a/TShockAPI/Properties/AssemblyInfo.cs +++ b/TShockAPI/Properties/AssemblyInfo.cs @@ -36,5 +36,5 @@ using System.Runtime.InteropServices; // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.3.2.0905")] -[assembly: AssemblyFileVersion("3.3.2.0905")] +[assembly: AssemblyVersion("3.3.3.0916")] +[assembly: AssemblyFileVersion("3.3.3.0916")] diff --git a/TShockAPI/Rest/RestObject.cs b/TShockAPI/Rest/RestObject.cs index fcc21e6a..eb0631d9 100644 --- a/TShockAPI/Rest/RestObject.cs +++ b/TShockAPI/Rest/RestObject.cs @@ -4,21 +4,21 @@ using System.Collections.Generic; namespace Rests { [Serializable] - public class RestObject : Dictionary + public class RestObject : Dictionary { public string Status { - get { return this["status"]; } + get { return this["status"] as string; } set { this["status"] = value; } } public string Error { - get { return this["error"]; } + get { return this["error"] as string; } set { this["error"] = value; } } public string Response { - get { return this["response"]; } + get { return this["response"] as string; } set { this["response"] = value; } } @@ -33,11 +33,11 @@ namespace Rests /// /// /// Returns null if key does not exist. - public new string this[string key] + public new object this[string key] { get { - string ret; + object ret; if (TryGetValue(key, out ret)) return ret; return null; diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 30abe815..8060dc03 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -32,7 +32,7 @@ namespace TShockAPI public static readonly TSServerPlayer Server = new TSServerPlayer(); public static readonly TSPlayer All = new TSPlayer("All"); public int TileThreshold { get; set; } - public Dictionary TilesDestroyed { get; protected set; } + public Dictionary TilesDestroyed { get; protected set; } public bool SyncHP { get; set; } public bool SyncMP { get; set; } public Group Group { get; set; } @@ -145,14 +145,14 @@ namespace TShockAPI public TSPlayer(int index) { - TilesDestroyed = new Dictionary(); + TilesDestroyed = new Dictionary(); Index = index; Group = new Group("null"); } protected TSPlayer(String playerName) { - TilesDestroyed = new Dictionary(); + TilesDestroyed = new Dictionary(); Index = -1; FakePlayer = new Player { name = playerName, whoAmi = -1 }; Group = new Group("null"); @@ -213,7 +213,7 @@ namespace TShockAPI //150 Should avoid all client crash errors //The error occurs when a tile trys to update which the client hasnt load yet, Clients only update tiles withen 150 blocks //Try 300 if it does not work (Higher number - Longer load times - Less chance of error) - if (!SendTileSquare(tilex, tiley, 150)) + if (!SendTileSquare(tilex, tiley)) { InitSpawn = true; SendWorldInfo(Main.spawnTileX, Main.spawnTileY, false); @@ -406,12 +406,12 @@ namespace TShockAPI NetMessage.SendData((int)PacketTypes.NpcStrike, -1, -1, "", npcid, damage, knockBack, hitDirection); } - public void RevertKillTile(Dictionary destroyedTiles) + public void RevertKillTile(Dictionary destroyedTiles) { // Update Main.Tile first so that when tile sqaure is sent it is correct - foreach (KeyValuePair entry in destroyedTiles) + foreach (KeyValuePair entry in destroyedTiles) { - Main.tile[(int)entry.Key.X, (int)entry.Key.Y] = entry.Value; + Main.tile[(int)entry.Key.X, (int)entry.Key.Y].Data = entry.Value; Log.Debug(string.Format("Reverted DestroyedTile(TileXY:{0}_{1}, Type:{2})", entry.Key.X, entry.Key.Y, Main.tile[(int)entry.Key.X, (int)entry.Key.Y].type)); } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index bebb5e35..61565bb9 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -52,7 +52,7 @@ namespace TShockAPI public class TShock : TerrariaPlugin { public static readonly Version VersionNum = Assembly.GetExecutingAssembly().GetName().Version; - public static readonly string VersionCodename = "And believe me, we are still alive."; + public static readonly string VersionCodename = "Try the new slim model."; public static string SavePath = "tshock"; @@ -177,7 +177,7 @@ namespace TShockAPI Regions = new RegionManager(DB); Itembans = new ItemManager(DB); RememberedPos = new RemeberedPosManager(DB); - RestApi = new SecureRest(IPAddress.Any, 8080); + RestApi = new SecureRest(Netplay.serverListenIP, 8080); RestApi.Verify += RestApi_Verify; RestApi.Port = Config.RestApiPort; RestManager = new RestManager(RestApi); @@ -310,7 +310,6 @@ namespace TShockAPI if (IPAddress.TryParse(parms[++i], out ip)) { Netplay.serverListenIP = ip; - RestApi.Ip = ip; Console.Write("Using IP: {0}", ip); } else diff --git a/TerrariaServerBins/TerrariaServer.exe b/TerrariaServerBins/TerrariaServer.exe index 69e9ca4c..6c49ce75 100644 Binary files a/TerrariaServerBins/TerrariaServer.exe and b/TerrariaServerBins/TerrariaServer.exe differ diff --git a/TerrariaServerBins/TerrariaServerAPI.dll b/TerrariaServerBins/TerrariaServerAPI.dll index 11ac8f87..62ea19ee 100644 Binary files a/TerrariaServerBins/TerrariaServerAPI.dll and b/TerrariaServerBins/TerrariaServerAPI.dll differ