diff --git a/CHANGELOG.md b/CHANGELOG.md
index 54eefc42..160e40b4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,7 +13,7 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin
* If there is no section called "Upcoming changes" below this line, please add one with `## Upcoming changes` as the first line, and then a bulleted item directly after with the first change.
## Upcoming changes
-* With any luck, .NET 5?
+* Removed `TShockAPI/DB/DBTools.cs`. This appears to have been dead code and not used by anything. (@hakusaro, @DeathCradle)
## TShock 4.5.7
* Fixed the `/respawn` command to permit respawning players from the console. (@hakusaro, @Kojirremer)
diff --git a/TShockAPI/DB/DBTools.cs b/TShockAPI/DB/DBTools.cs
deleted file mode 100644
index 20300aef..00000000
--- a/TShockAPI/DB/DBTools.cs
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
-TShock, a server mod for Terraria
-Copyright (C) 2011-2019 Pryaxis & TShock Contributors
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*/
-
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Linq;
-using System.Text;
-using TShockAPI.DB;
-
-namespace TShockAPI.DB
-{
- public class DBTools
- {
- public static IDbConnection database;
-
- public static void CreateTable(string name, bool IfNotExists, List columns)
- {
- //Build up Creation string :)
- StringBuilder sb = new StringBuilder();
- sb.Append("CREATE TABLE ");
-
- if (IfNotExists)
- sb.Append("IF NOT EXISTS ");
-
- if (TShock.Config.StorageType.ToLower() == "sqlite")
- sb.Append("'" + name + "' (");
- else if (TShock.Config.StorageType.ToLower() == "mysql")
- sb.Append(name + " (");
-
- int count = 0;
-
- foreach (Column column in columns)
- {
- count++;
- if (column.Type.ToLower() == "int")
- {
- if (TShock.Config.StorageType.ToLower() == "sqlite")
- sb.Append(column.Name + " NUMERIC ");
- else if (TShock.Config.StorageType.ToLower() == "mysql")
- sb.Append(column.Name + " INT(255) ");
- }
- else if (column.Type.ToLower() == "string")
- {
- if (TShock.Config.StorageType.ToLower() == "sqlite")
- sb.Append(column.Name + " TEXT ");
- else if (TShock.Config.StorageType.ToLower() == "mysql")
- sb.Append(column.Name + " VARCHAR(255) ");
- }
- if (column.Unique)
- {
- if (columns.Count != count)
- {
- sb.Append("UNIQUE, ");
- }
- else
- sb.Append("UNIQUE) ");
- }
- if (columns.Count == count)
- sb.Append(")");
- }
-
- using (var com = database.CreateCommand())
- {
- com.CommandText = sb.ToString();
- com.ExecuteNonQuery();
- }
- }
-
- public static void InsertTable(string tablename, bool Ignore, List Values, List WhereAndStatements)
- {
- StringBuilder sb = new StringBuilder();
- sb.Append("INSERT ");
-
- if (Ignore)
- {
- if (TShock.Config.StorageType.ToLower() == "sqlite")
- sb.Append("OR IGNORE ");
- else if (TShock.Config.StorageType.ToLower() == "mysql")
- sb.Append("IGNORE ");
- }
-
- if (TShock.Config.StorageType.ToLower() == "sqlite")
- sb.Append("INTO '" + tablename + "' (");
- else if (TShock.Config.StorageType.ToLower() == "mysql")
- sb.Append("INTO " + tablename + " ");
-
- using (var com = database.CreateCommand())
- {
- //Values
- if (TShock.Config.StorageType.ToLower() == "sqlite")
- {
- int count = 0;
-
- foreach (ColumnData columnname in Values)
- {
- count++;
- if (Values.Count != count)
- sb.Append(columnname.Name + ", ");
- else
- sb.Append(columnname.Name + ") ");
- }
-
- sb.Append("VALUES (");
- count = 0;
-
- foreach (ColumnData columnname in Values)
- {
- count++;
- if (Values.Count != count)
- {
- sb.Append("@" + columnname.Name + ", ");
- com.AddParameter("@" + columnname.Name.ToLower(), columnname.Value);
- }
- else
- {
- sb.Append("@" + columnname.Name + ") ");
- com.AddParameter("@" + columnname.Name.ToLower(), columnname.Value);
- }
- }
- }
- else if (TShock.Config.StorageType.ToLower() == "mysql")
- {
- sb.Append("SET ");
- int count = 0;
-
- foreach (ColumnData columnname in Values)
- {
- count++;
- if (Values.Count != count)
- {
- sb.Append("@" + columnname.Name + "=" + columnname.Value + ", ");
- com.AddParameter("@" + columnname.Name.ToLower(), columnname.Value);
- }
- else
- {
- sb.Append("@" + columnname.Name + "=" + columnname.Value + ") ");
- com.AddParameter("@" + columnname.Name.ToLower(), columnname.Value);
- }
- }
- }
-
- //Where Statement (if any)
- if (WhereAndStatements.Count > 0)
- {
- sb.Append("WHERE ");
- int count = 0;
-
- foreach (ColumnData columnname in WhereAndStatements)
- {
- count++;
- if (Values.Count != count)
- {
- sb.Append("@" + columnname.Name + "=" + columnname.Value + "-where" + " AND ");
- com.AddParameter("@" + columnname.Name.ToLower() + "-where", columnname.Value);
- }
- else
- {
- sb.Append("@" + columnname.Name + "=" + columnname.Value + "-where" + ";");
- com.AddParameter("@" + columnname.Name.ToLower() + "-where", columnname.Value);
- }
- }
- }
- }
- }
- }
-
- public class Column
- {
- public string Name { get; set; }
- public string Type { get; set; }
- public bool Unique { get; set; }
- public string Parameters { get; set; }
-
- public Column(string name, bool unique, string type, string parameters)
- {
- Name = name;
- Type = type;
- Unique = unique;
- Parameters = parameters;
- }
-
- public Column()
- {
- Name = string.Empty;
- Type = string.Empty;
- Unique = false;
- Parameters = string.Empty;
- }
- }
-
- public class ColumnData
- {
- public string Name { get; set; }
- public object Value { get; set; }
-
- public ColumnData(string name, object value)
- {
- Name = name;
- Value = value;
- }
-
- public ColumnData()
- {
- Name = string.Empty;
- Value = string.Empty;
- }
- }
-}