예제 #1
0
파일: Main.cs 프로젝트: keneo/Craft.Net
 static void HandleOnChatMessage(object sender, ChatMessageEventArgs e)
 {
     if (e.RawMessage.StartsWith("/"))
     {
         e.Handled = true;
         string command = e.RawMessage.Substring(1);
         if (command.Contains(" "))
             command = command.Remove(command.IndexOf(' '));
         command = command.ToLower();
         switch (command)
         {
             case "under":
                 try
                 {
                     e.Origin.SendChat("Block under you: " + 
                         minecraftServer.GetClientWorld(e.Origin).GetBlock(
                         e.Origin.Entity.Position + Vector3.Down).GetType().Name);
                 }
                 catch { }
                 break;
             case "ping":
                 e.Origin.SendChat("Pong");
                 break;
         }
     }
 }
예제 #2
0
 public override void HandlePacket(MinecraftServer server, MinecraftClient client)
 {
     server.Log("<" + client.Username + "> " + Message);
     var args = new ChatMessageEventArgs(client, Message);
     server.FireOnChatMessage(args);
     if (!args.Handled)
         server.SendChat("<" + client.Username + "> " + Message);
 }
예제 #3
0
 public override void HandlePacket(MinecraftServer Server, ref MinecraftClient Client)
 {
     Server.Log("<" + Client.Username + "> " + Message);
     ChatMessageEventArgs args = new ChatMessageEventArgs(Client, Message);
     Server.FireOnChatMessage(args);
     if (!args.Handled)
         Server.SendChat("<" + Client.Username + "> " + Message);
 }
예제 #4
0
 public override void HandlePacket(MinecraftServer server, MinecraftClient client)
 {
     LogProvider.Log("<" + client.Username + "> " + Message, LogImportance.Medium);
     var args = new ChatMessageEventArgs(client, Message);
     server.OnChatMessage(args);
     if (!args.Handled)
         server.SendChat("<" + client.Username + "> " + Message);
 }
예제 #5
0
 public static void ChatMessage(MinecraftClient client, MinecraftServer server, IPacket _packet)
 {
     var packet = (ChatMessagePacket)_packet;
     LogProvider.Log("<" + client.Username + "> " + packet.Message, LogImportance.Medium);
     var args = new ChatMessageEventArgs(client, packet.Message);
     server.OnChatMessage(args);
     if (!args.Handled)
         server.SendChat("<" + client.Username + "> " + packet.Message);
 }
예제 #6
0
 static void server_ChatMessage(object sender, ChatMessageEventArgs e)
 {
     if (e.RawMessage.StartsWith("/"))
     {
         e.Handled = true;
         if (e.RawMessage == "/creative")
             e.Origin.GameMode = GameMode.Creative;
         else if (e.RawMessage == "/survival")
             e.Origin.GameMode = GameMode.Survival;
     }
 }
예제 #7
0
파일: Main.cs 프로젝트: pdelvo/Craft.Net
 static void HandleOnChatMessage(object sender, ChatMessageEventArgs e)
 {
     if (e.RawMessage.StartsWith("/"))
     {
         e.Handled = true;
         string command = e.RawMessage.Substring(1);
         if (command.Contains(" "))
             command = command.Remove(command.IndexOf(' '));
         command = command.ToLower();
         switch (command)
         {
             case "under":
                 try
                 {
                     e.Origin.SendChat("Block under you: " + 
                         minecraftServer.GetClientWorld(e.Origin).GetBlock(
                         e.Origin.Entity.Position + Vector3.Down).GetType().Name);
                 }
                 catch { }
                 break;
             case "ping":
                 e.Origin.SendChat("Pong");
                 break;
             case "lightning":
                 minecraftServer.SpawnLightning(minecraftServer.GetClientWorld(e.Origin), e.Origin.Entity.Position);
                 break;
             case "velocity":
                 e.Origin.SendChat(e.Origin.Entity.Velocity.ToString());
                 break;
             case "save":
                 minecraftServer.DefaultWorld.Regions[Vector3.Zero].Save();
                 break;
             case "time":
                 var clients = minecraftServer.GetClientsInWorld(minecraftServer.GetClientWorld(e.Origin));
                 minecraftServer.GetLevel(minecraftServer.GetClientWorld(e.Origin)).Time = 18000;
                 foreach (var minecraftClient in clients)
                     minecraftClient.SendPacket(new TimeUpdatePacket(18000));
                 break;
             case "kill":
                 e.Origin.Entity.Health = 0;
                 break;
             case "survival":
                 e.Origin.Entity.GameMode = GameMode.Survival;
                 break;
             case "creative":
                 e.Origin.Entity.GameMode = GameMode.Creative;
                 break;
         }
     }
 }
