diff --git a/TShockAPI/Commands.cs b/TShockAPI/Commands.cs
index f6f15fc5..c92688fd 100755
--- a/TShockAPI/Commands.cs
+++ b/TShockAPI/Commands.cs
@@ -4634,7 +4634,7 @@ namespace TShockAPI
}
if (args.Parameters.Count == 2)
int.TryParse(args.Parameters[1], out time);
- if (id > 0 && id < Main.maxBuffs)
+ if (id > 0 && id < Main.maxBuffTypes)
{
if (time < 0 || time > short.MaxValue)
time = 60;
@@ -4685,7 +4685,7 @@ namespace TShockAPI
}
if (args.Parameters.Count == 3)
int.TryParse(args.Parameters[2], out time);
- if (id > 0 && id < Main.maxBuffs)
+ if (id > 0 && id < Main.maxBuffTypes)
{
if (time < 0 || time > short.MaxValue)
time = 60;
diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs
index 6cd6c1cb..e69c1b15 100755
--- a/TShockAPI/GetDataHandlers.cs
+++ b/TShockAPI/GetDataHandlers.cs
@@ -1198,7 +1198,7 @@ namespace TShockAPI
{
#region Blacklists
- WhitelistBuffMaxTime = new int[Main.maxBuffs];
+ WhitelistBuffMaxTime = new int[Main.maxBuffTypes];
WhitelistBuffMaxTime[20] = 600;
WhitelistBuffMaxTime[0x18] = 1200;
WhitelistBuffMaxTime[0x1f] = 120;
@@ -3218,7 +3218,7 @@ namespace TShockAPI
if (OnPlayerBuffUpdate(id))
return true;
- for (int i = 0; i < 10; i++)
+ for (int i = 0; i < Terraria.Player.maxBuffs; i++)
{
var buff = args.Data.ReadInt8();
diff --git a/TShockAPI/Net/BaseMsg.cs b/TShockAPI/Net/BaseMsg.cs
index 5db8814e..de85ba35 100644
--- a/TShockAPI/Net/BaseMsg.cs
+++ b/TShockAPI/Net/BaseMsg.cs
@@ -32,12 +32,12 @@ namespace TShockAPI.Net
public void PackFull(Stream stream)
{
long start = stream.Position;
- stream.WriteInt32(1);
+ stream.WriteInt16(0);
stream.WriteInt8((byte) ID);
Pack(stream);
long end = stream.Position;
stream.Position = start;
- stream.WriteInt32((int) (end - start) - 4);
+ stream.WriteInt16((short)end);
stream.Position = end;
}
diff --git a/TShockAPI/Net/ProjectileRemoveMsg.cs b/TShockAPI/Net/ProjectileRemoveMsg.cs
index 1f7907e6..1c04af16 100644
--- a/TShockAPI/Net/ProjectileRemoveMsg.cs
+++ b/TShockAPI/Net/ProjectileRemoveMsg.cs
@@ -41,8 +41,7 @@ namespace TShockAPI.Net
stream.WriteSingle(0);
stream.WriteInt16(0);
stream.WriteByte(Owner);
- stream.WriteByte(0);
- stream.WriteSingle(0);
+ stream.WriteInt16(0);
stream.WriteSingle(0);
stream.WriteSingle(0);
}
diff --git a/TShockAPI/Net/SpawnMsg.cs b/TShockAPI/Net/SpawnMsg.cs
index 849e5627..c2a1b3de 100644
--- a/TShockAPI/Net/SpawnMsg.cs
+++ b/TShockAPI/Net/SpawnMsg.cs
@@ -28,8 +28,8 @@ namespace TShockAPI.Net
get { return PacketTypes.PlayerSpawn; }
}
- public int TileX { get; set; }
- public int TileY { get; set; }
+ public short TileX { get; set; }
+ public short TileY { get; set; }
public byte PlayerIndex { get; set; }
public override void Pack(Stream stream)
diff --git a/TShockAPI/Net/WorldInfoMsg.cs b/TShockAPI/Net/WorldInfoMsg.cs
index 9730b88a..a3985c8f 100644
--- a/TShockAPI/Net/WorldInfoMsg.cs
+++ b/TShockAPI/Net/WorldInfoMsg.cs
@@ -20,6 +20,7 @@ using System;
using System.IO;
using System.IO.Streams;
using System.Text;
+using Terraria;
namespace TShockAPI.Net
{
@@ -58,12 +59,12 @@ namespace TShockAPI.Net
public byte MoonPhase { get; set; }
public bool BloodMoon { get; set; }
public bool Eclipse { get; set; }
- public int MaxTilesX { get; set; }
- public int MaxTilesY { get; set; }
- public int SpawnX { get; set; }
- public int SpawnY { get; set; }
- public int WorldSurface { get; set; }
- public int RockLayer { get; set; }
+ public short MaxTilesX { get; set; }
+ public short MaxTilesY { get; set; }
+ public short SpawnX { get; set; }
+ public short SpawnY { get; set; }
+ public short WorldSurface { get; set; }
+ public short RockLayer { get; set; }
public int WorldID { get; set; }
public byte MoonType { get; set; }
public int TreeX0 { get; set; }
@@ -105,50 +106,71 @@ namespace TShockAPI.Net
public override void Pack(Stream stream)
{
- stream.WriteInt32(Time);
- stream.WriteBoolean(DayTime);
- stream.WriteInt8(MoonPhase);
- stream.WriteBoolean(BloodMoon);
- stream.WriteBoolean(Eclipse);
- stream.WriteInt32(MaxTilesX);
- stream.WriteInt32(MaxTilesY);
- stream.WriteInt32(SpawnX);
- stream.WriteInt32(SpawnY);
- stream.WriteInt32(WorldSurface);
- stream.WriteInt32(RockLayer);
- stream.WriteInt32(WorldID);
- stream.WriteByte(MoonType);
- stream.WriteInt32(TreeX0);
- stream.WriteInt32(TreeX1);
- stream.WriteInt32(TreeX2);
- stream.WriteByte(TreeStyle0);
- stream.WriteByte(TreeStyle1);
- stream.WriteByte(TreeStyle2);
- stream.WriteByte(TreeStyle3);
- stream.WriteInt32(CaveBackX0);
- stream.WriteInt32(CaveBackX1);
- stream.WriteInt32(CaveBackX2);
- stream.WriteByte(CaveBackStyle0);
- stream.WriteByte(CaveBackStyle1);
- stream.WriteByte(CaveBackStyle2);
- stream.WriteByte(CaveBackStyle3);
- stream.WriteByte(SetBG0);
- stream.WriteByte(SetBG1);
- stream.WriteByte(SetBG2);
- stream.WriteByte(SetBG3);
- stream.WriteByte(SetBG4);
- stream.WriteByte(SetBG5);
- stream.WriteByte(SetBG6);
- stream.WriteByte(SetBG7);
- stream.WriteByte(IceBackStyle);
- stream.WriteByte(JungleBackStyle);
- stream.WriteByte(HellBackStyle);
- stream.WriteSingle(WindSpeed);
- stream.WriteByte(NumberOfClouds);
- stream.WriteInt8((byte)BossFlags);
- stream.WriteInt8((byte)BossFlags2);
- stream.WriteSingle(Rain);
- stream.WriteBytes(Encoding.UTF8.GetBytes(WorldName));
+ BinaryWriter writer = new BinaryWriter(stream);
+ writer.Write(Time);
+ BitsByte worldinfo = new BitsByte(DayTime, BloodMoon, Eclipse);
+ writer.Write(worldinfo);
+ writer.Write(MoonPhase);
+ writer.Write(MaxTilesX);
+ writer.Write(MaxTilesY);
+ writer.Write(SpawnX);
+ writer.Write(SpawnY);
+ writer.Write(WorldSurface);
+ writer.Write(RockLayer);
+ writer.Write(WorldID);
+ writer.Write(WorldName);
+ writer.Write(MoonType);
+
+ writer.Write(SetBG0);
+ writer.Write(SetBG1);
+ writer.Write(SetBG2);
+ writer.Write(SetBG3);
+ writer.Write(SetBG4);
+ writer.Write(SetBG5);
+ writer.Write(SetBG6);
+ writer.Write(SetBG7);
+ writer.Write(IceBackStyle);
+ writer.Write(JungleBackStyle);
+ writer.Write(HellBackStyle);
+ writer.Write(WindSpeed);
+ writer.Write(NumberOfClouds);
+
+ writer.Write(TreeX0);
+ writer.Write(TreeX1);
+ writer.Write(TreeX2);
+ writer.Write(TreeStyle0);
+ writer.Write(TreeStyle1);
+ writer.Write(TreeStyle2);
+ writer.Write(TreeStyle3);
+ writer.Write(CaveBackX0);
+ writer.Write(CaveBackX1);
+ writer.Write(CaveBackX2);
+ writer.Write(CaveBackStyle0);
+ writer.Write(CaveBackStyle1);
+ writer.Write(CaveBackStyle2);
+ writer.Write(CaveBackStyle3);
+
+ writer.Write(Rain);
+
+ BitsByte bosses1 = new BitsByte((BossFlags & BossFlags.OrbSmashed) == BossFlags.OrbSmashed,
+ (BossFlags & BossFlags.DownedBoss1) == BossFlags.DownedBoss1,
+ (BossFlags & BossFlags.DownedBoss2) == BossFlags.DownedBoss2,
+ (BossFlags & BossFlags.DownedBoss3) == BossFlags.DownedBoss3,
+ (BossFlags & BossFlags.HardMode) == BossFlags.HardMode,
+ (BossFlags & BossFlags.DownedClown) == BossFlags.DownedClown,
+ (BossFlags & BossFlags.ServerSideCharacter) == BossFlags.ServerSideCharacter,
+ (BossFlags & BossFlags.DownedPlantBoss) == BossFlags.DownedPlantBoss);
+ writer.Write(bosses1);
+
+ BitsByte bosses2 = new BitsByte((BossFlags2 & BossFlags2.DownedMechBoss1) == BossFlags2.DownedMechBoss1,
+ (BossFlags2 & BossFlags2.DownedMechBoss2) == BossFlags2.DownedMechBoss2,
+ (BossFlags2 & BossFlags2.DownedMechBoss3) == BossFlags2.DownedMechBoss3,
+ (BossFlags2 & BossFlags2.DownedMechBossAny) == BossFlags2.DownedMechBossAny,
+ (BossFlags2 & BossFlags2.CloudBg) == BossFlags2.CloudBg,
+ (BossFlags2 & BossFlags2.Crimson) == BossFlags2.Crimson,
+ (BossFlags2 & BossFlags2.PumpkinMoon) == BossFlags2.PumpkinMoon,
+ (BossFlags2 & BossFlags2.SnowMoon) == BossFlags2.SnowMoon);
+ writer.Write(bosses2);
}
}
}
\ No newline at end of file
diff --git a/TShockAPI/SaveManager.cs b/TShockAPI/SaveManager.cs
index de623e83..ede68ee7 100644
--- a/TShockAPI/SaveManager.cs
+++ b/TShockAPI/SaveManager.cs
@@ -125,12 +125,12 @@ namespace TShockAPI
if (task.direct)
{
OnSaveWorld(new WorldSaveEventArgs());
- WorldFile.realsaveWorld(task.resetTime);
+ WorldFile.RealSaveWorld(task.resetTime);
}
else
WorldFile.saveWorld(task.resetTime);
- TShock.Utils.Broadcast("World saved.", Color.Yellow);
- Log.Info(string.Format("World saved at ({0})", Main.worldPathName));
+ TShock.Utils.Broadcast("World saved.", Color.Yellow);
+ Log.Info(string.Format("World saved at ({0})", Main.worldPathName));
}
catch (Exception e)
{
diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs
index ea04eca2..cb0a8c20 100755
--- a/TShockAPI/TSPlayer.cs
+++ b/TShockAPI/TSPlayer.cs
@@ -525,12 +525,12 @@ namespace TShockAPI
DayTime = Main.dayTime,
MoonPhase = (byte)Main.moonPhase,
BloodMoon = Main.bloodMoon,
- MaxTilesX = Main.maxTilesX,
- MaxTilesY = Main.maxTilesY,
- SpawnX = Main.spawnTileX,
- SpawnY = Main.spawnTileY,
- WorldSurface = (int)Main.worldSurface,
- RockLayer = (int)Main.rockLayer,
+ MaxTilesX = (short)Main.maxTilesX,
+ MaxTilesY = (short)Main.maxTilesY,
+ SpawnX = (short)Main.spawnTileX,
+ SpawnY = (short)Main.spawnTileY,
+ WorldSurface = (short)Main.worldSurface,
+ RockLayer = (short)Main.rockLayer,
//Sending a fake world id causes the client to not be able to find a stored spawnx/y.
//This fixes the bed spawn point bug. With a fake world id it wont be able to find the bed spawn.
WorldID = Main.worldID,
@@ -636,8 +636,8 @@ namespace TShockAPI
var msg = new SpawnMsg
{
PlayerIndex = (byte) Index,
- TileX = tilex,
- TileY = tiley
+ TileX = (short)tilex,
+ TileY = (short)tiley
};
msg.PackFull(ms);
SendRawData(ms.ToArray());
diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs
index 89cd3cff..5618528a 100755
--- a/TShockAPI/TShock.cs
+++ b/TShockAPI/TShock.cs
@@ -41,7 +41,7 @@ using System.Threading.Tasks;
namespace TShockAPI
{
- [ApiVersion(1, 15)]
+ [ApiVersion(1, 16)]
public class TShock : TerrariaPlugin
{
public static readonly Version VersionNum = Assembly.GetExecutingAssembly().GetName().Version;
@@ -1149,8 +1149,8 @@ namespace TShockAPI
{
if (e.Handled)
return;
-
- PacketTypes type = e.MsgID;
+
+ /*PacketTypes type = e.MsgID;
Debug.WriteLine("Recv: {0:X}: {2} ({1:XX})", e.Msg.whoAmI, (byte) type, type);
@@ -1174,11 +1174,11 @@ namespace TShockAPI
return;
}
- using (var data = new MemoryStream(e.Msg.readBuffer, e.Index, e.Length))
+ using (var data = new MemoryStream(e.Msg.readBuffer, e.Index, e.Length - 1))
{
// Exceptions are already handled
e.Handled = GetDataHandlers.HandlerGetData(type, player, data);
- }
+ }*/
}
private void OnGreetPlayer(GreetPlayerEventArgs args)
@@ -1359,12 +1359,12 @@ namespace TShockAPI
DayTime = Main.dayTime,
MoonPhase = (byte)Main.moonPhase,
BloodMoon = Main.bloodMoon,
- MaxTilesX = Main.maxTilesX,
- MaxTilesY = Main.maxTilesY,
- SpawnX = Main.spawnTileX,
- SpawnY = Main.spawnTileY,
- WorldSurface = (int)Main.worldSurface,
- RockLayer = (int)Main.rockLayer,
+ MaxTilesX = (short)Main.maxTilesX,
+ MaxTilesY = (short)Main.maxTilesY,
+ SpawnX = (short)Main.spawnTileX,
+ SpawnY = (short)Main.spawnTileY,
+ WorldSurface = (short)Main.worldSurface,
+ RockLayer = (short)Main.rockLayer,
//Sending a fake world id causes the client to not be able to find a stored spawnx/y.
//This fixes the bed spawn point bug. With a fake world id it wont be able to find the bed spawn.
WorldID = Main.worldID,
@@ -1408,7 +1408,7 @@ namespace TShockAPI
(NPC.downedMechBoss2 ? BossFlags2.DownedMechBoss2 : BossFlags2.None) |
(NPC.downedMechBoss3 ? BossFlags2.DownedMechBoss3 : BossFlags2.None) |
(NPC.downedMechBossAny ? BossFlags2.DownedMechBossAny : BossFlags2.None) |
- (Main.cloudBGActive == 1f ? BossFlags2.CloudBg : BossFlags2.None) |
+ (Main.cloudBGActive >= 1f ? BossFlags2.CloudBg : BossFlags2.None) |
(WorldGen.crimson ? BossFlags2.Crimson : BossFlags2.None) |
(Main.pumpkinMoon ? BossFlags2.PumpkinMoon : BossFlags2.None) |
(Main.snowMoon ? BossFlags2.SnowMoon : BossFlags2.None) ,
diff --git a/TShockAPI/Utils.cs b/TShockAPI/Utils.cs
index 93f8db18..5d6a0f73 100644
--- a/TShockAPI/Utils.cs
+++ b/TShockAPI/Utils.cs
@@ -442,7 +442,7 @@ namespace TShockAPI
/// name
public string GetBuffName(int id)
{
- return (id > 0 && id < Main.maxBuffs) ? Main.buffName[id] : "null";
+ return (id > 0 && id < Main.maxBuffTypes) ? Main.buffName[id] : "null";
}
///
@@ -452,7 +452,7 @@ namespace TShockAPI
/// description
public string GetBuffDescription(int id)
{
- return (id > 0 && id < Main.maxBuffs) ? Main.buffTip[id] : "null";
+ return (id > 0 && id < Main.maxBuffTypes) ? Main.buffTip[id] : "null";
}
///
@@ -463,13 +463,13 @@ namespace TShockAPI
public List GetBuffByName(string name)
{
string nameLower = name.ToLower();
- for (int i = 1; i < Main.maxBuffs; i++)
+ for (int i = 1; i < Main.maxBuffTypes; i++)
{
if (Main.buffName[i].ToLower() == nameLower)
return new List {i};
}
var found = new List();
- for (int i = 1; i < Main.maxBuffs; i++)
+ for (int i = 1; i < Main.maxBuffTypes; i++)
{
if (Main.buffName[i].ToLower().StartsWith(nameLower))
found.Add(i);
diff --git a/TerrariaServerAPI b/TerrariaServerAPI
index 32544b40..330a7f06 160000
--- a/TerrariaServerAPI
+++ b/TerrariaServerAPI
@@ -1 +1 @@
-Subproject commit 32544b409a0c40f2be57d27071fd97c36dbe73e4
+Subproject commit 330a7f067c5ebd3f5dd9020f5f27a5e323ffdb1a