From bfdcea5dd802bf72db07543cd338ae8fc564de46 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 16:02:56 -0600 Subject: [PATCH 01/58] Update submodule to t-1.3.5 branch --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 3b96d98a..5a5b0e9e 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 3b96d98a37c96c2a5969bfd4bf63a2fd4371ed46 +Subproject commit 5a5b0e9ee39af91e4d584eaa63e5af104803200f From d50fa2fbc44b7ad8401e1ed5a29f337fead3348a Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 16:03:25 -0600 Subject: [PATCH 02/58] Mark create release script executable --- scripts/create_release.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 scripts/create_release.py diff --git a/scripts/create_release.py b/scripts/create_release.py old mode 100644 new mode 100755 From 2a5efa65aec65d9ac3c685675e4eb86de7558f0e Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 17:12:38 -0600 Subject: [PATCH 03/58] Saving work to apply merge changes Currently moving .name to .Name and things like that from Item --- .gitignore | 4 ++-- TShockAPI/DB/ItemManager.cs | 4 ++-- TShockAPI/PlayerData.cs | 36 ++++++++++++++++++------------------ TShockAPI/TShock.cs | 36 ++++++++++++++++++------------------ TShockAPI/app.config | 8 ++++---- TShockAPI/web.config | 9 +++++++++ scripts/create_release.py | 2 +- 7 files changed, 54 insertions(+), 45 deletions(-) create mode 100644 TShockAPI/web.config diff --git a/.gitignore b/.gitignore index 5a43ff85..c7755a6d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Sublime Text # *.sublime-* - +releases/ # Compiled source # ################### *.com @@ -67,4 +67,4 @@ _ReSharper.* packages/* # Private key files # -scripts/ssh_private_key \ No newline at end of file +scripts/ssh_private_key diff --git a/TShockAPI/DB/ItemManager.cs b/TShockAPI/DB/ItemManager.cs index 75a6028f..541f8a8d 100644 --- a/TShockAPI/DB/ItemManager.cs +++ b/TShockAPI/DB/ItemManager.cs @@ -65,7 +65,7 @@ namespace TShockAPI.DB try { database.Query("INSERT INTO ItemBans (ItemName, AllowedGroups) VALUES (@0, @1);", - TShock.Utils.GetItemByName(itemname)[0].name, ""); + TShock.Utils.GetItemByName(itemname)[0].Name, ""); if (!ItemIsBanned(itemname, null)) ItemBans.Add(new ItemBan(itemname)); } @@ -81,7 +81,7 @@ namespace TShockAPI.DB return; try { - database.Query("DELETE FROM ItemBans WHERE ItemName=@0;", TShock.Utils.GetItemByName(itemname)[0].name); + database.Query("DELETE FROM ItemBans WHERE ItemName=@0;", TShock.Utils.GetItemByName(itemname)[0].Name); ItemBans.Remove(new ItemBan(itemname)); } catch (Exception ex) diff --git a/TShockAPI/PlayerData.cs b/TShockAPI/PlayerData.cs index 0b6c1ae0..de5f68ed 100644 --- a/TShockAPI/PlayerData.cs +++ b/TShockAPI/PlayerData.cs @@ -340,43 +340,43 @@ namespace TShockAPI float slot = 0f; for (int k = 0; k < NetItem.InventorySlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].inventory[k].name, player.Index, slot, (float)Main.player[player.Index].inventory[k].prefix); + NetMessage.SendData(5, -1, -1, Main.player[player.Index].inventory[k].Name, player.Index, slot, (float)Main.player[player.Index].inventory[k].prefix); slot++; } for (int k = 0; k < NetItem.ArmorSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].armor[k].name, player.Index, slot, (float)Main.player[player.Index].armor[k].prefix); + NetMessage.SendData(5, -1, -1, Main.player[player.Index].armor[k].Name, player.Index, slot, (float)Main.player[player.Index].armor[k].prefix); slot++; } for (int k = 0; k < NetItem.DyeSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].dye[k].name, player.Index, slot, (float)Main.player[player.Index].dye[k].prefix); + NetMessage.SendData(5, -1, -1, Main.player[player.Index].dye[k].Name, player.Index, slot, (float)Main.player[player.Index].dye[k].prefix); slot++; } for (int k = 0; k < NetItem.MiscEquipSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].miscEquips[k].name, player.Index, slot, (float)Main.player[player.Index].miscEquips[k].prefix); + NetMessage.SendData(5, -1, -1, Main.player[player.Index].miscEquips[k].Name, player.Index, slot, (float)Main.player[player.Index].miscEquips[k].prefix); slot++; } for (int k = 0; k < NetItem.MiscDyeSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].miscDyes[k].name, player.Index, slot, (float)Main.player[player.Index].miscDyes[k].prefix); + NetMessage.SendData(5, -1, -1, Main.player[player.Index].miscDyes[k].Name, player.Index, slot, (float)Main.player[player.Index].miscDyes[k].prefix); slot++; } for (int k = 0; k < NetItem.PiggySlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].bank.item[k].name, player.Index, slot, (float)Main.player[player.Index].bank.item[k].prefix); + NetMessage.SendData(5, -1, -1, Main.player[player.Index].bank.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank.item[k].prefix); slot++; } for (int k = 0; k < NetItem.SafeSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].bank2.item[k].name, player.Index, slot, (float)Main.player[player.Index].bank2.item[k].prefix); + NetMessage.SendData(5, -1, -1, Main.player[player.Index].bank2.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank2.item[k].prefix); slot++; } - NetMessage.SendData(5, -1, -1, Main.player[player.Index].trashItem.name, player.Index, slot++, (float)Main.player[player.Index].trashItem.prefix); + NetMessage.SendData(5, -1, -1, Main.player[player.Index].trashItem.Name, player.Index, slot++, (float)Main.player[player.Index].trashItem.prefix); for (int k = 0; k < NetItem.ForgeSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].bank3.item[k].name, player.Index, slot, (float)Main.player[player.Index].bank3.item[k].prefix); + NetMessage.SendData(5, -1, -1, Main.player[player.Index].bank3.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank3.item[k].prefix); slot++; } @@ -388,43 +388,43 @@ namespace TShockAPI slot = 0f; for (int k = 0; k < NetItem.InventorySlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].inventory[k].name, player.Index, slot, (float)Main.player[player.Index].inventory[k].prefix); + NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].inventory[k].Name, player.Index, slot, (float)Main.player[player.Index].inventory[k].prefix); slot++; } for (int k = 0; k < NetItem.ArmorSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].armor[k].name, player.Index, slot, (float)Main.player[player.Index].armor[k].prefix); + NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].armor[k].Name, player.Index, slot, (float)Main.player[player.Index].armor[k].prefix); slot++; } for (int k = 0; k < NetItem.DyeSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].dye[k].name, player.Index, slot, (float)Main.player[player.Index].dye[k].prefix); + NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].dye[k].Name, player.Index, slot, (float)Main.player[player.Index].dye[k].prefix); slot++; } for (int k = 0; k < NetItem.MiscEquipSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].miscEquips[k].name, player.Index, slot, (float)Main.player[player.Index].miscEquips[k].prefix); + NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].miscEquips[k].Name, player.Index, slot, (float)Main.player[player.Index].miscEquips[k].prefix); slot++; } for (int k = 0; k < NetItem.MiscDyeSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].miscDyes[k].name, player.Index, slot, (float)Main.player[player.Index].miscDyes[k].prefix); + NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].miscDyes[k].Name, player.Index, slot, (float)Main.player[player.Index].miscDyes[k].prefix); slot++; } for (int k = 0; k < NetItem.PiggySlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].bank.item[k].name, player.Index, slot, (float)Main.player[player.Index].bank.item[k].prefix); + NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].bank.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank.item[k].prefix); slot++; } for (int k = 0; k < NetItem.SafeSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].bank2.item[k].name, player.Index, slot, (float)Main.player[player.Index].bank2.item[k].prefix); + NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].bank2.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank2.item[k].prefix); slot++; } - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].trashItem.name, player.Index, slot++, (float)Main.player[player.Index].trashItem.prefix); + NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].trashItem.Name, player.Index, slot++, (float)Main.player[player.Index].trashItem.prefix); for (int k = 0; k < NetItem.ForgeSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].bank3.item[k].name, player.Index, slot, (float)Main.player[player.Index].bank3.item[k].prefix); + NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].bank3.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank3.item[k].prefix); slot++; } diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index f4d051e1..2ebb7ef4 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1108,7 +1108,7 @@ namespace TShockAPI if (!player.HasPermission(Permissions.ignorestackhackdetection) && (item.stack > item.maxStack || item.stack < 0) && item.type != 0) { - check = "Remove item " + item.name + " (" + item.stack + ") exceeds max stack of " + item.maxStack; + check = "Remove item " + item.Name + " (" + item.stack + ") exceeds max stack of " + item.maxStack; player.SendErrorMessage(check); break; } @@ -1118,12 +1118,12 @@ namespace TShockAPI // Please don't remove this for the time being; without it, players wearing banned equipment will only get debuffed once foreach (Item item in player.TPlayer.armor) { - if (Itembans.ItemIsBanned(item.name, player)) + if (Itembans.ItemIsBanned(item.Name, player)) { player.SetBuff(BuffID.Frozen, 330, true); player.SetBuff(BuffID.Stoned, 330, true); player.SetBuff(BuffID.Webbed, 330, true); - check = "Remove armor/accessory " + item.name; + check = "Remove armor/accessory " + item.Name; player.SendErrorMessage("You are wearing banned equipment. {0}", check); break; @@ -1131,12 +1131,12 @@ namespace TShockAPI } foreach (Item item in player.TPlayer.dye) { - if (Itembans.ItemIsBanned(item.name, player)) + if (Itembans.ItemIsBanned(item.Name, player)) { player.SetBuff(BuffID.Frozen, 330, true); player.SetBuff(BuffID.Stoned, 330, true); player.SetBuff(BuffID.Webbed, 330, true); - check = "Remove dye " + item.name; + check = "Remove dye " + item.Name; player.SendErrorMessage("You are wearing banned equipment. {0}", check); break; @@ -1144,12 +1144,12 @@ namespace TShockAPI } foreach (Item item in player.TPlayer.miscEquips) { - if (Itembans.ItemIsBanned(item.name, player)) + if (Itembans.ItemIsBanned(item.Name, player)) { player.SetBuff(BuffID.Frozen, 330, true); player.SetBuff(BuffID.Stoned, 330, true); player.SetBuff(BuffID.Webbed, 330, true); - check = "Remove misc equip " + item.name; + check = "Remove misc equip " + item.Name; player.SendErrorMessage("You are wearing banned equipment. {0}", check); break; @@ -1157,12 +1157,12 @@ namespace TShockAPI } foreach (Item item in player.TPlayer.miscDyes) { - if (Itembans.ItemIsBanned(item.name, player)) + if (Itembans.ItemIsBanned(item.Name, player)) { player.SetBuff(BuffID.Frozen, 330, true); player.SetBuff(BuffID.Stoned, 330, true); player.SetBuff(BuffID.Webbed, 330, true); - check = "Remove misc dye " + item.name; + check = "Remove misc dye " + item.Name; player.SendErrorMessage("You are wearing banned equipment. {0}", check); break; @@ -1989,7 +1989,7 @@ namespace TShockAPI { check = true; player.SendMessage( - String.Format("Stack cheat detected. Remove item {0} ({1}) and then rejoin", item.name, inventory[i].stack), + String.Format("Stack cheat detected. Remove item {0} ({1}) and then rejoin", item.Name, inventory[i].stack), Color.Cyan); } } @@ -2008,7 +2008,7 @@ namespace TShockAPI { check = true; player.SendMessage( - String.Format("Stack cheat detected. Remove armor {0} ({1}) and then rejoin", item.name, armor[index].stack), + String.Format("Stack cheat detected. Remove armor {0} ({1}) and then rejoin", item.Name, armor[index].stack), Color.Cyan); } } @@ -2027,7 +2027,7 @@ namespace TShockAPI { check = true; player.SendMessage( - String.Format("Stack cheat detected. Remove dye {0} ({1}) and then rejoin", item.name, dye[index].stack), + String.Format("Stack cheat detected. Remove dye {0} ({1}) and then rejoin", item.Name, dye[index].stack), Color.Cyan); } } @@ -2046,7 +2046,7 @@ namespace TShockAPI { check = true; player.SendMessage( - String.Format("Stack cheat detected. Remove item {0} ({1}) and then rejoin", item.name, miscEquips[index].stack), + String.Format("Stack cheat detected. Remove item {0} ({1}) and then rejoin", item.Name, miscEquips[index].stack), Color.Cyan); } } @@ -2065,7 +2065,7 @@ namespace TShockAPI { check = true; player.SendMessage( - String.Format("Stack cheat detected. Remove item dye {0} ({1}) and then rejoin", item.name, miscDyes[index].stack), + String.Format("Stack cheat detected. Remove item dye {0} ({1}) and then rejoin", item.Name, miscDyes[index].stack), Color.Cyan); } } @@ -2085,7 +2085,7 @@ namespace TShockAPI { check = true; player.SendMessage( - String.Format("Stack cheat detected. Remove Piggy-bank item {0} ({1}) and then rejoin", item.name, piggy[index].stack), + String.Format("Stack cheat detected. Remove Piggy-bank item {0} ({1}) and then rejoin", item.Name, piggy[index].stack), Color.Cyan); } } @@ -2105,7 +2105,7 @@ namespace TShockAPI { check = true; player.SendMessage( - String.Format("Stack cheat detected. Remove Safe item {0} ({1}) and then rejoin", item.name, safe[index].stack), + String.Format("Stack cheat detected. Remove Safe item {0} ({1}) and then rejoin", item.Name, safe[index].stack), Color.Cyan); } } @@ -2124,7 +2124,7 @@ namespace TShockAPI { check = true; player.SendMessage( - String.Format("Stack cheat detected. Remove trash item {0} ({1}) and then rejoin", item.name, trash.stack), + String.Format("Stack cheat detected. Remove trash item {0} ({1}) and then rejoin", item.Name, trash.stack), Color.Cyan); } } @@ -2144,7 +2144,7 @@ namespace TShockAPI { check = true; player.SendMessage( - String.Format("Stack cheat detected. Remove Defender's Forge item {0} ({1}) and then rejoin", item.name, forge[index].stack), + String.Format("Stack cheat detected. Remove Defender's Forge item {0} ({1}) and then rejoin", item.Name, forge[index].stack), Color.Cyan); } } diff --git a/TShockAPI/app.config b/TShockAPI/app.config index c5e7715e..1565cd9f 100644 --- a/TShockAPI/app.config +++ b/TShockAPI/app.config @@ -1,9 +1,9 @@ - + - - + + - + diff --git a/TShockAPI/web.config b/TShockAPI/web.config new file mode 100644 index 00000000..74c0d886 --- /dev/null +++ b/TShockAPI/web.config @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/scripts/create_release.py b/scripts/create_release.py index 94c85cb0..e6af6559 100755 --- a/scripts/create_release.py +++ b/scripts/create_release.py @@ -47,7 +47,7 @@ mysql_bin = os.path.join(cur_wd, "packages", "MySql.Data.6.9.8", "lib", "net45", sqlite_dep = os.path.join(cur_wd, "prebuilts", sqlite_dep_name) sqlite_bin = os.path.join(cur_wd, "prebuilts", sqlite_bin_name) http_bin = os.path.join(cur_wd, "prebuilts", http_bin_name) -json_bin = os.path.join(cur_wd, "packages", "Newtonsoft.Json.9.0.1", "lib", "net45", json_bin_name) +json_bin = os.path.join(cur_wd, "packages", "Newtonsoft.Json.10.0.2", "lib", "net45", json_bin_name) bcrypt_bin = os.path.join(cur_wd, "packages", "BCrypt.Net.0.1.0", "lib", "net35", bcrypt_bin_name) geoip_db = os.path.join(cur_wd, "prebuilts", geoip_db_name) release_bin = os.path.join(cur_wd, "TShockAPI", "bin", "Release", tshock_bin_name) From d2705d785b6fc21955a7370f2818ca80e72bb101 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 17:14:05 -0600 Subject: [PATCH 04/58] Update to OTAPI 2.0.0.19 / Terraria 1.3.5.1 --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 5a5b0e9e..cc479f6b 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 5a5b0e9ee39af91e4d584eaa63e5af104803200f +Subproject commit cc479f6b3e429f2ca5c9c2d1122385ca92a49276 From 46c42536c976416ffa63eb7f19227f4e8f6f6f23 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 17:22:46 -0600 Subject: [PATCH 05/58] Replace calls to Main.buffName to Lang.GetBuffName --- TShockAPI/Commands.cs | 4 ++-- TShockAPI/Utils.cs | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 04d19f70..9c6ca1bf 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -5517,7 +5517,7 @@ namespace TShockAPI } else if (found.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, found.Select(f => Main.buffName[f])); + TShock.Utils.SendMultipleMatchError(args.Player, found.Select(f => Lang.GetBuffName(f))); return; } id = found[0]; @@ -5568,7 +5568,7 @@ namespace TShockAPI } else if (found.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, found.Select(b => Main.buffName[b])); + TShock.Utils.SendMultipleMatchError(args.Player, found.Select(b => Lang.GetBuffName(b))); return; } id = found[0]; diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index df0c8a72..fd680370 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -435,7 +435,7 @@ namespace TShockAPI /// name public string GetBuffName(int id) { - return (id > 0 && id < Main.maxBuffTypes) ? Main.buffName[id] : "null"; + return (id > 0 && id < Main.maxBuffTypes) ? Lang.GetBuffName(id) : "null"; } /// @@ -445,7 +445,7 @@ namespace TShockAPI /// description public string GetBuffDescription(int id) { - return (id > 0 && id < Main.maxBuffTypes) ? Main.buffTip[id] : "null"; + return (id > 0 && id < Main.maxBuffTypes) ? Lang.GetBuffName(id) : "null"; } /// @@ -459,14 +459,14 @@ namespace TShockAPI string buffname; for (int i = 1; i < Main.maxBuffTypes; i++) { - buffname = Main.buffName[i]; + buffname = Lang.GetBuffName(i); if (!String.IsNullOrWhiteSpace(buffname) && buffname.ToLower() == nameLower) return new List {i}; } var found = new List(); for (int i = 1; i < Main.maxBuffTypes; i++) { - buffname = Main.buffName[i]; + buffname = Lang.GetBuffName(i); if (!String.IsNullOrWhiteSpace(buffname) && buffname.ToLower().StartsWith(nameLower)) found.Add(i); } @@ -1209,9 +1209,9 @@ namespace TShockAPI List elements = new List(); for (int i = 0; i < Main.maxBuffTypes; i++) { - if (!String.IsNullOrEmpty(Main.buffName[i])) + if (!String.IsNullOrEmpty(Lang.GetBuffName(i))) { - object[] element = new object[] { i, Main.buffName[i], Main.buffTip[i] }; + object[] element = new object[] { i, Lang.GetBuffName(i), Main.buffTip[i] }; elements.Add(element); } } From 95ad2aeeabace21ff13d0fdb61785b1a77994d83 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 17:25:33 -0600 Subject: [PATCH 06/58] Replace more name + Name calls --- TShockAPI/TShock.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 2ebb7ef4..cac3470d 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1094,10 +1094,10 @@ namespace TShockAPI { player.Disable(flags: flags); } - else if (Itembans.ItemIsBanned(player.TPlayer.inventory[player.TPlayer.selectedItem].name, player)) + else if (Itembans.ItemIsBanned(player.TPlayer.inventory[player.TPlayer.selectedItem].Name, player)) { - player.Disable($"holding banned item: {player.TPlayer.inventory[player.TPlayer.selectedItem].name}", flags); - player.SendErrorMessage($"You are holding a banned item: {player.TPlayer.inventory[player.TPlayer.selectedItem].name}"); + player.Disable($"holding banned item: {player.TPlayer.inventory[player.TPlayer.selectedItem].Name}", flags); + player.SendErrorMessage($"You are holding a banned item: {player.TPlayer.inventory[player.TPlayer.selectedItem].Name}"); } } else if (!Main.ServerSideCharacter || (Main.ServerSideCharacter && player.IsLoggedIn)) @@ -1174,10 +1174,10 @@ namespace TShockAPI { player.Disable(flags: flags); } - else if (Itembans.ItemIsBanned(player.TPlayer.inventory[player.TPlayer.selectedItem].name, player)) + else if (Itembans.ItemIsBanned(player.TPlayer.inventory[player.TPlayer.selectedItem].Name, player)) { - player.Disable($"holding banned item: {player.TPlayer.inventory[player.TPlayer.selectedItem].name}", flags); - player.SendErrorMessage($"You are holding a banned item: {player.TPlayer.inventory[player.TPlayer.selectedItem].name}"); + player.Disable($"holding banned item: {player.TPlayer.inventory[player.TPlayer.selectedItem].Name}", flags); + player.SendErrorMessage($"You are holding a banned item: {player.TPlayer.inventory[player.TPlayer.selectedItem].Name}"); } } From 2dee3edb3dd16a4bf350f2cac2876879a2d2fc83 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 17:33:17 -0600 Subject: [PATCH 07/58] Replace more .names with .FullName or .Name respectively --- TShockAPI/Commands.cs | 98 +++++++++++++++++++++---------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 9c6ca1bf..33d20ee1 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -2156,83 +2156,83 @@ namespace TShockAPI foreach (int i in npcIds) { npc.SetDefaults(i); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); } TSPlayer.All.SendSuccessMessage("{0} has spawned all bosses {1} time(s).", args.Player.Name, amount); return; case "brain": case "brain of cthulhu": npc.SetDefaults(266); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned the Brain of Cthulhu {1} time(s).", args.Player.Name, amount); return; case "destroyer": npc.SetDefaults(134); TSPlayer.Server.SetTime(false, 0.0); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned the Destroyer {1} time(s).", args.Player.Name, amount); return; case "duke": case "duke fishron": case "fishron": npc.SetDefaults(370); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned Duke Fishron {1} time(s).", args.Player.Name, amount); return; case "eater": case "eater of worlds": npc.SetDefaults(13); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned the Eater of Worlds {1} time(s).", args.Player.Name, amount); return; case "eye": case "eye of cthulhu": npc.SetDefaults(4); TSPlayer.Server.SetTime(false, 0.0); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned the Eye of Cthulhu {1} time(s).", args.Player.Name, amount); return; case "golem": npc.SetDefaults(245); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned Golem {1} time(s).", args.Player.Name, amount); return; case "king": case "king slime": npc.SetDefaults(50); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned King Slime {1} time(s).", args.Player.Name, amount); return; case "plantera": npc.SetDefaults(262); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned Plantera {1} time(s).", args.Player.Name, amount); return; case "prime": case "skeletron prime": npc.SetDefaults(127); TSPlayer.Server.SetTime(false, 0.0); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned Skeletron Prime {1} time(s).", args.Player.Name, amount); return; case "queen": case "queen bee": npc.SetDefaults(222); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned Queen Bee {1} time(s).", args.Player.Name, amount); return; case "skeletron": npc.SetDefaults(35); TSPlayer.Server.SetTime(false, 0.0); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned Skeletron {1} time(s).", args.Player.Name, amount); return; case "twins": TSPlayer.Server.SetTime(false, 0.0); npc.SetDefaults(125); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); npc.SetDefaults(126); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned the Twins {1} time(s).", args.Player.Name, amount); return; case "wof": @@ -2253,7 +2253,7 @@ namespace TShockAPI case "moon": case "moon lord": npc.SetDefaults(398); - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned the Moon Lord {1} time(s).", args.Player.Name, amount); return; default: @@ -2291,21 +2291,21 @@ namespace TShockAPI } else if (npcs.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => n.name)); + TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => n.FullName)); } else { var npc = npcs[0]; if (npc.type >= 1 && npc.type < Main.maxNPCTypes && npc.type != 113) { - TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY, 50, 20); + TSPlayer.Server.SpawnNPC(npc.type, npc.FullName, amount, args.Player.TileX, args.Player.TileY, 50, 20); if (args.Silent) { - args.Player.SendSuccessMessage("Spawned {0} {1} time(s).", npc.name, amount); + args.Player.SendSuccessMessage("Spawned {0} {1} time(s).", npc.FullName, amount); } else { - TSPlayer.All.SendSuccessMessage("{0} has spawned {1} {2} time(s).", args.Player.Name, npc.name, amount); + TSPlayer.All.SendSuccessMessage("{0} has spawned {1} {2} time(s).", args.Player.Name, npc.FullName, amount); } } else if (npc.type == 113) @@ -2533,18 +2533,18 @@ namespace TShockAPI var matches = new List(); foreach (var npc in Main.npc.Where(npc => npc.active)) { - if (string.Equals(npc.name, npcStr, StringComparison.CurrentCultureIgnoreCase)) + if (string.Equals(npc.FullName, npcStr, StringComparison.CurrentCultureIgnoreCase)) { matches = new List { npc }; break; } - if (npc.name.ToLower().StartsWith(npcStr.ToLower())) + if (npc.FullName.ToLower().StartsWith(npcStr.ToLower())) matches.Add(npc); } if (matches.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, matches.Select(n => n.name)); + TShock.Utils.SendMultipleMatchError(args.Player, matches.Select(n => n.FullName)); return; } if (matches.Count == 0) @@ -2555,7 +2555,7 @@ namespace TShockAPI var target = matches[0]; args.Player.Teleport(target.position.X, target.position.Y); - args.Player.SendSuccessMessage("Teleported to the '{0}'.", target.name); + args.Player.SendSuccessMessage("Teleported to the '{0}'.", target.FullName); } private static void GetPos(CommandArgs args) @@ -3202,12 +3202,12 @@ namespace TShockAPI } else if (items.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.name)); + TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.Name)); } else { - TShock.Itembans.AddNewBan(items[0].name); - args.Player.SendSuccessMessage("Banned " + items[0].name + "."); + TShock.Itembans.AddNewBan(items[0].Name); + args.Player.SendSuccessMessage("Banned " + items[0].Name + "."); } } #endregion @@ -3228,7 +3228,7 @@ namespace TShockAPI } else if (items.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.name)); + TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.Name)); } else { @@ -3238,20 +3238,20 @@ namespace TShockAPI return; } - ItemBan ban = TShock.Itembans.GetItemBanByName(items[0].name); + ItemBan ban = TShock.Itembans.GetItemBanByName(items[0].Name); if (ban == null) { - args.Player.SendErrorMessage("{0} is not banned.", items[0].name); + args.Player.SendErrorMessage("{0} is not banned.", items[0].Name); return; } if (!ban.AllowedGroups.Contains(args.Parameters[2])) { - TShock.Itembans.AllowGroup(items[0].name, args.Parameters[2]); - args.Player.SendSuccessMessage("{0} has been allowed to use {1}.", args.Parameters[2], items[0].name); + TShock.Itembans.AllowGroup(items[0].Name, args.Parameters[2]); + args.Player.SendSuccessMessage("{0} has been allowed to use {1}.", args.Parameters[2], items[0].Name); } else { - args.Player.SendWarningMessage("{0} is already allowed to use {1}.", args.Parameters[2], items[0].name); + args.Player.SendWarningMessage("{0} is already allowed to use {1}.", args.Parameters[2], items[0].Name); } } } @@ -3273,12 +3273,12 @@ namespace TShockAPI } else if (items.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.name)); + TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.Name)); } else { - TShock.Itembans.RemoveBan(items[0].name); - args.Player.SendSuccessMessage("Unbanned " + items[0].name + "."); + TShock.Itembans.RemoveBan(items[0].Name); + args.Player.SendSuccessMessage("Unbanned " + items[0].Name + "."); } } #endregion @@ -3299,7 +3299,7 @@ namespace TShockAPI } else if (items.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.name)); + TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.Name)); } else { @@ -3309,20 +3309,20 @@ namespace TShockAPI return; } - ItemBan ban = TShock.Itembans.GetItemBanByName(items[0].name); + ItemBan ban = TShock.Itembans.GetItemBanByName(items[0].Name); if (ban == null) { - args.Player.SendErrorMessage("{0} is not banned.", items[0].name); + args.Player.SendErrorMessage("{0} is not banned.", items[0].Name); return; } if (ban.AllowedGroups.Contains(args.Parameters[2])) { - TShock.Itembans.RemoveGroup(items[0].name, args.Parameters[2]); - args.Player.SendSuccessMessage("{0} has been disallowed to use {1}.", args.Parameters[2], items[0].name); + TShock.Itembans.RemoveGroup(items[0].Name, args.Parameters[2]); + args.Player.SendSuccessMessage("{0} has been disallowed to use {1}.", args.Parameters[2], items[0].Name); } else { - args.Player.SendWarningMessage("{0} is already disallowed to use {1}.", args.Parameters[2], items[0].name); + args.Player.SendWarningMessage("{0} is already disallowed to use {1}.", args.Parameters[2], items[0].Name); } } } @@ -5187,7 +5187,7 @@ namespace TShockAPI } else if (npcs.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => n.name)); + TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => n.FullName)); return; } else @@ -5242,7 +5242,7 @@ namespace TShockAPI } else if (matchedItems.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, matchedItems.Select(i => i.name)); + TShock.Utils.SendMultipleMatchError(args.Player, matchedItems.Select(i => i.Name)); return; } else @@ -5291,7 +5291,7 @@ namespace TShockAPI if (itemAmount == 0 || itemAmount > item.maxStack) itemAmount = item.maxStack; - if (args.Player.GiveItemCheck(item.type, item.name, item.width, item.height, itemAmount, prefixId)) + if (args.Player.GiveItemCheck(item.type, item.Name, item.width, item.height, itemAmount, prefixId)) { item.prefix = (byte)prefixId; args.Player.SendSuccessMessage("Gave {0} {1}(s).", itemAmount, item.AffixName()); @@ -5325,7 +5325,7 @@ namespace TShockAPI } else if (npcs.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => n.name)); + TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => n.FullName)); return; } else if (args.Parameters[1].Length > 200) @@ -5390,7 +5390,7 @@ namespace TShockAPI } else if (items.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.name)); + TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.Name)); } else { @@ -5430,10 +5430,10 @@ namespace TShockAPI { if (itemAmount == 0 || itemAmount > item.maxStack) itemAmount = item.maxStack; - if (plr.GiveItemCheck(item.type, item.name, item.width, item.height, itemAmount, prefix)) + if (plr.GiveItemCheck(item.type, item.Name, item.width, item.height, itemAmount, prefix)) { - args.Player.SendSuccessMessage(string.Format("Gave {0} {1} {2}(s).", plr.Name, itemAmount, item.name)); - plr.SendSuccessMessage(string.Format("{0} gave you {1} {2}(s).", args.Player.Name, itemAmount, item.name)); + args.Player.SendSuccessMessage(string.Format("Gave {0} {1} {2}(s).", plr.Name, itemAmount, item.Name)); + plr.SendSuccessMessage(string.Format("{0} gave you {1} {2}(s).", args.Player.Name, itemAmount, item.Name)); } else { From b8dbdb9ff4061577851e7ef87780c60b4bd4dab0 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 17:41:15 -0600 Subject: [PATCH 08/58] Final batch of .name changes --- TShockAPI/GetDataHandlers.cs | 18 +++++++++--------- TShockAPI/Rest/RestManager.cs | 4 ++-- TShockAPI/TSPlayer.cs | 2 +- TShockAPI/Utils.cs | 22 +++++++++++----------- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index a1677ae3..62107f3b 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -2149,7 +2149,7 @@ namespace TShockAPI args.Player.SendErrorMessage("You do not have permission to place actuators."); return true; } - if (TShock.Itembans.ItemIsBanned(selectedItem.name, args.Player) || editData >= (action == EditAction.PlaceTile ? Main.maxTileSets : Main.maxWallTypes)) + if (TShock.Itembans.ItemIsBanned(selectedItem.Name, args.Player) || editData >= (action == EditAction.PlaceTile ? Main.maxTileSets : Main.maxWallTypes)) { args.Player.SendTileSquare(tileX, tileY, 4); return true; @@ -2608,7 +2608,7 @@ namespace TShockAPI if (control[5]) { - string itemName = args.TPlayer.inventory[item].name; + string itemName = args.TPlayer.inventory[item].Name; if (TShock.Itembans.ItemIsBanned(itemName, args.Player)) { control[5] = false; @@ -2616,19 +2616,19 @@ namespace TShockAPI args.Player.SendErrorMessage("You cannot use {0} on this server. Your actions are being ignored.", itemName); } - if (args.TPlayer.inventory[item].name == "Mana Crystal" && args.Player.TPlayer.statManaMax <= 180) + if (args.TPlayer.inventory[item].Name == "Mana Crystal" && args.Player.TPlayer.statManaMax <= 180) { args.Player.TPlayer.statMana += 20; args.Player.TPlayer.statManaMax += 20; args.Player.PlayerData.maxMana += 20; } - else if (args.TPlayer.inventory[item].name == "Life Crystal" && args.Player.TPlayer.statLifeMax <= 380) + else if (args.TPlayer.inventory[item].Name == "Life Crystal" && args.Player.TPlayer.statLifeMax <= 380) { args.TPlayer.statLife += 20; args.TPlayer.statLifeMax += 20; args.Player.PlayerData.maxHealth += 20; } - else if (args.TPlayer.inventory[item].name == "Life Fruit" && args.Player.TPlayer.statLifeMax >= 400 && args.Player.TPlayer.statLifeMax <= 495) + else if (args.TPlayer.inventory[item].Name == "Life Fruit" && args.Player.TPlayer.statLifeMax >= 400 && args.Player.TPlayer.statLifeMax <= 495) { args.TPlayer.statLife += 5; args.TPlayer.statLifeMax += 5; @@ -3330,7 +3330,7 @@ namespace TShockAPI Item item = new Item(); item.netDefaults(type); - if (stacks > item.maxStack || TShock.Itembans.ItemIsBanned(item.name, args.Player)) + if (stacks > item.maxStack || TShock.Itembans.ItemIsBanned(item.Name, args.Player)) { return false; } @@ -3510,7 +3510,7 @@ namespace TShockAPI Item item = new Item(); item.netDefaults(type); - if ((stacks > item.maxStack || stacks <= 0) || (TShock.Itembans.ItemIsBanned(item.name, args.Player) && !args.Player.HasPermission(Permissions.allowdroppingbanneditems))) + if ((stacks > item.maxStack || stacks <= 0) || (TShock.Itembans.ItemIsBanned(item.Name, args.Player) && !args.Player.HasPermission(Permissions.allowdroppingbanneditems))) { args.Player.SendData(PacketTypes.ItemDrop, "", id); return true; @@ -3518,7 +3518,7 @@ namespace TShockAPI if ((Main.ServerSideCharacter) && (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond - args.Player.LoginMS < TShock.ServerSideCharacterConfig.LogonDiscardThreshold)) { //Player is probably trying to sneak items onto the server in their hands!!! - TShock.Log.ConsoleInfo("Player {0} tried to sneak {1} onto the server!", args.Player.Name, item.name); + TShock.Log.ConsoleInfo("Player {0} tried to sneak {1} onto the server!", args.Player.Name, item.Name); args.Player.SendData(PacketTypes.ItemDrop, "", id); return true; @@ -3932,7 +3932,7 @@ namespace TShockAPI boss = "a Goblin Invasion"; break; default: - boss = String.Format("the {0}", npc.name); + boss = String.Format("the {0}", npc.FullName); break; } if (TShock.Config.AnonymousBossInvasions) diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs index dfae9256..acc34661 100644 --- a/TShockAPI/Rest/RestManager.cs +++ b/TShockAPI/Rest/RestManager.cs @@ -940,9 +940,9 @@ namespace TShockAPI {"registered", player.User?.Registered}, {"muted", player.mute }, {"position", player.TileX + "," + player.TileY}, - {"inventory", string.Join(", ", inventory.Select(p => (p.name + ":" + p.stack)))}, + {"inventory", string.Join(", ", inventory.Select(p => (p.Name + ":" + p.stack)))}, {"armor", string.Join(", ", equipment.Select(p => (p.netID + ":" + p.prefix)))}, - {"dyes", string.Join(", ", dyes.Select(p => (p.name)))}, + {"dyes", string.Join(", ", dyes.Select(p => (p.Name)))}, {"buffs", string.Join(", ", player.TPlayer.buffType)} }; } diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 01d7ca54..26aee199 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -565,7 +565,7 @@ namespace TShockAPI { for (int i = 0; i < 50; i++) //51 is trash can, 52-55 is coins, 56-59 is ammo { - if (TPlayer.inventory[i] == null || !TPlayer.inventory[i].active || TPlayer.inventory[i].name == "") + if (TPlayer.inventory[i] == null || !TPlayer.inventory[i].active || TPlayer.inventory[i].Name == "") { flag = true; break; diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index fd680370..3da5c92e 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -348,11 +348,11 @@ namespace TShockAPI for (int i = -48; i < Main.maxItemTypes; i++) { item.netDefaults(i); - if (String.IsNullOrWhiteSpace(item.name)) + if (String.IsNullOrWhiteSpace(item.Name)) continue; - if (item.name.ToLower() == nameLower) + if (item.Name.ToLower() == nameLower) return new List { item }; - if (item.name.ToLower().StartsWith(nameLower)) + if (item.Name.ToLower().StartsWith(nameLower)) found.Add(item.Clone()); } return found; @@ -420,9 +420,9 @@ namespace TShockAPI for (int i = -17; i < Main.maxNPCTypes; i++) { npc.netDefaults(i); - if (npc.name.ToLower() == nameLower || npc.displayName.ToLower() == nameLower) + if (npc.FullName.ToLower() == nameLower || npc.TypeName.ToLower() == nameLower) return new List { npc }; - if (npc.name.ToLower().StartsWith(nameLower) || npc.displayName.ToLower().StartsWith(nameLower)) + if (npc.FullName.ToLower().StartsWith(nameLower) || npc.TypeName.ToLower().StartsWith(nameLower)) found.Add((NPC)npc.Clone()); } return found; @@ -1248,10 +1248,10 @@ namespace TShockAPI { Item item = new Item(); item.netDefaults(i); - if (!String.IsNullOrEmpty(item.name)) + if (!String.IsNullOrEmpty(item.Name)) { object[] element = new object[] { i, - newLine.Replace(item.name, @" "), + newLine.Replace(item.Name, @" "), newLine.Replace(item.toolTip, @" "), newLine.Replace(item.toolTip2, @" ") }; @@ -1288,9 +1288,9 @@ namespace TShockAPI { NPC npc = new NPC(); npc.netDefaults(i); - if (!String.IsNullOrEmpty(npc.name)) + if (!String.IsNullOrEmpty(npc.FullName)) { - object[] element = new object[] { i, npc.name, npc.displayName }; + object[] element = new object[] { i, npc.FullName, npc.displayName }; elements.Add(element); } } @@ -1324,9 +1324,9 @@ namespace TShockAPI { Projectile projectile = new Projectile(); projectile.SetDefaults(i); - if (!String.IsNullOrEmpty(projectile.name)) + if (!String.IsNullOrEmpty(projectile.Name)) { - object[] element = new object[] { i, projectile.name }; + object[] element = new object[] { i, projectile.Name }; elements.Add(element); } } From 2d145331726960430902896d85f8fac7fc6ba87d Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 18:21:34 -0600 Subject: [PATCH 09/58] Terraria 1.3.5 changes compile (NO GUARANTEES ON EXECUTING) --- TShockAPI/Commands.cs | 5 +- TShockAPI/GetDataHandlers.cs | 31 ++- TShockAPI/PlayerData.cs | 59 ++--- TShockAPI/TSPlayer.cs | 17 +- TShockAPI/TSServerPlayer.cs | 17 +- TShockAPI/TShock.cs | 23 +- TShockAPI/Utils.cs | 414 +++++++++++++++++------------------ 7 files changed, 279 insertions(+), 287 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 33d20ee1..292af8e9 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -27,6 +27,7 @@ using System.Text; using System.Threading; using Terraria; using Terraria.ID; +using Terraria.Localization; using TShockAPI.DB; using TerrariaApi.Server; using TShockAPI.Hooks; @@ -5343,8 +5344,8 @@ namespace TShockAPI { if (Main.npc[i].active && ((npcId == 0 && !Main.npc[i].townNPC) || (Main.npc[i].netID == npcId && Main.npc[i].townNPC))) { - Main.npc[i].displayName = args.Parameters[1]; - NetMessage.SendData(56, -1, -1, args.Parameters[1], i, 0f, 0f, 0f, 0); + Main.npc[i].GivenName = args.Parameters[1]; + NetMessage.SendData(56, -1, -1, NetworkText.FromLiteral(args.Parameters[1]), i, 0f, 0f, 0f, 0); done++; } } diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 62107f3b..cb94ef20 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -32,6 +32,7 @@ using Terraria; using Terraria.ObjectData; using Terraria.DataStructures; using Terraria.GameContent.Tile_Entities; +using Terraria.Localization; using Microsoft.Xna.Framework; using OTAPI.Tile; @@ -1494,7 +1495,7 @@ namespace TShockAPI args.Player.TPlayer.hideVisual[i] = hideVisual2[i]; args.Player.TPlayer.hideMisc = hideMisc; args.Player.TPlayer.extraAccessory = extraSlot; - NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, args.Player.Index, args.Player.Name, args.Player.Index); + NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, args.Player.Index, NetworkText.FromLiteral(args.Player.Name), args.Player.Index); return true; } if (TShock.Config.MediumcoreOnly && difficulty < 1) @@ -1678,7 +1679,7 @@ namespace TShockAPI return true; } - NetMessage.SendData((int)PacketTypes.TimeSet, -1, -1, "", Main.dayTime ? 1 : 0, (int)Main.time, Main.sunModY, Main.moonModY); + NetMessage.SendData((int)PacketTypes.TimeSet, -1, -1, NetworkText.FromLiteral(""), Main.dayTime ? 1 : 0, (int)Main.time, Main.sunModY, Main.moonModY); return false; } @@ -2719,13 +2720,11 @@ namespace TShockAPI args.TPlayer.Update(args.TPlayer.whoAmI); - NetMessage.SendData((int)PacketTypes.PlayerUpdate, -1, -1, "", args.Player.Index); + NetMessage.SendData((int)PacketTypes.PlayerUpdate, -1, -1, NetworkText.FromLiteral(""), args.Player.Index); return true; } - - - NetMessage.SendData((int)PacketTypes.PlayerUpdate, -1, args.Player.Index, "", args.Player.Index); + NetMessage.SendData((int)PacketTypes.PlayerUpdate, -1, args.Player.Index, NetworkText.FromLiteral(""), args.Player.Index); return true; } @@ -2981,7 +2980,7 @@ namespace TShockAPI if (OnKillMe(id, direction, dmg, pvp)) return true; - if (playerDeathReason.GetDeathText().Length > 500) + if (playerDeathReason.GetDeathText(TShock.Players[id].Name).ToString().Length > 500) { TShock.Utils.Kick(TShock.Players[id], "Crash attempt", true); return true; @@ -3478,7 +3477,7 @@ namespace TShockAPI return true; } - if (prefix > Item.maxPrefixes) //make sure the prefix is a legit value + if (prefix > PrefixID.Count) //make sure the prefix is a legit value { args.Player.SendData(PacketTypes.ItemDrop, "", id); return true; @@ -3830,7 +3829,7 @@ namespace TShockAPI } - NetMessage.SendData((int)PacketTypes.PlayerBuff, -1, args.Player.Index, "", args.Player.Index); + NetMessage.SendData((int)PacketTypes.PlayerBuff, -1, args.Player.Index, NetworkText.FromLiteral(""), args.Player.Index); return true; } @@ -4259,7 +4258,7 @@ namespace TShockAPI if (Main.npc[npcID]?.catchItem == 0) { Main.npc[npcID].active = true; - NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, "", npcID); + NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.FromLiteral(""), npcID); return true; } @@ -4276,13 +4275,13 @@ namespace TShockAPI if (projectile == null || !projectile.active) { - NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, "", npcIndex); + NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.FromLiteral(""), npcIndex); return true; } if (projectile.type != ProjectileID.PortalGunGate) { - NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, "", npcIndex); + NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.FromLiteral(""), npcIndex); return true; } @@ -4347,25 +4346,25 @@ namespace TShockAPI if (TShock.CheckIgnores(args.Player)) { - NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, "", itemFrame.ID, 0, 1); + NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.FromLiteral(""), itemFrame.ID, 0, 1); return true; } if (TShock.CheckTilePermission(args.Player, x, y)) { - NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, "", itemFrame.ID, 0, 1); + NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.FromLiteral(""), itemFrame.ID, 0, 1); return true; } if (TShock.CheckRangePermission(args.Player, x, y)) { - NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, "", itemFrame.ID, 0, 1); + NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.FromLiteral(""), itemFrame.ID, 0, 1); return true; } if (itemFrame.item?.netID == args.TPlayer.inventory[args.TPlayer.selectedItem]?.netID) { - NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, "", itemFrame.ID, 0, 1); + NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.FromLiteral(""), itemFrame.ID, 0, 1); return true; } diff --git a/TShockAPI/PlayerData.cs b/TShockAPI/PlayerData.cs index de5f68ed..ec7aa379 100644 --- a/TShockAPI/PlayerData.cs +++ b/TShockAPI/PlayerData.cs @@ -19,6 +19,7 @@ along with this program. If not, see . using Microsoft.Xna.Framework; using Terraria; using TShockAPI; +using Terraria.Localization; namespace TShockAPI { @@ -340,99 +341,99 @@ namespace TShockAPI float slot = 0f; for (int k = 0; k < NetItem.InventorySlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].inventory[k].Name, player.Index, slot, (float)Main.player[player.Index].inventory[k].prefix); + NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].inventory[k].Name), player.Index, slot, (float)Main.player[player.Index].inventory[k].prefix); slot++; } for (int k = 0; k < NetItem.ArmorSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].armor[k].Name, player.Index, slot, (float)Main.player[player.Index].armor[k].prefix); + NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].armor[k].Name), player.Index, slot, (float)Main.player[player.Index].armor[k].prefix); slot++; } for (int k = 0; k < NetItem.DyeSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].dye[k].Name, player.Index, slot, (float)Main.player[player.Index].dye[k].prefix); + NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].dye[k].Name), player.Index, slot, (float)Main.player[player.Index].dye[k].prefix); slot++; } for (int k = 0; k < NetItem.MiscEquipSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].miscEquips[k].Name, player.Index, slot, (float)Main.player[player.Index].miscEquips[k].prefix); + NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].miscEquips[k].Name), player.Index, slot, (float)Main.player[player.Index].miscEquips[k].prefix); slot++; } for (int k = 0; k < NetItem.MiscDyeSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].miscDyes[k].Name, player.Index, slot, (float)Main.player[player.Index].miscDyes[k].prefix); + NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].miscDyes[k].Name), player.Index, slot, (float)Main.player[player.Index].miscDyes[k].prefix); slot++; } for (int k = 0; k < NetItem.PiggySlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].bank.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank.item[k].prefix); + NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].bank.item[k].Name), player.Index, slot, (float)Main.player[player.Index].bank.item[k].prefix); slot++; } for (int k = 0; k < NetItem.SafeSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].bank2.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank2.item[k].prefix); + NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].bank2.item[k].Name), player.Index, slot, (float)Main.player[player.Index].bank2.item[k].prefix); slot++; } - NetMessage.SendData(5, -1, -1, Main.player[player.Index].trashItem.Name, player.Index, slot++, (float)Main.player[player.Index].trashItem.prefix); + NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].trashItem.Name), player.Index, slot++, (float)Main.player[player.Index].trashItem.prefix); for (int k = 0; k < NetItem.ForgeSlots; k++) { - NetMessage.SendData(5, -1, -1, Main.player[player.Index].bank3.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank3.item[k].prefix); + NetMessage.SendData(5, -1, -1, NetworkText.FromLiteral(Main.player[player.Index].bank3.item[k].Name), player.Index, slot, (float)Main.player[player.Index].bank3.item[k].prefix); slot++; } - NetMessage.SendData(4, -1, -1, player.Name, player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(42, -1, -1, "", player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(16, -1, -1, "", player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(4, -1, -1, NetworkText.FromLiteral(player.Name), player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(42, -1, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(16, -1, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); slot = 0f; for (int k = 0; k < NetItem.InventorySlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].inventory[k].Name, player.Index, slot, (float)Main.player[player.Index].inventory[k].prefix); + NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].inventory[k].Name), player.Index, slot, (float)Main.player[player.Index].inventory[k].prefix); slot++; } for (int k = 0; k < NetItem.ArmorSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].armor[k].Name, player.Index, slot, (float)Main.player[player.Index].armor[k].prefix); + NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].armor[k].Name), player.Index, slot, (float)Main.player[player.Index].armor[k].prefix); slot++; } for (int k = 0; k < NetItem.DyeSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].dye[k].Name, player.Index, slot, (float)Main.player[player.Index].dye[k].prefix); + NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].dye[k].Name), player.Index, slot, (float)Main.player[player.Index].dye[k].prefix); slot++; } for (int k = 0; k < NetItem.MiscEquipSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].miscEquips[k].Name, player.Index, slot, (float)Main.player[player.Index].miscEquips[k].prefix); + NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].miscEquips[k].Name), player.Index, slot, (float)Main.player[player.Index].miscEquips[k].prefix); slot++; } for (int k = 0; k < NetItem.MiscDyeSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].miscDyes[k].Name, player.Index, slot, (float)Main.player[player.Index].miscDyes[k].prefix); + NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].miscDyes[k].Name), player.Index, slot, (float)Main.player[player.Index].miscDyes[k].prefix); slot++; } for (int k = 0; k < NetItem.PiggySlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].bank.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank.item[k].prefix); + NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].bank.item[k].Name), player.Index, slot, (float)Main.player[player.Index].bank.item[k].prefix); slot++; } for (int k = 0; k < NetItem.SafeSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].bank2.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank2.item[k].prefix); + NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].bank2.item[k].Name), player.Index, slot, (float)Main.player[player.Index].bank2.item[k].prefix); slot++; } - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].trashItem.Name, player.Index, slot++, (float)Main.player[player.Index].trashItem.prefix); + NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].trashItem.Name), player.Index, slot++, (float)Main.player[player.Index].trashItem.prefix); for (int k = 0; k < NetItem.ForgeSlots; k++) { - NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].bank3.item[k].Name, player.Index, slot, (float)Main.player[player.Index].bank3.item[k].prefix); + NetMessage.SendData(5, player.Index, -1, NetworkText.FromLiteral(Main.player[player.Index].bank3.item[k].Name), player.Index, slot, (float)Main.player[player.Index].bank3.item[k].prefix); slot++; } - NetMessage.SendData(4, player.Index, -1, player.Name, player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(42, player.Index, -1, "", player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(16, player.Index, -1, "", player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(4, player.Index, -1, NetworkText.FromLiteral(player.Name), player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(42, player.Index, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(16, player.Index, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); for (int k = 0; k < 22; k++) { @@ -445,13 +446,13 @@ namespace TShockAPI * This is for when players login via uuid or serverpassword instead of via * the login command. */ - NetMessage.SendData(50, -1, -1, "", player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(50, player.Index, -1, "", player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(50, -1, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(50, player.Index, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(76, player.Index, -1, "", player.Index); - NetMessage.SendData(76, -1, -1, "", player.Index); + NetMessage.SendData(76, player.Index, -1, NetworkText.FromLiteral(""), player.Index); + NetMessage.SendData(76, -1, -1, NetworkText.FromLiteral(""), player.Index); - NetMessage.SendData(39, player.Index, -1, "", 400); + NetMessage.SendData(39, player.Index, -1, NetworkText.FromLiteral(""), 400); } } } diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 26aee199..d5c0684c 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -29,6 +29,7 @@ using OTAPI.Tile; using Terraria; using Terraria.DataStructures; using Terraria.ID; +using Terraria.Localization; using TShockAPI.DB; using TShockAPI.Hooks; using TShockAPI.Net; @@ -745,7 +746,7 @@ namespace TShockAPI SendTileSquare((int) (x/16), (int) (y/16), 15); TPlayer.Teleport(new Vector2(x, y), style); - NetMessage.SendData((int)PacketTypes.Teleport, -1, -1, "", 0, TPlayer.whoAmI, x, y, style); + NetMessage.SendData((int)PacketTypes.Teleport, -1, -1, NetworkText.FromLiteral(""), 0, TPlayer.whoAmI, x, y, style); return true; } @@ -755,7 +756,7 @@ namespace TShockAPI /// Heal health amount. public void Heal(int health = 600) { - NetMessage.SendData((int)PacketTypes.PlayerHealOther, -1, -1, "", this.TPlayer.whoAmI, health); + NetMessage.SendData((int)PacketTypes.PlayerHealOther, -1, -1, NetworkText.FromLiteral(""), this.TPlayer.whoAmI, health); } /// @@ -905,8 +906,8 @@ namespace TShockAPI Main.item[itemid].prefix = (byte) prefix; Main.item[itemid].noGrabDelay = 1; Main.item[itemid].velocity = Main.player[this.Index].velocity; - NetMessage.SendData((int)PacketTypes.ItemDrop, -1, -1, "", itemid, 0f, 0f, 0f); - NetMessage.SendData((int)PacketTypes.ItemOwner, -1, -1, "", itemid, 0f, 0f, 0f); + NetMessage.SendData((int)PacketTypes.ItemDrop, -1, -1, NetworkText.FromLiteral(""), itemid, 0f, 0f, 0f); + NetMessage.SendData((int)PacketTypes.ItemOwner, -1, -1, NetworkText.FromLiteral(""), itemid, 0f, 0f, 0f); } /// @@ -1066,8 +1067,8 @@ namespace TShockAPI public virtual void SetTeam(int team) { Main.player[Index].team = team; - NetMessage.SendData((int)PacketTypes.PlayerTeam, -1, -1, "", Index); - NetMessage.SendData((int)PacketTypes.PlayerTeam, -1, Index, "", Index); + NetMessage.SendData((int)PacketTypes.PlayerTeam, -1, -1, NetworkText.FromLiteral(""), Index); + NetMessage.SendData((int)PacketTypes.PlayerTeam, -1, Index, NetworkText.FromLiteral(""), Index); } private DateTime LastDisableNotification = DateTime.UtcNow; @@ -1185,7 +1186,7 @@ namespace TShockAPI if (RealPlayer && !ConnectionAlive) return; - NetMessage.SendData((int) msgType, Index, -1, text, number, number2, number3, number4, number5); + NetMessage.SendData((int) msgType, Index, -1, NetworkText.FromFormattable(text), number, number2, number3, number4, number5); } /// @@ -1204,7 +1205,7 @@ namespace TShockAPI if (RealPlayer && !ConnectionAlive) return; - NetMessage.SendData((int) msgType, Index, -1, text, ply, number2, number3, number4, number5); + NetMessage.SendData((int) msgType, Index, -1, NetworkText.FromFormattable(text), ply, number2, number3, number4, number5); } /// diff --git a/TShockAPI/TSServerPlayer.cs b/TShockAPI/TSServerPlayer.cs index 8c6eac3b..1ed0cb9b 100644 --- a/TShockAPI/TSServerPlayer.cs +++ b/TShockAPI/TSServerPlayer.cs @@ -24,6 +24,7 @@ using Terraria; using Terraria.Utilities; using TShockAPI; using TShockAPI.DB; +using Terraria.Localization; namespace TShockAPI { @@ -152,15 +153,11 @@ namespace TShockAPI TShock.Utils.GetRandomClearTileWithInRange(startTileX, startTileY, tileXRange, tileYRange, out spawnTileX, out spawnTileY); int npcid = NPC.NewNPC(spawnTileX * 16, spawnTileY * 16, type, 0); - // This is for special slimes - if (type == 1) - { - Main.npc[npcid].SetDefaults(name); - } - else - { - Main.npc[npcid].netDefaults(type); - } + + // TODO: If special slimes break look at the git blame for this spot + // It's probably because I removed something that didn't work + Main.npc[npcid].SetDefaults(type); + } } @@ -171,7 +168,7 @@ namespace TShockAPI Main.rand = new UnifiedRandom(); Main.npc[npcid].StrikeNPC(damage, knockBack, hitDirection); - NetMessage.SendData((int)PacketTypes.NpcStrike, -1, -1, "", npcid, damage, knockBack, hitDirection); + NetMessage.SendData((int)PacketTypes.NpcStrike, -1, -1, NetworkText.FromLiteral(""), npcid, damage, knockBack, hitDirection); } public void RevertTiles(Dictionary tiles) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index cac3470d..32881120 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -34,6 +34,7 @@ using Newtonsoft.Json; using Rests; using Terraria; using Terraria.ID; +using Terraria.Localization; using TerrariaApi.Server; using TShockAPI.DB; using TShockAPI.Hooks; @@ -710,16 +711,8 @@ namespace TShockAPI .AddFlag("-lang", (l) => { - int lang; - if (int.TryParse(l, out lang)) - { - Lang.lang = lang; - ServerApi.LogWriter.PluginWriteLine(this, string.Format("Language index set to {0}.", lang), TraceLevel.Verbose); - } - else - { - ServerApi.LogWriter.PluginWriteLine(this, "Invalid value given for command line argument \"-lang\".", TraceLevel.Warning); - } + LanguageManager.Instance.SetLanguage(l); + ServerApi.LogWriter.PluginWriteLine(this, string.Format("Language attempted to be set to {0}.", l), TraceLevel.Verbose); }) .AddFlag("-autocreate", (size) => @@ -735,7 +728,7 @@ namespace TShockAPI //Flags without arguments .AddFlag("-logclear", () => LogClear = true) .AddFlag("-autoshutdown", () => Main.instance.EnableAutoShutdown()) - .AddFlag("-dump", () => Utils.Dump()) + // .AddFlag("-dump", () => Utils.Dump()) .AddFlag("--stats-optout", () => StatTracker.OptOut = true) .AddFlag("--no-restart", () => NoRestart = true); @@ -1258,7 +1251,7 @@ namespace TShockAPI { if (ShuttingDown) { - NetMessage.SendData((int)PacketTypes.Disconnect, args.Who, -1, "Server is shutting down..."); + NetMessage.SendData((int)PacketTypes.Disconnect, args.Who, -1, NetworkText.FromLiteral("Server is shutting down...")); args.Handled = true; return; } @@ -1491,12 +1484,12 @@ namespace TShockAPI Player ply = Main.player[args.Who]; string name = ply.name; ply.name = String.Format(Config.ChatAboveHeadsFormat, tsplr.Group.Name, tsplr.Group.Prefix, tsplr.Name, tsplr.Group.Suffix); - NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, -1, ply.name, args.Who, 0, 0, 0, 0); + NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, -1, NetworkText.FromLiteral(ply.name), args.Who, 0, 0, 0, 0); ply.name = name; var text = args.Text; Hooks.PlayerHooks.OnPlayerChat(tsplr, args.Text, ref text); - NetMessage.SendData((int)PacketTypes.ChatText, -1, args.Who, text, args.Who, tsplr.Group.R, tsplr.Group.G, tsplr.Group.B); - NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, -1, name, args.Who, 0, 0, 0, 0); + NetMessage.SendData((int)PacketTypes.ChatText, -1, args.Who, NetworkText.FromFormattable(text), args.Who, tsplr.Group.R, tsplr.Group.G, tsplr.Group.B); + NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, -1, NetworkText.FromLiteral(name), args.Who, 0, 0, 0, 0); string msg = String.Format("<{0}> {1}", String.Format(Config.ChatAboveHeadsFormat, tsplr.Group.Name, tsplr.Group.Prefix, tsplr.Name, tsplr.Group.Suffix), diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index 3da5c92e..a019b8bc 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -403,7 +403,7 @@ namespace TShockAPI public NPC GetNPCById(int id) { NPC npc = new NPC(); - npc.netDefaults(id); + npc.SetDefaults(id); return npc; } @@ -419,7 +419,7 @@ namespace TShockAPI string nameLower = name.ToLower(); for (int i = -17; i < Main.maxNPCTypes; i++) { - npc.netDefaults(i); + npc.SetDefaults(i); if (npc.FullName.ToLower() == nameLower || npc.TypeName.ToLower() == nameLower) return new List { npc }; if (npc.FullName.ToLower().StartsWith(nameLower) || npc.TypeName.ToLower().StartsWith(nameLower)) @@ -480,7 +480,7 @@ namespace TShockAPI /// Prefix name public string GetPrefixById(int id) { - return id < FirstItemPrefix || id > LastItemPrefix ? "" : Lang.prefix[id] ?? ""; + return id < FirstItemPrefix || id > LastItemPrefix ? "" : Lang.prefix[id].ToString() ?? ""; } /// @@ -1166,237 +1166,237 @@ namespace TShockAPI return points; } - /// - /// Dumps information and optionally exits afterwards - /// - /// - public void Dump(bool exit = true) - { - PrepareLangForDump(); - Lang.setLang(true); - ConfigFile.DumpDescriptions(); - Permissions.DumpDescriptions(); - ServerSideCharacters.ServerSideConfig.DumpDescriptions(); - RestManager.DumpDescriptions(); - DumpBuffs("BuffList.txt"); - DumpItems("Items-1_0.txt", -48, 235); - DumpItems("Items-1_1.txt", 235, 604); - DumpItems("Items-1_2.txt", 604, 2749); - DumpItems("Items-1_3.txt", 2749, Main.maxItemTypes); - DumpNPCs("NPCs.txt"); - DumpProjectiles("Projectiles.txt"); - DumpPrefixes("Prefixes.txt"); - if (exit) - { - Environment.Exit(1); - } - } + // /// + // /// Dumps information and optionally exits afterwards + // /// + // /// + // public void Dump(bool exit = true) + // { + // PrepareLangForDump(); + // Lang.setLang(true); + // ConfigFile.DumpDescriptions(); + // Permissions.DumpDescriptions(); + // ServerSideCharacters.ServerSideConfig.DumpDescriptions(); + // RestManager.DumpDescriptions(); + // DumpBuffs("BuffList.txt"); + // DumpItems("Items-1_0.txt", -48, 235); + // DumpItems("Items-1_1.txt", 235, 604); + // DumpItems("Items-1_2.txt", 604, 2749); + // DumpItems("Items-1_3.txt", 2749, Main.maxItemTypes); + // DumpNPCs("NPCs.txt"); + // DumpProjectiles("Projectiles.txt"); + // DumpPrefixes("Prefixes.txt"); + // if (exit) + // { + // Environment.Exit(1); + // } + // } - internal void PrepareLangForDump() - { - for(int i = 0; i < Main.recipe.Length; i++) - Main.recipe[i] = new Recipe(); - } + // internal void PrepareLangForDump() + // { + // for(int i = 0; i < Main.recipe.Length; i++) + // Main.recipe[i] = new Recipe(); + // } - public void DumpBuffs(string path) - { - StringBuilder buffer = new StringBuilder(); - buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); - buffer.AppendLine(" \"h-0\": \"ID\","); - buffer.AppendLine(" \"h-1\": \"Name\","); - buffer.AppendLine(" \"h-2\": \"Description\","); + // public void DumpBuffs(string path) + // { + // StringBuilder buffer = new StringBuilder(); + // buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); + // buffer.AppendLine(" \"h-0\": \"ID\","); + // buffer.AppendLine(" \"h-1\": \"Name\","); + // buffer.AppendLine(" \"h-2\": \"Description\","); - List elements = new List(); - for (int i = 0; i < Main.maxBuffTypes; i++) - { - if (!String.IsNullOrEmpty(Lang.GetBuffName(i))) - { - object[] element = new object[] { i, Lang.GetBuffName(i), Main.buffTip[i] }; - elements.Add(element); - } - } + // List elements = new List(); + // for (int i = 0; i < Main.maxBuffTypes; i++) + // { + // if (!String.IsNullOrEmpty(Lang.GetBuffName(i))) + // { + // object[] element = new object[] { i, Lang.GetBuffName(i), Main.buffTip[i] }; + // elements.Add(element); + // } + // } - var rows = elements.Count; - var columns = 0; - if (rows > 0) - { - columns = elements[0].Length; - } - OutputElementsForDump(buffer, elements, rows, columns); + // var rows = elements.Count; + // var columns = 0; + // if (rows > 0) + // { + // columns = elements[0].Length; + // } + // OutputElementsForDump(buffer, elements, rows, columns); - buffer.AppendLine(); - buffer.AppendLine(" },"); - buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); - buffer.AppendLine("}").Append("[/block]"); + // buffer.AppendLine(); + // buffer.AppendLine(" },"); + // buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); + // buffer.AppendLine("}").Append("[/block]"); - File.WriteAllText(path, buffer.ToString()); - } + // File.WriteAllText(path, buffer.ToString()); + // } - public void DumpItems(string path, int start, int end) - { - Main.player[Main.myPlayer] = new Player(); - StringBuilder buffer = new StringBuilder(); - Regex newLine = new Regex(@"\n"); - buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); - buffer.AppendLine(" \"h-0\": \"ID\","); - buffer.AppendLine(" \"h-1\": \"Name\","); - buffer.AppendLine(" \"h-2\": \"Tooltip\","); - buffer.AppendLine(" \"h-3\": \"Tooltip 2\","); + // public void DumpItems(string path, int start, int end) + // { + // Main.player[Main.myPlayer] = new Player(); + // StringBuilder buffer = new StringBuilder(); + // Regex newLine = new Regex(@"\n"); + // buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); + // buffer.AppendLine(" \"h-0\": \"ID\","); + // buffer.AppendLine(" \"h-1\": \"Name\","); + // buffer.AppendLine(" \"h-2\": \"Tooltip\","); + // buffer.AppendLine(" \"h-3\": \"Tooltip 2\","); - List elements = new List(); - for (int i = start; i < end; i++) - { - Item item = new Item(); - item.netDefaults(i); - if (!String.IsNullOrEmpty(item.Name)) - { - object[] element = new object[] { i, - newLine.Replace(item.Name, @" "), - newLine.Replace(item.toolTip, @" "), - newLine.Replace(item.toolTip2, @" ") - }; - elements.Add(element); - } - } + // List elements = new List(); + // for (int i = start; i < end; i++) + // { + // Item item = new Item(); + // item.netDefaults(i); + // if (!String.IsNullOrEmpty(item.Name)) + // { + // object[] element = new object[] { i, + // newLine.Replace(item.Name, @" "), + // newLine.Replace(item.toolTip, @" "), + // newLine.Replace(item.toolTip2, @" ") + // }; + // elements.Add(element); + // } + // } - var rows = elements.Count; - var columns = 0; - if (rows > 0) - { - columns = elements[0].Length; - } - OutputElementsForDump(buffer, elements, rows, columns); + // var rows = elements.Count; + // var columns = 0; + // if (rows > 0) + // { + // columns = elements[0].Length; + // } + // OutputElementsForDump(buffer, elements, rows, columns); - buffer.AppendLine(); - buffer.AppendLine(" },"); - buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); - buffer.AppendLine("}").Append("[/block]"); + // buffer.AppendLine(); + // buffer.AppendLine(" },"); + // buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); + // buffer.AppendLine("}").Append("[/block]"); - File.WriteAllText(path, buffer.ToString()); - } + // File.WriteAllText(path, buffer.ToString()); + // } - public void DumpNPCs(string path) - { - StringBuilder buffer = new StringBuilder(); - buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); - buffer.AppendLine(" \"h-0\": \"ID\","); - buffer.AppendLine(" \"h-1\": \"Name\","); - buffer.AppendLine(" \"h-2\": \"Display Name\","); + // public void DumpNPCs(string path) + // { + // StringBuilder buffer = new StringBuilder(); + // buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); + // buffer.AppendLine(" \"h-0\": \"ID\","); + // buffer.AppendLine(" \"h-1\": \"Name\","); + // buffer.AppendLine(" \"h-2\": \"Display Name\","); - List elements = new List(); - for (int i = -65; i < Main.maxNPCTypes; i++) - { - NPC npc = new NPC(); - npc.netDefaults(i); - if (!String.IsNullOrEmpty(npc.FullName)) - { - object[] element = new object[] { i, npc.FullName, npc.displayName }; - elements.Add(element); - } - } + // List elements = new List(); + // for (int i = -65; i < Main.maxNPCTypes; i++) + // { + // NPC npc = new NPC(); + // npc.netDefaults(i); + // if (!String.IsNullOrEmpty(npc.FullName)) + // { + // object[] element = new object[] { i, npc.FullName, npc.displayName }; + // elements.Add(element); + // } + // } - var rows = elements.Count; - var columns = 0; - if (rows > 0) - { - columns = elements[0].Length; - } - OutputElementsForDump(buffer, elements, rows, columns); + // var rows = elements.Count; + // var columns = 0; + // if (rows > 0) + // { + // columns = elements[0].Length; + // } + // OutputElementsForDump(buffer, elements, rows, columns); - buffer.AppendLine(); - buffer.AppendLine(" },"); - buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); - buffer.AppendLine("}").Append("[/block]"); + // buffer.AppendLine(); + // buffer.AppendLine(" },"); + // buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); + // buffer.AppendLine("}").Append("[/block]"); - File.WriteAllText(path, buffer.ToString()); - } + // File.WriteAllText(path, buffer.ToString()); + // } - public void DumpProjectiles(string path) - { - Main.rand = new UnifiedRandom(); - StringBuilder buffer = new StringBuilder(); - buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); - buffer.AppendLine(" \"h-0\": \"ID\","); - buffer.AppendLine(" \"h-1\": \"Name\","); + // public void DumpProjectiles(string path) + // { + // Main.rand = new UnifiedRandom(); + // StringBuilder buffer = new StringBuilder(); + // buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); + // buffer.AppendLine(" \"h-0\": \"ID\","); + // buffer.AppendLine(" \"h-1\": \"Name\","); - List elements = new List(); - for (int i = 0; i < Main.maxProjectileTypes; i++) - { - Projectile projectile = new Projectile(); - projectile.SetDefaults(i); - if (!String.IsNullOrEmpty(projectile.Name)) - { - object[] element = new object[] { i, projectile.Name }; - elements.Add(element); - } - } + // List elements = new List(); + // for (int i = 0; i < Main.maxProjectileTypes; i++) + // { + // Projectile projectile = new Projectile(); + // projectile.SetDefaults(i); + // if (!String.IsNullOrEmpty(projectile.Name)) + // { + // object[] element = new object[] { i, projectile.Name }; + // elements.Add(element); + // } + // } - var rows = elements.Count; - var columns = 0; - if (rows > 0) - { - columns = elements[0].Length; - } - OutputElementsForDump(buffer, elements, rows, columns); + // var rows = elements.Count; + // var columns = 0; + // if (rows > 0) + // { + // columns = elements[0].Length; + // } + // OutputElementsForDump(buffer, elements, rows, columns); - buffer.AppendLine(); - buffer.AppendLine(" },"); - buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); - buffer.AppendLine("}").Append("[/block]"); + // buffer.AppendLine(); + // buffer.AppendLine(" },"); + // buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); + // buffer.AppendLine("}").Append("[/block]"); - File.WriteAllText(path, buffer.ToString()); - } + // File.WriteAllText(path, buffer.ToString()); + // } - public void DumpPrefixes(string path) - { - StringBuilder buffer = new StringBuilder(); - buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); - buffer.AppendLine(" \"h-0\": \"ID\","); - buffer.AppendLine(" \"h-1\": \"Name\","); + // public void DumpPrefixes(string path) + // { + // StringBuilder buffer = new StringBuilder(); + // buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); + // buffer.AppendLine(" \"h-0\": \"ID\","); + // buffer.AppendLine(" \"h-1\": \"Name\","); - List elements = new List(); - for (int i = 0; i < Item.maxPrefixes; i++) - { - string prefix = Lang.prefix[i]; + // List elements = new List(); + // for (int i = 0; i < Item.maxPrefixes; i++) + // { + // string prefix = Lang.prefix[i].ToString(); - if (!String.IsNullOrEmpty(prefix)) - { - object[] element = new object[] {i, prefix}; - elements.Add(element); - } - } + // if (!String.IsNullOrEmpty(prefix)) + // { + // object[] element = new object[] {i, prefix}; + // elements.Add(element); + // } + // } - var rows = elements.Count; - var columns = 0; - if (rows > 0) - { - columns = elements[0].Length; - } - OutputElementsForDump(buffer, elements, rows, columns); + // var rows = elements.Count; + // var columns = 0; + // if (rows > 0) + // { + // columns = elements[0].Length; + // } + // OutputElementsForDump(buffer, elements, rows, columns); - buffer.AppendLine(); - buffer.AppendLine(" },"); - buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); - buffer.AppendLine("}").Append("[/block]"); + // buffer.AppendLine(); + // buffer.AppendLine(" },"); + // buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); + // buffer.AppendLine("}").Append("[/block]"); - File.WriteAllText(path, buffer.ToString()); - } + // File.WriteAllText(path, buffer.ToString()); + // } - private void OutputElementsForDump(StringBuilder buffer, List elements, int rows, int columns) - { - if (rows > 0) - { - columns = elements[0].Length; - for (int i = 0; i < columns; i++) - { - for (int j = 0; j < rows; j++) - { - buffer.Append(String.Format(" \"{0}-{1}\": \"{2}\"", j, i, elements[j][i])); - if (j != rows - 1 || i != columns - 1) - buffer.AppendLine(","); - } - } - } - } + // private void OutputElementsForDump(StringBuilder buffer, List elements, int rows, int columns) + // { + // if (rows > 0) + // { + // columns = elements[0].Length; + // for (int i = 0; i < columns; i++) + // { + // for (int j = 0; j < rows; j++) + // { + // buffer.Append(String.Format(" \"{0}-{1}\": \"{2}\"", j, i, elements[j][i])); + // if (j != rows - 1 || i != columns - 1) + // buffer.AppendLine(","); + // } + // } + // } + // } } } From 7d71a888c7348714207b6827fc5de0c5929527e3 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 18:25:01 -0600 Subject: [PATCH 10/58] Please json library --- scripts/create_release.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/create_release.py b/scripts/create_release.py index e6af6559..94c85cb0 100755 --- a/scripts/create_release.py +++ b/scripts/create_release.py @@ -47,7 +47,7 @@ mysql_bin = os.path.join(cur_wd, "packages", "MySql.Data.6.9.8", "lib", "net45", sqlite_dep = os.path.join(cur_wd, "prebuilts", sqlite_dep_name) sqlite_bin = os.path.join(cur_wd, "prebuilts", sqlite_bin_name) http_bin = os.path.join(cur_wd, "prebuilts", http_bin_name) -json_bin = os.path.join(cur_wd, "packages", "Newtonsoft.Json.10.0.2", "lib", "net45", json_bin_name) +json_bin = os.path.join(cur_wd, "packages", "Newtonsoft.Json.9.0.1", "lib", "net45", json_bin_name) bcrypt_bin = os.path.join(cur_wd, "packages", "BCrypt.Net.0.1.0", "lib", "net35", bcrypt_bin_name) geoip_db = os.path.join(cur_wd, "prebuilts", geoip_db_name) release_bin = os.path.join(cur_wd, "TShockAPI", "bin", "Release", tshock_bin_name) From 1be1a5385b364de4c19035c5ee88cdd8c23650ab Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 19 Apr 2017 22:20:35 -0600 Subject: [PATCH 11/58] Add webhook --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index e7d8daa7..5e74512c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,4 +6,6 @@ install: script: python ./scripts/create_release.py notifications: slack: - secure: O4Nibe2fdaUa2ZxuETUg6WEoQKvNM2CotnfaIVgm3fjfe61dfE1P+EgTpbwDG8646jSmpTqMDw8Z6I/WJwGTlXV/ZQsbwu63Cps4MgOTvPHZ0Lsye5azySlJZs1iI4ItYSj2czXfcnJ+qAl1SOOkXJrjB5uyTMWtDpCrSCFB3MA= \ No newline at end of file + secure: O4Nibe2fdaUa2ZxuETUg6WEoQKvNM2CotnfaIVgm3fjfe61dfE1P+EgTpbwDG8646jSmpTqMDw8Z6I/WJwGTlXV/ZQsbwu63Cps4MgOTvPHZ0Lsye5azySlJZs1iI4ItYSj2czXfcnJ+qAl1SOOkXJrjB5uyTMWtDpCrSCFB3MA= + webhooks: + secure: dbTvcMtts5hSgV3DvlHPh36LTOvSPzQbVRUrgN9j0M/MlCm1QlBVt1vDLzN8VbkSYXiJYVWGMDpSHApL6SBu7sEQaXeC4zZyTMX76PeKw5a5xh0mIdDyg8Ls9WVA+QDVGes5DA1CZWbVRBDto3U0c+Ob8iza3o01sEFWpm7wQg4= \ No newline at end of file From 5165f939bdc4134d5210fc747ce2fc4234e4828c Mon Sep 17 00:00:00 2001 From: White Date: Thu, 20 Apr 2017 14:17:35 +0930 Subject: [PATCH 12/58] Submodule update --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index cc479f6b..5b6449c0 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit cc479f6b3e429f2ca5c9c2d1122385ca92a49276 +Subproject commit 5b6449c0ca98d51ca50eb4f29002c40e688c1ff7 From 72677506d635d432fafb1efd608abb885bf2230a Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Thu, 20 Apr 2017 00:06:27 -0600 Subject: [PATCH 13/58] Update to API 2.1 --- TShockAPI/TShock.cs | 2 +- TerrariaServerAPI | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 32881120..27e0d6c2 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -50,7 +50,7 @@ namespace TShockAPI /// This is the TShock main class. TShock is a plugin on the TerrariaServerAPI, so it extends the base TerrariaPlugin. /// TShock also complies with the API versioning system, and defines its required API version here. /// - [ApiVersion(2, 0)] + [ApiVersion(2, 1)] public class TShock : TerrariaPlugin { /// VersionNum - The version number the TerrariaAPI will return back to the API. We just use the Assembly info. diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 5b6449c0..3a65dff3 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 5b6449c0ca98d51ca50eb4f29002c40e688c1ff7 +Subproject commit 3a65dff3198854b68d450df02beb07febaf40d66 From 59dc595f6b3d0f6388e91fdc14183247e25840d3 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Thu, 20 Apr 2017 00:11:09 -0600 Subject: [PATCH 14/58] Update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd540a7d..1d13820d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin ## Upcoming Changes +* Updated OpenTerraria API to 1.3.5.1 (@DeathCradle) +* Updated Terraria Server API to 1.3.5.1 (@WhiteXZ, @hakusaro) +* Updated TShock core components to 1.3.5.1 (@hakusaro) +* Terraria Server API version tick: 2.1 ## TShock 4.3.23 * Added evil type option during world creation (@mistzzt) From 9b419467d66a9618adf412ce33ad8c382beb9d13 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Thu, 20 Apr 2017 00:31:33 -0600 Subject: [PATCH 15/58] Replace NetworkText.FromLiteral("") with NetworkText.Empty Thanks @deadsurgeon42 --- TShockAPI/GetDataHandlers.cs | 22 +++++++++++----------- TShockAPI/PlayerData.cs | 18 +++++++++--------- TShockAPI/TSPlayer.cs | 12 ++++++------ TShockAPI/TSServerPlayer.cs | 2 +- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index cb94ef20..563ee8ea 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -1679,7 +1679,7 @@ namespace TShockAPI return true; } - NetMessage.SendData((int)PacketTypes.TimeSet, -1, -1, NetworkText.FromLiteral(""), Main.dayTime ? 1 : 0, (int)Main.time, Main.sunModY, Main.moonModY); + NetMessage.SendData((int)PacketTypes.TimeSet, -1, -1, NetworkText.Empty, Main.dayTime ? 1 : 0, (int)Main.time, Main.sunModY, Main.moonModY); return false; } @@ -2720,11 +2720,11 @@ namespace TShockAPI args.TPlayer.Update(args.TPlayer.whoAmI); - NetMessage.SendData((int)PacketTypes.PlayerUpdate, -1, -1, NetworkText.FromLiteral(""), args.Player.Index); + NetMessage.SendData((int)PacketTypes.PlayerUpdate, -1, -1, NetworkText.Empty, args.Player.Index); return true; } - NetMessage.SendData((int)PacketTypes.PlayerUpdate, -1, args.Player.Index, NetworkText.FromLiteral(""), args.Player.Index); + NetMessage.SendData((int)PacketTypes.PlayerUpdate, -1, args.Player.Index, NetworkText.Empty, args.Player.Index); return true; } @@ -3829,7 +3829,7 @@ namespace TShockAPI } - NetMessage.SendData((int)PacketTypes.PlayerBuff, -1, args.Player.Index, NetworkText.FromLiteral(""), args.Player.Index); + NetMessage.SendData((int)PacketTypes.PlayerBuff, -1, args.Player.Index, NetworkText.Empty, args.Player.Index); return true; } @@ -4258,7 +4258,7 @@ namespace TShockAPI if (Main.npc[npcID]?.catchItem == 0) { Main.npc[npcID].active = true; - NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.FromLiteral(""), npcID); + NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.Empty, npcID); return true; } @@ -4275,13 +4275,13 @@ namespace TShockAPI if (projectile == null || !projectile.active) { - NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.FromLiteral(""), npcIndex); + NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.Empty, npcIndex); return true; } if (projectile.type != ProjectileID.PortalGunGate) { - NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.FromLiteral(""), npcIndex); + NetMessage.SendData((int)PacketTypes.NpcUpdate, -1, -1, NetworkText.Empty, npcIndex); return true; } @@ -4346,25 +4346,25 @@ namespace TShockAPI if (TShock.CheckIgnores(args.Player)) { - NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.FromLiteral(""), itemFrame.ID, 0, 1); + NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.Empty, itemFrame.ID, 0, 1); return true; } if (TShock.CheckTilePermission(args.Player, x, y)) { - NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.FromLiteral(""), itemFrame.ID, 0, 1); + NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.Empty, itemFrame.ID, 0, 1); return true; } if (TShock.CheckRangePermission(args.Player, x, y)) { - NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.FromLiteral(""), itemFrame.ID, 0, 1); + NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.Empty, itemFrame.ID, 0, 1); return true; } if (itemFrame.item?.netID == args.TPlayer.inventory[args.TPlayer.selectedItem]?.netID) { - NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.FromLiteral(""), itemFrame.ID, 0, 1); + NetMessage.SendData((int)PacketTypes.UpdateTileEntity, -1, -1, NetworkText.Empty, itemFrame.ID, 0, 1); return true; } diff --git a/TShockAPI/PlayerData.cs b/TShockAPI/PlayerData.cs index ec7aa379..01be0f14 100644 --- a/TShockAPI/PlayerData.cs +++ b/TShockAPI/PlayerData.cs @@ -383,8 +383,8 @@ namespace TShockAPI NetMessage.SendData(4, -1, -1, NetworkText.FromLiteral(player.Name), player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(42, -1, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(16, -1, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(42, -1, -1, NetworkText.Empty, player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(16, -1, -1, NetworkText.Empty, player.Index, 0f, 0f, 0f, 0); slot = 0f; for (int k = 0; k < NetItem.InventorySlots; k++) @@ -432,8 +432,8 @@ namespace TShockAPI NetMessage.SendData(4, player.Index, -1, NetworkText.FromLiteral(player.Name), player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(42, player.Index, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(16, player.Index, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(42, player.Index, -1, NetworkText.Empty, player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(16, player.Index, -1, NetworkText.Empty, player.Index, 0f, 0f, 0f, 0); for (int k = 0; k < 22; k++) { @@ -446,13 +446,13 @@ namespace TShockAPI * This is for when players login via uuid or serverpassword instead of via * the login command. */ - NetMessage.SendData(50, -1, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(50, player.Index, -1, NetworkText.FromLiteral(""), player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(50, -1, -1, NetworkText.Empty, player.Index, 0f, 0f, 0f, 0); + NetMessage.SendData(50, player.Index, -1, NetworkText.Empty, player.Index, 0f, 0f, 0f, 0); - NetMessage.SendData(76, player.Index, -1, NetworkText.FromLiteral(""), player.Index); - NetMessage.SendData(76, -1, -1, NetworkText.FromLiteral(""), player.Index); + NetMessage.SendData(76, player.Index, -1, NetworkText.Empty, player.Index); + NetMessage.SendData(76, -1, -1, NetworkText.Empty, player.Index); - NetMessage.SendData(39, player.Index, -1, NetworkText.FromLiteral(""), 400); + NetMessage.SendData(39, player.Index, -1, NetworkText.Empty, 400); } } } diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index d5c0684c..627d44ab 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -746,7 +746,7 @@ namespace TShockAPI SendTileSquare((int) (x/16), (int) (y/16), 15); TPlayer.Teleport(new Vector2(x, y), style); - NetMessage.SendData((int)PacketTypes.Teleport, -1, -1, NetworkText.FromLiteral(""), 0, TPlayer.whoAmI, x, y, style); + NetMessage.SendData((int)PacketTypes.Teleport, -1, -1, NetworkText.Empty, 0, TPlayer.whoAmI, x, y, style); return true; } @@ -756,7 +756,7 @@ namespace TShockAPI /// Heal health amount. public void Heal(int health = 600) { - NetMessage.SendData((int)PacketTypes.PlayerHealOther, -1, -1, NetworkText.FromLiteral(""), this.TPlayer.whoAmI, health); + NetMessage.SendData((int)PacketTypes.PlayerHealOther, -1, -1, NetworkText.Empty, this.TPlayer.whoAmI, health); } /// @@ -906,8 +906,8 @@ namespace TShockAPI Main.item[itemid].prefix = (byte) prefix; Main.item[itemid].noGrabDelay = 1; Main.item[itemid].velocity = Main.player[this.Index].velocity; - NetMessage.SendData((int)PacketTypes.ItemDrop, -1, -1, NetworkText.FromLiteral(""), itemid, 0f, 0f, 0f); - NetMessage.SendData((int)PacketTypes.ItemOwner, -1, -1, NetworkText.FromLiteral(""), itemid, 0f, 0f, 0f); + NetMessage.SendData((int)PacketTypes.ItemDrop, -1, -1, NetworkText.Empty, itemid, 0f, 0f, 0f); + NetMessage.SendData((int)PacketTypes.ItemOwner, -1, -1, NetworkText.Empty, itemid, 0f, 0f, 0f); } /// @@ -1067,8 +1067,8 @@ namespace TShockAPI public virtual void SetTeam(int team) { Main.player[Index].team = team; - NetMessage.SendData((int)PacketTypes.PlayerTeam, -1, -1, NetworkText.FromLiteral(""), Index); - NetMessage.SendData((int)PacketTypes.PlayerTeam, -1, Index, NetworkText.FromLiteral(""), Index); + NetMessage.SendData((int)PacketTypes.PlayerTeam, -1, -1, NetworkText.Empty, Index); + NetMessage.SendData((int)PacketTypes.PlayerTeam, -1, Index, NetworkText.Empty, Index); } private DateTime LastDisableNotification = DateTime.UtcNow; diff --git a/TShockAPI/TSServerPlayer.cs b/TShockAPI/TSServerPlayer.cs index 1ed0cb9b..a1084d61 100644 --- a/TShockAPI/TSServerPlayer.cs +++ b/TShockAPI/TSServerPlayer.cs @@ -168,7 +168,7 @@ namespace TShockAPI Main.rand = new UnifiedRandom(); Main.npc[npcid].StrikeNPC(damage, knockBack, hitDirection); - NetMessage.SendData((int)PacketTypes.NpcStrike, -1, -1, NetworkText.FromLiteral(""), npcid, damage, knockBack, hitDirection); + NetMessage.SendData((int)PacketTypes.NpcStrike, -1, -1, NetworkText.Empty, npcid, damage, knockBack, hitDirection); } public void RevertTiles(Dictionary tiles) From 97ecb7d5708207467276c9536679460aab62f4cb Mon Sep 17 00:00:00 2001 From: CoderCow Date: Thu, 20 Apr 2017 15:08:43 +0200 Subject: [PATCH 16/58] Fix crystal and golden chests --- TShockAPI/GetDataHandlers.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 563ee8ea..a2aa8865 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -2161,7 +2161,7 @@ namespace TShockAPI args.Player.SendTileSquare(tileX, tileY, 3); return true; } - if (action == EditAction.PlaceTile && editData == TileID.Containers) + if (action == EditAction.PlaceTile && (editData == TileID.Containers || editData == TileID.Containers2)) { if (TShock.Utils.MaxChests()) { @@ -3166,9 +3166,10 @@ namespace TShockAPI return true; } - if (flag != 0 + if (flag != 0 && flag != 4 // if no container or container2 placement && Main.tile[tileX, tileY].type != TileID.Containers && Main.tile[tileX, tileY].type != TileID.Dressers + && Main.tile[tileX, tileY].type != TileID.Containers2 && (!TShock.Utils.MaxChests() && Main.tile[tileX, tileY].type != TileID.Dirt)) //Chest { args.Player.SendTileSquare(tileX, tileY, 3); From bd92af325b0bd80ce15ab0891bbe8da35c726fcf Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Thu, 20 Apr 2017 11:50:14 -0600 Subject: [PATCH 17/58] Update submodule --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 3a65dff3..759363cc 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 3a65dff3198854b68d450df02beb07febaf40d66 +Subproject commit 759363cce6b8a37d37382d6282ac282942bad6a4 From f1ba9cbd010dc9bb2495fc175661d07f16023205 Mon Sep 17 00:00:00 2001 From: White Date: Fri, 21 Apr 2017 22:33:01 +0930 Subject: [PATCH 18/58] Resolve issues with `/me` and chat over heads --- TShockAPI/TShock.cs | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 27e0d6c2..89b7c820 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1441,17 +1441,26 @@ namespace TShockAPI return; } - if ((args.Text.StartsWith(Config.CommandSpecifier) || args.Text.StartsWith(Config.CommandSilentSpecifier)) - && !string.IsNullOrWhiteSpace(args.Text.Substring(1))) + string text = args.Text; + + //This is a hacky way of bypassing Terraria's new chat command processing. + //_name is usually a private variable but the wonders of OTAPI make it available to us + if (args.CommandId._name == "Emote") + { + text = "/me " + text; + } + + if ((text.StartsWith(Config.CommandSpecifier) || text.StartsWith(Config.CommandSilentSpecifier)) + && !string.IsNullOrWhiteSpace(text.Substring(1))) { try { args.Handled = true; - if (!Commands.HandleCommand(tsplr, args.Text)) + if (!Commands.HandleCommand(tsplr, text)) { // This is required in case anyone makes HandleCommand return false again tsplr.SendErrorMessage("Unable to parse command. Please contact an administrator for assistance."); - Log.ConsoleError("Unable to parse command '{0}' from player {1}.", args.Text, tsplr.Name); + Log.ConsoleError("Unable to parse command '{0}' from player {1}.", text, tsplr.Name); } } catch (Exception ex) @@ -1473,7 +1482,7 @@ namespace TShockAPI } else if (!TShock.Config.EnableChatAboveHeads) { - var text = String.Format(Config.ChatFormat, tsplr.Group.Name, tsplr.Group.Prefix, tsplr.Name, tsplr.Group.Suffix, + text = String.Format(Config.ChatFormat, tsplr.Group.Name, tsplr.Group.Prefix, tsplr.Name, tsplr.Group.Suffix, args.Text); Hooks.PlayerHooks.OnPlayerChat(tsplr, args.Text, ref text); Utils.Broadcast(text, tsplr.Group.R, tsplr.Group.G, tsplr.Group.B); @@ -1486,16 +1495,20 @@ namespace TShockAPI ply.name = String.Format(Config.ChatAboveHeadsFormat, tsplr.Group.Name, tsplr.Group.Prefix, tsplr.Name, tsplr.Group.Suffix); NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, -1, NetworkText.FromLiteral(ply.name), args.Who, 0, 0, 0, 0); ply.name = name; - var text = args.Text; Hooks.PlayerHooks.OnPlayerChat(tsplr, args.Text, ref text); - NetMessage.SendData((int)PacketTypes.ChatText, -1, args.Who, NetworkText.FromFormattable(text), args.Who, tsplr.Group.R, tsplr.Group.G, tsplr.Group.B); + + Terraria.Net.NetPacket packet = Terraria.GameContent.NetModules.NetTextModule.SerializeServerMessage( + NetworkText.FromLiteral(text), new Color(tsplr.Group.R, tsplr.Group.G, tsplr.Group.B), (byte)args.Who + ); + Terraria.Net.NetManager.Instance.Broadcast(packet); + NetMessage.SendData((int)PacketTypes.PlayerInfo, -1, -1, NetworkText.FromLiteral(name), args.Who, 0, 0, 0, 0); string msg = String.Format("<{0}> {1}", String.Format(Config.ChatAboveHeadsFormat, tsplr.Group.Name, tsplr.Group.Prefix, tsplr.Name, tsplr.Group.Suffix), text); - tsplr.SendMessage(msg, tsplr.Group.R, tsplr.Group.G, tsplr.Group.B); + //tsplr.SendMessage(msg, tsplr.Group.R, tsplr.Group.G, tsplr.Group.B); TSPlayer.Server.SendMessage(msg, tsplr.Group.R, tsplr.Group.G, tsplr.Group.B); Log.Info("Broadcast: {0}", msg); From fd6c98e934f29524c8f9d44843a0c3faa083a828 Mon Sep 17 00:00:00 2001 From: White Date: Fri, 21 Apr 2017 22:39:47 +0930 Subject: [PATCH 19/58] Submodule update --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 759363cc..099c4e64 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 759363cce6b8a37d37382d6282ac282942bad6a4 +Subproject commit 099c4e64f2e2d907aab1758d5fb06a325f65407f From 930607a1420cadf48cfa74dd6845f0ace7de3d8d Mon Sep 17 00:00:00 2001 From: ZIT WANG Date: Fri, 21 Apr 2017 21:56:10 +0800 Subject: [PATCH 20/58] Add Localization support * Add EnglishLanguage type to store English texts * Itemban now store English item name * Command `/i` `/give` `/sm` `/tpnpc` can use both English and current language input --- TShockAPI/Commands.cs | 25 +++--- TShockAPI/GetDataHandlers.cs | 7 +- TShockAPI/Localization/EnglishLanguage.cs | 96 +++++++++++++++++++++++ TShockAPI/TShock.cs | 15 ++-- TShockAPI/TShockAPI.csproj | 1 + TShockAPI/Utils.cs | 45 +++++++---- 6 files changed, 156 insertions(+), 33 deletions(-) create mode 100644 TShockAPI/Localization/EnglishLanguage.cs diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index 292af8e9..cd02ebc7 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -34,6 +34,7 @@ using TShockAPI.Hooks; using Terraria.GameContent.Events; using Microsoft.Xna.Framework; using OTAPI.Tile; +using TShockAPI.Localization; namespace TShockAPI { @@ -2534,12 +2535,16 @@ namespace TShockAPI var matches = new List(); foreach (var npc in Main.npc.Where(npc => npc.active)) { - if (string.Equals(npc.FullName, npcStr, StringComparison.CurrentCultureIgnoreCase)) + var englishName = EnglishLanguage.GetNpcNameById(npc.netID); + + if (string.Equals(npc.FullName, npcStr, StringComparison.InvariantCultureIgnoreCase) || + string.Equals(englishName, npcStr, StringComparison.InvariantCultureIgnoreCase)) { matches = new List { npc }; break; } - if (npc.FullName.ToLower().StartsWith(npcStr.ToLower())) + if (npc.FullName.ToLowerInvariant().StartsWith(npcStr.ToLowerInvariant()) || + englishName.StartsWith(npcStr, StringComparison.InvariantCultureIgnoreCase)) matches.Add(npc); } @@ -3207,7 +3212,7 @@ namespace TShockAPI } else { - TShock.Itembans.AddNewBan(items[0].Name); + TShock.Itembans.AddNewBan(EnglishLanguage.GetItemNameById(items[0].type)); args.Player.SendSuccessMessage("Banned " + items[0].Name + "."); } } @@ -3239,7 +3244,7 @@ namespace TShockAPI return; } - ItemBan ban = TShock.Itembans.GetItemBanByName(items[0].Name); + ItemBan ban = TShock.Itembans.GetItemBanByName(EnglishLanguage.GetItemNameById(items[0].type)); if (ban == null) { args.Player.SendErrorMessage("{0} is not banned.", items[0].Name); @@ -3247,7 +3252,7 @@ namespace TShockAPI } if (!ban.AllowedGroups.Contains(args.Parameters[2])) { - TShock.Itembans.AllowGroup(items[0].Name, args.Parameters[2]); + TShock.Itembans.AllowGroup(EnglishLanguage.GetItemNameById(items[0].type), args.Parameters[2]); args.Player.SendSuccessMessage("{0} has been allowed to use {1}.", args.Parameters[2], items[0].Name); } else @@ -3278,7 +3283,7 @@ namespace TShockAPI } else { - TShock.Itembans.RemoveBan(items[0].Name); + TShock.Itembans.RemoveBan(EnglishLanguage.GetItemNameById(items[0].type)); args.Player.SendSuccessMessage("Unbanned " + items[0].Name + "."); } } @@ -3310,7 +3315,7 @@ namespace TShockAPI return; } - ItemBan ban = TShock.Itembans.GetItemBanByName(items[0].Name); + ItemBan ban = TShock.Itembans.GetItemBanByName(EnglishLanguage.GetItemNameById(items[0].type)); if (ban == null) { args.Player.SendErrorMessage("{0} is not banned.", items[0].Name); @@ -3318,7 +3323,7 @@ namespace TShockAPI } if (ban.AllowedGroups.Contains(args.Parameters[2])) { - TShock.Itembans.RemoveGroup(items[0].Name, args.Parameters[2]); + TShock.Itembans.RemoveGroup(EnglishLanguage.GetItemNameById(items[0].type), args.Parameters[2]); args.Player.SendSuccessMessage("{0} has been disallowed to use {1}.", args.Parameters[2], items[0].Name); } else @@ -5292,7 +5297,7 @@ namespace TShockAPI if (itemAmount == 0 || itemAmount > item.maxStack) itemAmount = item.maxStack; - if (args.Player.GiveItemCheck(item.type, item.Name, item.width, item.height, itemAmount, prefixId)) + if (args.Player.GiveItemCheck(item.type, EnglishLanguage.GetItemNameById(item.type), item.width, item.height, itemAmount, prefixId)) { item.prefix = (byte)prefixId; args.Player.SendSuccessMessage("Gave {0} {1}(s).", itemAmount, item.AffixName()); @@ -5431,7 +5436,7 @@ namespace TShockAPI { if (itemAmount == 0 || itemAmount > item.maxStack) itemAmount = item.maxStack; - if (plr.GiveItemCheck(item.type, item.Name, item.width, item.height, itemAmount, prefix)) + if (plr.GiveItemCheck(item.type, EnglishLanguage.GetItemNameById(item.type), item.width, item.height, itemAmount, prefix)) { args.Player.SendSuccessMessage(string.Format("Gave {0} {1} {2}(s).", plr.Name, itemAmount, item.Name)); plr.SendSuccessMessage(string.Format("{0} gave you {1} {2}(s).", args.Player.Name, itemAmount, item.Name)); diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index a2aa8865..fb5bea27 100644 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -35,6 +35,7 @@ using Terraria.GameContent.Tile_Entities; using Terraria.Localization; using Microsoft.Xna.Framework; using OTAPI.Tile; +using TShockAPI.Localization; namespace TShockAPI { @@ -3330,7 +3331,7 @@ namespace TShockAPI Item item = new Item(); item.netDefaults(type); - if (stacks > item.maxStack || TShock.Itembans.ItemIsBanned(item.Name, args.Player)) + if (stacks > item.maxStack || TShock.Itembans.ItemIsBanned(EnglishLanguage.GetItemNameById(item.type), args.Player)) { return false; } @@ -3510,7 +3511,7 @@ namespace TShockAPI Item item = new Item(); item.netDefaults(type); - if ((stacks > item.maxStack || stacks <= 0) || (TShock.Itembans.ItemIsBanned(item.Name, args.Player) && !args.Player.HasPermission(Permissions.allowdroppingbanneditems))) + if ((stacks > item.maxStack || stacks <= 0) || (TShock.Itembans.ItemIsBanned(EnglishLanguage.GetItemNameById(item.type), args.Player) && !args.Player.HasPermission(Permissions.allowdroppingbanneditems))) { args.Player.SendData(PacketTypes.ItemDrop, "", id); return true; @@ -4419,7 +4420,7 @@ namespace TShockAPI { return true; } - + if (!args.Player.HasPermission(Permissions.startdd2)) { args.Player.SendErrorMessage("You don't have permission to start the Old One's Army event."); diff --git a/TShockAPI/Localization/EnglishLanguage.cs b/TShockAPI/Localization/EnglishLanguage.cs new file mode 100644 index 00000000..29bdd813 --- /dev/null +++ b/TShockAPI/Localization/EnglishLanguage.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Terraria; +using Terraria.Localization; + +namespace TShockAPI.Localization +{ + /// + /// Provides a series of methods that give English texts + /// + public static class EnglishLanguage + { + private static readonly Dictionary ItemNames = new Dictionary(); + + private static readonly Dictionary NpcNames = new Dictionary(); + + private static readonly Dictionary Prefixs = new Dictionary(); + + internal static void Initialize() + { + var culture = Language.ActiveCulture; + + var skip = culture == GameCulture.English; + + try + { + if(!skip) + LanguageManager.Instance.SetLanguage(GameCulture.English); + + for (var i = -48; i < Main.maxItemTypes; i++) + { + ItemNames.Add(i, Lang.GetItemNameValue(i)); + } + + for (var i = -17; i < Main.maxNPCTypes; i++) + { + NpcNames.Add(i, Lang.GetNPCNameValue(i)); + } + + foreach (var field in typeof(Main).Assembly.GetType("Terraria.ID.PrefixID") + .GetFields().Where(f => !f.Name.Equals("Count", StringComparison.Ordinal))) + { + Prefixs.Add((int) field.GetValue(null), field.Name); + } + } + finally + { + if(!skip) + LanguageManager.Instance.SetLanguage(culture); + } + } + + /// + /// Get the english name of an item + /// + /// Id of the item + /// Item name in English + public static string GetItemNameById(int id) + { + string itemName; + if (ItemNames.TryGetValue(id, out itemName)) + return itemName; + + return string.Empty; + } + + /// + /// Get the english name of a npc + /// + /// Id of the npc + /// Npc name in English + public static string GetNpcNameById(int id) + { + string npcName; + if (NpcNames.TryGetValue(id, out npcName)) + return npcName; + + return string.Empty; + } + + /// + /// Get prefix in English + /// + /// Prefix Id + /// Prefix in English + public static string GetPrefixById(int id) + { + string prefix; + if (Prefixs.TryGetValue(id, out prefix)) + return prefix; + + return string.Empty; + } + } +} diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 89b7c820..883519e0 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -43,6 +43,7 @@ using Terraria.Utilities; using Microsoft.Xna.Framework; using TShockAPI.Sockets; using TShockAPI.CLI; +using TShockAPI.Localization; namespace TShockAPI { @@ -356,6 +357,8 @@ namespace TShockAPI GetDataHandlers.InitGetDataHandler(); Commands.InitCommands(); + EnglishLanguage.Initialize(); + if (Config.RestApiEnabled) RestApi.Start(); @@ -620,7 +623,7 @@ namespace TShockAPI string path = null; //Generic method for doing a path sanity check - Action pathChecker = (p) => + Action pathChecker = (p) => { if (!string.IsNullOrWhiteSpace(p) && p.IndexOfAny(Path.GetInvalidPathChars()) == -1) { @@ -733,7 +736,7 @@ namespace TShockAPI .AddFlag("--no-restart", () => NoRestart = true); CliParser.ParseFromSource(parms); - + /*"-connperip": Todo - Requires an OTAPI modification { int limit; @@ -1111,7 +1114,7 @@ namespace TShockAPI // Please don't remove this for the time being; without it, players wearing banned equipment will only get debuffed once foreach (Item item in player.TPlayer.armor) { - if (Itembans.ItemIsBanned(item.Name, player)) + if (Itembans.ItemIsBanned(EnglishLanguage.GetItemNameById(item.type), player)) { player.SetBuff(BuffID.Frozen, 330, true); player.SetBuff(BuffID.Stoned, 330, true); @@ -1124,7 +1127,7 @@ namespace TShockAPI } foreach (Item item in player.TPlayer.dye) { - if (Itembans.ItemIsBanned(item.Name, player)) + if (Itembans.ItemIsBanned(EnglishLanguage.GetItemNameById(item.type), player)) { player.SetBuff(BuffID.Frozen, 330, true); player.SetBuff(BuffID.Stoned, 330, true); @@ -1137,7 +1140,7 @@ namespace TShockAPI } foreach (Item item in player.TPlayer.miscEquips) { - if (Itembans.ItemIsBanned(item.Name, player)) + if (Itembans.ItemIsBanned(EnglishLanguage.GetItemNameById(item.type), player)) { player.SetBuff(BuffID.Frozen, 330, true); player.SetBuff(BuffID.Stoned, 330, true); @@ -1150,7 +1153,7 @@ namespace TShockAPI } foreach (Item item in player.TPlayer.miscDyes) { - if (Itembans.ItemIsBanned(item.Name, player)) + if (Itembans.ItemIsBanned(EnglishLanguage.GetItemNameById(item.type), player)) { player.SetBuff(BuffID.Frozen, 330, true); player.SetBuff(BuffID.Stoned, 330, true); diff --git a/TShockAPI/TShockAPI.csproj b/TShockAPI/TShockAPI.csproj index 9f610078..9bf2ebd9 100644 --- a/TShockAPI/TShockAPI.csproj +++ b/TShockAPI/TShockAPI.csproj @@ -94,6 +94,7 @@ + diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index a019b8bc..60d31293 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -32,6 +32,7 @@ using Terraria.Utilities; using TShockAPI.DB; using BCrypt.Net; using Microsoft.Xna.Framework; +using TShockAPI.Localization; namespace TShockAPI { @@ -344,16 +345,27 @@ namespace TShockAPI { var found = new List(); Item item = new Item(); - string nameLower = name.ToLower(); + string nameLower = name.ToLowerInvariant(); for (int i = -48; i < Main.maxItemTypes; i++) { item.netDefaults(i); - if (String.IsNullOrWhiteSpace(item.Name)) - continue; - if (item.Name.ToLower() == nameLower) - return new List { item }; - if (item.Name.ToLower().StartsWith(nameLower)) - found.Add(item.Clone()); + if (!String.IsNullOrWhiteSpace(item.Name)) + { + if (item.Name.ToLowerInvariant() == nameLower) + return new List { item }; + if (item.Name.ToLowerInvariant().StartsWith(nameLower)) + found.Add(item.Clone()); + } + + string englishName = EnglishLanguage.GetItemNameById(i).ToLowerInvariant(); + if (!String.IsNullOrWhiteSpace(englishName)) + { + if (englishName == nameLower) + return new List { item }; + return new List { item }; + if (englishName.StartsWith(nameLower)) + found.Add(item.Clone()); + } } return found; } @@ -416,13 +428,17 @@ namespace TShockAPI { var found = new List(); NPC npc = new NPC(); - string nameLower = name.ToLower(); + string nameLower = name.ToLowerInvariant(); for (int i = -17; i < Main.maxNPCTypes; i++) { + string englishName = EnglishLanguage.GetNpcNameById(i).ToLowerInvariant(); + npc.SetDefaults(i); - if (npc.FullName.ToLower() == nameLower || npc.TypeName.ToLower() == nameLower) + if (npc.FullName.ToLowerInvariant() == nameLower || npc.TypeName.ToLowerInvariant() == nameLower + || nameLower == englishName) return new List { npc }; - if (npc.FullName.ToLower().StartsWith(nameLower) || npc.TypeName.ToLower().StartsWith(nameLower)) + if (npc.FullName.ToLowerInvariant().StartsWith(nameLower) || npc.TypeName.ToLowerInvariant().StartsWith(nameLower) + || englishName.StartsWith(nameLower)) found.Add((NPC)npc.Clone()); } return found; @@ -492,15 +508,16 @@ namespace TShockAPI { Item item = new Item(); item.SetDefaults(0); - string lowerName = name.ToLower(); + string lowerName = name.ToLowerInvariant(); var found = new List(); for (int i = FirstItemPrefix; i <= LastItemPrefix; i++) { item.prefix = (byte)i; - string prefixName = item.AffixName().Trim().ToLower(); - if (prefixName == lowerName) + string prefixName = item.AffixName().Trim().ToLowerInvariant(); + string englishName = EnglishLanguage.GetPrefixById(i).ToLowerInvariant(); + if (prefixName == lowerName || englishName == lowerName) return new List() { i }; - else if (prefixName.StartsWith(lowerName)) // Partial match + else if (prefixName.StartsWith(lowerName) || englishName.StartsWith(lowerName)) // Partial match found.Add(i); } return found; From 33d34f3f0b083f2c85e077cdc777ba544cd4cc2a Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Fri, 21 Apr 2017 10:15:28 -0600 Subject: [PATCH 21/58] Fix dump methods that were disabled earlier --- TShockAPI/Utils.cs | 411 +++++++++++++++++++++++---------------------- 1 file changed, 207 insertions(+), 204 deletions(-) diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index a019b8bc..873254ce 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -1166,237 +1166,240 @@ namespace TShockAPI return points; } - // /// - // /// Dumps information and optionally exits afterwards - // /// - // /// - // public void Dump(bool exit = true) - // { - // PrepareLangForDump(); - // Lang.setLang(true); - // ConfigFile.DumpDescriptions(); - // Permissions.DumpDescriptions(); - // ServerSideCharacters.ServerSideConfig.DumpDescriptions(); - // RestManager.DumpDescriptions(); - // DumpBuffs("BuffList.txt"); - // DumpItems("Items-1_0.txt", -48, 235); - // DumpItems("Items-1_1.txt", 235, 604); - // DumpItems("Items-1_2.txt", 604, 2749); - // DumpItems("Items-1_3.txt", 2749, Main.maxItemTypes); - // DumpNPCs("NPCs.txt"); - // DumpProjectiles("Projectiles.txt"); - // DumpPrefixes("Prefixes.txt"); - // if (exit) - // { - // Environment.Exit(1); - // } - // } + /// + /// Dumps information and optionally exits afterwards + /// + /// + public void Dump(bool exit = true) + { + PrepareLangForDump(); + // Lang.setLang(true); + ConfigFile.DumpDescriptions(); + Permissions.DumpDescriptions(); + ServerSideCharacters.ServerSideConfig.DumpDescriptions(); + RestManager.DumpDescriptions(); + DumpBuffs("BuffList.txt"); + DumpItems("Items-1_0.txt", -48, 235); + DumpItems("Items-1_1.txt", 235, 604); + DumpItems("Items-1_2.txt", 604, 2749); + DumpItems("Items-1_3.txt", 2749, Main.maxItemTypes); + DumpNPCs("NPCs.txt"); + DumpProjectiles("Projectiles.txt"); + DumpPrefixes("Prefixes.txt"); + if (exit) + { + Environment.Exit(1); + } + } - // internal void PrepareLangForDump() - // { - // for(int i = 0; i < Main.recipe.Length; i++) - // Main.recipe[i] = new Recipe(); - // } + internal void PrepareLangForDump() + { + for(int i = 0; i < Main.recipe.Length; i++) + Main.recipe[i] = new Recipe(); + } - // public void DumpBuffs(string path) - // { - // StringBuilder buffer = new StringBuilder(); - // buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); - // buffer.AppendLine(" \"h-0\": \"ID\","); - // buffer.AppendLine(" \"h-1\": \"Name\","); - // buffer.AppendLine(" \"h-2\": \"Description\","); + public void DumpBuffs(string path) + { + StringBuilder buffer = new StringBuilder(); + buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); + buffer.AppendLine(" \"h-0\": \"ID\","); + buffer.AppendLine(" \"h-1\": \"Name\","); + buffer.AppendLine(" \"h-2\": \"Description\","); - // List elements = new List(); - // for (int i = 0; i < Main.maxBuffTypes; i++) - // { - // if (!String.IsNullOrEmpty(Lang.GetBuffName(i))) - // { - // object[] element = new object[] { i, Lang.GetBuffName(i), Main.buffTip[i] }; - // elements.Add(element); - // } - // } + List elements = new List(); + for (int i = 0; i < Main.maxBuffTypes; i++) + { + if (!String.IsNullOrEmpty(Lang.GetBuffName(i))) + { + object[] element = new object[] { i, Lang.GetBuffName(i), Lang.GetBuffDescription(i) }; + elements.Add(element); + } + } - // var rows = elements.Count; - // var columns = 0; - // if (rows > 0) - // { - // columns = elements[0].Length; - // } - // OutputElementsForDump(buffer, elements, rows, columns); + var rows = elements.Count; + var columns = 0; + if (rows > 0) + { + columns = elements[0].Length; + } + OutputElementsForDump(buffer, elements, rows, columns); - // buffer.AppendLine(); - // buffer.AppendLine(" },"); - // buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); - // buffer.AppendLine("}").Append("[/block]"); + buffer.AppendLine(); + buffer.AppendLine(" },"); + buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); + buffer.AppendLine("}").Append("[/block]"); - // File.WriteAllText(path, buffer.ToString()); - // } + File.WriteAllText(path, buffer.ToString()); + } - // public void DumpItems(string path, int start, int end) - // { - // Main.player[Main.myPlayer] = new Player(); - // StringBuilder buffer = new StringBuilder(); - // Regex newLine = new Regex(@"\n"); - // buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); - // buffer.AppendLine(" \"h-0\": \"ID\","); - // buffer.AppendLine(" \"h-1\": \"Name\","); - // buffer.AppendLine(" \"h-2\": \"Tooltip\","); - // buffer.AppendLine(" \"h-3\": \"Tooltip 2\","); + public void DumpItems(string path, int start, int end) + { + Main.player[Main.myPlayer] = new Player(); + StringBuilder buffer = new StringBuilder(); + Regex newLine = new Regex(@"\n"); + buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); + buffer.AppendLine(" \"h-0\": \"ID\","); + buffer.AppendLine(" \"h-1\": \"Name\","); + buffer.AppendLine(" \"h-2\": \"Tooltip\","); - // List elements = new List(); - // for (int i = start; i < end; i++) - // { - // Item item = new Item(); - // item.netDefaults(i); - // if (!String.IsNullOrEmpty(item.Name)) - // { - // object[] element = new object[] { i, - // newLine.Replace(item.Name, @" "), - // newLine.Replace(item.toolTip, @" "), - // newLine.Replace(item.toolTip2, @" ") - // }; - // elements.Add(element); - // } - // } + List elements = new List(); + for (int i = start; i < end; i++) + { + Item item = new Item(); + item.SetDefaults(i); - // var rows = elements.Count; - // var columns = 0; - // if (rows > 0) - // { - // columns = elements[0].Length; - // } - // OutputElementsForDump(buffer, elements, rows, columns); + string tt = ""; + for (int x = 0; x < item.ToolTip.Lines; x++) { + tt += item.ToolTip.GetLine(x) + "\n"; + } + if (!String.IsNullOrEmpty(item.Name)) + { + object[] element = new object[] { i, + newLine.Replace(item.Name, @" "), + newLine.Replace(tt, @" "), + }; + elements.Add(element); + } + } - // buffer.AppendLine(); - // buffer.AppendLine(" },"); - // buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); - // buffer.AppendLine("}").Append("[/block]"); + var rows = elements.Count; + var columns = 0; + if (rows > 0) + { + columns = elements[0].Length; + } + OutputElementsForDump(buffer, elements, rows, columns); - // File.WriteAllText(path, buffer.ToString()); - // } + buffer.AppendLine(); + buffer.AppendLine(" },"); + buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); + buffer.AppendLine("}").Append("[/block]"); - // public void DumpNPCs(string path) - // { - // StringBuilder buffer = new StringBuilder(); - // buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); - // buffer.AppendLine(" \"h-0\": \"ID\","); - // buffer.AppendLine(" \"h-1\": \"Name\","); - // buffer.AppendLine(" \"h-2\": \"Display Name\","); + File.WriteAllText(path, buffer.ToString()); + } - // List elements = new List(); - // for (int i = -65; i < Main.maxNPCTypes; i++) - // { - // NPC npc = new NPC(); - // npc.netDefaults(i); - // if (!String.IsNullOrEmpty(npc.FullName)) - // { - // object[] element = new object[] { i, npc.FullName, npc.displayName }; - // elements.Add(element); - // } - // } + public void DumpNPCs(string path) + { + StringBuilder buffer = new StringBuilder(); + buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); + buffer.AppendLine(" \"h-0\": \"ID\","); + buffer.AppendLine(" \"h-1\": \"Full Name\","); + buffer.AppendLine(" \"h-2\": \"Type Name\","); - // var rows = elements.Count; - // var columns = 0; - // if (rows > 0) - // { - // columns = elements[0].Length; - // } - // OutputElementsForDump(buffer, elements, rows, columns); + List elements = new List(); + for (int i = -65; i < Main.maxNPCTypes; i++) + { + NPC npc = new NPC(); + npc.SetDefaults(i); + if (!String.IsNullOrEmpty(npc.FullName)) + { + object[] element = new object[] { i, npc.FullName, npc.TypeName }; + elements.Add(element); + } + } - // buffer.AppendLine(); - // buffer.AppendLine(" },"); - // buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); - // buffer.AppendLine("}").Append("[/block]"); + var rows = elements.Count; + var columns = 0; + if (rows > 0) + { + columns = elements[0].Length; + } + OutputElementsForDump(buffer, elements, rows, columns); - // File.WriteAllText(path, buffer.ToString()); - // } + buffer.AppendLine(); + buffer.AppendLine(" },"); + buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); + buffer.AppendLine("}").Append("[/block]"); - // public void DumpProjectiles(string path) - // { - // Main.rand = new UnifiedRandom(); - // StringBuilder buffer = new StringBuilder(); - // buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); - // buffer.AppendLine(" \"h-0\": \"ID\","); - // buffer.AppendLine(" \"h-1\": \"Name\","); + File.WriteAllText(path, buffer.ToString()); + } - // List elements = new List(); - // for (int i = 0; i < Main.maxProjectileTypes; i++) - // { - // Projectile projectile = new Projectile(); - // projectile.SetDefaults(i); - // if (!String.IsNullOrEmpty(projectile.Name)) - // { - // object[] element = new object[] { i, projectile.Name }; - // elements.Add(element); - // } - // } + public void DumpProjectiles(string path) + { + Main.rand = new UnifiedRandom(); + StringBuilder buffer = new StringBuilder(); + buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); + buffer.AppendLine(" \"h-0\": \"ID\","); + buffer.AppendLine(" \"h-1\": \"Name\","); - // var rows = elements.Count; - // var columns = 0; - // if (rows > 0) - // { - // columns = elements[0].Length; - // } - // OutputElementsForDump(buffer, elements, rows, columns); + List elements = new List(); + for (int i = 0; i < Main.maxProjectileTypes; i++) + { + Projectile projectile = new Projectile(); + projectile.SetDefaults(i); + if (!String.IsNullOrEmpty(projectile.Name)) + { + object[] element = new object[] { i, projectile.Name }; + elements.Add(element); + } + } - // buffer.AppendLine(); - // buffer.AppendLine(" },"); - // buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); - // buffer.AppendLine("}").Append("[/block]"); + var rows = elements.Count; + var columns = 0; + if (rows > 0) + { + columns = elements[0].Length; + } + OutputElementsForDump(buffer, elements, rows, columns); - // File.WriteAllText(path, buffer.ToString()); - // } + buffer.AppendLine(); + buffer.AppendLine(" },"); + buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); + buffer.AppendLine("}").Append("[/block]"); - // public void DumpPrefixes(string path) - // { - // StringBuilder buffer = new StringBuilder(); - // buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); - // buffer.AppendLine(" \"h-0\": \"ID\","); - // buffer.AppendLine(" \"h-1\": \"Name\","); + File.WriteAllText(path, buffer.ToString()); + } - // List elements = new List(); - // for (int i = 0; i < Item.maxPrefixes; i++) - // { - // string prefix = Lang.prefix[i].ToString(); + public void DumpPrefixes(string path) + { + StringBuilder buffer = new StringBuilder(); + buffer.AppendLine("[block:parameters]").AppendLine("{").AppendLine(" \"data\": {"); + buffer.AppendLine(" \"h-0\": \"ID\","); + buffer.AppendLine(" \"h-1\": \"Name\","); - // if (!String.IsNullOrEmpty(prefix)) - // { - // object[] element = new object[] {i, prefix}; - // elements.Add(element); - // } - // } + List elements = new List(); + for (int i = 0; i < PrefixID.Count; i++) + { + string prefix = Lang.prefix[i].ToString(); - // var rows = elements.Count; - // var columns = 0; - // if (rows > 0) - // { - // columns = elements[0].Length; - // } - // OutputElementsForDump(buffer, elements, rows, columns); + if (!String.IsNullOrEmpty(prefix)) + { + object[] element = new object[] {i, prefix}; + elements.Add(element); + } + } - // buffer.AppendLine(); - // buffer.AppendLine(" },"); - // buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); - // buffer.AppendLine("}").Append("[/block]"); + var rows = elements.Count; + var columns = 0; + if (rows > 0) + { + columns = elements[0].Length; + } + OutputElementsForDump(buffer, elements, rows, columns); - // File.WriteAllText(path, buffer.ToString()); - // } + buffer.AppendLine(); + buffer.AppendLine(" },"); + buffer.AppendLine(String.Format(" \"cols\": {0},", columns)).AppendLine(String.Format(" \"rows\": {0}", rows)); + buffer.AppendLine("}").Append("[/block]"); - // private void OutputElementsForDump(StringBuilder buffer, List elements, int rows, int columns) - // { - // if (rows > 0) - // { - // columns = elements[0].Length; - // for (int i = 0; i < columns; i++) - // { - // for (int j = 0; j < rows; j++) - // { - // buffer.Append(String.Format(" \"{0}-{1}\": \"{2}\"", j, i, elements[j][i])); - // if (j != rows - 1 || i != columns - 1) - // buffer.AppendLine(","); - // } - // } - // } - // } + File.WriteAllText(path, buffer.ToString()); + } + + private void OutputElementsForDump(StringBuilder buffer, List elements, int rows, int columns) + { + if (rows > 0) + { + columns = elements[0].Length; + for (int i = 0; i < columns; i++) + { + for (int j = 0; j < rows; j++) + { + buffer.Append(String.Format(" \"{0}-{1}\": \"{2}\"", j, i, elements[j][i])); + if (j != rows - 1 || i != columns - 1) + buffer.AppendLine(","); + } + } + } + } } } From 22c1992074281dc5cb812757c84f7c3847a8353b Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Fri, 21 Apr 2017 10:16:15 -0600 Subject: [PATCH 22/58] Turn dumping back on --- TShockAPI/TShock.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 89b7c820..4342473a 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -728,7 +728,7 @@ namespace TShockAPI //Flags without arguments .AddFlag("-logclear", () => LogClear = true) .AddFlag("-autoshutdown", () => Main.instance.EnableAutoShutdown()) - // .AddFlag("-dump", () => Utils.Dump()) + .AddFlag("-dump", () => Utils.Dump()) .AddFlag("--stats-optout", () => StatTracker.OptOut = true) .AddFlag("--no-restart", () => NoRestart = true); From 15d4573edd1dbb96cb427b3b3dd49f5568494956 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Fri, 21 Apr 2017 10:19:56 -0600 Subject: [PATCH 23/58] Update submodule --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 099c4e64..b1ebe2ce 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 099c4e64f2e2d907aab1758d5fb06a325f65407f +Subproject commit b1ebe2ce05899cc27004f12a020dc75b09d39644 From e9275b761b7d79ddec46ea8b8a33c4e1a717875c Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Fri, 21 Apr 2017 15:41:17 -0600 Subject: [PATCH 24/58] Update to OTAPI 2.0.0.22 / Terraria 1.3.5.2 Protocol --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index b1ebe2ce..88230a92 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit b1ebe2ce05899cc27004f12a020dc75b09d39644 +Subproject commit 88230a92cb56c64ac9b7cf48080919639d05241a From 08d37eb6de5d378206d86d7f7934730a2e5bed79 Mon Sep 17 00:00:00 2001 From: ZIT WANG Date: Sat, 22 Apr 2017 07:21:48 +0800 Subject: [PATCH 25/58] Fix duplicate statement --- TShockAPI/Localization/EnglishLanguage.cs | 14 +++++++++----- TShockAPI/Utils.cs | 3 +-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/TShockAPI/Localization/EnglishLanguage.cs b/TShockAPI/Localization/EnglishLanguage.cs index 29bdd813..11852e36 100644 --- a/TShockAPI/Localization/EnglishLanguage.cs +++ b/TShockAPI/Localization/EnglishLanguage.cs @@ -25,8 +25,10 @@ namespace TShockAPI.Localization try { - if(!skip) + if (!skip) + { LanguageManager.Instance.SetLanguage(GameCulture.English); + } for (var i = -48; i < Main.maxItemTypes; i++) { @@ -46,8 +48,10 @@ namespace TShockAPI.Localization } finally { - if(!skip) + if (!skip) + { LanguageManager.Instance.SetLanguage(culture); + } } } @@ -62,7 +66,7 @@ namespace TShockAPI.Localization if (ItemNames.TryGetValue(id, out itemName)) return itemName; - return string.Empty; + return null; } /// @@ -76,7 +80,7 @@ namespace TShockAPI.Localization if (NpcNames.TryGetValue(id, out npcName)) return npcName; - return string.Empty; + return null; } /// @@ -90,7 +94,7 @@ namespace TShockAPI.Localization if (Prefixs.TryGetValue(id, out prefix)) return prefix; - return string.Empty; + return null; } } } diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index 60d31293..9edafff7 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -358,11 +358,10 @@ namespace TShockAPI } string englishName = EnglishLanguage.GetItemNameById(i).ToLowerInvariant(); - if (!String.IsNullOrWhiteSpace(englishName)) + if (!String.IsNullOrEmpty(englishName)) { if (englishName == nameLower) return new List { item }; - return new List { item }; if (englishName.StartsWith(nameLower)) found.Add(item.Clone()); } From f47c6505ab8cc956c89be83915818e40ad3b6115 Mon Sep 17 00:00:00 2001 From: ZIT WANG Date: Sat, 22 Apr 2017 07:34:59 +0800 Subject: [PATCH 26/58] Add null check for English name --- TShockAPI/Commands.cs | 2 +- TShockAPI/Utils.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index cd02ebc7..df98776e 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -2544,7 +2544,7 @@ namespace TShockAPI break; } if (npc.FullName.ToLowerInvariant().StartsWith(npcStr.ToLowerInvariant()) || - englishName.StartsWith(npcStr, StringComparison.InvariantCultureIgnoreCase)) + englishName?.StartsWith(npcStr, StringComparison.InvariantCultureIgnoreCase) == true) matches.Add(npc); } diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index 9edafff7..1ae0c3b5 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -437,7 +437,7 @@ namespace TShockAPI || nameLower == englishName) return new List { npc }; if (npc.FullName.ToLowerInvariant().StartsWith(nameLower) || npc.TypeName.ToLowerInvariant().StartsWith(nameLower) - || englishName.StartsWith(nameLower)) + || englishName?.StartsWith(nameLower) == true) found.Add((NPC)npc.Clone()); } return found; @@ -516,7 +516,7 @@ namespace TShockAPI string englishName = EnglishLanguage.GetPrefixById(i).ToLowerInvariant(); if (prefixName == lowerName || englishName == lowerName) return new List() { i }; - else if (prefixName.StartsWith(lowerName) || englishName.StartsWith(lowerName)) // Partial match + else if (prefixName.StartsWith(lowerName) || englishName?.StartsWith(lowerName) == true) // Partial match found.Add(i); } return found; From b3d308f01709f5f5fdc2a39831bf22511c2a9060 Mon Sep 17 00:00:00 2001 From: Luke Date: Sat, 22 Apr 2017 10:39:59 +1000 Subject: [PATCH 27/58] TSAPI update for 1.3.5.2 --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 88230a92..5eab3639 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 88230a92cb56c64ac9b7cf48080919639d05241a +Subproject commit 5eab36395fb918e04ca959345a533938298ed7a1 From 1f3a09d738b7923cae9621b515812f6538d7b81f Mon Sep 17 00:00:00 2001 From: White Date: Sat, 22 Apr 2017 18:24:02 +0930 Subject: [PATCH 28/58] Better workaround for Terraria chat commands, courtesy of @DeathCradle --- TShockAPI/TShock.cs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 4342473a..165b0e3e 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -1443,13 +1443,25 @@ namespace TShockAPI string text = args.Text; - //This is a hacky way of bypassing Terraria's new chat command processing. - //_name is usually a private variable but the wonders of OTAPI make it available to us - if (args.CommandId._name == "Emote") + // Terraria now has chat commands on the client side. + // These commands remove the commands prefix (e.g. /me /playing) and send the command id instead + // In order for us to keep legacy code we must reverse this and get the prefix using the command id + foreach (var item in Terraria.UI.Chat.ChatManager.Commands._localizedCommands) { - text = "/me " + text; + if (item.Value._name == args.CommandId._name) + { + if (!String.IsNullOrEmpty(text)) + { + text = item.Key.Value + ' ' + text; + } + else + { + text = item.Key.Value; + } + break; + } } - + if ((text.StartsWith(Config.CommandSpecifier) || text.StartsWith(Config.CommandSilentSpecifier)) && !string.IsNullOrWhiteSpace(text.Substring(1))) { From 53d9e7523f635701f8916dc9c7ca2d1809e73068 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Sat, 22 Apr 2017 20:41:43 -0600 Subject: [PATCH 29/58] Remove -lang from TShock (supported in Vanilla) --- TShockAPI/TShock.cs | 6 ------ TerrariaServerAPI | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index 39373a79..45aa012e 100644 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -712,12 +712,6 @@ namespace TShockAPI } }) - .AddFlag("-lang", (l) => - { - LanguageManager.Instance.SetLanguage(l); - ServerApi.LogWriter.PluginWriteLine(this, string.Format("Language attempted to be set to {0}.", l), TraceLevel.Verbose); - }) - .AddFlag("-autocreate", (size) => { if (!string.IsNullOrWhiteSpace(size)) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 5eab3639..8226e369 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 5eab36395fb918e04ca959345a533938298ed7a1 +Subproject commit 8226e3692f9ac4f03bde71b3dac317027f0f62b1 From fc0e7d54de48a64ce8464addec603173b3ed91fb Mon Sep 17 00:00:00 2001 From: Tyler Watson Date: Mon, 24 Apr 2017 00:07:37 +1000 Subject: [PATCH 30/58] Update submodule to fix garbage console with -lang --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 8226e369..e3516ebc 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 8226e3692f9ac4f03bde71b3dac317027f0f62b1 +Subproject commit e3516ebce03bad0428b41018b78f3a990ffbeb6b From a251a21fef5ab6140347f2492405a5855a6e19b6 Mon Sep 17 00:00:00 2001 From: Tyler Watson Date: Mon, 24 Apr 2017 00:32:18 +1000 Subject: [PATCH 31/58] Update release to include UnicodeInput modification --- scripts/create_release.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/create_release.py b/scripts/create_release.py index 94c85cb0..be6efb41 100755 --- a/scripts/create_release.py +++ b/scripts/create_release.py @@ -148,11 +148,13 @@ def run_bootstrapper(): mod_clientuuid_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.ClientUUID/TShock.Modifications.ClientUUID.csproj', '/p:Configuration=' + build_config]) mod_explosives_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.Explosives/TShock.Modifications.Explosives.csproj', '/p:Configuration=' + build_config]) mod_ssc_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.SSC/TShock.Modifications.SSC.csproj', '/p:Configuration=' + build_config]) + mod_utf8_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.UnicodeInput/TShock.Modifications.UnicodeInput.csproj', '/p:Configuration=' + build_config]) mod_bootstrapper_proc.wait() mod_clientuuid_proc.wait() mod_explosives_proc.wait() mod_ssc_proc.wait() + mod_utf8_proc.wait() if (mod_bootstrapper_proc.returncode != 0): raise CalledProcessError(mod_bootstrapper_proc.returncode) From 9a5a10860cfe1fa5e051c2af00596c52c1785d69 Mon Sep 17 00:00:00 2001 From: Tyler Watson Date: Mon, 24 Apr 2017 01:07:28 +1000 Subject: [PATCH 32/58] Update submodule to fix build --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index e3516ebc..6d74f557 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit e3516ebce03bad0428b41018b78f3a990ffbeb6b +Subproject commit 6d74f557cad231633052b4d5513150c4f93a971c From e1919adfb2eb36e6aa12a410bee666ce2aed38db Mon Sep 17 00:00:00 2001 From: White Date: Tue, 25 Apr 2017 11:32:39 +0930 Subject: [PATCH 33/58] Fixes { and } breaking server message broadcasts --- TShockAPI/TSPlayer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 627d44ab..9598e5d9 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -1186,7 +1186,7 @@ namespace TShockAPI if (RealPlayer && !ConnectionAlive) return; - NetMessage.SendData((int) msgType, Index, -1, NetworkText.FromFormattable(text), number, number2, number3, number4, number5); + NetMessage.SendData((int) msgType, Index, -1, NetworkText.FromLiteral(text), number, number2, number3, number4, number5); } /// From 7d6c7d83b560be7b1f71e21d1cfd95e17123a046 Mon Sep 17 00:00:00 2001 From: Tyler Watson Date: Tue, 25 Apr 2017 13:37:43 +1000 Subject: [PATCH 34/58] Updated submodule to include git stamps --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 6d74f557..20166fac 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 6d74f557cad231633052b4d5513150c4f93a971c +Subproject commit 20166fac5a4ee45c97088cec4cc6293f2fa1e5d0 From 50135c0eb8bdc852f22279c6b856b2a89b94b8a4 Mon Sep 17 00:00:00 2001 From: Tyler Watson Date: Tue, 25 Apr 2017 13:58:34 +1000 Subject: [PATCH 35/58] Buried in an issue is the author saying that fody.stamp doesn't work on mono. rip --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 20166fac..2f7a79ed 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 20166fac5a4ee45c97088cec4cc6293f2fa1e5d0 +Subproject commit 2f7a79edd7b09288d2f3ad56bf765f77a0297cff From 778a6a0ee189cf85b0b82978c8965d746e2f5d65 Mon Sep 17 00:00:00 2001 From: Tyler Watson Date: Tue, 25 Apr 2017 14:44:02 +1000 Subject: [PATCH 36/58] Submodule update for ServerBroadcast hook --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 2f7a79ed..6eb98ced 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 2f7a79edd7b09288d2f3ad56bf765f77a0297cff +Subproject commit 6eb98ced93fe2a3e259556d9c9587067c99f73df From 5890cb4a88372325515625b1b4e3d54a4e881919 Mon Sep 17 00:00:00 2001 From: Tyler Watson Date: Tue, 25 Apr 2017 15:08:51 +1000 Subject: [PATCH 37/58] Update submodule to fix broadcast colours --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 6eb98ced..217fb881 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 6eb98ced93fe2a3e259556d9c9587067c99f73df +Subproject commit 217fb8810e1650a49ea50084fb07664a36387fcc From a026c5809fab0cd5c5ed1439f0760a0dff68b957 Mon Sep 17 00:00:00 2001 From: ZIT WANG Date: Tue, 25 Apr 2017 15:10:24 +0800 Subject: [PATCH 38/58] Fix duplicate items shown in Utils.GetItemByName * Remove unused usings --- TShockAPI/Utils.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index b5d2b8f9..14c072e3 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -17,21 +17,19 @@ along with this program. If not, see . */ using System; -using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; -using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using Terraria; using Terraria.ID; using Terraria.Utilities; using TShockAPI.DB; -using BCrypt.Net; using Microsoft.Xna.Framework; +using Terraria.Localization; using TShockAPI.Localization; namespace TShockAPI @@ -346,6 +344,8 @@ namespace TShockAPI var found = new List(); Item item = new Item(); string nameLower = name.ToLowerInvariant(); + var checkEnglish = Language.ActiveCulture != GameCulture.English; + for (int i = -48; i < Main.maxItemTypes; i++) { item.netDefaults(i); @@ -357,6 +357,11 @@ namespace TShockAPI found.Add(item.Clone()); } + if (!checkEnglish) + { + continue; + } + string englishName = EnglishLanguage.GetItemNameById(i).ToLowerInvariant(); if (!String.IsNullOrEmpty(englishName)) { From 58e2b85f5964b28f77f01a7ff75513abc6f0c045 Mon Sep 17 00:00:00 2001 From: ZIT WANG Date: Tue, 25 Apr 2017 20:01:24 +0800 Subject: [PATCH 39/58] Fix an issue that causes client crash after receiving long text --- TShockAPI/Utils.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index 14c072e3..7e690b84 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -869,8 +869,13 @@ namespace TShockAPI /// An enumerable list with the matches public void SendMultipleMatchError(TSPlayer ply, IEnumerable matches) { - ply.SendErrorMessage("More than one match found: {0}", string.Join(",", matches)); - ply.SendErrorMessage("Use \"my query\" for items with spaces"); + ply.SendErrorMessage("More than one match found: "); + + var lines = PaginationTools.BuildLinesFromTerms(matches.ToArray()); + + lines.ForEach(ply.SendInfoMessage); + + ply.SendErrorMessage("Use \"my query\" for items with spaces."); } /// From b0c5f12504bf4d6bc4702694eeefee26cab6f8f0 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Tue, 25 Apr 2017 16:26:56 -0600 Subject: [PATCH 40/58] Update to Terraria 1.3.5.3 --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 217fb881..f7caaf97 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 217fb8810e1650a49ea50084fb07664a36387fcc +Subproject commit f7caaf97cce5c8033e29f0b3e2011c3a61040658 From 9c30feb744ea884e6b6b9508ac412ec07dc32316 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Tue, 25 Apr 2017 18:10:33 -0600 Subject: [PATCH 41/58] Update submodule to deprecate ChatText --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index f7caaf97..f58e2c70 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit f7caaf97cce5c8033e29f0b3e2011c3a61040658 +Subproject commit f58e2c70be32a092e7e1099268c87ac7184d59a5 From cbe685abe954b3603d8bc4b9604bfae98ebbfefe Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Tue, 25 Apr 2017 19:05:56 -0600 Subject: [PATCH 42/58] Update submodule to fix the build --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index f58e2c70..9b9c8bfd 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit f58e2c70be32a092e7e1099268c87ac7184d59a5 +Subproject commit 9b9c8bfddea410797955db6bc7dfc8e7966c36be From 34116cf5c4164690f4b913eb6531d57b99b71655 Mon Sep 17 00:00:00 2001 From: White Date: Wed, 26 Apr 2017 19:18:39 +0930 Subject: [PATCH 43/58] Submodule update for OTAPI 2.0.0.26 --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 9b9c8bfd..29120bd7 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 9b9c8bfddea410797955db6bc7dfc8e7966c36be +Subproject commit 29120bd7803e6d0426f4a1f6b90d118b7bb87f96 From 85b0b7bc6aab298f1deaebf0aa2433e99f7e6420 Mon Sep 17 00:00:00 2001 From: ZIT WANG Date: Wed, 26 Apr 2017 19:26:54 +0800 Subject: [PATCH 44/58] Fix an itemban issue due to localization --- TShockAPI/DB/ItemManager.cs | 4 ++-- TShockAPI/TSPlayer.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/TShockAPI/DB/ItemManager.cs b/TShockAPI/DB/ItemManager.cs index 541f8a8d..4ce43066 100644 --- a/TShockAPI/DB/ItemManager.cs +++ b/TShockAPI/DB/ItemManager.cs @@ -65,7 +65,7 @@ namespace TShockAPI.DB try { database.Query("INSERT INTO ItemBans (ItemName, AllowedGroups) VALUES (@0, @1);", - TShock.Utils.GetItemByName(itemname)[0].Name, ""); + itemname, ""); if (!ItemIsBanned(itemname, null)) ItemBans.Add(new ItemBan(itemname)); } @@ -81,7 +81,7 @@ namespace TShockAPI.DB return; try { - database.Query("DELETE FROM ItemBans WHERE ItemName=@0;", TShock.Utils.GetItemByName(itemname)[0].Name); + database.Query("DELETE FROM ItemBans WHERE ItemName=@0;", itemname); ItemBans.Remove(new ItemBan(itemname)); } catch (Exception ex) diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index 9598e5d9..43f7fe18 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -879,7 +879,7 @@ namespace TShockAPI (TShock.Itembans.ItemIsBanned(name, this) || !TShock.Config.AllowAllowedGroupsToSpawnBannedItems)) return false; - GiveItem(type,name,width,height,stack,prefix); + GiveItem(type, name, width, height, stack, prefix); return true; } From a6ace80bc51ecb6788133cd4731ee7f0842b7682 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Wed, 26 Apr 2017 08:03:38 -0600 Subject: [PATCH 45/58] Submodule update for TSAPI#133 --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 29120bd7..ebeed275 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 29120bd7803e6d0426f4a1f6b90d118b7bb87f96 +Subproject commit ebeed275b6e4d19540bdf967963413cf3ef99cc3 From a6206cc89e34f986ac6b5adbe4821cc7bc054891 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Thu, 27 Apr 2017 18:46:52 -0600 Subject: [PATCH 46/58] Add code of conduct to readme below the community section --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index b379295e..e305040d 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,12 @@ Feeling like helping out? Want to find an awesome server? Some awesome plugins? * [Contribute to our docs on readme.io](https://tshock.readme.io/) * [Join our Discord chat (supports Android, iOS, Web, Mac, and Windows)](https://discord.gg/XUJdH58) +### Code of Conduct + +> By participating in the TShock for Terraria community, all members will adhere to maintaining decorum with respect to all humans, in and out of the community. Members will not engage in discussion that inappropriately disparages or marginalizes any group of people or any individual. Members will not attempt to further or advance an agenda to the point of being overbearing or close minded (such as through spreading FUD). Members will not abuse services provided to them and will follow the guidance of community leaders on a situational basis about what abuse consists of. Members will adhere to United States and international law. If members notice a violation of this code of conduct, they will not engage but will instead contact the leadership team on either the forums or Discord. + +> Do not attempt to circumvent or bypass the code of conduct by using clever logic or reasoning (e.g. insulting Facepunch members, because they weren't directly mentioned here). + Please see the contributing file before sending pull requests. ## Download From 1792732257fdffa9e42da4f7981226bd1d7a4e25 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Fri, 28 Apr 2017 01:18:13 -0600 Subject: [PATCH 47/58] Update submodule --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index ebeed275..d93b585f 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit ebeed275b6e4d19540bdf967963413cf3ef99cc3 +Subproject commit d93b585fb9833f536c96b68bc6b5e9dc7d00416c From 728d5565b9c901b27b9a1a7fe1482fa98877d5c2 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Fri, 28 Apr 2017 01:36:44 -0600 Subject: [PATCH 48/58] Add AppVeyor badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e305040d..4548076a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

