コード例 #1
0
        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;
            }
        }
コード例 #2
0
        public static void Main()
        {
            /*
             * //Yaml.Node n = Yaml.Node.FromFile("minecraft.yaml");
             * //Console.WriteLine(n);
             * //Console.ReadLine();
             * YamlMapping ns = (YamlMapping)YamlNode.FromYamlFile("minecraft.yaml")[0];
             * outputNode(ns);
             *
             * YamlSequence m;
             * YamlNode n;
             * ns.TryGetValue("blocks", out n);
             * m = (YamlSequence)n;
             * foreach(YamlNode i in m)
             *  foreach (YamlNode ii in ((YamlMapping)i).Values)
             *      Console.WriteLine(ii.Tag);
             *
             * Console.ReadLine();
             * return;*/
            Thread renderThread = new Thread(() =>
            {
                t.Go();
            });

            Client mc = t.mc;

            renderThread.Start();
            mc.packetReceived += t.packetHandler;
            wl("Welcome to SharpMCLibrary");
            w("Please enter a name:");
            mc.name    = Console.ReadLine();
            mc.output2 = writeDebug;
            //mc.connect("127.0.0.1", 25564); //SMPROXY
            //mc.connect("127.0.0.1", 25565); //LOCAL
            mc.connect("192.168.0.119", 25565); //LOCAL
            //mc.connect("37.59.228.108", 25565); //mcags.com


            string tmp = "";

            while (!(tmp == "/exit" || tmp == "/quit"))
            {
                tmp = Console.ReadLine();
                if (tmp.StartsWith("/"))
                {
                    if (tmp == "/respawn")
                    {
                        Packet_Respawn r = new Packet_Respawn();
                        r.Dimension   = 0;
                        r.Difficulty  = 1;
                        r.Gamemode    = 0;
                        r.LevelType   = "default";
                        r.WorldHeight = 256;
                        mc.sendPacket(r);
                    }
                }
                else
                {
                    mc.sendPacket(new Packet_Chat()
                    {
                        Message = tmp
                    });
                }
            }
            mc.disconnect();
        }