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(); } } }
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); } } }
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); } } }