Players now in sync with server when protect spawn or anti build it on.

This commit is contained in:
ricky 2011-06-14 23:27:47 +10:00
parent 6411e71cee
commit f810f5f979

View file

@ -343,13 +343,14 @@ namespace TShockAPI
return Tools.HandleGriefer(e.Msg.whoAmI, "Placing impossible to place blocks.");
}
}
if (type == 0 || type == 1)
if (type == 0 || type == 1 || type == 2 || type == 3)
{
if (ConfigurationManager.disableBuild)
{
if (!players[e.Msg.whoAmI].group.HasPermission("editspawn"))
{
Tools.SendMessage(e.Msg.whoAmI, "World protected from changes.", Color.Red);
RevertPlayerChanges(e.Msg.whoAmI, type, x, y);
return true;
}
}
@ -361,6 +362,7 @@ namespace TShockAPI
if (flag)
{
Tools.SendMessage(e.Msg.whoAmI, "Spawn protected from changes.", Color.Red);
RevertPlayerChanges(e.Msg.whoAmI, type, x, y);
return true;
}
}
@ -376,6 +378,34 @@ namespace TShockAPI
return false;
}
private static void RevertPlayerChanges(int player, byte action, int x, int y)
{
int revertAction = 0;
float revertType = 0f;
switch (action)
{
case 0:
revertAction = 1;
revertType = Main.tile[x, y].type;
break;
case 1:
revertAction = 0;
revertType = 0f;
break;
case 2:
revertAction = 3;
revertType = Main.tile[x, y].wall;
break;
case 3:
revertAction = 2;
revertType = 0f;
break;
}
NetMessage.SendData(17, player, -1, "", revertAction, x, y, revertType);
for (int j = y - 2; j <= (y + 2); j++)
NetMessage.SendData(10, player, -1, "", 5, (float)(x - 2), (float)j, 0f);
}
bool HandleTogglePvp(MemoryStream data, GetDataEventArgs e)
{
int id = data.ReadByte();