diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs index fbc5113b..ede854ee 100755 --- a/TShockAPI/Commands.cs +++ b/TShockAPI/Commands.cs @@ -1792,7 +1792,6 @@ namespace TShockAPI return; case "plantera": npc.SetDefaults(262); - TSPlayer.Server.SetTime(false, 0.0); TSPlayer.Server.SpawnNPC(npc.type, npc.name, amount, args.Player.TileX, args.Player.TileY); TSPlayer.All.SendSuccessMessage("{0} has spawned Plantera {1} time(s).", args.Player.Name, amount); return; diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index 543335d8..6b9bf9dd 100755 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -1208,44 +1208,46 @@ namespace TShockAPI #endregion Blacklists GetDataHandlerDelegates = new Dictionary - { - {PacketTypes.PlayerInfo, HandlePlayerInfo}, - {PacketTypes.PlayerUpdate, HandlePlayerUpdate}, - {PacketTypes.Tile, HandleTile}, - {PacketTypes.TileSendSquare, HandleSendTileSquare}, - {PacketTypes.ProjectileNew, HandleProjectileNew}, - {PacketTypes.TogglePvp, HandleTogglePvp}, - {PacketTypes.PlayerTeam, HandlePlayerTeam}, - {PacketTypes.TileKill, HandleTileKill}, - {PacketTypes.PlayerKillMe, HandlePlayerKillMe}, - {PacketTypes.LiquidSet, HandleLiquidSet}, - {PacketTypes.PlayerSpawn, HandleSpawn}, - {PacketTypes.ChestGetContents, HandleChestOpen}, - {PacketTypes.ChestOpen, HandleChestActive}, - {PacketTypes.ChestItem, HandleChestItem}, - {PacketTypes.SignNew, HandleSign}, - {PacketTypes.PlayerSlot, HandlePlayerSlot}, - {PacketTypes.TileGetSection, HandleGetSection}, - {PacketTypes.UpdateNPCHome, UpdateNPCHome}, - {PacketTypes.PlayerAddBuff, HandlePlayerAddBuff}, - {PacketTypes.ItemDrop, HandleItemDrop}, - {PacketTypes.PlayerHp, HandlePlayerHp}, - {PacketTypes.PlayerMana, HandlePlayerMana}, - {PacketTypes.PlayerDamage, HandlePlayerDamage}, - {PacketTypes.NpcStrike, HandleNpcStrike}, - {PacketTypes.NpcSpecial, HandleSpecial}, - {PacketTypes.PlayerAnimation, HandlePlayerAnimation}, - {PacketTypes.PlayerBuff, HandlePlayerBuffList}, - {PacketTypes.PasswordSend, HandlePassword}, - {PacketTypes.ContinueConnecting2, HandleConnecting}, - {PacketTypes.ProjectileDestroy, HandleProjectileKill}, - {PacketTypes.SpawnBossorInvasion, HandleSpawnBoss}, - {PacketTypes.Teleport, HandleTeleport}, - {PacketTypes.PaintTile, HandlePaintTile}, - {PacketTypes.PaintWall, HandlePaintWall}, - {PacketTypes.Placeholder, HandleRaptor}, - {PacketTypes.DoorUse, HandleDoorUse} - }; + { + { PacketTypes.PlayerInfo, HandlePlayerInfo }, + { PacketTypes.PlayerUpdate, HandlePlayerUpdate }, + { PacketTypes.Tile, HandleTile }, + { PacketTypes.TileSendSquare, HandleSendTileSquare }, + { PacketTypes.ProjectileNew, HandleProjectileNew }, + { PacketTypes.TogglePvp, HandleTogglePvp }, + { PacketTypes.PlayerTeam, HandlePlayerTeam }, + { PacketTypes.TileKill, HandleTileKill }, + { PacketTypes.PlayerKillMe, HandlePlayerKillMe }, + { PacketTypes.LiquidSet, HandleLiquidSet }, + { PacketTypes.PlayerSpawn, HandleSpawn }, + { PacketTypes.ChestGetContents, HandleChestOpen }, + { PacketTypes.ChestOpen, HandleChestActive }, + { PacketTypes.ChestItem, HandleChestItem }, + { PacketTypes.SignNew, HandleSign }, + { PacketTypes.PlayerSlot, HandlePlayerSlot }, + { PacketTypes.TileGetSection, HandleGetSection }, + { PacketTypes.UpdateNPCHome, UpdateNPCHome }, + { PacketTypes.PlayerAddBuff, HandlePlayerAddBuff }, + { PacketTypes.ItemDrop, HandleItemDrop }, + { PacketTypes.PlayerHp, HandlePlayerHp }, + { PacketTypes.PlayerMana, HandlePlayerMana }, + { PacketTypes.PlayerDamage, HandlePlayerDamage }, + { PacketTypes.NpcStrike, HandleNpcStrike }, + { PacketTypes.NpcSpecial, HandleSpecial }, + { PacketTypes.PlayerAnimation, HandlePlayerAnimation }, + { PacketTypes.PlayerBuff, HandlePlayerBuffList }, + { PacketTypes.PasswordSend, HandlePassword }, + { PacketTypes.ContinueConnecting2, HandleConnecting }, + { PacketTypes.ProjectileDestroy, HandleProjectileKill }, + { PacketTypes.SpawnBossorInvasion, HandleSpawnBoss }, + { PacketTypes.Teleport, HandleTeleport }, + { PacketTypes.PaintTile, HandlePaintTile }, + { PacketTypes.PaintWall, HandlePaintWall }, + { PacketTypes.Placeholder, HandleRaptor }, + { PacketTypes.DoorUse, HandleDoorUse }, + { PacketTypes.CompleteAnglerQuest, HandleCompleteAnglerQuest }, + { PacketTypes.NumberOfAnglerQuestsCompleted, HandleNumberOfAnglerQuestsCompleted } + }; } public static bool HandlerGetData(PacketTypes type, TSPlayer player, MemoryStream data) @@ -3604,20 +3606,33 @@ namespace TShockAPI } } - private static bool HandleDoorUse(GetDataHandlerArgs e) + private static bool HandleDoorUse(GetDataHandlerArgs args) { - var Close = e.Data.ReadByte(); - var X = e.Data.ReadInt16(); - var Y = e.Data.ReadInt16(); - var dir = e.Data.ReadByte() == 0 ? -1 : 1; + var close = args.Data.ReadByte(); + var x = args.Data.ReadInt16(); + var y = args.Data.ReadInt16(); + var dir = args.Data.ReadByte() == 0 ? -1 : 1; - if (X >= Main.tile.GetLength(0) || Y >= Main.tile.GetLength(1) || X < 0 || Y < 0) // Check for out of range + if (x >= Main.maxTilesX || y >= Main.maxTilesY || x < 0 || y < 0) // Check for out of range return true; - if (Main.tile[X, Y].type != 10 && Main.tile[X, Y].type != 11) // Check for tile types + if (Main.tile[x, y].type != 10 && Main.tile[x, y].type != 11) // Check for tile types return true; return false; } + + private static bool HandleCompleteAnglerQuest(GetDataHandlerArgs args) + { + // Since packet 76 is NEVER sent to us, we actually have to rely on this to get the true count + args.TPlayer.anglerQuestsFinished++; + return false; + } + + private static bool HandleNumberOfAnglerQuestsCompleted(GetDataHandlerArgs args) + { + // Never sent by vanilla client, ignore this + return true; + } } } diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index e2552ff4..89e70b15 100755 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -1617,23 +1617,16 @@ namespace TShockAPI public static string ToString(NetItem[] inventory) { - string inventoryString = ""; + StringBuilder items = new StringBuilder(); for (int i = 0; i < maxNetInventory; i++) { - if (i != 0) - inventoryString += "~"; - inventoryString += inventory[i].netID; + items.Append(inventory[i].netID).Append(","); if (inventory[i].netID != 0) - { - inventoryString += "," + inventory[i].stack; - inventoryString += "," + inventory[i].prefix; - } + items.Append(inventory[i].stack).Append(",").Append(inventory[i].prefix).Append("~"); else - { - inventoryString += ",0,0"; - } + items.Append("0,0~"); } - return inventoryString; + return items.ToString(0, items.Length - 1); } public static NetItem[] Parse(string data)