Пример #1
0
 /// <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);
 }
Пример #2
0
        /// <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;
            }
        }