Esempio n. 1
0
        protected override void LineReceived(string line)
        {
            string[] parts = line.Split('\t');

            if (parts [0] == "servers")
            {
                foreach (var kvp in World.VanillaWorlds)
                {
                    if (line.Contains("\t" + kvp.Value.ServerName) == false)
                    {
                        kvp.Value.Stopped.Set();
                        kvp.Value.Running.Reset();
                    }
                    else
                    {
                        if (firstServers)
                        {
                            kvp.Value.Stopped.Reset();
                            kvp.Value.Running.Set();
                        }
                    }
                }
                firstServers = false;
                return;
            }

            if (line.Contains("INFO]: Done"))
            {
                VanillaWorld w;
                if (World.VanillaWorlds.ContainsKey(parts [0]))
                {
                    w = World.VanillaWorlds [parts [0]];
                }
                else
                {
                    var p = PlayerList.GetPlayerByUsername("nuxas");
                    if (p != null)
                    {
                        p.TellSystem(Chat.Red, "Unkown world: " + line);
                    }
                    return;
                }

                w.Running.Set();
                w.Stopped.Reset();

                if (parts [0] == World.Main.ServerName)
                {
                    PlayerList.SetRealWorldForAllInConstruct();
                }
            }
        }
Esempio n. 2
0
 internal void TellResidentsSystem(Client player, string prefix, string message)
 {
     foreach (string username in Residents.ToArray())
     {
         if (player != null && username.ToLowerInvariant() == player.MinecraftUsername.ToLowerInvariant())
         {
             continue;
         }
         Client p = PlayerList.GetPlayerByUsername(username);
         if (p != null)
         {
             p.TellSystem(prefix, message);
         }
     }
 }
Esempio n. 3
0
        void RunController()
        {
            BinaryReader r = new BinaryReader(stream);
            BinaryWriter w = new BinaryWriter(stream);

            while (Program.Active)
            {
                int            length = r.ReadInt32();
                byte[]         packet = r.ReadBytes(length);
                string         json   = Encoding.UTF8.GetString(packet);
                ControlMessage c      = JsonConvert.DeserializeObject <ControlMessage>(json);
                if (Program.Active == false)
                {
                    return;
                }

                try
                {
                    //Console.WriteLine ("Got from controller " + c);
                    if (c.Kick != null)
                    {
                        //Console.WriteLine ("Kick");
                        Client p = PlayerList.GetPlayerByUsername(c.Kick.Username);
                        if (p != null)
                        {
                            p.Kick(c.Kick.Reason);
                        }
                    }

                    if (c.Ban != null)
                    {
                        Banned.Ban(null, c.Ban.Username, c.Ban.BannedUntil, c.Ban.Reason);
                    }

                    if (c.Pardon != null)
                    {
                        Banned.Pardon(null, c.Pardon.Username);
                    }

                    if (c.PlayerUpdate)
                    {
                        //Console.WriteLine ("Update");
                        //Send complete player status update
                        PlayersUpdate pu = new PlayersUpdate();
                        pu.List      = new List <Control.Player>();
                        pu.MessageID = messageID;
                        messageID   += 2;
                        foreach (Client pp in PlayerList.List)
                        {
                            pu.List.Add(new Control.Player(pp));
                        }

                        byte[] buffer = Json.Serialize(pu);

                        w.Write((int)buffer.Length);
                        w.Write(buffer);
                        w.Flush();
                        //Console.WriteLine ("Update Sent");
                    }

                    if (c.TP != null)
                    {
                        var p = PlayerList.GetPlayerByUsernameOrName(c.TP.Username);
                        if (p == null)
                        {
                            return;
                        }
                        if (c.TP.ToUsername != null)
                        {
                            var pTo = PlayerList.GetPlayerByUsernameOrName(c.TP.ToUsername);
                            if (pTo == null)
                            {
                                return;
                            }
                            p.Session.World.Send("tp " + p.MinecraftUsername + " " + pTo.MinecraftUsername);
                            continue;
                        }
                        if (c.TP.Position != null)
                        {
                            p.Warp(c.TP.Position, (Dimensions)c.TP.Dimension, Worlds.World.Main);
                            continue;
                        }
                    }
                } catch (Exception ie)
                {
                    Log.WriteServer(ie);
                }
            }
        }