예제 #8
0
 static void server_ChatMessage(object sender, ChatMessageEventArgs e)
 {
     if (e.RawMessage.StartsWith("/"))
     {
         e.Handled = true;
         if (e.RawMessage == "/creative")
             e.Origin.GameMode = GameMode.Creative;
         else if (e.RawMessage == "/survival")
             e.Origin.GameMode = GameMode.Survival;
         else if (e.RawMessage == "/world2")
             server.MoveClientToWorld(e.Origin, server.GetWorld("test"));
         else if (e.RawMessage == "/world1")
             server.MoveClientToWorld(e.Origin, server.GetWorld("region"));
     }
 }
예제 #9
0
파일: Server.cs 프로젝트: CServer/CServer
		private void OnPlayerChatMessage (object s, ChatMessageEventArgs e) {
			e.Handled = true;
			/*var message = JsonConvert.DeserializeObject<DeserializedChatMessage> (e.RawMessage).text;
			if (e.RawMessage.Equals ("/stop")) {
				this.SendChat (e.Origin.Username + " has stopped the server.");
				this.Stop ();
			} else
				this.SendChat (string.Format ("Message: {1}",  message));
				*/
			this.SendChat (string.Format ("<{0}> {1}", e.Origin.Username, e.RawMessage));
			if (e.RawMessage == "/stop" && e.Origin.Username == "mypalsminecraft") {
				this.SendChat (string.Format ("{0} has stopped the server.", e.Origin.Username));
				this.Stop ();
			}
		}
예제 #10
0
 public static void ChatMessage(RemoteClient client, MinecraftServer server, IPacket _packet)
 {
     var packet = (ChatMessagePacket)_packet;
     //LogProvider.Log("<" + client.Username + "> " + packet.Message, LogImportance.Medium);
     var args = new ChatMessageEventArgs(client, packet.Message);
     server.OnChatMessage(args);
     if (!args.Handled)
     {
         //var team = server.ScoreboardManager.GetPlayerTeam(client.Username);
         string chat;
         //if (team != null)
         //    chat = string.Format("<{0}{1}{2}> {3}", team.PlayerPrefix, client.Username, team.PlayerSuffix, packet.Message);
         //else
             chat = string.Format("<{0}> {1}", client.Username, packet.Message);
         server.SendChat(chat);
     }
 }
예제 #11
0
 private void OnChatMessage(object sender, ChatMessageEventArgs chatMessageEventArgs)
 {
     if (chatMessageEventArgs.RawMessage.StartsWith("/"))
     {
         chatMessageEventArgs.Handled = true;
         string command = chatMessageEventArgs.RawMessage.Substring(1);
         string[] parameters = command.Split(' ');
         command = parameters[0];
         switch (command)
         {
             case "exit":
                 Program.ExitReset.Set();
                 break;
             case "publish":
                 OpenLocalServer();
                 break;
         }
     }
 }
예제 #12
0
 internal void FireOnChatMessage(ChatMessageEventArgs e)
 {
     if (ChatMessage != null)
         ChatMessage(this, e);
 }
