コード例 #1
0
ファイル: PlayerEntity.cs プロジェクト: LiveMC/SharpMC
 public void SavePlayer()
 {
     byte[] health = HealthManager.Export();
     byte[] inv = Inventory.GetBytes();
     DataBuffer buffer = new DataBuffer(new byte[0]);
     buffer.WriteDouble(KnownPosition.X);
     buffer.WriteDouble(KnownPosition.Y);
     buffer.WriteDouble(KnownPosition.Z);
     buffer.WriteFloat(KnownPosition.Yaw);
     buffer.WriteFloat(KnownPosition.Pitch);
     buffer.WriteBool(KnownPosition.OnGround);
     buffer.WriteVarInt((int)Gamemode);
     buffer.WriteVarInt(health.Length);
     foreach (byte b in health)
     {
         buffer.WriteByte(b);
     }
     buffer.WriteVarInt(inv.Length);
     foreach (byte b in inv)
     {
         buffer.WriteByte(b);
     }
     byte[] data = buffer.ExportWriter;
     data = Globals.Compress(data);
     string savename = ServerSettings.OnlineMode ? Uuid : Username;
     File.WriteAllBytes("Players/" + savename + ".pdata", data);
 }
コード例 #2
0
ファイル: ChunkColumn.cs プロジェクト: LiveMC/SharpMC
        public byte[] GetBytes(bool unloader = false)
        {
            var writer = new DataBuffer(new byte[0]);
            if (!unloader)
            {
                writer.WriteInt(X);
                writer.WriteInt(Z);
                writer.WriteBool(true);
                writer.WriteUShort(0xffff); // bitmap
                writer.WriteVarInt((Blocks.Length*2) + Skylight.Data.Length + Blocklight.Data.Length + BiomeId.Length);

                for (var i = 0; i < Blocks.Length; i++)
                {
                    writer.WriteUShort((ushort) ((Blocks[i] << 4) | Metadata[i]));
                }

                writer.Write(Blocklight.Data);
                writer.Write(Skylight.Data);

                writer.Write(BiomeId);
            }
            else
            {
                writer.WriteInt(X);
                writer.WriteInt(Z);
                writer.WriteBool(true);
                writer.WriteUShort(0);
                writer.WriteVarInt(0);
            }
            return writer.ExportWriter;
        }