diff --git a/TShockAPI/NetItem.cs b/TShockAPI/NetItem.cs
index 45cc2a31..8ae60e62 100644
--- a/TShockAPI/NetItem.cs
+++ b/TShockAPI/NetItem.cs
@@ -41,6 +41,11 @@ namespace TShockAPI
///
public static readonly int SafeSlots = PiggySlots;
+ ///
+ /// 40 - The number of slots in a forge
+ ///
+ public static readonly int ForgeSlots = SafeSlots;
+
///
/// 59 - The size of the player's inventory (inventory, coins, ammo, held item)
///
@@ -69,7 +74,7 @@ namespace TShockAPI
///
/// 180 - The inventory size (inventory, held item, armour, dies, coins, ammo, piggy, safe, and trash)
///
- public static readonly int MaxInventory = InventorySlots + ArmorSlots + DyeSlots + MiscEquipSlots + MiscDyeSlots + PiggySlots + SafeSlots + 1;
+ public static readonly int MaxInventory = InventorySlots + ArmorSlots + DyeSlots + MiscEquipSlots + MiscDyeSlots + PiggySlots + SafeSlots + ForgeSlots + 1;
[JsonProperty("netID")]
private int _netId;
diff --git a/TShockAPI/PlayerData.cs b/TShockAPI/PlayerData.cs
index eff5baaa..7422bc80 100644
--- a/TShockAPI/PlayerData.cs
+++ b/TShockAPI/PlayerData.cs
@@ -117,6 +117,7 @@ namespace TShockAPI
Item[] miscDyes = player.TPlayer.miscDyes;
Item[] piggy = player.TPlayer.bank.item;
Item[] safe = player.TPlayer.bank2.item;
+ Item[] forge = player.TPlayer.bank3.item;
Item trash = player.TPlayer.trashItem;
for (int i = 0; i < NetItem.MaxInventory; i++)
@@ -172,9 +173,18 @@ namespace TShockAPI
+ NetItem.MiscEquipSlots + NetItem.MiscDyeSlots + NetItem.PiggySlots);
this.inventory[i] = (NetItem)safe[index];
}
+ else if (i <
+ NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots +
+ NetItem.MiscDyeSlots + NetItem.PiggySlots + NetItem.SafeSlots + NetItem.ForgeSlots)
+ {
+ //179-219
+ var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots
+ + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots + NetItem.PiggySlots + NetItem.ForgeSlots);
+ this.inventory[i] = (NetItem)forge[index];
+ }
else
{
- //179
+ //220
this.inventory[i] = (NetItem)trash;
}
}
@@ -320,6 +330,20 @@ namespace TShockAPI
player.TPlayer.bank2.item[index].prefix = (byte)this.inventory[i].PrefixId;
}
}
+ else if (i <
+ NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots +
+ NetItem.MiscDyeSlots + NetItem.PiggySlots + NetItem.SafeSlots + NetItem.ForgeSlots)
+ {
+ var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots
+ + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots + NetItem.PiggySlots + NetItem.SafeSlots);
+ player.TPlayer.bank3.item[index].netDefaults(this.inventory[i].NetId);
+
+ if (player.TPlayer.bank3.item[index].netID != 0)
+ {
+ player.TPlayer.bank3.item[index].stack = this.inventory[i].Stack;
+ player.TPlayer.bank3.item[index].prefix = (byte)this.inventory[i].PrefixId;
+ }
+ }
else
{
player.TPlayer.trashItem.netDefaults(this.inventory[i].NetId);
@@ -368,6 +392,11 @@ namespace TShockAPI
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++;
}
+ 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);
+ slot++;
+ }
NetMessage.SendData(5, -1, -1, Main.player[player.Index].trashItem.name, player.Index, slot, (float)Main.player[player.Index].trashItem.prefix);
@@ -411,6 +440,11 @@ namespace TShockAPI
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++;
}
+ 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);
+ slot++;
+ }
NetMessage.SendData(5, player.Index, -1, Main.player[player.Index].trashItem.name, player.Index, slot, (float)Main.player[player.Index].trashItem.prefix);
diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs
index 36ae9ac3..c4d06606 100755
--- a/TShockAPI/TShock.cs
+++ b/TShockAPI/TShock.cs
@@ -1926,6 +1926,7 @@ namespace TShockAPI
Item[] miscDyes = player.TPlayer.miscDyes;
Item[] piggy = player.TPlayer.bank.item;
Item[] safe = player.TPlayer.bank2.item;
+ Item[] forge = player.TPlayer.bank3.item;
Item trash = player.TPlayer.trashItem;
for (int i = 0; i < NetItem.MaxInventory; i++)
@@ -2074,6 +2075,29 @@ namespace TShockAPI
}
}
}
+ else if (i <
+ NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots + NetItem.MiscEquipSlots +
+ NetItem.MiscDyeSlots + NetItem.PiggySlots + NetItem.SafeSlots + NetItem.ForgeSlots)
+ {
+ //179-219
+ Item item = new Item();
+ var index = i - (NetItem.InventorySlots + NetItem.ArmorSlots + NetItem.DyeSlots
+ + NetItem.MiscEquipSlots + NetItem.MiscDyeSlots + NetItem.PiggySlots + NetItem.SafeSlots);
+ if (forge[index] != null && forge[index].netID != 0)
+ {
+ item.netDefaults(forge[index].netID);
+ item.Prefix(forge[index].prefix);
+ item.AffixName();
+
+ if (forge[index].stack > item.maxStack)
+ {
+ check = true;
+ player.SendMessage(
+ String.Format("Stack cheat detected. Remove Defender's Forge item {0} ({1}) and then rejoin", item.name, forge[index].stack),
+ Color.Cyan);
+ }
+ }
+ }
else
{
Item item = new Item();
diff --git a/TerrariaServerAPI b/TerrariaServerAPI
index e0eb82d1..9050642f 160000
--- a/TerrariaServerAPI
+++ b/TerrariaServerAPI
@@ -1 +1 @@
-Subproject commit e0eb82d1f30c18bd954cee215a86367bd2d8b4af
+Subproject commit 9050642fb6a98d4f50d97db34f837aaf485d3bf7