예제 #13
0
 void HandleChatMessage(object sender, ChatMessageEventArgs e)
 {
     if (!Evaluators.ContainsKey(e.Origin.Username))
         return;
     e.Handled = true;
     object result;
     bool result_set;
     if (ReplContext.LongExpression && e.RawMessage != ">>>")
     {
         ReplContext.WorkingExpression += e.RawMessage;
         e.Origin.SendChat(ChatColors.Yellow + e.RawMessage);
         return;
     }
     if (e.RawMessage == "<<<")
     {
         ReplContext.LongExpression = true;
         ReplContext.WorkingExpression = string.Empty;
         return;
     }
     if (e.RawMessage.EndsWith("\\"))
     {
         ReplContext.WorkingExpression += e.RawMessage.Remove(e.RawMessage.Length - 1);
         return;
     }
     if (!ReplContext.LongExpression)
         ReplContext.WorkingExpression += e.RawMessage;
     else
         ReplContext.LongExpression = false;
     try
     {
         Evaluators[e.Origin.Username].Evaluate(ReplContext.WorkingExpression, out result, out result_set);
         if (result_set)
             e.Origin.SendChat(result.ToString());
     }
     catch (Exception)
     {
         // ...will be sent to the user by Mono.CSharp...
     }
     ReplContext.WorkingExpression = string.Empty;
 }
예제 #14
0
 static void HandleOnChatMessage(object sender, ChatMessageEventArgs e)
 {
     if (e.RawMessage.StartsWith("/"))
     {
         e.Handled = true;
         string command = e.RawMessage.Substring(1);
         string[] parameters = null;
         if (command.Contains(" "))
         {
             parameters = command.Substring(command.IndexOf(' ') + 1).Split(' ');
             command = command.Remove(command.IndexOf(' '));
         }
         command = command.ToLower();
         switch (command)
         {
             case "under":
                 try
                 {
                     e.Origin.SendChat("Block under you: " + 
                         e.Origin.World.GetBlock(e.Origin.Entity.Position + Vector3.Down).GetType().Name);
                 }
                 catch { }
                 break;
             case "ping":
                 e.Origin.SendChat("Pong");
                 break;
             case "lightning":
                 minecraftServer.GetWeatherManagerForWorld(minecraftServer.DefaultWorld)
                     .SpawnLightning(e.Origin.Entity.Position);
                 break;
             case "velocity":
                 e.Origin.SendChat(e.Origin.Entity.Velocity.ToString());
                 break;
             case "save":
                 minecraftServer.DefaultWorld.Regions[Vector3.Zero].Save();
                 break;
             case "time":
                 var clients = minecraftServer.EntityManager.GetClientsInWorld(e.Origin.World);
                 minecraftServer.GetLevel(e.Origin.World).Time = 18000;
                 foreach (var minecraftClient in clients)
                     minecraftClient.SendPacket(new TimeUpdatePacket(18000, 18000));
                 break;
             case "kill":
                 e.Origin.Entity.Health = 0;
                 break;
             case "survival":
                 e.Origin.Entity.GameMode = GameMode.Survival;
                 break;
             case "creative":
                 e.Origin.Entity.GameMode = GameMode.Creative;
                 break;
             case "spawn":
                 // TODO: Why does this mess up stance
                 minecraftServer.EntityManager.TeleportEntity(e.Origin.Entity, e.Origin.Entity.SpawnPoint);
                 break;
             case "jump":
                 e.Origin.Entity.Velocity = new Vector3(0, 10, 0);
                 break;
             case "forward":
                 Vector3 velocity = MathHelper.RotateY(Vector3.Forwards * 5,
                     MathHelper.DegreesToRadians(e.Origin.Entity.Yaw));
                 e.Origin.Entity.Velocity = velocity;
                 e.Origin.SendChat(e.Origin.Entity.Yaw.ToString(CultureInfo.InvariantCulture));
                 break;
             case "flying":
                 e.Origin.Entity.Abilities.MayFly = !e.Origin.Entity.Abilities.MayFly;
                 break;
             case "instantmine":
                 e.Origin.Entity.Abilities.InstantMine = !e.Origin.Entity.Abilities.InstantMine;
                 break;
             case "hunger":
                 e.Origin.Entity.Food--;
                 break;
             case "damage":
                 e.Origin.Entity.Health--;
                 break;
             case "se":
                 e.Origin.SendPacket(new NamedSoundEffectPacket(e.RawMessage.Substring(4), (int)e.Origin.Entity.Position.X,
                     (int)e.Origin.Entity.Position.Y, (int)e.Origin.Entity.Position.Z, 1.0f, 63)); // TODO: Write 63 down somewhere
                 break;
             case "destroy":
                 minecraftServer.DefaultWorld.SetBlock(new Vector3(0, 10, 0), new AirBlock());
                 break;
             case "give":
                 try
                 {
                     var type = ((Block)int.Parse(parameters[0])).GetType();
                     var item = (Item)Activator.CreateInstance(type);
                     e.Origin.Entity.SetSlot(InventoryWindow.HotbarIndex, new ItemStack(item.Id, 1));
                 } catch { }
                 break;
             case "relight":
                 e.Origin.World.Relight();
                 e.Origin.SendChat("World relit.");
                 break;
         }
     }
 }
