/// <summary> /// Handles the packet. /// </summary> /// <param name="Server">The server.</param> /// <param name="Client">The client.</param> /// <remarks></remarks> public override void HandlePacket(MultiplayerServer Server, RemoteClient Client) { Block b = Server.GetWorld(Client).GetBlock(this.SignLocation); if (!(b is SignPostBlock) && !(b is WallSignBlock)) { Server.KickPlayer(Client.PlayerEntity.Name, "Sign hacking!"); return; } if (b is SignPostBlock) (b as SignPostBlock).Data.Text = this.Text; else (b as WallSignBlock).Data.Text = this.Text; Server.Levels[Client.PlayerEntity.LevelIndex].SetBlock(this.SignLocation, b); Server.EnqueueToAllClientsExcept(this, Client.PlayerEntity); }
/// <summary> /// Handles the packet. /// </summary> /// <param name="Server">The server.</param> /// <param name="client">The client.</param> /// <remarks></remarks> public override void HandlePacket(MultiplayerServer Server, RemoteClient client) { // TODO: More stuff Block b = Server.Levels[client.PlayerEntity.LevelIndex].GetBlock(new Vector3(X, Y, Z)); if (Status == 0x00 && client.PlayerEntity.GameMode == GameMode.Creative || Server.Levels[client.PlayerEntity.LevelIndex].GetBlock(new Vector3(X, Y, Z)).InstantBreak) Status = 0x02; switch (Status) { case 0x00: foreach (RemoteClient c in Server.GetClientsInWorldExcept(Server.GetWorld(client), client)) c.PacketQueue.Enqueue(new AnimationPacket(client.PlayerEntity.ID, Animation.SwingArm)); break; case 0x02: Block blockDestroyed = Server.Levels[client.PlayerEntity.LevelIndex].GetBlock(new Vector3(X, Y, Z)); blockDestroyed.BlockDestroyed(Server.GetWorld(client), new Vector3(X, Y, Z), client.PlayerEntity); Server.GetWorld(client).SetBlock(new Vector3(X, Y, Z), new AirBlock()); foreach (RemoteClient c in Server.GetClientsInWorldExcept(Server.GetWorld(client), client)) c.PacketQueue.Enqueue(new AnimationPacket(client.PlayerEntity.ID, Animation.SwingArm)); Server.EnqueueToAllClientsExcept(new SoundOrParticleEffectPacket(SoundOrParticleEffect.BlockBreak, new Vector3(X, Y, Z), blockDestroyed), client.PlayerEntity); break; case 0x04: case 0x05: break; } }