public void packetHandler(object sender, Client.packetReceivedEventArgs e) { switch ((byte)e.Type) { case 0x0D: Packet_PlayerPosAndLook p = (Packet_PlayerPosAndLook)e.packet; moveCamera((float)p.X, (float)p.Y + 3f, (float)p.Z); break; case 8: Packet_UpdateHealth h = (Packet_UpdateHealth)e.packet; Console.WriteLine("Health Update: {0} {1}", h.Health, h.Food); if (h.Health <= 0) { Packet_Respawn r = new Packet_Respawn(); r.Dimension = 0; r.Difficulty = 1; r.Gamemode = 0; r.LevelType = "default"; r.WorldHeight = 256; mc.sendPacket(r); } break; /* case 0x32: * Packet_PreChunk c = (Packet_PreChunk)e.packet; * if (c.Mode) * { * if (!chunks.ContainsKey(c.X + "_" + c.Z)) * chunks.Add(c.X + "_" + c.Z, new Chunk()); * } * else * if (chunks.ContainsKey(c.X + "_" + c.Z)) * chunks.Remove(c.X + "_" + c.Z); * break; */ case 0x33: Packet_MapChunk mch = (Packet_MapChunk)e.packet; int cx, cz; cx = mch.X; cz = mch.Z; string key = cx + "_" + cz; //output("Chunk: " + key, true); if (!chunks.ContainsKey(key)) { chunks.Add(key, new Chunk()); //output("Chunk had to be added! " + key, true); } chunks[key].update(mch); QueueChunk(chunks[key]); break; case 0x34: Packet_MultiBlockChange mb = (Packet_MultiBlockChange)e.packet; chunks[mb.X + "_" + mb.Z].update(mb); QueueChunk(chunks[mb.X + "_" + mb.Z]); break; } }
public void update(Packet_MultiBlockChange data) { int[] d = data.Rawdata; foreach (int bl in d) { int metadata, x, y, z, bid; metadata = bl & 0x3; bid = (bl & 0xFFF0) >> 4; y = (bl & 0xFF0000) >> 16; z = (bl & 0xF000000) >> 24; x = (int)(bl & (uint)0xF0000000) >> 28; //Block b=blocks[x,y,z]; //b.metaData = (short)metadata; //b.ID = (short)bid; } }