void OnPlayerMove_Normal(Player sender, MCForge.API.Events.MoveEventArgs args) { int count = (int)sender.ExtraData["RunCounter"]; count++; sender.ExtraData["RunCounter"] = count; if (count % 15 != 0) return; sender.ExtraData["RunCounter"] = 0; Vector3S tmpPos = new Vector3S(args.FromPosition); tmpPos.Horizontal = tmpPos.Horizontal.GetMove(320, args.ToPosition.Horizontal); if (tmpPos.x < 32 || tmpPos.z < 32 || tmpPos.x > (sender.Level.CWMap.Size.x - 1) * 32 || tmpPos.z > (sender.Level.CWMap.Size.z - 1) * 32) return; Packet pa = new Packet(); pa.Add(Packet.Types.SendTeleport); pa.Add((sbyte)-1); pa.Add(tmpPos.x); pa.Add((short)(tmpPos.y)); pa.Add(tmpPos.z); pa.Add(new byte[2] { (byte)sender.Rot.x, (byte)sender.Rot.z }); sender.oldPos = tmpPos; sender.Pos = tmpPos; sender.oldRot = sender.Rot; sender.SendPacket(pa); args.Cancel(); count++; }