public static void logMessage(String s, boolean newline) { if (logListener == null) { if (System.getProperty("logMessages", "true").equalsIgnoreCase("true")) { s = StringUtil.toBasicLatin(s); if (newline) { realOut.println(s); } else { realOut.print(s); realOut.flush(); } } } else { synchronized (logBuffer) { if (!HiddenAccess.isSafeThread()) { // we just queue it, to not let unsafe thread travel thru system logBuffer.append(s); logBuffer.append("\n"); } else if (newline) { logListener.onBattleMessage(new BattleMessageEvent(logBuffer + s)); logBuffer.setLength(0); } else { logBuffer.append(s); } } } }