public override void HandleMcpeClientCacheMissResponse(McpeClientCacheMissResponse message) { foreach (KeyValuePair <ulong, byte[]> kv in message.blobs) { ulong hash = kv.Key; byte[] data = kv.Value; Client.BlobCache.TryAdd(hash, data); var chunks = _futureChunks.Where(c => c.Key.SubChunks.Contains(hash) || c.Key.Biome == hash); foreach (KeyValuePair <CachedChunk, object> kvp in chunks) { CachedChunk chunk = kvp.Key; if (chunk.Biome == hash) { chunk.Chunk.biomeId = data; chunk.Biome = 0; } else { for (int i = 0; i < chunk.SubChunks.Length; i++) { ulong subChunkHash = chunk.SubChunks[i]; if (subChunkHash == hash) { // parse data chunk.Chunk[i] = ClientUtils.DecodeChunkColumn(1, data, BlockPalette, _internalStates)[0]; chunk.SubChunks[i] = 0; } } } if (chunk.Biome == 0 && chunk.SubChunks.All(c => c == 0)) { _futureChunks.TryRemove(chunk, out _); var coordinates = new ChunkCoordinates(chunk.Chunk.X, chunk.Chunk.Z); foreach (KeyValuePair <BlockCoordinates, NbtCompound> bePair in _futureBlockEntities.Where(be => (ChunkCoordinates)be.Key == coordinates)) { chunk.Chunk.BlockEntities.Add(bePair); _futureBlockEntities.TryRemove(bePair.Key, out _); } chunk.Chunk.RecalcHeight(); Client.Chunks[coordinates] = chunk.Chunk; } } } }
public virtual void HandleMcpeClientCacheMissResponse(McpeClientCacheMissResponse message) { }
public abstract void HandleMcpeClientCacheMissResponse(McpeClientCacheMissResponse message);
public override void HandleMcpeClientCacheMissResponse(McpeClientCacheMissResponse message) { }
public override void HandleMcpeClientCacheMissResponse(McpeClientCacheMissResponse message) { UnhandledPackage(message); }