diff --git a/TShockAPI/StatTracker.cs b/TShockAPI/StatTracker.cs
new file mode 100644
index 00000000..a413f8c8
--- /dev/null
+++ b/TShockAPI/StatTracker.cs
@@ -0,0 +1,83 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Net;
+using System.Threading;
+using System.IO;
+using System.Web;
+
+namespace TShockAPI
+{
+ public class StatTracker
+ {
+
+ public StatTracker()
+ {
+ ThreadPool.QueueUserWorkItem(SendUpdate);
+ }
+
+ private HttpWebResponse GetResponseNoException(HttpWebRequest req)
+ {
+ try
+ {
+ return (HttpWebResponse)req.GetResponse();
+ }
+ catch (WebException we)
+ {
+ var resp = we.Response as HttpWebResponse;
+ if (resp == null)
+ throw;
+ return resp;
+ }
+ }
+
+ private void SendUpdate(object info)
+ {
+ Thread.Sleep(1000*60*15);
+ var data = new JsonData
+ {
+ port = Terraria.Netplay.serverPort,
+ currentPlayers = TShock.Utils.ActivePlayers(),
+ maxPlayers = TShock.Config.MaxSlots,
+ systemRam = 2097152,
+ systemCPUClock = 2516582,
+ version = TShock.VersionNum.ToString(),
+ terrariaVersion = Terraria.Main.versionNumber2
+ };
+
+ var serialized = Newtonsoft.Json.JsonConvert.SerializeObject(data);
+ var encoded = HttpUtility.UrlEncode(serialized);
+ var uri = String.Format("http://127.0.0.1:8000?data={0}", encoded);
+ var client = (HttpWebRequest)WebRequest.Create(uri);
+ try
+ {
+ using (var resp = GetResponseNoException(client))
+ {
+ if (resp.StatusCode != HttpStatusCode.OK)
+ {
+ throw new IOException("Server did not respond with an OK.");
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine("StatTracker has failed: {0}", e.Message);
+ return;
+ }
+
+ ThreadPool.QueueUserWorkItem(SendUpdate);
+ }
+ }
+
+ public struct JsonData
+ {
+ public int port;
+ public int currentPlayers;
+ public int maxPlayers;
+ public int systemRam;
+ public int systemCPUClock;
+ public string version;
+ public string terrariaVersion;
+ }
+}
diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs
index d215df12..99fb4c33 100755
--- a/TShockAPI/TShock.cs
+++ b/TShockAPI/TShock.cs
@@ -70,6 +70,7 @@ namespace TShockAPI
public static SecureRest RestApi;
public static RestManager RestManager;
public static Utils Utils = Utils.Instance;
+ public static StatTracker StatTracker;
///
/// Used for implementing REST Tokens prior to the REST system starting up.
///
@@ -596,8 +597,6 @@ namespace TShockAPI
Lighting.lightMode = 2;
FixChestStacks();
-
-
}
private void FixChestStacks()
diff --git a/TShockAPI/TShockAPI.csproj b/TShockAPI/TShockAPI.csproj
index 6732d26f..01a31456 100644
--- a/TShockAPI/TShockAPI.csproj
+++ b/TShockAPI/TShockAPI.csproj
@@ -68,6 +68,7 @@
+
False
.exe
@@ -125,6 +126,7 @@
+
@@ -176,7 +178,7 @@
-
+