TShock for Terraria
- Build Status
+ Build StatusAppVeyor Build Status


From 94f1d5e9dd1dfe7ef932cade8ec55180b8f06302 Mon Sep 17 00:00:00 2001 From: Tyler Watson Date: Sun, 30 Apr 2017 03:10:25 +1000 Subject: [PATCH 49/58] Updated submodule for OnNpcKilled hook --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index d93b585f..e704076c 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit d93b585fb9833f536c96b68bc6b5e9dc7d00416c +Subproject commit e704076c2a9db4b2e9beb77249f6c4f8f5036a6e From 1d2619d311012387768b4702ca9ea35de8f2544b Mon Sep 17 00:00:00 2001 From: Tyler Watson Date: Sun, 30 Apr 2017 03:25:41 +1000 Subject: [PATCH 50/58] Update submodule --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index e704076c..f54010dd 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit e704076c2a9db4b2e9beb77249f6c4f8f5036a6e +Subproject commit f54010ddb19b2f739324da73c9a05c6bbfd370a2 From 5b8ce7b88a77fc173cd9dae64e508f83c1194894 Mon Sep 17 00:00:00 2001 From: Tyler Watson Date: Sun, 30 Apr 2017 03:43:35 +1000 Subject: [PATCH 51/58] update submodule --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index f54010dd..999f252c 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit f54010ddb19b2f739324da73c9a05c6bbfd370a2 +Subproject commit 999f252c85b1347e27d237fed9b9987f110e786b From ea979abcdb562ec11bf5ffc6df7b67e7f664d843 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Sat, 29 Apr 2017 12:28:24 -0600 Subject: [PATCH 52/58] Update changelog for OnNpcKilled --- CHANGELOG.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d13820d..15f32ab5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,11 @@ This is the rolling changelog for TShock for Terraria. Use past tense when addin ## Upcoming Changes -* Updated OpenTerraria API to 1.3.5.1 (@DeathCradle) -* Updated Terraria Server API to 1.3.5.1 (@WhiteXZ, @hakusaro) -* Updated TShock core components to 1.3.5.1 (@hakusaro) -* Terraria Server API version tick: 2.1 +* Updated OpenTerraria API to 1.3.5.3 (@DeathCradle) +* Updated Terraria Server API to 1.3.5.3 (@WhiteXZ, @hakusaro) +* Updated TShock core components to 1.3.5.3 (@hakusaro) +* Terraria Server API version tick: 2.2 +* Added OnNpcKilled hook to Server API: 2.2 (@tylerjwatson) ## TShock 4.3.23 * Added evil type option during world creation (@mistzzt) From edad442ec8b6f0fad1480ec3715371c1bab529d8 Mon Sep 17 00:00:00 2001 From: Luke Date: Mon, 1 May 2017 22:59:19 +1000 Subject: [PATCH 53/58] Update submodule for potential lever fix --- TerrariaServerAPI | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TerrariaServerAPI b/TerrariaServerAPI index 999f252c..3545b44a 160000 --- a/TerrariaServerAPI +++ b/TerrariaServerAPI @@ -1 +1 @@ -Subproject commit 999f252c85b1347e27d237fed9b9987f110e786b +Subproject commit 3545b44afe9edafd67a3798da5f047bd63705d53 From 6c082aae63b43850011116955cb4c4e2ee52efe8 Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Mon, 1 May 2017 18:06:19 -0600 Subject: [PATCH 54/58] Update create release script to build Platform not UTF8 --- scripts/create_release.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/create_release.py b/scripts/create_release.py index be6efb41..a1890272 100755 --- a/scripts/create_release.py +++ b/scripts/create_release.py @@ -148,7 +148,7 @@ def run_bootstrapper(): mod_clientuuid_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.ClientUUID/TShock.Modifications.ClientUUID.csproj', '/p:Configuration=' + build_config]) mod_explosives_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.Explosives/TShock.Modifications.Explosives.csproj', '/p:Configuration=' + build_config]) mod_ssc_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.SSC/TShock.Modifications.SSC.csproj', '/p:Configuration=' + build_config]) - mod_utf8_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.UnicodeInput/TShock.Modifications.UnicodeInput.csproj', '/p:Configuration=' + build_config]) + mod_utf8_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.Platform/TShock.Modifications.Platform.csproj', '/p:Configuration=' + build_config]) mod_bootstrapper_proc.wait() mod_clientuuid_proc.wait() @@ -164,6 +164,8 @@ def run_bootstrapper(): raise CalledProcessError(mod_explosives_proc.returncode) if (mod_ssc_proc.returncode != 0): raise CalledProcessError(mod_ssc_proc.returncode) + if (mod_utf8_proc.returncode != 0): + raise CalledProcessError(mod_utf8_proc.returncode) # run the bootstrapper to generate the new OTAPI.dll os.chdir('./TerrariaServerAPI/TShock.Modifications.Bootstrapper/bin/' + build_config) From ee5e3f7d9d07f84ea54ae74615d5e8603176226e Mon Sep 17 00:00:00 2001 From: Lucas Nicodemus Date: Mon, 1 May 2017 18:08:47 -0600 Subject: [PATCH 55/58] Update create_release script to test just building TShock.4.OTAPI.sln and not individual projects --- scripts/create_release.py | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/scripts/create_release.py b/scripts/create_release.py index a1890272..3d86912d 100755 --- a/scripts/create_release.py +++ b/scripts/create_release.py @@ -144,28 +144,12 @@ def update_terraria_source(): def run_bootstrapper(): for build_config in ['Debug','Release'] : - mod_bootstrapper_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.Bootstrapper/TShock.Modifications.Bootstrapper.csproj', '/p:Configuration=' + build_config]) - mod_clientuuid_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.ClientUUID/TShock.Modifications.ClientUUID.csproj', '/p:Configuration=' + build_config]) - mod_explosives_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.Explosives/TShock.Modifications.Explosives.csproj', '/p:Configuration=' + build_config]) - mod_ssc_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.SSC/TShock.Modifications.SSC.csproj', '/p:Configuration=' + build_config]) - mod_utf8_proc = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.Modifications.Platform/TShock.Modifications.Platform.csproj', '/p:Configuration=' + build_config]) + mintaka = subprocess.Popen(['xbuild', './TerrariaServerAPI/TShock.4.OTAPI.sln', '/p:Configuration=' + build_config]) - mod_bootstrapper_proc.wait() - mod_clientuuid_proc.wait() - mod_explosives_proc.wait() - mod_ssc_proc.wait() - mod_utf8_proc.wait() + mintaka.wait() - if (mod_bootstrapper_proc.returncode != 0): - raise CalledProcessError(mod_bootstrapper_proc.returncode) - if (mod_clientuuid_proc.returncode != 0): - raise CalledProcessError(mod_clientuuid_proc.returncode) - if (mod_explosives_proc.returncode != 0): - raise CalledProcessError(mod_explosives_proc.returncode) - if (mod_ssc_proc.returncode != 0): - raise CalledProcessError(mod_ssc_proc.returncode) - if (mod_utf8_proc.returncode != 0): - raise CalledProcessError(mod_utf8_proc.returncode) + if (mintaka.returncode != 0): + raise CalledProcessError(mintaka.returncode) # run the bootstrapper to generate the new OTAPI.dll os.chdir('./TerrariaServerAPI/TShock.Modifications.Bootstrapper/bin/' + build_config) From 72a547441b77e92fc56e284a2c7b0cfef649ba72 Mon Sep 17 00:00:00 2001 From: White Date: Tue, 2 May 2017 16:53:59 +0930 Subject: [PATCH 56/58] Redirects /token/create to /v2/token/create. Adds /v4/players/read. V4 contains piggy, safe, and forge data, and condenses all item fields into one object with child objects. --- TShockAPI/Rest/RestManager.cs | 44 ++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/TShockAPI/Rest/RestManager.cs b/TShockAPI/Rest/RestManager.cs index acc34661..eace08ee 100644 --- a/TShockAPI/Rest/RestManager.cs +++ b/TShockAPI/Rest/RestManager.cs @@ -28,6 +28,7 @@ using HttpServer; using Rests; using Terraria; using TShockAPI.DB; +using Newtonsoft.Json; namespace TShockAPI { @@ -196,6 +197,7 @@ namespace TShockAPI } Rest.RegisterRedirect("/status", "/v2/server/status"); + Rest.RegisterRedirect("/token/create", "/v2/token/create"); //server commands Rest.RegisterRedirect("/server/motd", "/v3/server/motd"); @@ -227,7 +229,7 @@ namespace TShockAPI //player commands Rest.RegisterRedirect("/lists/players", "/lists/players", "/v2/players/list"); Rest.RegisterRedirect("/players/list", "/v2/players/list"); - Rest.RegisterRedirect("/players/read", "/v3/players/read"); + Rest.RegisterRedirect("/players/read", "/v3/players/read", "v4/players/read"); Rest.RegisterRedirect("/players/kick", "/v2/players/kick"); Rest.RegisterRedirect("/players/ban", "/v2/players/ban"); Rest.RegisterRedirect("/players/kill", "/v2/players/kill"); @@ -277,6 +279,7 @@ namespace TShockAPI Rest.Register(new SecureRestCommand("/lists/players", PlayerList)); Rest.Register(new SecureRestCommand("/v2/players/list", PlayerListV2)); Rest.Register(new SecureRestCommand("/v3/players/read", PlayerReadV3, RestPermissions.restuserinfo)); + Rest.Register(new SecureRestCommand("/v4/players/read", PlayerReadV4, RestPermissions.restuserinfo)); Rest.Register(new SecureRestCommand("/v2/players/kick", PlayerKickV2, RestPermissions.restkick)); Rest.Register(new SecureRestCommand("/v2/players/ban", PlayerBanV2, RestPermissions.restban, RestPermissions.restmanagebans)); Rest.Register(new SecureRestCommand("/v2/players/kill", PlayerKill, RestPermissions.restkill)); @@ -947,6 +950,45 @@ namespace TShockAPI }; } + [Description("Get information for a user.")] + [Route("/v4/players/read")] + [Permission(RestPermissions.restuserinfo)] + [Noun("player", true, "The player to lookup", typeof(String))] + [Token] + private object PlayerReadV4(RestRequestArgs args) + { + var ret = PlayerFind(args.Parameters); + if (ret is RestObject) + { + return ret; + } + + TSPlayer player = (TSPlayer)ret; + + object items = new + { + inventory = player.TPlayer.inventory.Where(i => i.active).Select(item => (NetItem)item), + equipment = player.TPlayer.armor.Where(i => i.active).Select(item => (NetItem)item), + dyes = player.TPlayer.dye.Where(i => i.active).Select(item => (NetItem)item), + piggy = player.TPlayer.bank.item.Where(i => i.active).Select(item => (NetItem)item), + safe = player.TPlayer.bank2.item.Where(i => i.active).Select(item => (NetItem)item), + forge = player.TPlayer.bank3.item.Where(i => i.active).Select(item => (NetItem)item) + }; + + return new RestObject + { + {"nickname", player.Name}, + {"username", player.User?.Name}, + {"ip", player.IP}, + {"group", player.Group.Name}, + {"registered", player.User?.Registered}, + {"muted", player.mute }, + {"position", player.TileX + "," + player.TileY}, + {"items", items}, + {"buffs", string.Join(", ", player.TPlayer.buffType)} + }; + } + [Description("Kick a player off the server.")] [Route("/v2/players/kick")] [Permission(RestPermissions.restkick)] From 961c857c4b9b84f7ce9a66296af53a3e4c398726 Mon Sep 17 00:00:00 2001 From: ZIT WANG Date: Tue, 2 May 2017 19:43:30 +0800 Subject: [PATCH 57/58] Resolve duplicate negative ids items in Utils.GetItemByName --- TShockAPI/Utils.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs index 7e690b84..520bed9c 100644 --- a/TShockAPI/Utils.cs +++ b/TShockAPI/Utils.cs @@ -346,7 +346,7 @@ namespace TShockAPI string nameLower = name.ToLowerInvariant(); var checkEnglish = Language.ActiveCulture != GameCulture.English; - for (int i = -48; i < Main.maxItemTypes; i++) + for (int i = 1; i < Main.maxItemTypes; i++) { item.netDefaults(i); if (!String.IsNullOrWhiteSpace(item.Name)) From c161be102ddc58936af66b96c59d515ed1580db0 Mon Sep 17 00:00:00 2001 From: ZIT WANG Date: Wed, 3 May 2017 08:25:50 +0800 Subject: [PATCH 58/58] Add displaying ids when sending error responses --- TShockAPI/Commands.cs | 44 +++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index df98776e..cd90f8e6 100644 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -2293,7 +2293,7 @@ namespace TShockAPI } else if (npcs.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => n.FullName)); + TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => $"{n.FullName}({n.type})")); } else { @@ -2550,7 +2550,7 @@ namespace TShockAPI if (matches.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, matches.Select(n => n.FullName)); + TShock.Utils.SendMultipleMatchError(args.Player, matches.Select(n => $"{n.FullName}({n.whoAmI})")); return; } if (matches.Count == 0) @@ -3208,7 +3208,7 @@ namespace TShockAPI } else if (items.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.Name)); + TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => $"{i.Name}({i.netID})")); } else { @@ -3234,7 +3234,7 @@ namespace TShockAPI } else if (items.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.Name)); + TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => $"{i.Name}({i.netID})")); } else { @@ -3279,7 +3279,7 @@ namespace TShockAPI } else if (items.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.Name)); + TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => $"{i.Name}({i.netID})")); } else { @@ -3305,7 +3305,7 @@ namespace TShockAPI } else if (items.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.Name)); + TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => $"{i.Name}({i.netID})")); } else { @@ -5193,7 +5193,7 @@ namespace TShockAPI } else if (npcs.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => n.FullName)); + TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => $"{n.FullName}({n.type})")); return; } else @@ -5248,7 +5248,7 @@ namespace TShockAPI } else if (matchedItems.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, matchedItems.Select(i => i.Name)); + TShock.Utils.SendMultipleMatchError(args.Player, matchedItems.Select(i => $"{i.Name}({i.netID})")); return; } else @@ -5267,14 +5267,14 @@ namespace TShockAPI string prefixidOrName = args.Parameters[amountParamIndex + 1]; var prefixIds = TShock.Utils.GetPrefixByIdOrName(prefixidOrName); - if (item.accessory && prefixIds.Contains(42)) + if (item.accessory && prefixIds.Contains(PrefixID.Quick)) { - prefixIds.Remove(42); - prefixIds.Remove(76); - prefixIds.Add(76); + prefixIds.Remove(PrefixID.Quick); + prefixIds.Remove(PrefixID.Quick2); + prefixIds.Add(PrefixID.Quick2); } - else if (!item.accessory && prefixIds.Contains(42)) - prefixIds.Remove(76); + else if (!item.accessory && prefixIds.Contains(PrefixID.Quick)) + prefixIds.Remove(PrefixID.Quick2); if (prefixIds.Count > 1) { @@ -5331,7 +5331,7 @@ namespace TShockAPI } else if (npcs.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => n.FullName)); + TShock.Utils.SendMultipleMatchError(args.Player, npcs.Select(n => $"{n.FullName}({n.type})")); return; } else if (args.Parameters[1].Length > 200) @@ -5396,7 +5396,7 @@ namespace TShockAPI } else if (items.Count > 1) { - TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => i.Name)); + TShock.Utils.SendMultipleMatchError(args.Player, items.Select(i => $"{i.Name}({i.netID})")); } else { @@ -5406,14 +5406,14 @@ namespace TShockAPI { int.TryParse(args.Parameters[0], out itemAmount); var prefixIds = TShock.Utils.GetPrefixByIdOrName(args.Parameters[1]); - if (item.accessory && prefixIds.Contains(42)) + if (item.accessory && prefixIds.Contains(PrefixID.Quick)) { - prefixIds.Remove(42); - prefixIds.Remove(76); - prefixIds.Add(76); + prefixIds.Remove(PrefixID.Quick); + prefixIds.Remove(PrefixID.Quick2); + prefixIds.Add(PrefixID.Quick2); } - else if (!item.accessory && prefixIds.Contains(42)) - prefixIds.Remove(76); + else if (!item.accessory && prefixIds.Contains(PrefixID.Quick)) + prefixIds.Remove(PrefixID.Quick2); if (prefixIds.Count == 1) prefix = prefixIds[0]; }