예제 #15
0
 protected internal virtual void OnChatMessage(ChatMessageEventArgs e)
 {
     if (ChatMessage != null)
         ChatMessage(this, e);
 }
예제 #16
0
파일: Server.cs 프로젝트: pdelvo/PartyCraft
 private void MinecraftServerOnChatMessage(object sender, ChatMessageEventArgs chatMessageEventArgs)
 {
     chatMessageEventArgs.Handled = true;
     MinecraftServer.SendChat(string.Format(SettingsProvider.Get<string>("chat.format"),
         chatMessageEventArgs.Origin.Username, chatMessageEventArgs.RawMessage));
 }
예제 #17
0
 private void MinecraftServerOnChatMessage(object sender, ChatMessageEventArgs chatMessageEventArgs)
 {
     var internalArgs = new ChatMessageEventArgs(chatMessageEventArgs.Origin, chatMessageEventArgs.RawMessage);
     if (ChatMessage != null)
     {
         ChatMessage(this, internalArgs);
         if (internalArgs.Handled)
         {
             chatMessageEventArgs.Handled = true;
             return;
         }
     }
     chatMessageEventArgs.Handled = true;
     if (chatMessageEventArgs.RawMessage.StartsWith("/"))
     {
         if (chatMessageEventArgs.RawMessage.StartsWith("//"))
         {
             MinecraftServer.SendChat(string.Format(SettingsProvider.Get<string>("chat.format"),
             chatMessageEventArgs.Origin.Username, chatMessageEventArgs.RawMessage.Substring(1)));
         }
         else
             Command.ExecuteCommand(this, chatMessageEventArgs.Origin, chatMessageEventArgs.RawMessage);
     }
     else
     {
         MinecraftServer.SendChat(string.Format(SettingsProvider.Get<string>("chat.format"),
             chatMessageEventArgs.Origin.Username, chatMessageEventArgs.RawMessage));
     }
 }
