/// <summary>
        /// Handle server output, raise all events that should be raised
        /// </summary>
        /// <param name="text">output text to handle</param>
        /// <param name="server">the server that should handle the output</param>
        public static void HandleOutput(IMinecraftServer server, string text)
        {
            RaiseOutputReceivedEvent(text);

            OutputParseResult result = server.ParseOutput(text);

            RaiseOutputParsedEvent(text, result);

            switch (result.Type)
            {
            case MessageType.Info:
                RaiseInfoMessageReceivedEvent(text, result);
                break;

            case MessageType.Warning:
                RaiseWarningMessageReceivedEvent(text, result);
                break;

            case MessageType.Severe:
                RaiseSevereMessageReceivedEvent(text, result);
                break;

            case MessageType.JavaStackTrace:
                RaiseJavaStackStraceMessageReceivedEvent(text, result);
                break;

            case MessageType.JavaStatus:
                RaiseJavaStatusMessageReceivedEvent(text, result);
                break;

            case MessageType.PlayerJoin:
                RaisePlayerJoinEvent(text, result, result.Action);
                break;

            case MessageType.PlayerLeave:
                RaisePlayerLeaveEvent(text, result, result.Action);
                break;

            case MessageType.PlayerKick:
                RaisePlayerKickEvent(text, result, result.Action);
                break;

            case MessageType.PlayerBan:
                RaisePlayerBanEvent(text, result, result.Action);
                break;

            case MessageType.PlayerIpBan:
                RaisePlayerIpBanEvent(text, result, result.Action);
                break;

            case MessageType.PlayerList:
                PlayerListReceived(text, result, new Dictionary <string, string>());
                break;

            default:
                RaiseUnknownMessageReceivedEvent(text, result);
                break;
            }
        }
        private static void RaiseJavaStatusMessageReceivedEvent(string text, OutputParseResult outputParseResult)
        {
            OutputParsedEventHandler handler = JavaStatusMessageReceived;

            if (handler != null)
            {
                handler(text, outputParseResult);
            }
        }
        private static void RaiseOutputParsedEvent(string text, OutputParseResult outputParseResult)
        {
            OutputParsedEventHandler handler = OutputParsed;

            if (handler != null)
            {
                handler(text, outputParseResult);
            }
        }
        private static void RaisePlayerIpBanEvent(string text, OutputParseResult outputParseResult, IPlayerAction playerAction)
        {
            PlayerEventHandler handler = PlayerIpBan;

            if (handler != null)
            {
                handler(text, outputParseResult, playerAction);
            }
        }