diff --git a/TShockAPI/GetDataHandlers.cs b/TShockAPI/GetDataHandlers.cs index cba96c7c..fcc8b8f9 100755 --- a/TShockAPI/GetDataHandlers.cs +++ b/TShockAPI/GetDataHandlers.cs @@ -2717,8 +2717,18 @@ namespace TShockAPI } else args.Player.InitSpawn = true; + + if ((TShock.Config.ServerSideCharacter) && (args.Player.sX > 0) && (args.Player.sY > 0) && (args.TPlayer.SpawnX > 0) && ((args.TPlayer.SpawnX != args.Player.sX) && (args.TPlayer.SpawnY != args.Player.sY))) + { - if ((TShock.Config.ServerSideCharacter) && (args.Player.sX > 0) && (args.Player.sY > 0)) + args.Player.sX=args.TPlayer.SpawnX; + args.Player.sY=args.TPlayer.SpawnY; + + if (((Main.tile[args.Player.sX, args.Player.sY - 1].active() && Main.tile[args.Player.sX, args.Player.sY - 1].type == 79)) && (WorldGen.StartRoomCheck(args.Player.sX, args.Player.sY -1))) + args.Player.Teleport(args.Player.sX * 16, (args.Player.sY * 16) -48); + } + + else if ((TShock.Config.ServerSideCharacter) && (args.Player.sX > 0) && (args.Player.sY > 0)) { if (((Main.tile[args.Player.sX, args.Player.sY - 1].active() && Main.tile[args.Player.sX, args.Player.sY - 1].type == 79)) && (WorldGen.StartRoomCheck(args.Player.sX, args.Player.sY -1))) args.Player.Teleport(args.Player.sX * 16, (args.Player.sY * 16) -48); diff --git a/TShockAPI/TShock.cs b/TShockAPI/TShock.cs index dc28ab4c..b13afd57 100755 --- a/TShockAPI/TShock.cs +++ b/TShockAPI/TShock.cs @@ -686,7 +686,13 @@ namespace TShockAPI if (player.RecentFuse >0) player.RecentFuse--; - if ((TShock.Config.ServerSideCharacter) && (player.sX > 0) && (player.sY > 0)) + if ((TShock.Config.ServerSideCharacter) && (player.TPlayer.SpawnX > 0) &&(player.sX != player.TPlayer.SpawnX)) + { + player.sX=player.TPlayer.SpawnX; + player.sY=player.TPlayer.SpawnY; + } + + if ((TShock.Config.ServerSideCharacter) && (player.sX > 0) && (player.sY > 0) && (player.TPlayer.SpawnX < 0)) { player.TPlayer.SpawnX = player.sX; player.TPlayer.SpawnY = player.sY;