/// <inheritdoc /> public void Execute(IEntity entity, SystemEventArgs e) { if (!(e is ChatEventArgs chatEvent) || !(entity is IPlayerEntity player)) { return; } if (!chatEvent.CheckArguments()) { return; } if (chatEvent.Message.StartsWith("/") || chatEvent.Message.StartsWith(".")) { string commandName = chatEvent.Message.Split(' ').FirstOrDefault(); string[] commandParameters = GetCommandParameters(chatEvent.Message, commandName); if (ChatCommands.TryGetValue(commandName, out var command)) { if (player.PlayerData.Authority < command.MinAuthorization) { Logger.Warn(MsgUnableExecuteCmd, commandName, player.Object.Name, "player has no privileges"); } else { command.Method.Invoke(player, commandParameters); Logger.Info("Command '{0}' executed for player '{1}'.", commandName, player.Object.Name); } } else { Logger.Warn(MsgUnableExecuteCmd, commandName, player.Object.Name, "unknown command"); } } else { WorldPacketFactory.SendChat(player, chatEvent.Message); } }