예제 #18
0
 static void HandleOnChatMessage(object sender, ChatMessageEventArgs e)
 {
     if (e.RawMessage.StartsWith("/"))
     {
         e.Handled = true;
         string command = e.RawMessage.Substring(1);
         string[] parameters = null;
         if (command.Contains(" "))
         {
             parameters = command.Substring(command.IndexOf(' ') + 1).Split(' ');
             command = command.Remove(command.IndexOf(' '));
         }
         command = command.ToLower();
         switch (command)
         {
             case "under":
                 try
                 {
                     e.Origin.SendChat("Block under you: " + 
                         e.Origin.World.GetBlock(e.Origin.Entity.Position + Vector3.Down).GetType().Name);
                 }
                 catch { }
                 break;
             case "ping":
                 e.Origin.SendChat("Pong");
                 break;
             case "lightning":
                 minecraftServer.GetWeatherManagerForWorld(minecraftServer.DefaultWorld)
                     .SpawnLightning(e.Origin.Entity.Position);
                 break;
             case "velocity":
                 e.Origin.SendChat(e.Origin.Entity.Velocity.ToString());
                 break;
             case "save":
                 minecraftServer.DefaultWorld.Regions[Vector3.Zero].Save();
                 break;
             case "time":
                 var clients = minecraftServer.EntityManager.GetClientsInWorld(e.Origin.World);
                 minecraftServer.GetLevel(e.Origin.World).Time = 18000;
                 foreach (var minecraftClient in clients)
                     minecraftClient.SendPacket(new TimeUpdatePacket(18000, 18000));
                 break;
             case "kill":
                 e.Origin.Entity.Health = 0;
                 break;
             case "survival":
                 e.Origin.Entity.GameMode = GameMode.Survival;
                 break;
             case "creative":
                 e.Origin.Entity.GameMode = GameMode.Creative;
                 break;
             case "spawn":
                 // TODO: Why does this mess up stance
                 minecraftServer.EntityManager.TeleportEntity(e.Origin.Entity, e.Origin.Entity.SpawnPoint);
                 break;
             case "jump":
                 e.Origin.Entity.Velocity = new Vector3(0, 10, 0);
                 break;
             case "forward":
                 Vector3 velocity = MathHelper.RotateY(Vector3.Forwards * 5,
                     MathHelper.DegreesToRadians(e.Origin.Entity.Yaw));
                 e.Origin.Entity.Velocity = velocity;
                 e.Origin.SendChat(e.Origin.Entity.Yaw.ToString(CultureInfo.InvariantCulture));
                 break;
             case "flying":
                 e.Origin.Entity.Abilities.MayFly = !e.Origin.Entity.Abilities.MayFly;
                 break;
             case "instantmine":
                 e.Origin.Entity.Abilities.InstantMine = !e.Origin.Entity.Abilities.InstantMine;
                 break;
             case "hunger":
                 e.Origin.Entity.Food--;
                 break;
             case "damage":
                 e.Origin.Entity.Health--;
                 break;
             case "se":
                 e.Origin.SendPacket(new NamedSoundEffectPacket(e.RawMessage.Substring(4), (int)e.Origin.Entity.Position.X,
                     (int)e.Origin.Entity.Position.Y, (int)e.Origin.Entity.Position.Z, 1.0f, 63)); // TODO: Write 63 down somewhere
                 break;
             case "destroy":
                 minecraftServer.DefaultWorld.SetBlock(new Vector3(0, 10, 0), new AirBlock());
                 break;
             case "give":
                 try
                 {
                     var type = ((Block)int.Parse(parameters[0])).GetType();
                     var item = (Item)Activator.CreateInstance(type);
                     e.Origin.Entity.SetSlot(InventoryWindow.HotbarIndex, new ItemStack(item.Id, 1));
                 } catch { }
                 break;
             case "relight":
                 e.Origin.World.Relight();
                 e.Origin.SendChat("World relit.");
                 break;
             case "createboard":
                 var board = minecraftServer.ScoreboardManager.CreateScoreboard("test", "Scoreboard");
                 minecraftServer.ScoreboardManager.DisplayScoreboard(board, DisplayScoreboardPacket.ScoreboardPosition.Sidebar);
                 board.AddScore("Test", 1234);
                 break;
             case "updateboard":
                 minecraftServer.ScoreboardManager["test"]["Test"]++;
                 break;
             case "removeboard":
                 minecraftServer.ScoreboardManager.RemoveScoreboard("test");
                 break;
             case "createteam":
                 minecraftServer.ScoreboardManager.CreateTeam(parameters[0], parameters[1],
                     true, ChatColors.Delimiter + parameters[2], ChatColors.Plain);
                 break;
             case "setteam":
                 var team = minecraftServer.ScoreboardManager.GetTeam(parameters[0]);
                 team.AddPlayers(parameters.Skip(1).ToArray());
                 break;
             case "toggledownfall":
                 var weatherManager = minecraftServer.GetWeatherManagerForWorld(e.Origin.World);
                 weatherManager.IsRainActive = !weatherManager.IsRainActive;
                 break;
             case "setchunkbiomesnow":
                 var chunk = e.Origin.World.GetChunk(e.Origin.Entity.Position / 16);
                 for (byte x = 0; x < 16; x++)
                 {
                     for (byte z = 0; z < 16; z++)
                     {
                         chunk.SetBiome(x, z, Biome.IcePlains);
                     }
                 }
                 foreach (var client in minecraftServer.EntityManager.GetClientsInWorld(e.Origin.World).ToArray())
                 {
                     if (client.LoadedChunks.Contains(chunk.AbsolutePosition / 16))
                     {
                         client.UnloadChunk(chunk.AbsolutePosition / 16);
                         client.LoadChunk(chunk.AbsolutePosition / 16);
                     }
                 }
                 break;
             case "biome":
                 chunk = e.Origin.World.GetChunk(e.Origin.Entity.Position);
                 e.Origin.SendChat(chunk.GetBiome(0, 0).ToString());
                 break;
         }
     }
 }