diff --git a/libs/src/fr/litarvan/openauth/AuthPoints.class b/libs/src/fr/litarvan/openauth/AuthPoints.class new file mode 100644 index 00000000..f50a2169 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/AuthPoints.class differ diff --git a/libs/src/fr/litarvan/openauth/AuthenticationException.class b/libs/src/fr/litarvan/openauth/AuthenticationException.class new file mode 100644 index 00000000..84edd421 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/AuthenticationException.class differ diff --git a/libs/src/fr/litarvan/openauth/Authenticator.class b/libs/src/fr/litarvan/openauth/Authenticator.class new file mode 100644 index 00000000..3bdf05a0 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/Authenticator.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/AuthTokens.class b/libs/src/fr/litarvan/openauth/microsoft/AuthTokens.class new file mode 100644 index 00000000..85ed9ecc Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/AuthTokens.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/HttpClient.class b/libs/src/fr/litarvan/openauth/microsoft/HttpClient.class new file mode 100644 index 00000000..c39be1b1 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/HttpClient.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/LoginFrame$1.class b/libs/src/fr/litarvan/openauth/microsoft/LoginFrame$1.class new file mode 100644 index 00000000..7bbf6453 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/LoginFrame$1.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/LoginFrame.class b/libs/src/fr/litarvan/openauth/microsoft/LoginFrame.class new file mode 100644 index 00000000..ad16f034 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/LoginFrame.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/MicrosoftAuthResult.class b/libs/src/fr/litarvan/openauth/microsoft/MicrosoftAuthResult.class new file mode 100644 index 00000000..a6ac089a Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/MicrosoftAuthResult.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/MicrosoftAuthenticationException.class b/libs/src/fr/litarvan/openauth/microsoft/MicrosoftAuthenticationException.class new file mode 100644 index 00000000..4dc04660 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/MicrosoftAuthenticationException.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/MicrosoftAuthenticator.class b/libs/src/fr/litarvan/openauth/microsoft/MicrosoftAuthenticator.class new file mode 100644 index 00000000..296f7e40 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/MicrosoftAuthenticator.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/PreAuthData.class b/libs/src/fr/litarvan/openauth/microsoft/PreAuthData.class new file mode 100644 index 00000000..364ee960 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/PreAuthData.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/request/MinecraftLoginRequest.class b/libs/src/fr/litarvan/openauth/microsoft/model/request/MinecraftLoginRequest.class new file mode 100644 index 00000000..8cb745ba Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/request/MinecraftLoginRequest.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/request/XSTSAuthorizationProperties.class b/libs/src/fr/litarvan/openauth/microsoft/model/request/XSTSAuthorizationProperties.class new file mode 100644 index 00000000..2551ef9c Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/request/XSTSAuthorizationProperties.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/request/XboxLiveLoginProperties.class b/libs/src/fr/litarvan/openauth/microsoft/model/request/XboxLiveLoginProperties.class new file mode 100644 index 00000000..766654ab Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/request/XboxLiveLoginProperties.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/request/XboxLoginRequest.class b/libs/src/fr/litarvan/openauth/microsoft/model/request/XboxLoginRequest.class new file mode 100644 index 00000000..ef0775e4 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/request/XboxLoginRequest.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/response/MicrosoftRefreshResponse.class b/libs/src/fr/litarvan/openauth/microsoft/model/response/MicrosoftRefreshResponse.class new file mode 100644 index 00000000..dbeccd01 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/response/MicrosoftRefreshResponse.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftLoginResponse.class b/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftLoginResponse.class new file mode 100644 index 00000000..6e4981d6 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftLoginResponse.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftProfile$MinecraftSkin.class b/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftProfile$MinecraftSkin.class new file mode 100644 index 00000000..f706167b Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftProfile$MinecraftSkin.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftProfile.class b/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftProfile.class new file mode 100644 index 00000000..d0ee1a95 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftProfile.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftStoreResponse$StoreProduct.class b/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftStoreResponse$StoreProduct.class new file mode 100644 index 00000000..47a4653b Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftStoreResponse$StoreProduct.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftStoreResponse.class b/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftStoreResponse.class new file mode 100644 index 00000000..84fade3d Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/response/MinecraftStoreResponse.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse$XboxLiveLoginResponseClaims.class b/libs/src/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse$XboxLiveLoginResponseClaims.class new file mode 100644 index 00000000..a99d6b46 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse$XboxLiveLoginResponseClaims.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse$XboxLiveUserInfo.class b/libs/src/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse$XboxLiveUserInfo.class new file mode 100644 index 00000000..1e729318 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse$XboxLiveUserInfo.class differ diff --git a/libs/src/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse.class b/libs/src/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse.class new file mode 100644 index 00000000..f0a55231 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse.class differ diff --git a/libs/src/fr/litarvan/openauth/model/AuthAgent.class b/libs/src/fr/litarvan/openauth/model/AuthAgent.class new file mode 100644 index 00000000..fcb8e20b Binary files /dev/null and b/libs/src/fr/litarvan/openauth/model/AuthAgent.class differ diff --git a/libs/src/fr/litarvan/openauth/model/AuthError.class b/libs/src/fr/litarvan/openauth/model/AuthError.class new file mode 100644 index 00000000..d7e7482d Binary files /dev/null and b/libs/src/fr/litarvan/openauth/model/AuthError.class differ diff --git a/libs/src/fr/litarvan/openauth/model/AuthProfile.class b/libs/src/fr/litarvan/openauth/model/AuthProfile.class new file mode 100644 index 00000000..68a153ed Binary files /dev/null and b/libs/src/fr/litarvan/openauth/model/AuthProfile.class differ diff --git a/libs/src/fr/litarvan/openauth/model/request/AuthRequest.class b/libs/src/fr/litarvan/openauth/model/request/AuthRequest.class new file mode 100644 index 00000000..585c690a Binary files /dev/null and b/libs/src/fr/litarvan/openauth/model/request/AuthRequest.class differ diff --git a/libs/src/fr/litarvan/openauth/model/request/InvalidateRequest.class b/libs/src/fr/litarvan/openauth/model/request/InvalidateRequest.class new file mode 100644 index 00000000..61fbbeb9 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/model/request/InvalidateRequest.class differ diff --git a/libs/src/fr/litarvan/openauth/model/request/RefreshRequest.class b/libs/src/fr/litarvan/openauth/model/request/RefreshRequest.class new file mode 100644 index 00000000..b2d4f574 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/model/request/RefreshRequest.class differ diff --git a/libs/src/fr/litarvan/openauth/model/request/SignoutRequest.class b/libs/src/fr/litarvan/openauth/model/request/SignoutRequest.class new file mode 100644 index 00000000..3554d000 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/model/request/SignoutRequest.class differ diff --git a/libs/src/fr/litarvan/openauth/model/request/ValidateRequest.class b/libs/src/fr/litarvan/openauth/model/request/ValidateRequest.class new file mode 100644 index 00000000..0d957772 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/model/request/ValidateRequest.class differ diff --git a/libs/src/fr/litarvan/openauth/model/response/AuthResponse.class b/libs/src/fr/litarvan/openauth/model/response/AuthResponse.class new file mode 100644 index 00000000..4405729a Binary files /dev/null and b/libs/src/fr/litarvan/openauth/model/response/AuthResponse.class differ diff --git a/libs/src/fr/litarvan/openauth/model/response/RefreshResponse.class b/libs/src/fr/litarvan/openauth/model/response/RefreshResponse.class new file mode 100644 index 00000000..9ce575a1 Binary files /dev/null and b/libs/src/fr/litarvan/openauth/model/response/RefreshResponse.class differ diff --git a/pom.xml b/pom.xml index 57295052..58c26ea2 100644 --- a/pom.xml +++ b/pom.xml @@ -19,33 +19,24 @@ strezz https://nexus.hexeption.dev/repository/strezz-central/ + + litarvan + https://litarvan.github.io/maven + - org.eclipse.jetty.websocket - javax-websocket-server-impl - 9.4.43.v20210629 + fr.litarvan + openauth + 1.1.3 - - - org.eclipse.jetty - jetty-servlet - 9.4.43.v20210629 - - net.minecraft minecraft 1.8.8 - - org.java-websocket - Java-WebSocket - 1.5.2 - - co.gongzh.procbridge procbridge diff --git a/src/main/java/fr/litarvan/openauth/AuthPoints.java b/src/main/java/fr/litarvan/openauth/AuthPoints.java deleted file mode 100644 index 6ceb46a6..00000000 --- a/src/main/java/fr/litarvan/openauth/AuthPoints.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth; - -/** - * The server Auth Points - * - *

- * Contains the pages url of a server - *

- * - * @version 1.0.4 - * @author Litarvan - */ -public class AuthPoints { - - /** - * The Mojang auth server auth points - */ - public static final AuthPoints NORMAL_AUTH_POINTS = new AuthPoints("authenticate", "refresh", "validate", "signout", "invalidate"); - - /** - * The server authenticate point - */ - private String authenticatePoint; - - /** - * The server refresh point - */ - private String refreshPoint; - - /** - * The server validate point - */ - private String validatePoint; - - /** - * The server signout point - */ - private String signoutPoint; - - /** - * The server invalidate point - */ - private String invalidatePoint; - - /** - * AuthPoints constructor - * - * @param authenticatePoint - * Authenticate point - * @param refreshPoint - * Refresh point - * @param validatePoint - * Validate point - * @param signoutPoint - * Signout point - * @param invalidatePoint - * Invalidate point - */ - public AuthPoints(String authenticatePoint, String refreshPoint, String validatePoint, String signoutPoint, String invalidatePoint) { - this.authenticatePoint = authenticatePoint; - this.refreshPoint = refreshPoint; - this.validatePoint = validatePoint; - this.signoutPoint = signoutPoint; - this.invalidatePoint = invalidatePoint; - } - - /** - * Returns the server authenticate point - * - * @return The authenticate point - */ - public String getAuthenticatePoint() { - return this.authenticatePoint; - } - - /** - * Returns the server refresh point - * - * @return The refresh point - */ - public String getRefreshPoint() { - return this.refreshPoint; - } - - /** - * Returns the server validate point - * - * @return The validate point - */ - public String getValidatePoint() { - return this.validatePoint; - } - - /** - * Returns the server signout point - * - * @return The signout point - */ - public String getSignoutPoint() { - return this.signoutPoint; - } - - /** - * Returns the server invalidate point - * - * @return The invalidate point - */ - public String getInvalidatePoint() { - return this.invalidatePoint; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/AuthenticationException.java b/src/main/java/fr/litarvan/openauth/AuthenticationException.java deleted file mode 100644 index f3884bbf..00000000 --- a/src/main/java/fr/litarvan/openauth/AuthenticationException.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth; - -import fr.litarvan.openauth.model.AuthError; - -/** - * Authentication exceptions - * - * @version 1.0.4 - * @author Litarvan - */ -public class AuthenticationException extends Exception { - - /** - * The given JSON model instance of the error - */ - private AuthError model; - - /** - * Create a new Authentication Exception - * - * @param model - * The given JSON model instance of the error - */ - public AuthenticationException(AuthError model) { - super(model.getErrorMessage()); - this.model = model; - } - - /** - * Returns the given JSON model instance of the error - * - * @return The error model - */ - public AuthError getErrorModel() { - return model; - } -} \ No newline at end of file diff --git a/src/main/java/fr/litarvan/openauth/Authenticator.java b/src/main/java/fr/litarvan/openauth/Authenticator.java deleted file mode 100644 index 7f6c40f2..00000000 --- a/src/main/java/fr/litarvan/openauth/Authenticator.java +++ /dev/null @@ -1,401 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth; - -import com.google.gson.Gson; -import fr.litarvan.openauth.model.AuthAgent; -import fr.litarvan.openauth.model.AuthError; -import fr.litarvan.openauth.model.request.*; -import fr.litarvan.openauth.model.response.AuthResponse; -import fr.litarvan.openauth.model.response.RefreshResponse; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.Proxy; -import java.net.URL; -import java.nio.charset.StandardCharsets; - -/** - * The Authenticator - * - *

- * The main class of the lib, use it to authenticate a user ! - *

- * - * @version 1.0.4 - * @author Litarvan - */ -public class Authenticator { - - /** - * The Mojang official auth server - * @deprecated Should not be used since it doesn't work anymore. - */ - @Deprecated - public static final String MOJANG_AUTH_URL = "https://authserver.mojang.com/"; - - /** - * The auth server URL - */ - private final String authURL; - - /** - * The server auth points - */ - private final AuthPoints authPoints; - - /** - * Create an authenticator - * - * @param authURL - * The auth server URL - * - * @param authPoints - * The URIs of the multiple requests - */ - public Authenticator(String authURL, AuthPoints authPoints) { - this.authURL = authURL; - this.authPoints = authPoints; - } - - /** - * Authenticates a user using his password. - * - * @param agent - * The auth agent (optional) - * @param username - * User account name - * @param password - * User account password - * @param clientToken - * The client token (optional, like a key for the access token) - * - * @throws AuthenticationException If the server returned an error as a JSON - * - * @return The response sent by the server (parsed from a JSON) - */ - public AuthResponse authenticate(AuthAgent agent, String username, String password, String clientToken) throws AuthenticationException { - return authenticate(agent, username, password, clientToken, Proxy.NO_PROXY); - } - - /** - * Authenticates a user using his password. - * - * @param agent - * The auth agent (optional) - * @param username - * User account name - * @param password - * User account password - * @param clientToken - * The client token (optional, like a key for the access token) - * @param proxy - * The proxy to use (optional) - * - * @throws AuthenticationException If the server returned an error as a JSON - * - * @return The response sent by the server (parsed from a JSON) - */ - public AuthResponse authenticate(AuthAgent agent, String username, String password, String clientToken, Proxy proxy) throws AuthenticationException { - AuthRequest request = new AuthRequest(agent, username, password, clientToken); - return (AuthResponse) sendRequest(request, AuthResponse.class, authPoints.getAuthenticatePoint(), proxy); - } - - /** - * Refresh a valid access token. It can be uses to keep a user logged in between gaming sessions - * and is preferred over storing the user's password in a file. - * - * @param accessToken - * The saved access token - * @param clientToken - * The saved client token (need to be the same used when authenticated to get the access token) - * - * @throws AuthenticationException If the server returned an error as a JSON - * - * @return The response sent by the server (parsed from a JSON) - */ - public RefreshResponse refresh(String accessToken, String clientToken) throws AuthenticationException { - return refresh(accessToken, clientToken, Proxy.NO_PROXY); - } - - /** - * Refresh a valid access token. It can be uses to keep a user logged in between gaming sessions - * and is preferred over storing the user's password in a file. - * - * @param accessToken - * The saved access token - * @param clientToken - * The saved client token (need to be the same used when authenticated to get the access token) - * @param proxy - * The proxy to use (optional) - * - * @throws AuthenticationException If the server returned an error as a JSON - * - * @return The response sent by the server (parsed from a JSON) - */ - public RefreshResponse refresh(String accessToken, String clientToken, Proxy proxy) throws AuthenticationException { - RefreshRequest request = new RefreshRequest(accessToken, clientToken); - return (RefreshResponse) sendRequest(request, RefreshResponse.class, authPoints.getRefreshPoint(), proxy); - } - - /** - * Check if an access token is a valid session token with a currently-active session. - * Note: this method will not respond successfully to all currently-logged-in sessions, - * just the most recently-logged-in for each user. It is intended to be used by servers to validate - * that a user should be connecting (and reject users who have logged in elsewhere since starting Minecraft), - * NOT to auth that a particular session token is valid for authentication purposes. - * To authenticate a user by session token, use the refresh verb and catch resulting errors. - * - * @param accessToken - * The access token to check - * - * @throws AuthenticationException If the server returned an error as a JSON - */ - public void validate(String accessToken) throws AuthenticationException { - validate(accessToken, Proxy.NO_PROXY); - } - - /** - * Check if an access token is a valid session token with a currently-active session. - * Note: this method will not respond successfully to all currently-logged-in sessions, - * just the most recently-logged-in for each user. It is intended to be used by servers to validate - * that a user should be connecting (and reject users who have logged in elsewhere since starting Minecraft), - * NOT to auth that a particular session token is valid for authentication purposes. - * To authenticate a user by session token, use the refresh verb and catch resulting errors. - * - * @param accessToken - * The access token to check - * @param proxy - * The proxy to use (optional) - * - * @throws AuthenticationException If the server returned an error as a JSON - */ - public void validate(String accessToken, Proxy proxy) throws AuthenticationException { - ValidateRequest request = new ValidateRequest(accessToken); - sendRequest(request, null, authPoints.getValidatePoint(), proxy); - } - - /** - * Invalidates accessTokens using an account's username and password - * - * @param username - * User account name - * @param password - * User account password - * - * @throws AuthenticationException If the server returned an error as a JSON - */ - public void signout(String username, String password) throws AuthenticationException { - signout(username, password, Proxy.NO_PROXY); - } - - /** - * Invalidates accessTokens using an account's username and password - * - * @param username - * User account name - * @param password - * User account password - * @param proxy - * The proxy to use (optional) - * - * @throws AuthenticationException If the server returned an error as a JSON - */ - public void signout(String username, String password, Proxy proxy) throws AuthenticationException { - SignoutRequest request = new SignoutRequest(username, password); - sendRequest(request, null, authPoints.getSignoutPoint(), proxy); - } - - /** - * Invalidates accessTokens using a client/access token pair - * - * @param accessToken - * Valid access token to invalidate - * @param clientToken - * Client token used when authenticated to get the access token - * - * @throws AuthenticationException If the server returned an error as a JSON - */ - public void invalidate(String accessToken, String clientToken) throws AuthenticationException { - invalidate(accessToken, clientToken, Proxy.NO_PROXY); - } - - /** - * Invalidates accessTokens using a client/access token pair - * - * @param accessToken - * Valid access token to invalidate - * @param clientToken - * Client token used when authenticated to get the access token - * @param proxy - * The proxy to use (optional) - * - * @throws AuthenticationException If the server returned an error as a JSON - */ - public void invalidate(String accessToken, String clientToken, Proxy proxy) throws AuthenticationException { - InvalidateRequest request = new InvalidateRequest(accessToken, clientToken); - sendRequest(request, null, authPoints.getInvalidatePoint(), proxy); - } - - /** - * Send a request to the auth server - * - * @param request - * The auth request to send - * @param model - * The model of the response - * @param authPoint - * The auth point of the request - * @throws AuthenticationException - * If it returned an error or the request failed - * - * @throws AuthenticationException If the server returned an error as a JSON - * - * @return Instance of the given response model if it not null - */ - private Object sendRequest(Object request, Class model, String authPoint) throws AuthenticationException { - return sendRequest(request, model, authPoint, Proxy.NO_PROXY); - } - - /** - * Send a request to the auth server - * - * @param request - * The auth request to send - * @param model - * The model of the response - * @param authPoint - * The auth point of the request - * @param proxy - * The proxy to use (optional) - * @throws AuthenticationException - * If it returned an error or the request failed - * - * @throws AuthenticationException If the server returned an error as a JSON - * - * @return Instance of the given response model if it not null - */ - private Object sendRequest(Object request, Class model, String authPoint, Proxy proxy) throws AuthenticationException { - Gson gson = new Gson(); - String response; - - try { - response = sendPostRequest(this.authURL + authPoint, gson.toJson(request), proxy); - } catch (IOException e) { - throw new AuthenticationException(new AuthError("Can't send the request : " + e.getClass().getName(), e.getMessage(), "Unknown")); - } - - if(model != null) - return gson.fromJson(response, model); - else - return null; - } - - /** - * Sends a post request of a json - * - * @param url - * The url to send the request - * @param json - * The json to send - * @throws IOException - * If it failed - * - * @throws AuthenticationException If the request returned an error JSON or not a JSON - * - * @return The request response - */ - private String sendPostRequest(String url, String json) throws AuthenticationException, IOException { - return sendPostRequest(url, json, Proxy.NO_PROXY); - } - - /** - * Sends a post request of a json - * - * @param url - * The url to send the request - * @param json - * The json to send - * @param proxy - * The proxy to use (optional) - * @throws IOException - * If it failed - * - * @throws AuthenticationException If the request returned an error JSON or not a JSON - * - * @return The request response - */ - private String sendPostRequest(String url, String json, Proxy proxy) throws AuthenticationException, IOException { - byte[] jsonBytes = json.getBytes(StandardCharsets.UTF_8); - URL serverURL = new URL(url); - HttpURLConnection connection = (HttpURLConnection) serverURL.openConnection(proxy != null ? proxy : Proxy.NO_PROXY); - connection.setRequestMethod("POST"); - - // Sending post request - connection.setDoOutput(true); - connection.setRequestProperty("Accept-Charset", "UTF-8"); - connection.setRequestProperty("Content-Type", "application/json;charset=utf-8"); - connection.setRequestProperty("Content-Length", String.valueOf(jsonBytes.length)); - DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); - wr.write(jsonBytes, 0, jsonBytes.length); - wr.flush(); - wr.close(); - - connection.connect(); - - int responseCode = connection.getResponseCode(); - - if(responseCode == 204) { - connection.disconnect(); - return null; - } - - InputStream is; - if(responseCode == 200) - is = connection.getInputStream(); - else - is = connection.getErrorStream(); - - String response; - - BufferedReader br = new BufferedReader(new InputStreamReader(is)); - response = br.readLine(); - try { - br.close(); - } catch (IOException e) { - e.printStackTrace(); - } - connection.disconnect(); - - while (response != null && response.startsWith("\uFEFF")) - response = response.substring(1); - - if (responseCode != 200) { - Gson gson = new Gson(); - - if (response != null && !response.startsWith("{")) - throw new AuthenticationException(new AuthError("Internal server error", response, "Remote")); - - throw new AuthenticationException(gson.fromJson(response, AuthError.class)); - } - - return response; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/AuthTokens.java b/src/main/java/fr/litarvan/openauth/microsoft/AuthTokens.java deleted file mode 100644 index d2a9db86..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/AuthTokens.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft; - -public class AuthTokens -{ - private final String accessToken; - private final String refreshToken; - - public AuthTokens(String accessToken, String refreshToken) - { - this.accessToken = accessToken; - this.refreshToken = refreshToken; - } - - public String getAccessToken() - { - return accessToken; - } - - public String getRefreshToken() - { - return refreshToken; - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/HttpClient.java b/src/main/java/fr/litarvan/openauth/microsoft/HttpClient.java deleted file mode 100644 index c525d15a..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/HttpClient.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft; - -import com.google.gson.Gson; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.Proxy; -import java.net.URL; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.Map; - -public class HttpClient -{ - public static final String MIME_TYPE_JSON = "application/json"; - public static final String MIME_TYPE_URLENCODED_FORM = "application/x-www-form-urlencoded"; - - private final Gson gson; - private final Proxy proxy; - - public HttpClient() - { - this(Proxy.NO_PROXY); - } - public HttpClient(Proxy proxy) - { - this.gson = new Gson(); - this.proxy = proxy; - } - - - public String getText(String url, Map params) throws MicrosoftAuthenticationException - { - return readResponse(createConnection(url + '?' + buildParams(params))); - } - - public T getJson(String url, String token, Class responseClass) throws MicrosoftAuthenticationException - { - HttpURLConnection connection = createConnection(url); - connection.addRequestProperty("Authorization", "Bearer " + token); - connection.addRequestProperty("Accept", MIME_TYPE_JSON); - - return readJson(connection, responseClass); - } - - public HttpURLConnection postForm(String url, Map params) throws MicrosoftAuthenticationException - { - return post(url, MIME_TYPE_URLENCODED_FORM, "*/*", buildParams(params)); - } - - public T postJson(String url, Object request, Class responseClass) throws MicrosoftAuthenticationException - { - HttpURLConnection connection = post(url, MIME_TYPE_JSON, MIME_TYPE_JSON, gson.toJson(request)); - return readJson(connection, responseClass); - } - - public T postFormGetJson(String url, Map params, Class responseClass) throws MicrosoftAuthenticationException - { - return readJson(postForm(url, params), responseClass); - } - - - protected HttpURLConnection post(String url, String contentType, String accept, String data) throws MicrosoftAuthenticationException - { - HttpURLConnection connection = createConnection(url); - connection.setDoOutput(true); - connection.addRequestProperty("Content-Type", contentType); - connection.addRequestProperty("Accept", accept); - - try { - connection.setRequestMethod("POST"); - connection.getOutputStream().write(data.getBytes(StandardCharsets.UTF_8)); - } catch (IOException e) { - throw new MicrosoftAuthenticationException(e); - } - - return connection; - } - - protected T readJson(HttpURLConnection connection, Class responseType) throws MicrosoftAuthenticationException - { - return gson.fromJson(readResponse(connection), responseType); - } - - protected String readResponse(HttpURLConnection connection) throws MicrosoftAuthenticationException - { - String redirection = connection.getHeaderField("Location"); - if (redirection != null) { - return readResponse(createConnection(redirection)); - } - - StringBuilder response = new StringBuilder(); - - try - { - InputStream inputStream = connection.getInputStream(); - - // check if the url corresponds to a related authentication url - if(this.checkUrl(connection.getURL())) - { - // then patch the input stream like in the old MicrosoftPatchedHttpURLConnection class. - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - int n; - byte[] data = new byte[8192]; - - while ((n = inputStream.read(data, 0, data.length)) != -1) { - buffer.write(data, 0, n); - } - - byte[] patched = buffer - .toString("UTF-8") - .replaceAll("integrity ?=", "integrity.disabled=") - .replaceAll("setAttribute\\(\"integrity\"", "setAttribute(\"integrity.disabled\"") - .getBytes(StandardCharsets.UTF_8); - - inputStream = new ByteArrayInputStream(patched); - } - - try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { - String line; - while ((line = br.readLine()) != null) { - response.append(line).append('\n'); - } - } catch (IOException e) { - throw new MicrosoftAuthenticationException(e); - } - } catch (IOException e) - { - throw new RuntimeException(e); - } - - return response.toString(); - } - - private boolean checkUrl(URL url) - { - return (("login.microsoftonline.com".equals(url.getHost()) && url.getPath().endsWith("/oauth2/authorize")) - || ("login.live.com".equals(url.getHost()) && "/oauth20_authorize.srf".equals(url.getPath())) - || ("login.live.com".equals(url.getHost()) && "/ppsecure/post.srf".equals(url.getPath())) - || ("login.microsoftonline.com".equals(url.getHost()) && "/login.srf".equals(url.getPath())) - || ("login.microsoftonline.com".equals(url.getHost()) && url.getPath().endsWith("/login")) - || ("login.microsoftonline.com".equals(url.getHost()) && url.getPath().endsWith("/SAS/ProcessAuth")) - || ("login.microsoftonline.com".equals(url.getHost()) && url.getPath().endsWith("/federation/oauth2")) - || ("login.microsoftonline.com".equals(url.getHost()) && url.getPath().endsWith("/oauth2/v2.0/authorize"))); - } - - protected HttpURLConnection followRedirects(HttpURLConnection connection) throws MicrosoftAuthenticationException - { - String redirection = connection.getHeaderField("Location"); - if (redirection != null) { - connection = followRedirects(createConnection(redirection)); - } - - return connection; - } - - protected String buildParams(Map params) - { - StringBuilder query = new StringBuilder(); - params.forEach((key, value) -> { - if (query.length() > 0) { - query.append('&'); - } - - try { - query.append(key).append('=').append(URLEncoder.encode(value, StandardCharsets.UTF_8.name())); - } catch (UnsupportedEncodingException ignored) { - // Can't happen - } - }); - - return query.toString(); - } - - protected HttpURLConnection createConnection(String url) throws MicrosoftAuthenticationException - { - HttpURLConnection connection; - try { - connection = (HttpURLConnection) new URL(url).openConnection(proxy); - } catch (IOException e) { - throw new MicrosoftAuthenticationException(e); - } - - String userAgent = "Mozilla/5.0 (XboxReplay; XboxLiveAuth/3.0) " + - "AppleWebKit/537.36 (KHTML, like Gecko) " + - "Chrome/71.0.3578.98 " + - "Safari/537.36"; - - connection.setConnectTimeout(30 * 1000); // 30s - connection.setReadTimeout(60 * 1000); // 60s - connection.setRequestProperty("Accept-Language", "en-US"); - connection.setRequestProperty("Accept-Charset", "UTF-8"); - connection.setRequestProperty("User-Agent", userAgent); - - return connection; - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/LoginFrame.java b/src/main/java/fr/litarvan/openauth/microsoft/LoginFrame.java deleted file mode 100644 index 9343c9ce..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/LoginFrame.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft; - -import javafx.application.Platform; -import javafx.embed.swing.JFXPanel; -import javafx.scene.Scene; -import javafx.scene.web.WebView; - -import javax.swing.*; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.util.concurrent.CompletableFuture; - -/* - * Had to use Swing here, JavaFX is meant to have an 'Application' but only one can exist. - * Creating one would break compatibility with JavaFX apps (which already have their own - * class), and letting the user do so would break compatibility with Swing apps. - * - * This method makes the frame compatible with pretty much everything. - */ - -public class LoginFrame extends JFrame -{ - private CompletableFuture future; - private boolean completed; - - public LoginFrame() - { - this.setTitle("Microsoft Authentication"); - this.setSize(750, 750); - this.setLocationRelativeTo(null); - this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - - this.setContentPane(new JFXPanel()); - } - - public CompletableFuture start(String url) - { - if (this.future != null) { - return this.future; - } - - this.future = new CompletableFuture<>(); - this.addWindowListener(new WindowAdapter() { - @Override - public void windowClosing(WindowEvent e) { - if(!completed) - future.complete(null); - } - }); - - Platform.runLater(() -> this.init(url)); - return this.future; - } - - protected void init(String url) - { - WebView webView = new WebView(); - JFXPanel content = (JFXPanel) this.getContentPane(); - - content.setScene(new Scene(webView, this.getWidth(), this.getHeight())); - - webView.getEngine().locationProperty().addListener((observable, oldValue, newValue) -> { - if (newValue.contains("access_token")) { - this.future.complete(newValue); - completed = true; - this.dispose(); - } - }); - webView.getEngine().setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"); - webView.getEngine().load(url); - - this.setVisible(true); - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/MicrosoftAuthResult.java b/src/main/java/fr/litarvan/openauth/microsoft/MicrosoftAuthResult.java deleted file mode 100644 index e2cf84a1..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/MicrosoftAuthResult.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft; - -import fr.litarvan.openauth.microsoft.model.response.MinecraftProfile; - -/** - * Microsoft authentication result - * - *

- * This class contains the result of a successful Microsoft authentication: a player profile and its tokens (both - * access and refresh token). - *

- * - * @author Litarvan - * @version 1.1.5 - */ -public class MicrosoftAuthResult -{ - private final MinecraftProfile profile; - private final String accessToken; - private final String refreshToken; - private final String xuid; - private final String clientId; - - public MicrosoftAuthResult(MinecraftProfile profile, String accessToken, String refreshToken, String xuid, String clientId) - { - this.profile = profile; - this.accessToken = accessToken; - this.refreshToken = refreshToken; - this.xuid = xuid; - this.clientId = clientId; - } - - /** - * @return The player Minecraft profile (contains its UUID and username) - */ - public MinecraftProfile getProfile() - { - return profile; - } - - /** - * @return The Minecraft access token - */ - public String getAccessToken() - { - return accessToken; - } - - /** - * @return The Microsoft refresh token that can be used to log the user back silently using - * {@link MicrosoftAuthenticator#loginWithRefreshToken(String)} - */ - public String getRefreshToken() - { - return refreshToken; - } - - /** - * @return The XUID of the player - */ - public String getXuid() - { - return this.xuid; - } - - /** - * @return The client ID of the player - */ - public String getClientId() - { - return this.clientId; - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/MicrosoftAuthenticationException.java b/src/main/java/fr/litarvan/openauth/microsoft/MicrosoftAuthenticationException.java deleted file mode 100644 index f91c7ab8..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/MicrosoftAuthenticationException.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft; - -import java.io.IOException; - -public class MicrosoftAuthenticationException extends Exception -{ - public MicrosoftAuthenticationException(String message) - { - super(message); - } - - public MicrosoftAuthenticationException(IOException cause) - { - super("I/O exception thrown during Microsoft HTTP requests", cause); - } - - public MicrosoftAuthenticationException(Throwable cause) - { - super(cause); - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/MicrosoftAuthenticator.java b/src/main/java/fr/litarvan/openauth/microsoft/MicrosoftAuthenticator.java deleted file mode 100644 index f6110759..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/MicrosoftAuthenticator.java +++ /dev/null @@ -1,314 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft; - -/* - * Ported from the amazing work of Alexis Bize on @xboxreplay/xboxlive-auth - * - * https://github.com/Alexis-Bize - * https://github.com/XboxReplay/xboxlive-auth - */ - -import fr.litarvan.openauth.microsoft.model.request.MinecraftLoginRequest; -import fr.litarvan.openauth.microsoft.model.request.XSTSAuthorizationProperties; -import fr.litarvan.openauth.microsoft.model.request.XboxLiveLoginProperties; -import fr.litarvan.openauth.microsoft.model.request.XboxLoginRequest; -import fr.litarvan.openauth.microsoft.model.response.*; - -import java.io.UnsupportedEncodingException; -import java.net.*; -import java.util.Arrays; -import java.util.Base64; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionException; -import java.util.concurrent.ExecutionException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * Microsoft authenticator - * - *

- * This class can be used to authenticate a player using its Microsoft account. - * Use {@link #loginWithCredentials} to retrieve a player profile from his Microsoft credentials, - * or {@link #loginWithWebview} to use a webview with Microsoft login form. - *

- * - * @author Litarvan - * @version 1.1.0 - */ -public class MicrosoftAuthenticator { - public static final String MICROSOFT_AUTHORIZATION_ENDPOINT = "https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize"; - public static final String MICROSOFT_TOKEN_ENDPOINT = "https://login.live.com/oauth20_token.srf"; - public static final String MICROSOFT_REDIRECTION_ENDPOINT = "https://login.live.com/oauth20_desktop.srf"; - - public static final String XBOX_LIVE_AUTH_HOST = "user.auth.xboxlive.com"; - public static final String XBOX_LIVE_CLIENT_ID = "000000004C12AE6F"; - public static final String XBOX_LIVE_SERVICE_SCOPE = "service::user.auth.xboxlive.com::MBI_SSL"; - - public static final String XBOX_LIVE_AUTHORIZATION_ENDPOINT = "https://user.auth.xboxlive.com/user/authenticate"; - public static final String XSTS_AUTHORIZATION_ENDPOINT = "https://xsts.auth.xboxlive.com/xsts/authorize"; - public static final String MINECRAFT_AUTH_ENDPOINT = "https://api.minecraftservices.com/authentication/login_with_xbox"; - - public static final String XBOX_LIVE_AUTH_RELAY = "http://auth.xboxlive.com"; - public static final String MINECRAFT_AUTH_RELAY = "rp://api.minecraftservices.com/"; - - public static final String MINECRAFT_STORE_ENDPOINT = "https://api.minecraftservices.com/entitlements/mcstore"; - public static final String MINECRAFT_PROFILE_ENDPOINT = "https://api.minecraftservices.com/minecraft/profile"; - - public static final String MINECRAFT_STORE_IDENTIFIER = "game_minecraft"; - - - private final HttpClient http; - - public MicrosoftAuthenticator() { - this.http = new HttpClient(); - } - - /** - * Logs in a player using its Microsoft account credentials, and retrieve its Minecraft profile - * - * @param email Player Microsoft account e-mail - * @param password Player Microsoft account password - * @return The player Minecraft profile - * @throws MicrosoftAuthenticationException Thrown if one of the several HTTP requests failed at some point - */ - public MicrosoftAuthResult loginWithCredentials(String email, String password) throws MicrosoftAuthenticationException { - CookieHandler currentHandler = CookieHandler.getDefault(); - CookieHandler.setDefault(new CookieManager(null, CookiePolicy.ACCEPT_ALL)); - - Map params = new HashMap<>(); - params.put("login", email); - params.put("loginfmt", email); - params.put("passwd", password); - - HttpURLConnection result; - - try { - PreAuthData authData = preAuthRequest(); - params.put("PPFT", authData.getPPFT()); - - result = http.followRedirects(http.postForm(authData.getUrlPost(), params)); - } finally { - CookieHandler.setDefault(currentHandler); - } - - try { - return loginWithTokens(extractTokens(result.getURL().toString()),true); - } catch (MicrosoftAuthenticationException e) { - if (match("(identity/confirm)", http.readResponse(result)) != null) { - throw new MicrosoftAuthenticationException( - "User has enabled double-authentication or must allow sign-in on https://account.live.com/activity" - ); - } - - throw e; - } - } - - /** - * Logs in a player using a webview to display Microsoft login page. - * This function blocks the current thread until the process is finished; this can cause your application to - * freeze. When calling from the JavaFX thread or any thread which must not be blocked, use - * {@link #loginWithAsyncWebview()} - * - * @return The player Minecraft profile - * @throws MicrosoftAuthenticationException Thrown if one of the several HTTP requests failed at some point - */ - public MicrosoftAuthResult loginWithWebview() throws MicrosoftAuthenticationException { - try { - return loginWithAsyncWebview().get(); - } catch (InterruptedException | ExecutionException e) { - throw new MicrosoftAuthenticationException(e); - } - } - - /** - * Logs in a player using a webview to display Microsoft login page. This function does not block the current thread. - * - * @return A future resolved by the player Minecraft profile - */ - public CompletableFuture loginWithAsyncWebview() { - if(!System.getProperty("java.version").startsWith("1.")) - CookieHandler.setDefault(new CookieManager()); - - String url = String.format("%s?%s", MICROSOFT_AUTHORIZATION_ENDPOINT, http.buildParams(getLoginParams())); - LoginFrame frame = new LoginFrame(); - - return frame.start(url).thenApplyAsync(result -> { - try { - if(result != null) - return loginWithTokens(extractTokens(result),true); - else return null; - } catch (MicrosoftAuthenticationException e) { - throw new CompletionException(e); - } - }); - } - - /** - * Logs in a player using a Microsoft account refresh token retrieved earlier. - * - * @param refreshToken Player Microsoft account refresh token - * @return The player Minecraft profile - * @throws MicrosoftAuthenticationException Thrown if one of the several HTTP requests failed at some point - */ - public MicrosoftAuthResult loginWithRefreshToken(String refreshToken) throws MicrosoftAuthenticationException { - Map params = getLoginParams(); - params.put("refresh_token", refreshToken); - params.put("grant_type", "refresh_token"); - - MicrosoftRefreshResponse response = http.postFormGetJson( - MICROSOFT_TOKEN_ENDPOINT, - params, MicrosoftRefreshResponse.class - ); - - return loginWithTokens(new AuthTokens(response.getAccessToken(), response.getRefreshToken()),true); - } - - /** - * Logs in a player using a Microsoft account tokens retrieved earlier. - * If the token was retrieved using Azure AAD/MSAL, it should be prefixed with d= - * - * @param tokens Player Microsoft account tokens pair - * @return The player Minecraft profile - * @throws MicrosoftAuthenticationException Thrown if one of the several HTTP requests failed at some point - */ - public MicrosoftAuthResult loginWithTokens(AuthTokens tokens) throws MicrosoftAuthenticationException { - return loginWithTokens(tokens,true); - } - - /** - * Logs in a player using a Microsoft account tokens retrieved earlier. - * If the token was retrieved using Azure AAD/MSAL, it should be prefixed with d= - * - * @param tokens Player Microsoft account tokens pair - * @param retrieveProfile Whether to retrieve the player profile - * @return The player Minecraft profile - * @throws MicrosoftAuthenticationException Thrown if one of the several HTTP requests failed at some point - */ - public MicrosoftAuthResult loginWithTokens(AuthTokens tokens, boolean retrieveProfile) throws MicrosoftAuthenticationException { - XboxLoginResponse xboxLiveResponse = xboxLiveLogin(tokens.getAccessToken()); - XboxLoginResponse xstsResponse = xstsLogin(xboxLiveResponse.getToken()); - - String userHash = xstsResponse.getDisplayClaims().getUsers()[0].getUserHash(); - MinecraftLoginResponse minecraftResponse = minecraftLogin(userHash, xstsResponse.getToken()); - MinecraftStoreResponse storeResponse = http.getJson( - MINECRAFT_STORE_ENDPOINT, - minecraftResponse.getAccessToken(), - MinecraftStoreResponse.class - ); - - if (Arrays.stream(storeResponse.getItems()).noneMatch(item -> item.getName().equals(MINECRAFT_STORE_IDENTIFIER))) { - throw new MicrosoftAuthenticationException("Player didn't buy Minecraft Java Edition or did not migrate its account"); - } - MinecraftProfile profile = null; - if (retrieveProfile) { - profile = http.getJson( - MINECRAFT_PROFILE_ENDPOINT, - minecraftResponse.getAccessToken(), - MinecraftProfile.class - ); - } - - return new MicrosoftAuthResult( - profile, - minecraftResponse.getAccessToken(), - tokens.getRefreshToken(), - xboxLiveResponse.getDisplayClaims().getUsers()[0].getUserHash(), - Base64.getEncoder().encodeToString(minecraftResponse.getUsername().getBytes()) - ); - } - - - protected PreAuthData preAuthRequest() throws MicrosoftAuthenticationException { - Map params = getLoginParams(); - params.put("display", "touch"); - params.put("locale", "en"); - - String result = http.getText(MICROSOFT_AUTHORIZATION_ENDPOINT, params); - - String ppft = match("sFTTag:'.*value=\"([^\"]*)\"", result); - String urlPost = match("urlPost: ?'(.+?(?='))", result); - - return new PreAuthData(ppft, urlPost); - } - - protected XboxLoginResponse xboxLiveLogin(String accessToken) throws MicrosoftAuthenticationException { - XboxLiveLoginProperties properties = new XboxLiveLoginProperties("RPS", XBOX_LIVE_AUTH_HOST, accessToken); - XboxLoginRequest request = new XboxLoginRequest<>( - properties, XBOX_LIVE_AUTH_RELAY, "JWT" - ); - - return http.postJson(XBOX_LIVE_AUTHORIZATION_ENDPOINT, request, XboxLoginResponse.class); - } - - protected XboxLoginResponse xstsLogin(String xboxLiveToken) throws MicrosoftAuthenticationException { - XSTSAuthorizationProperties properties = new XSTSAuthorizationProperties("RETAIL", new String[]{xboxLiveToken}); - XboxLoginRequest request = new XboxLoginRequest<>( - properties, MINECRAFT_AUTH_RELAY, "JWT" - ); - - return http.postJson(XSTS_AUTHORIZATION_ENDPOINT, request, XboxLoginResponse.class); - } - - protected MinecraftLoginResponse minecraftLogin(String userHash, String xstsToken) throws MicrosoftAuthenticationException { - MinecraftLoginRequest request = new MinecraftLoginRequest(String.format("XBL3.0 x=%s;%s", userHash, xstsToken)); - return http.postJson(MINECRAFT_AUTH_ENDPOINT, request, MinecraftLoginResponse.class); - } - - - protected Map getLoginParams() { - Map params = new HashMap<>(); - params.put("client_id", XBOX_LIVE_CLIENT_ID); - params.put("redirect_uri", MICROSOFT_REDIRECTION_ENDPOINT); - params.put("scope", XBOX_LIVE_SERVICE_SCOPE); - params.put("response_type", "token"); - - return params; - } - - protected AuthTokens extractTokens(String url) throws MicrosoftAuthenticationException { - return new AuthTokens(extractValue(url, "access_token"), extractValue(url, "refresh_token")); - } - - protected String extractValue(String url, String key) throws MicrosoftAuthenticationException { - String matched = match(key + "=([^&]*)", url); - if (matched == null) { - throw new MicrosoftAuthenticationException("Invalid credentials or tokens"); - } - - try { - return URLDecoder.decode(matched, "UTF-8"); - } catch (UnsupportedEncodingException e) { - throw new MicrosoftAuthenticationException(e); - } - } - - protected String match(String regex, String content) { - Matcher matcher = Pattern.compile(regex).matcher(content); - if (!matcher.find()) { - return null; - } - - return matcher.group(1); - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/PreAuthData.java b/src/main/java/fr/litarvan/openauth/microsoft/PreAuthData.java deleted file mode 100644 index ffcf2e45..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/PreAuthData.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft; - -public class PreAuthData -{ - private final String ppft; - private final String urlPost; - - public PreAuthData(String ppft, String urlPost) - { - this.ppft = ppft; - this.urlPost = urlPost; - } - - public String getPPFT() - { - return ppft; - } - - public String getUrlPost() - { - return urlPost; - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/model/request/MinecraftLoginRequest.java b/src/main/java/fr/litarvan/openauth/microsoft/model/request/MinecraftLoginRequest.java deleted file mode 100644 index fa708fff..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/model/request/MinecraftLoginRequest.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft.model.request; - -public class MinecraftLoginRequest -{ - private final String identityToken; - - public MinecraftLoginRequest(String identityToken) - { - this.identityToken = identityToken; - } - - public String getIdentityToken() - { - return identityToken; - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/model/request/XSTSAuthorizationProperties.java b/src/main/java/fr/litarvan/openauth/microsoft/model/request/XSTSAuthorizationProperties.java deleted file mode 100644 index 7e439494..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/model/request/XSTSAuthorizationProperties.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft.model.request; - -public class XSTSAuthorizationProperties -{ - private final String SandboxId; - private final String[] UserTokens; - - public XSTSAuthorizationProperties(String SandboxId, String[] UserTokens) - { - this.SandboxId = SandboxId; - this.UserTokens = UserTokens; - } - - public String getSandboxId() - { - return SandboxId; - } - - public String[] getUserTokens() - { - return UserTokens; - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/model/request/XboxLiveLoginProperties.java b/src/main/java/fr/litarvan/openauth/microsoft/model/request/XboxLiveLoginProperties.java deleted file mode 100644 index b8f8dc61..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/model/request/XboxLiveLoginProperties.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft.model.request; - -public class XboxLiveLoginProperties -{ - private final String AuthMethod; - private final String SiteName; - private final String RpsTicket; - - public XboxLiveLoginProperties(String AuthMethod, String SiteName, String RpsTicket) - { - this.AuthMethod = AuthMethod; - this.SiteName = SiteName; - this.RpsTicket = RpsTicket; - } - - public String getAuthMethod() - { - return AuthMethod; - } - - public String getSiteName() - { - return SiteName; - } - - public String getRpsTicket() - { - return RpsTicket; - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/model/request/XboxLoginRequest.java b/src/main/java/fr/litarvan/openauth/microsoft/model/request/XboxLoginRequest.java deleted file mode 100644 index 7948f38d..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/model/request/XboxLoginRequest.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft.model.request; - -public class XboxLoginRequest -{ - private final T Properties; - private final String RelyingParty; - private final String TokenType; - - public XboxLoginRequest(T Properties, String RelyingParty, String TokenType) - { - this.Properties = Properties; - this.RelyingParty = RelyingParty; - this.TokenType = TokenType; - } - - public T getProperties() - { - return Properties; - } - - public String getSiteName() - { - return RelyingParty; - } - - public String getTokenType() - { - return TokenType; - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/model/response/MicrosoftRefreshResponse.java b/src/main/java/fr/litarvan/openauth/microsoft/model/response/MicrosoftRefreshResponse.java deleted file mode 100644 index c1a126a0..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/model/response/MicrosoftRefreshResponse.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft.model.response; - -public class MicrosoftRefreshResponse -{ - private final String token_type; - private final long expires_in; - private final String scope; - private final String access_token; - private final String refresh_token; - private final String user_id; - - public MicrosoftRefreshResponse(String token_type, long expires_in, String scope, String access_token, String refresh_token, String user_id) - { - this.token_type = token_type; - this.expires_in = expires_in; - this.scope = scope; - this.access_token = access_token; - this.refresh_token = refresh_token; - this.user_id = user_id; - } - - public String getTokenType() - { - return token_type; - } - - public long getExpiresIn() - { - return expires_in; - } - - public String getScope() - { - return scope; - } - - public String getAccessToken() - { - return access_token; - } - - public String getRefreshToken() - { - return refresh_token; - } - - public String getUserId() - { - return user_id; - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/model/response/MinecraftLoginResponse.java b/src/main/java/fr/litarvan/openauth/microsoft/model/response/MinecraftLoginResponse.java deleted file mode 100644 index dee3cb93..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/model/response/MinecraftLoginResponse.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft.model.response; - -public class MinecraftLoginResponse -{ - private final String username; - private final String access_token; - private final String token_type; - private final long expires_in; - - public MinecraftLoginResponse(String username, String access_token, String token_type, long expires_in) - { - this.username = username; - this.access_token = access_token; - this.token_type = token_type; - this.expires_in = expires_in; - } - - public String getUsername() - { - return username; - } - - public String getAccessToken() - { - return access_token; - } - - public String getTokenType() - { - return token_type; - } - - public long getExpiresIn() - { - return expires_in; - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/model/response/MinecraftProfile.java b/src/main/java/fr/litarvan/openauth/microsoft/model/response/MinecraftProfile.java deleted file mode 100644 index 38d6e2c7..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/model/response/MinecraftProfile.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft.model.response; - -/** - * Minecraft player profile - * - *

- * Represents a Minecraft player profile data. UUID is {@link #id} and username is {@link #name}. - *

- * - * @version 1.1.0 - * @author Litarvan - */ -public class MinecraftProfile -{ - private final String id; - private final String name; - private final MinecraftSkin[] skins; - - public MinecraftProfile(String id, String name, MinecraftSkin[] skins) - { - this.id = id; - this.name = name; - this.skins = skins; - } - - /** - * @return The player Minecraft UUID - */ - public String getId() - { - return id; - } - - /** - * @return The player Minecraft username - */ - public String getName() - { - return name; - } - - public MinecraftSkin[] getSkins() - { - return skins; - } - - public static class MinecraftSkin - { - private final String id; - private final String state; - private final String url; - private final String variant; - private final String alias; - - public MinecraftSkin(String id, String state, String url, String variant, String alias) - { - this.id = id; - this.state = state; - this.url = url; - this.variant = variant; - this.alias = alias; - } - - public String getId() - { - return id; - } - - public String getState() - { - return state; - } - - public String getUrl() - { - return url; - } - - public String getVariant() - { - return variant; - } - - public String getAlias() - { - return alias; - } - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/model/response/MinecraftStoreResponse.java b/src/main/java/fr/litarvan/openauth/microsoft/model/response/MinecraftStoreResponse.java deleted file mode 100644 index 00f7bf2d..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/model/response/MinecraftStoreResponse.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft.model.response; - -public class MinecraftStoreResponse -{ - private final StoreProduct[] items; - private final String signature; - private final String keyId; - - public MinecraftStoreResponse(StoreProduct[] items, String signature, String keyId) - { - this.items = items; - this.signature = signature; - this.keyId = keyId; - } - - public StoreProduct[] getItems() - { - return items; - } - - public String getSignature() - { - return signature; - } - - public String getKeyId() - { - return keyId; - } - - public static class StoreProduct - { - private final String name; - private final String signature; - - public StoreProduct(String name, String signature) - { - this.name = name; - this.signature = signature; - } - - public String getName() - { - return name; - } - - public String getSignature() - { - return signature; - } - } -} diff --git a/src/main/java/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse.java b/src/main/java/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse.java deleted file mode 100644 index f9c35c4a..00000000 --- a/src/main/java/fr/litarvan/openauth/microsoft/model/response/XboxLoginResponse.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2015-2021 Adrien 'Litarvan' Navratil - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.microsoft.model.response; - -public class XboxLoginResponse -{ - private final String IssueInstant; - private final String NotAfter; - private final String Token; - private final XboxLiveLoginResponseClaims DisplayClaims; - - public XboxLoginResponse(String IssueInstant, String NotAfter, String Token, XboxLiveLoginResponseClaims DisplayClaims) - { - this.IssueInstant = IssueInstant; - this.NotAfter = NotAfter; - this.Token = Token; - this.DisplayClaims = DisplayClaims; - } - - public String getIssueInstant() - { - return IssueInstant; - } - - public String getNotAfter() - { - return NotAfter; - } - - public String getToken() - { - return Token; - } - - public XboxLiveLoginResponseClaims getDisplayClaims() - { - return DisplayClaims; - } - - public static class XboxLiveLoginResponseClaims - { - private final XboxLiveUserInfo[] xui; - - public XboxLiveLoginResponseClaims(XboxLiveUserInfo[] xui) - { - this.xui = xui; - } - - public XboxLiveUserInfo[] getUsers() - { - return xui; - } - } - - public static class XboxLiveUserInfo - { - private final String uhs; - - public XboxLiveUserInfo(String uhs) - { - this.uhs = uhs; - } - - public String getUserHash() - { - return uhs; - } - } -} diff --git a/src/main/java/fr/litarvan/openauth/model/AuthAgent.java b/src/main/java/fr/litarvan/openauth/model/AuthAgent.java deleted file mode 100644 index 2e0b1db5..00000000 --- a/src/main/java/fr/litarvan/openauth/model/AuthAgent.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.model; - -/** - * JSON model of an auth agent - * - * @version 1.0.4 - * @author Litarvan - */ -public class AuthAgent { - - /** - * The Minecraft auth agent - */ - public static final AuthAgent MINECRAFT = new AuthAgent("Minecraft", 1); - - /** - * The Scroll auth agent - */ - public static final AuthAgent SCROLLS = new AuthAgent("Scrolls", 1); - - /** - * The agent name - */ - private String name; - - /** - * The agent version - */ - private int version; - - /** - * Agent constructor - * - * @param name - * The name of the agent - * @param version - * The version of the agent (1 by default) - */ - public AuthAgent(String name, int version) { - this.name = name; - this.version = version; - } - - /** - * Sets a new name - * - * @param name - * The new name - */ - public void setName(String name) { - this.name = name; - } - - /** - * Returns the name of the agent - * - * @return The agent name - */ - public String getName() { - return this.name; - } - - /** - * Sets a new version - * - * @param version - * The new version - */ - public void setVersion(int version) { - this.version = version; - } - - /** - * Returns the version of the agent - * - * @return The agent version - */ - public int getVersion() { - return this.version; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/model/AuthError.java b/src/main/java/fr/litarvan/openauth/model/AuthError.java deleted file mode 100644 index 9c597aaa..00000000 --- a/src/main/java/fr/litarvan/openauth/model/AuthError.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.model; - -/** - * JSON model of an error - * - * @version 1.0.4 - * @author Litarvan - */ -public class AuthError { - - /** - * Short description of the error - */ - private String error; - - /** - * Longer description wich can be shown to the user - */ - private String errorMessage; - - /** - * Cause of the error (optional) - */ - private String cause; - - /** - * Auth Error constructor - * - * @param error - * Short description of the error - * @param errorMessage - * Longer description wich can be shown to the user - * @param cause - * Cause of the error - */ - public AuthError(String error, String errorMessage, String cause) { - this.error = error; - this.errorMessage = errorMessage; - this.cause = cause; - } - - /** - * Returns the error (Short description of the error) - * - * @return The error - */ - public String getError() { - return error; - } - - /** - * Returns the error message (Longer description of the error) - * - * @return The error message - */ - public String getErrorMessage() { - return this.errorMessage; - } - - /** - * Returns the cause of the error - * - * @return The cause - */ - public String getCause() { - return cause; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/model/AuthProfile.java b/src/main/java/fr/litarvan/openauth/model/AuthProfile.java deleted file mode 100644 index d70c0616..00000000 --- a/src/main/java/fr/litarvan/openauth/model/AuthProfile.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.model; - -/** - * JSON model of a profile - * - * @version 1.0.4 - * @author Litarvan - */ -public class AuthProfile { - - /** - * The profile name - */ - private String name; - - /** - * The profile UUID - */ - private String id; - - /** - * Blank auth profile - */ - public AuthProfile() { - this.name = ""; - this.id = ""; - } - - /** - * Normal auth profile - * - * @param name - * The profile name - * @param id - * The profile UUID - */ - public AuthProfile(String name, String id) { - this.name = name; - this.id = id; - } - - /** - * Returns the name of the profile - * - * @return The profile name - */ - public String getName() { - return this.name; - } - - /** - * Returns the profile UUID - * - * @return The profile UUID - */ - public String getId() { - return this.id; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/model/request/AuthRequest.java b/src/main/java/fr/litarvan/openauth/model/request/AuthRequest.java deleted file mode 100644 index bda92ed6..00000000 --- a/src/main/java/fr/litarvan/openauth/model/request/AuthRequest.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.model.request; - -import fr.litarvan.openauth.model.AuthAgent; - -/** - * JSON Model of an authentication request - * - * @version 1.0.4 - * @author Litarvan - */ -public class AuthRequest { - - /** - * The authentication agent (Optional, the game profile you want to use, Minecraft, Scrolls, etc...) - */ - private AuthAgent agent; - - /** - * The username (The username of the player you want to authenticate) - */ - private String username; - - /** - * The password (The password of the player you want to authenticate) - */ - private String password; - - /** - * The client token (Optional, it's like a password for the access token) - */ - private String clientToken; - - /** - * Authentication Request - * - * @param agent - * The authentication agent (Optional, the game you want to use, Minecraft, Scrolls, etc...) - * @param username - * The username (The username of the player you want to authenticate) - * @param password - * The password (The password of the player you want to authenticate) - * @param clientToken - * The client token (Optional, It's like a password for the access token) - */ - public AuthRequest(AuthAgent agent, String username, String password, String clientToken) { - this.agent = agent; - this.username = username; - this.password = password; - this.clientToken = clientToken; - } - - /** - * Sets a new authentication agent (Optional, the game you want to use, Minecraft, Scrolls, etc...) - * - * @param agent - * The new agent - */ - public void setAgent(AuthAgent agent) { - this.agent = agent; - } - - /** - * Returns the authentication agent (Given with the constructor or the setter) - * - * @return The given auth agent - */ - public AuthAgent getAgent() { - return this.agent; - } - - /** - * Sets a new username (The username of the player you want to authenticate) - * - * @param username - * The new username - */ - public void setUsername(String username) { - this.username = username; - } - - /** - * Returns the username (Given with the constructor or the setter) - * - * @return The given username - */ - public String getUsername() { - return this.username; - } - - /** - * Sets a new password (The password of the player you want to authenticate) - * - * @param password - * The new password - */ - public void setPassword(String password) { - this.password = password; - } - - /** - * Returns the password (Given with the constructor or the setter) - * - * @return The given password - */ - public String getPassword() { - return this.password; - } - - /** - * Sets a new client token (It's like a password for the access token) - * - * @param clientToken - * The new client token - */ - public void setClientToken(String clientToken) { - this.clientToken = clientToken; - } - - /** - * Returns the client token (Given with the constructor or the setter) - * - * @return The given client token - */ - public String getClientToken() { - return clientToken; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/model/request/InvalidateRequest.java b/src/main/java/fr/litarvan/openauth/model/request/InvalidateRequest.java deleted file mode 100644 index 5689627d..00000000 --- a/src/main/java/fr/litarvan/openauth/model/request/InvalidateRequest.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.model.request; - -/** - * JSON Model of an invalidate request - * - * @version 1.0.4 - * @author Litarvan - */ -public class InvalidateRequest { - - /** - * The access token you want to invalidate - */ - private String accessToken; - - /** - * The client token associated with the access token - */ - private String clientToken; - - /** - * Invalidate Request constructor - * - * @param accessToken - * The access token you want to invalidate - * @param clientToken - * The client token associated with the access token - */ - public InvalidateRequest(String accessToken, String clientToken) { - this.accessToken = accessToken; - this.clientToken = clientToken; - } - - /** - * Sets a new access token (That you want to invalidate) - * - * @param accessToken - * The new access token - */ - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - /** - * Returns the access token (Given by the constructor or the setter) - * - * @return The given access token - */ - public String getAccessToken() { - return this.accessToken; - } - - /** - * Sets a new client token (Need to be associated with the access token) - * - * @param clientToken - * The new client token - */ - public void setClientToken(String clientToken) { - this.clientToken = clientToken; - } - - /** - * Returns the client token (Given by the constructor or the setter) - * - * @return The given client token - */ - public String getClientToken() { - return clientToken; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/model/request/RefreshRequest.java b/src/main/java/fr/litarvan/openauth/model/request/RefreshRequest.java deleted file mode 100644 index a6833790..00000000 --- a/src/main/java/fr/litarvan/openauth/model/request/RefreshRequest.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.model.request; - -/** - * JSON model of a refresh request - * - * @version 1.0.4 - * @author Litarvan - */ -public class RefreshRequest { - - /** - * The saved access token that you want to refresh - */ - private String accessToken; - - /** - * The saved client token associated with the access token - */ - private String clientToken; - - /** - * Refresh Request constructor - * - * @param accessToken - * The saved access token that you want to refresh - * @param clientToken - * The saved client token associated with the access token - */ - public RefreshRequest(String accessToken, String clientToken) { - this.accessToken = accessToken; - this.clientToken = clientToken; - } - - /** - * Sets a new access token (That you want to refresh) - * - * @param accessToken - * The new access token - */ - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - /** - * Returns the access token (Given by the constructor or the setter) - * - * @return The given access token - */ - public String getAccessToken() { - return this.accessToken; - } - - /** - * Sets a new client token (Need to be associated with the access token) - * - * @param clientToken - * The new client token - */ - public void setClientToken(String clientToken) { - this.clientToken = clientToken; - } - - /** - * Returns the client token (Given by the constructor or the setter) - * - * @return The given client token - */ - public String getClientToken() { - return this.clientToken; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/model/request/SignoutRequest.java b/src/main/java/fr/litarvan/openauth/model/request/SignoutRequest.java deleted file mode 100644 index 917fedb5..00000000 --- a/src/main/java/fr/litarvan/openauth/model/request/SignoutRequest.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.model.request; - -/** - * JSON Model of an signout request - * - * @version 1.0.4 - * @author Litarvan - */ -public class SignoutRequest { - - /** - * The username of the player that you want to signout - */ - private String username; - - /** - * The password of the player that you want to signout - */ - private String password; - - /** - * Signout Request constructor - * - * @param username - * The username of the player that you want to signout - * @param password - * The password of the player that you want to signout - */ - public SignoutRequest(String username, String password) { - this.username = username; - this.password = password; - } - - /** - * Sets a new username (Of the player that you want to signout) - * - * @param username - * The new username - */ - public void setUsername(String username) { - this.username = username; - } - - /** - * Returns the username (Given by the constructor or the setter) - * - * @return The given username - */ - public String getUsername() { - return this.username; - } - - /** - * Sets a new password (Of the player that you want to signout) - * - * @param password - * The new password - */ - public void setPassword(String password) { - this.password = password; - } - - /** - * Returns the password (Given by the constructor or the setter) - * - * @return The given password - */ - public String getPassword() { - return password; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/model/request/ValidateRequest.java b/src/main/java/fr/litarvan/openauth/model/request/ValidateRequest.java deleted file mode 100644 index d85b090c..00000000 --- a/src/main/java/fr/litarvan/openauth/model/request/ValidateRequest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.model.request; - -/** - * JSON Model of an validate request - * - * @version 1.0.4 - * @author Litarvan - */ -public class ValidateRequest { - - /** - * The access token that you want to validate - */ - private String accessToken; - - /** - * Validate Request constructor - * - * @param accessToken - * The access token that you want to validate - */ - public ValidateRequest(String accessToken) { - this.accessToken = accessToken; - } - - /** - * Sets a new access token - * - * @param accessToken - * The new access token - */ - public void setAccessToken(String accessToken) { - this.accessToken = accessToken; - } - - /** - * Returns the access token (Given by the constructor or the setter) - * - * @return The given access token - */ - public String getAccessToken() { - return accessToken; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/model/response/AuthResponse.java b/src/main/java/fr/litarvan/openauth/model/response/AuthResponse.java deleted file mode 100644 index e29d449f..00000000 --- a/src/main/java/fr/litarvan/openauth/model/response/AuthResponse.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.model.response; - -import fr.litarvan.openauth.model.AuthProfile; - -/** - * JSON Model of an authentication response - * - * @version 1.0.4 - * @author Litarvan - */ -public class AuthResponse { - - /** - * The access token - */ - private String accessToken; - - /** - * The client token (same as the one given by the request) - */ - private String clientToken; - - /** - * All available profiles - */ - private AuthProfile[] availableProfiles; - - /** - * The current selected profile from the agent - */ - private AuthProfile selectedProfile; - - /** - * Auth Response constructor - * - * @param accessToken - * The access token - * @param clientToken - * The client token (same as the one given by the request) - * @param availableProfiles - * All available profiles - * @param selectedProfile - * The current selected profile from the agent - */ - public AuthResponse(String accessToken, String clientToken, AuthProfile[] availableProfiles, AuthProfile selectedProfile) { - this.accessToken = accessToken; - this.clientToken = clientToken; - this.availableProfiles = availableProfiles; - this.selectedProfile = selectedProfile; - } - - /** - * Returns the access token - * - * @return The access token - */ - public String getAccessToken() { - return this.accessToken; - } - - /** - * Returns the client token (same as the one given by the request) - * - * @return The client token - */ - public String getClientToken() { - return this.clientToken; - } - - /** - * Returns the available profiles - * - * @return The available profiles - */ - public AuthProfile[] getAvailableProfiles() { - return this.availableProfiles; - } - - /** - * Returns the selected profile from the agent - * - * @return The selected profile - */ - public AuthProfile getSelectedProfile() { - return this.selectedProfile; - } - -} diff --git a/src/main/java/fr/litarvan/openauth/model/response/RefreshResponse.java b/src/main/java/fr/litarvan/openauth/model/response/RefreshResponse.java deleted file mode 100644 index 2381d9de..00000000 --- a/src/main/java/fr/litarvan/openauth/model/response/RefreshResponse.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2015 TheShark34 - * - * This file is part of OpenAuth. - - * OpenAuth is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenAuth is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with OpenAuth. If not, see . - */ -package fr.litarvan.openauth.model.response; - -import fr.litarvan.openauth.model.AuthProfile; - -/** - * JSON Model of an refresh response - * - * @version 1.0.4 - * @author Litarvan - */ -public class RefreshResponse { - - /** - * The access token (not the same as the one given by the request) - */ - private String accessToken; - - /** - * The client token (same as the one given by the request) - */ - private String clientToken; - - /** - * The selected profile - */ - private AuthProfile selectedProfile; - - /** - * Refresh Response constructor - * - * @param accessToken - * The access token (not the same as the one given by the request) - * @param clientToken - * The client token (same as the one given by the request) - * @param selectedProfile - * The profile selected (depending of the sent AuthAgent) containing - * more information about the agent (the game) selected, like the - * username for Minecraft - */ - public RefreshResponse(String accessToken, String clientToken, AuthProfile selectedProfile) { - this.accessToken = accessToken; - this.clientToken = clientToken; - this.selectedProfile = selectedProfile; - } - - /** - * Returns the access token (not the same as the one given by the request) - * - * @return The access token - */ - public String getAccessToken() { - return accessToken; - } - - /** - * Returns the client token (same as the one given by the request) - * - * @return The client token - */ - public String getClientToken() { - return clientToken; - } - - /** - * Returns the selected profile - * - * @return The selected profile - */ - public AuthProfile getSelectedProfile() { - return selectedProfile; - } - -} diff --git a/src/main/java/net/minecraft/client/renderer/entity/Render.java b/src/main/java/net/minecraft/client/renderer/entity/Render.java index e38865b6..84faa52b 100644 --- a/src/main/java/net/minecraft/client/renderer/entity/Render.java +++ b/src/main/java/net/minecraft/client/renderer/entity/Render.java @@ -25,6 +25,7 @@ import optifine.Config; import org.lwjgl.opengl.GL11; import rip.athena.client.Athena; import rip.athena.client.modules.impl.other.NickHider; +import rip.athena.client.modules.impl.other.Settings; import rip.athena.client.socket.SocketClient; import shadersmod.client.Shaders; @@ -375,41 +376,43 @@ public abstract class Render if (entityIn instanceof AbstractClientPlayer) { String username = ((AbstractClientPlayer) entityIn).getGameProfile().getId().toString(); - if (SocketClient.isUser(username) && entityIn.ticksExisted > 20) { - Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("Athena/logo/Athena.png")); + if (Settings.socketLogo) { + if (SocketClient.isUser(username) && entityIn.ticksExisted > 20) { + Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("Athena/logo/Athena.png")); - String rank = SocketClient.getRank(username).toString(); - ResourceLocation rankTexture = null; - switch (rank) { - case "OWNER": - case "MANAGER": - rankTexture = new ResourceLocation("Athena/ranks/owner.png"); - break; - case "DEVELOPER": - rankTexture = new ResourceLocation("Athena/ranks/developer.png"); - break; - case "ADMIN": - rankTexture = new ResourceLocation("Athena/ranks/admin.png"); - break; - case "MOD": - rankTexture = new ResourceLocation("Athena/ranks/mod.png"); - break; - case "PARTNER": - rankTexture = new ResourceLocation("Athena/ranks/partner.png"); - break; - case "PREMIUM": - rankTexture = new ResourceLocation("Athena/ranks/premium.png"); - break; - case "USER": - rankTexture = new ResourceLocation("Athena/ranks/user.png"); - break; - default: - break; - } + String rank = SocketClient.getRank(username).toString(); + ResourceLocation rankTexture = null; + switch (rank) { + case "OWNER": + case "MANAGER": + rankTexture = new ResourceLocation("Athena/ranks/owner.png"); + break; + case "DEVELOPER": + rankTexture = new ResourceLocation("Athena/ranks/developer.png"); + break; + case "ADMIN": + rankTexture = new ResourceLocation("Athena/ranks/admin.png"); + break; + case "MOD": + rankTexture = new ResourceLocation("Athena/ranks/mod.png"); + break; + case "PARTNER": + rankTexture = new ResourceLocation("Athena/ranks/partner.png"); + break; + case "PREMIUM": + rankTexture = new ResourceLocation("Athena/ranks/premium.png"); + break; + case "USER": + rankTexture = new ResourceLocation("Athena/ranks/user.png"); + break; + default: + break; + } - if (rankTexture != null) { - Minecraft.getMinecraft().getTextureManager().bindTexture(rankTexture); - Gui.drawModalRectWithCustomSizedTexture(-fontrenderer.getStringWidth(entityIn.getDisplayName().getFormattedText()) / 2 - 12, (int) -2, 11, 11, 11, 11, 11, 11); + if (rankTexture != null) { + Minecraft.getMinecraft().getTextureManager().bindTexture(rankTexture); + Gui.drawModalRectWithCustomSizedTexture(-fontrenderer.getStringWidth(entityIn.getDisplayName().getFormattedText()) / 2 - 12, (int) -2, 11, 11, 11, 11, 11, 11); + } } } } diff --git a/src/main/java/rip/athena/client/Athena.java b/src/main/java/rip/athena/client/Athena.java index 8cbdf13e..ba8e3b4b 100644 --- a/src/main/java/rip/athena/client/Athena.java +++ b/src/main/java/rip/athena/client/Athena.java @@ -18,7 +18,6 @@ import rip.athena.client.modules.impl.other.AimTrainer; import rip.athena.client.requests.ContentType; import rip.athena.client.requests.WebRequest; import rip.athena.client.requests.WebRequestResult; -import rip.athena.client.server.CosmeticsClient; import rip.athena.client.socket.SocketClient; import rip.athena.client.theme.ThemeManager; import rip.athena.client.utils.PrefixedLogger; @@ -58,8 +57,8 @@ public class Athena { private final PrefixedLogger log = new PrefixedLogger("Athena"); private final String clientName = "Athena"; - private final String clientVersion = "1.0.0"; - private final String clientBuild = "230601"; + private final String clientVersion = "0.0.1"; + private final String clientBuild = "061723"; private NotificationManager notificationManager; private AccountManager accountManager; @@ -167,8 +166,6 @@ public class Athena { } } - - /** * Cleans up and shuts down the client. * This method is responsible for any necessary cleanup tasks, @@ -177,4 +174,16 @@ public class Athena { public void shutdownClient() { log.info("Shutting down client"); } + + public String getClientBuild() { + return clientBuild; + } + + public String getClientName() { + return clientName; + } + + public String getClientVersion() { + return clientVersion; + } } diff --git a/src/main/java/rip/athena/client/gui/clickgui.zip b/src/main/java/rip/athena/client/gui/clickgui.zip deleted file mode 100644 index 73ac888a..00000000 Binary files a/src/main/java/rip/athena/client/gui/clickgui.zip and /dev/null differ diff --git a/src/main/java/rip/athena/client/modules/impl/other/Settings.java b/src/main/java/rip/athena/client/modules/impl/other/Settings.java index 5d9576aa..d2f4d076 100644 --- a/src/main/java/rip/athena/client/modules/impl/other/Settings.java +++ b/src/main/java/rip/athena/client/modules/impl/other/Settings.java @@ -9,8 +9,8 @@ public class Settings extends Module { @ConfigValue.Boolean(name = "F5 Nametags", description = "Shows your own nametags in f5 mode") public boolean F5Nametags = true; - @ConfigValue.Boolean(name = "Show Logo On Tab") - public boolean showLogoOnTab = true; + @ConfigValue.Boolean(name = "Render Socket Logo") + public static boolean socketLogo = true; @ConfigValue.Boolean(name = "Custom GUI Font") public static boolean customGuiFont = true; diff --git a/src/main/java/rip/athena/client/server/CosmeticsClient.java b/src/main/java/rip/athena/client/server/CosmeticsClient.java deleted file mode 100644 index 63ea411f..00000000 --- a/src/main/java/rip/athena/client/server/CosmeticsClient.java +++ /dev/null @@ -1,60 +0,0 @@ -package rip.athena.client.server; - -import com.google.gson.Gson; -import org.eclipse.jetty.websocket.api.Session; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; -import org.eclipse.jetty.websocket.api.annotations.WebSocket; -import org.eclipse.jetty.websocket.client.WebSocketClient; - -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -/** - * @author Athena Development - * @project Athena-Client - * @date 6/12/2023 - */ - -@WebSocket -public class CosmeticsClient { - - private Session session; - - public void connect(String serverUri) throws URISyntaxException { - WebSocketClient client = new WebSocketClient(); - try { - client.start(); - URI uri = new URI(serverUri); - client.connect(this, uri); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @OnWebSocketConnect - public void onConnect(Session session) { - System.out.println("Connected to server"); - this.session = session; - } - - @OnWebSocketMessage - public void onMessage(String message) { - System.out.println("Received message from server: " + message); - } - - @OnWebSocketClose - public void onClose(int statusCode, String reason) { - System.out.println("Connection closed: " + reason); - } - - public void sendMessage(String message) { - try { - session.getRemote().sendString(message); - } catch (IOException e) { - e.printStackTrace(); - } - } -} diff --git a/workspace/logs/2023-06-17-1.log.gz b/workspace/logs/2023-06-17-1.log.gz new file mode 100644 index 00000000..9869cef2 Binary files /dev/null and b/workspace/logs/2023-06-17-1.log.gz differ diff --git a/workspace/logs/2023-06-17-2.log.gz b/workspace/logs/2023-06-17-2.log.gz new file mode 100644 index 00000000..8827f445 Binary files /dev/null and b/workspace/logs/2023-06-17-2.log.gz differ diff --git a/workspace/logs/2023-06-17-3.log.gz b/workspace/logs/2023-06-17-3.log.gz new file mode 100644 index 00000000..00cef0a4 Binary files /dev/null and b/workspace/logs/2023-06-17-3.log.gz differ diff --git a/workspace/logs/2023-06-17-4.log.gz b/workspace/logs/2023-06-17-4.log.gz new file mode 100644 index 00000000..9045ff58 Binary files /dev/null and b/workspace/logs/2023-06-17-4.log.gz differ diff --git a/workspace/logs/latest.log b/workspace/logs/latest.log index eccd58d9..241fc064 100644 --- a/workspace/logs/latest.log +++ b/workspace/logs/latest.log @@ -1,1142 +1,84 @@ -[00:00:00] [Client thread/INFO]: [CHAT] Pluralled: gg -[00:00:00] [Client thread/INFO]: [CHAT] wynxtharmi: я тебе уже 20 минут пишу астрал запусти нахуй )) -[00:00:01] [Client thread/INFO]: [CHAT] kxtaminedreamss_: щенок -[00:00:02] [Client thread/INFO]: [CHAT] Colled: bruh Straight -[00:00:02] [Client thread/INFO]: [CHAT] RenauIt: weköjrh wberf -[00:00:04] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §dJbarsxg08§e wants you to play! (Join) -[00:00:06] [Client thread/INFO]: [CHAT] kxtaminedreamss_: шо такое астрал -[00:00:07] [Client thread/INFO]: [CHAT] [Owner] Straight #1: FUCK -[00:00:08] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: its too easy for him WWWWW -[00:00:09] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: LOL -[00:00:09] [Client thread/INFO]: [CHAT] [Owner] Straight #1: i fubmedl -[00:00:10] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:00:10] [Client thread/INFO]: [CHAT] wynxtharmi: щенок я тебя астрал попросил раньше запустить )) -[00:00:11] [Client thread/INFO]: [CHAT] yaaur: imyourfan wow -[00:00:14] [Client thread/INFO]: [CHAT] cTwiiys: what -[00:00:14] [Client thread/INFO]: [CHAT] wynxtharmi: ВЯ_+ЖАВ_ЯЖАВ_ЗЖ_ЗЖАВ ШО ТАКОЕ АСТРАЛ -[00:00:14] [Client thread/INFO]: [CHAT] [Owner] Straight #1: luck -[00:00:16] [Client thread/INFO]: [CHAT] imyourfan: ? -[00:00:18] [Client thread/INFO]: [CHAT] VaIentime_: tf -[00:00:18] [Client thread/INFO]: [CHAT] cTwiiys: LOL -[00:00:20] [Client thread/INFO]: [CHAT] scoobygamer515: inv me rq -[00:00:24] [Client thread/INFO]: [CHAT] wynxtharmi: ПИШЕТ СС ОТ РАНДОМА И ШО ТАКОЕ АСТРАЛ -[00:00:26] [Client thread/INFO]: [CHAT] -[00:00:26] [Client thread/INFO]: [CHAT] Tournament -[00:00:26] [Client thread/INFO]: [CHAT] ● Players: 2/100 -[00:00:26] [Client thread/INFO]: [CHAT] ● Mode: Parkour 1v1 -[00:00:26] [Client thread/INFO]: [CHAT] ● Round: Finals -[00:00:26] [Client thread/INFO]: [CHAT] §a§l[CLICK TO VIEW] -[00:00:26] [Client thread/INFO]: [CHAT] -[00:00:27] [Client thread/INFO]: [CHAT] Not_Xylon: haha bo wiesz -[00:00:28] [Client thread/INFO]: [CHAT] Aissa: lets duel final -[00:00:28] [Client thread/INFO]: [CHAT] kxtaminedreamss_: + -[00:00:30] [Client thread/INFO]: [CHAT] wynxtharmi: ЯХАХАХХА ЖЕРТВА АБОРТА ТЫ НАХУЙ -[00:00:31] [Client thread/INFO]: [CHAT] kxtaminedreamss_: рандома ж -[00:00:32] [Client thread/INFO]: [CHAT] souuli: DUEL FINAL -[00:00:33] [Client thread/INFO]: [CHAT] wynxtharmi: ХАХАХАХАХХАХ -[00:00:34] [Client thread/INFO]: [CHAT] [✷] Alxx1sBxck: come -[00:00:34] [Client thread/INFO]: [CHAT] Bigboyapple: straight hi -[00:00:34] [Client thread/INFO]: [CHAT] cTwiiys: duel us again -[00:00:35] [Client thread/INFO]: [CHAT] Colled: LMAO -[00:00:36] [Client thread/INFO]: [CHAT] RUG3MAN: duel 3v3 -[00:00:36] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:00:37] [Client thread/INFO]: [CHAT] knnnnnailenD: кек -[00:00:38] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: UMMM -[00:00:39] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:00:41] [Client thread/INFO]: [CHAT] brainsickness: . -[00:00:41] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: RECIPE LOOOOL -[00:00:41] [Client thread/INFO]: [CHAT] wynxtharmi: ТЫ СС ХОТЬ РАЗ ПРОХОДИЛ ? ))) -[00:00:41] [Client thread/INFO]: [CHAT] kxtaminedreamss_: рандом ж ты -[00:00:41] [Client thread/INFO]: [CHAT] ignOjdqy: pehhee -[00:00:42] [Client thread/INFO]: [CHAT] DonFronko: przegralem w sumox D -[00:00:43] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: LOOOOL -[00:00:44] [Client thread/INFO]: [CHAT] -[00:00:44] [Client thread/INFO]: [CHAT] Tournament -[00:00:44] [Client thread/INFO]: [CHAT] ● Winner: Doofus9 -[00:00:44] [Client thread/INFO]: [CHAT] -[00:00:44] [Client thread/INFO]: [CHAT] shahab89: gg -[00:00:45] [Client thread/INFO]: [CHAT] wynxtharmi: ХАХАХХА НАХУЙ -[00:00:46] [Client thread/INFO]: [CHAT] -[00:00:46] [Client thread/INFO]: [CHAT] [MMC] Need support? Create a ticket: minemen.club/tickets -[00:00:46] [Client thread/INFO]: [CHAT] -[00:00:46] [Client thread/INFO]: [CHAT] kxtaminedreamss_: + на гомме проходил -[00:00:48] [Client thread/INFO]: [CHAT] Not_Xylon: beka xD -[00:00:48] [Client thread/INFO]: [CHAT] wynxtharmi: ШО ТАКОЕ АСТРАЛ ПИШЕТ -[00:00:49] [Client thread/INFO]: [CHAT] [Owner] Straight #1: bro -[00:00:50] [Client thread/INFO]: [CHAT] HeinzzBeans: OWAH -[00:00:52] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: ahbahahha -[00:00:52] [Client thread/INFO]: [CHAT] JenMouloude12: your ping ..... -[00:00:53] [Client thread/INFO]: [CHAT] _P0t: bedfight 4v4 -[00:00:53] [Client thread/INFO]: [CHAT] wynxtharmi: НА ГОММЕ АХХАХ -[00:00:56] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:00:57] [Client thread/INFO]: [CHAT] wynxtharmi: НУ КА И ОТ КОГО ХЗАХАХАХ -[00:00:58] [Client thread/INFO]: [CHAT] Dexitryy: straight -[00:01:00] [Client thread/INFO]: [CHAT] brainsickness: ..dsa -[00:01:00] [Client thread/INFO]: [CHAT] 66t6: dam straight! -[00:01:02] [Client thread/INFO]: [CHAT] Dexitryy: join us fr -[00:01:02] [Client thread/INFO]: [CHAT] piotrekgaming28: hun -[00:01:03] [Client thread/INFO]: [CHAT] kxtaminedreamss_: от модера придурок шоль -[00:01:04] [Client thread/INFO]: [CHAT] [✡] verleh: do big 1v1 tourneys -[00:01:05] [Client thread/INFO]: [CHAT] [✡] verleh: W -[00:01:06] [Client thread/INFO]: [CHAT] Not_Xylon: wow -[00:01:06] [Client thread/INFO]: [CHAT] kxtaminedreamss_: после кв -[00:01:06] [Client thread/INFO]: [CHAT] DonFronko: big W -[00:01:10] [Client thread/INFO]: [CHAT] _P0t: bedfight 4v4 -[00:01:10] [Client thread/INFO]: [CHAT] JenMouloude12: nice pi_ng -[00:01:12] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:01:12] [Client thread/INFO]: [CHAT] Colled: Straight duel nodebuff bro -[00:01:17] [Client thread/INFO]: [CHAT] imyourfan: fk -[00:01:18] [Client thread/INFO]: [CHAT] wynxtharmi: от модера нахуй )) -[00:01:19] [Client thread/INFO]: [CHAT] yaaur: imyourfan nooooo -[00:01:20] [Client thread/INFO]: [CHAT] avelmont: Samstrixx Havaryou -[00:01:21] [Client thread/INFO]: [CHAT] VaIentime_: Terabajt_ cheating -[00:01:22] [Client thread/INFO]: [CHAT] kxtaminedreamss_: ну да а ч -[00:01:24] [Client thread/INFO]: [CHAT] wynxtharmi: и ты не знаешь чё такое астрал ))) -[00:01:27] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:01:28] [Client thread/INFO]: [CHAT] wynxtharmi: при этом нахуй ))) -[00:01:28] [Client thread/INFO]: [CHAT] Cristian_0_0_TGF: cringe -[00:01:28] [Client thread/INFO]: [CHAT] Mrhimex_: avelmont duel ? -[00:01:32] [Client thread/INFO]: [CHAT] kxtaminedreamss_: так там не через него ссают еблан й -[00:01:34] [Client thread/INFO]: [CHAT] wynxtharmi: да ты на уши мне хуи не вешай нахуй )) -[00:01:35] [Client thread/INFO]: [CHAT] [✡] verleh: NO -[00:01:37] [Client thread/INFO]: [CHAT] imyourfan: yaaur i did it before and i knocked Realisticgirl lmao -[00:01:38] [Client thread/INFO]: [CHAT] wynxtharmi: ебанат тупой аххАХАХАХА )А ))А -[00:01:39] [Client thread/INFO]: [CHAT] Waatas: sale merde -[00:01:39] [Client thread/INFO]: [CHAT] Not_Xylon: XD -[00:01:41] [Client thread/INFO]: [CHAT] DonFronko: XD -[00:01:42] [Client thread/INFO]: [CHAT] wynxtharmi: ТЫ ДАЖЕ НЕ ЗНАЕШЬ -[00:01:43] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: why im so bad w bow -[00:01:43] [Client thread/INFO]: [CHAT] PAPANOMALYOP: COME COMBO 1v1 -[00:01:44] [Client thread/INFO]: [CHAT] [✡] verleh: rematch. -[00:01:45] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: WHY DIDNT U ACCEPT -[00:01:45] [Client thread/INFO]: [CHAT] -[00:01:45] [Client thread/INFO]: [CHAT] Event -[00:01:45] [Client thread/INFO]: [CHAT] ● Players: 0 -[00:01:45] [Client thread/INFO]: [CHAT] ● Event: Sumo 1v1 -[00:01:45] [Client thread/INFO]: [CHAT] ● Host: idisu -[00:01:45] [Client thread/INFO]: [CHAT] §a§l[CLICK TO JOIN] -[00:01:45] [Client thread/INFO]: [CHAT] -[00:01:46] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:01:47] [Client thread/INFO]: [CHAT] wynxtharmi: ЧТО ТАКОЕ АСТРАЛ И ПАЛАДИН -[00:01:47] [Client thread/INFO]: [CHAT] kxtaminedreamss_: спорим шо не через астрал на твою матуху ? -[00:01:48] [Client thread/INFO]: [CHAT] iFireSanrex: bobos -[00:01:48] [Client thread/INFO]: [CHAT] imyourfan: yaaur now is your turn -[00:01:49] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: yeah yaaur imyourfan knocked me -[00:01:49] [Client thread/INFO]: [CHAT] poupou_gamer2009: JosipL say woof woof -[00:01:51] [Client thread/INFO]: [CHAT] POEBEN: чё у вас нахуй в чате происходит? -[00:01:53] [Client thread/INFO]: [CHAT] -[00:01:53] [Client thread/INFO]: [CHAT] Tournament -[00:01:53] [Client thread/INFO]: [CHAT] ● Players: 0 -[00:01:53] [Client thread/INFO]: [CHAT] ● Mode: Spleef 1v1 -[00:01:53] [Client thread/INFO]: [CHAT] ● Status: Waiting -[00:01:53] [Client thread/INFO]: [CHAT] §a§l[CLICK TO JOIN] -[00:01:53] [Client thread/INFO]: [CHAT] -[00:01:54] [Client thread/INFO]: [CHAT] Dexitryy: 2 -[00:01:55] [Client thread/INFO]: [CHAT] 66t6: well i gtg about now anyway... cya -[00:01:55] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:01:57] [Client thread/INFO]: [CHAT] [Partner] CHIEFXD RIZZ: EVERYONE JOIN TOURNEY -[00:01:58] [Client thread/INFO]: [CHAT] wynxtharmi: ау придурок нахуй )) -[00:01:58] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: fish -[00:01:58] [Client thread/INFO]: [CHAT] DonFronko: gg -[00:01:59] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: this is so freeeeeeeee -[00:02:00] [Client thread/INFO]: [CHAT] -[00:02:00] [Client thread/INFO]: [CHAT] Event -[00:02:00] [Client thread/INFO]: [CHAT] ● Players: 8 -[00:02:00] [Client thread/INFO]: [CHAT] ● Event: Sumo 1v1 -[00:02:00] [Client thread/INFO]: [CHAT] ● Host: idisu -[00:02:00] [Client thread/INFO]: [CHAT] §a§l[CLICK TO JOIN] -[00:02:00] [Client thread/INFO]: [CHAT] -[00:02:01] [Client thread/INFO]: [CHAT] ROG0ATNALDO: wouah bu -[00:02:01] [Client thread/INFO]: [CHAT] [✡] thaluxx: Realisticgirl HEHE -[00:02:02] [Client thread/INFO]: [CHAT] imyourfan: ;) -[00:02:03] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:02:04] [Client thread/INFO]: [CHAT] UnB0xsterAuSki: no rod? -[00:02:04] [Client thread/INFO]: [CHAT] wynxtharmi: ты прям ща его запустишь ? )) -[00:02:05] [Client thread/INFO]: [CHAT] kxtaminedreamss_: ок заходи вайм щенок уничтожу тебя -[00:02:06] [Client thread/INFO]: [CHAT] ROG0ATNALDO: lance final frr -[00:02:07] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: my fish.. -[00:02:08] [Client thread/INFO]: [CHAT] -[00:02:08] [Client thread/INFO]: [CHAT] Tournament -[00:02:08] [Client thread/INFO]: [CHAT] ● Players: 8 -[00:02:08] [Client thread/INFO]: [CHAT] ● Mode: Spleef 1v1 -[00:02:08] [Client thread/INFO]: [CHAT] ● Status: Waiting -[00:02:08] [Client thread/INFO]: [CHAT] §a§l[CLICK TO JOIN] -[00:02:08] [Client thread/INFO]: [CHAT] -[00:02:09] [Client thread/INFO]: [CHAT] wynxtharmi: не ливая с вайма )) -[00:02:10] [Client thread/INFO]: [CHAT] ROG0ATNALDO: comment ça norod -[00:02:11] [Client thread/INFO]: [CHAT] Not_Xylon: ja w boxing gowno jestem xD -[00:02:12] [Client thread/INFO]: [CHAT] Schlopss: hey -[00:02:13] [Client thread/INFO]: [CHAT] wynxtharmi: майна *** -[00:02:14] [Client thread/INFO]: [CHAT] souuli: LOL -[00:02:15] [Client thread/INFO]: [CHAT] -[00:02:15] [Client thread/INFO]: [CHAT] Event -[00:02:15] [Client thread/INFO]: [CHAT] ● Players: 8 -[00:02:15] [Client thread/INFO]: [CHAT] ● Event: Sumo 1v1 -[00:02:15] [Client thread/INFO]: [CHAT] ● Host: idisu -[00:02:15] [Client thread/INFO]: [CHAT] §a§l[CLICK TO JOIN] -[00:02:15] [Client thread/INFO]: [CHAT] -[00:02:16] [Client thread/INFO]: [CHAT] Litow_: zzzz -[00:02:17] [Client thread/INFO]: [CHAT] ggXplayer07: fireballfigh plss -[00:02:18] [Client thread/INFO]: [CHAT] wynxtharmi: запустишь не ? )) -[00:02:22] [Client thread/INFO]: [CHAT] wynxtharmi: хуесос )) -[00:02:23] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:02:26] [Client thread/INFO]: [CHAT] wynxtharmi: не ливая с майна астрал )) -[00:02:26] [Client thread/INFO]: [CHAT] Primal4ikmarroW: WHAT -[00:02:27] [Client thread/INFO]: [CHAT] L_GG_EZ: ThDarkknight bro u are the worst mc player of all time -[00:02:29] [Client thread/INFO]: [CHAT] ThDarkknight: skywars plz -[00:02:30] [Client thread/INFO]: [CHAT] Ohbet: madlovezeu its funny you know you cant beat me ina 1v1 -[00:02:30] [Client thread/INFO]: [CHAT] -[00:02:30] [Client thread/INFO]: [CHAT] Event -[00:02:30] [Client thread/INFO]: [CHAT] ● Players: 12 -[00:02:30] [Client thread/INFO]: [CHAT] ● Event: Sumo 1v1 -[00:02:30] [Client thread/INFO]: [CHAT] ● Host: idisu -[00:02:30] [Client thread/INFO]: [CHAT] §a§l[CLICK TO JOIN] -[00:02:30] [Client thread/INFO]: [CHAT] -[00:02:31] [Client thread/INFO]: [CHAT] -[00:02:31] [Client thread/INFO]: [CHAT] Tournament -[00:02:31] [Client thread/INFO]: [CHAT] ● Players: 17 -[00:02:31] [Client thread/INFO]: [CHAT] ● Mode: Spleef 1v1 -[00:02:31] [Client thread/INFO]: [CHAT] ● Status: Starting -[00:02:31] [Client thread/INFO]: [CHAT] §a§l[CLICK TO JOIN] -[00:02:31] [Client thread/INFO]: [CHAT] -[00:02:36] [Client thread/INFO]: [CHAT] arag0n: nice hacks IxElizabetta -[00:02:41] [Client thread/INFO]: [CHAT] TapotementDuZ: what$r -[00:02:41] [Client thread/INFO]: [CHAT] -[00:02:41] [Client thread/INFO]: [CHAT] Tournament -[00:02:41] [Client thread/INFO]: [CHAT] ● Players: 20 -[00:02:41] [Client thread/INFO]: [CHAT] ● Mode: Spleef 1v1 -[00:02:41] [Client thread/INFO]: [CHAT] ● Status: Starting -[00:02:41] [Client thread/INFO]: [CHAT] §a§l[CLICK TO JOIN] -[00:02:41] [Client thread/INFO]: [CHAT] -[00:02:43] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: yeaaaa -[00:02:46] [Client thread/INFO]: [CHAT] POEBEN: блять кто играет на вайме? люди вы ебанулись? -[00:02:46] [Client thread/INFO]: [CHAT] -[00:02:46] [Client thread/INFO]: [CHAT] [Practice] Want to play with a friend? Use /duel -[00:02:46] [Client thread/INFO]: [CHAT] -[00:02:47] [Client thread/INFO]: [CHAT] [Partner] CHIEFXD RIZZ: https://www.twitch.tv/chiefxd TOURNEY WINNER POV -[00:02:49] [Client thread/INFO]: [CHAT] Bigboyapple: i am not great at spleef -[00:02:51] [Client thread/INFO]: [CHAT] knnnnnailenD: какйо нахуй вайм -[00:02:51] [Client thread/INFO]: [CHAT] [✡] thaluxx: uannaa lol -[00:02:51] [Client thread/INFO]: [CHAT] -[00:02:51] [Client thread/INFO]: [CHAT] Tournament -[00:02:51] [Client thread/INFO]: [CHAT] ● Players: 21/100 -[00:02:51] [Client thread/INFO]: [CHAT] ● Mode: Spleef 1v1 -[00:02:51] [Client thread/INFO]: [CHAT] ● Round: 16th-Finals -[00:02:51] [Client thread/INFO]: [CHAT] §a§l[CLICK TO VIEW] -[00:02:51] [Client thread/INFO]: [CHAT] -[00:02:52] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: recipebook u in= -[00:02:53] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: ? -[00:02:54] [Client thread/INFO]: [CHAT] knnnnnailenD: вы че тупорылые что ли бля -[00:02:57] [Client thread/INFO]: [CHAT] scoobygamer515: wTF is this -[00:02:58] [Client thread/INFO]: [CHAT] imyourfan: FK -[00:03:00] [Client thread/INFO]: [CHAT] _Robinou_: egirlHater Boxing -[00:03:09] [Client thread/INFO]: Connecting to eu.minemen.club, 25565 -[00:03:12] [Client thread/INFO]: [CHAT] -[00:03:12] [Client thread/INFO]: [CHAT] Minemen Club -[00:03:12] [Client thread/INFO]: [CHAT] ● Website: minemen.club -[00:03:12] [Client thread/INFO]: [CHAT] ● Store: store.minemen.club -[00:03:12] [Client thread/INFO]: [CHAT] ● Discord: minemen.club/discord -[00:03:12] [Client thread/INFO]: [CHAT] ● Twitter: twitter.com/Minemen_Network -[00:03:12] [Client thread/INFO]: [CHAT] ● Rules: minemen.club/rules -[00:03:12] [Client thread/INFO]: [CHAT] -[00:03:12] [Client thread/INFO]: [CHAT] Club » ziue joined. -[00:03:12] [Client thread/INFO]: [CHAT] [✷] ziue has joined the lobby! -[00:03:13] [Client thread/INFO]: [CHAT] You've been added to the EU Practice queue. -[00:03:13] [Client thread/INFO]: [CHAT] You're now being sent to EU Practice. -[00:03:14] [Client thread/INFO]: [CHAT] -[00:03:14] [Client thread/INFO]: [CHAT] EU Practice -[00:03:14] [Client thread/INFO]: [CHAT] 1v1s, Parties, Events -[00:03:14] [Client thread/INFO]: [CHAT] 15+ Games & Duels -[00:03:14] [Client thread/INFO]: [CHAT] -[00:03:14] [Client thread/INFO]: [CHAT] ● To duel a friend, do: /duel [their name]. -[00:03:14] [Client thread/INFO]: [CHAT] ● To quick play, right click with your sword. -[00:03:14] [Client thread/INFO]: [CHAT] ● To edit a kit, right click with your book. -[00:03:14] [Client thread/INFO]: [CHAT] -[00:03:14] [Client thread/INFO]: [CHAT] HeinzzBeans: gg -[00:03:17] [Client thread/INFO]: [CHAT] knnnnnailenD: ебанутые -[00:03:19] [Client thread/INFO]: [CHAT] Mrhimex_: some 1 duel me boxing no run -[00:03:20] [Client thread/INFO]: [CHAT] _Robinou_: egirlHater Je fais jamais de No debuff -[00:03:21] [Client thread/INFO]: [CHAT] knnnnnailenD: вайм мс особенно -[00:03:26] [Client thread/INFO]: [CHAT] Excitations_: samistos tu fait quoi la XD -[00:03:28] [Client thread/INFO]: [CHAT] POEBEN: та то пиздец -[00:03:35] [Client thread/INFO]: [CHAT] JulineX: bro -[00:03:35] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: AbdOKing_ my boyy -[00:03:37] [Client thread/INFO]: [CHAT] Cristian_0_0_TGF: cringe -[00:03:40] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: why u weird K00r -[00:03:47] [Client thread/INFO]: [CHAT] avelmont: :| -[00:03:47] [Client thread/INFO]: [CHAT] K00r: stop sweting -[00:03:48] [Client thread/INFO]: [CHAT] [Partner] CHIEFXD RIZZ: https://www.twitch.tv/chiefxd TOURNEY WINNER POV -[00:03:49] [Client thread/INFO]: [CHAT] POEBEN: это нахуй хуже майнблейза блять -[00:03:54] [Client thread/INFO]: [CHAT] Vx361: gg -[00:03:54] [Client thread/INFO]: [CHAT] LightSkeleton: d -[00:03:54] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: just how u play sw -[00:03:55] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:03:56] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: u just bad -[00:03:57] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: come here -[00:03:59] [Client thread/INFO]: [CHAT] DonFronko: gg -[00:03:59] [Client thread/INFO]: [CHAT] [❃] idisu: auto -[00:04:00] [Client thread/INFO]: [CHAT] K00r: ,,,,,,,, -[00:04:02] [Client thread/INFO]: [CHAT] wynxtharmi: а чё ты хочешь от хуесосов которые мне хуя с ричом сосут ? )) -[00:04:03] [Client thread/INFO]: [CHAT] avelmont: kiirma -[00:04:05] [Client thread/INFO]: [CHAT] BarnyFromDaHood: WP -[00:04:06] [Client thread/INFO]: [CHAT] _Ogii_: this takes so long -[00:04:07] [Client thread/INFO]: [CHAT] ArtaTheFirst: Samstrixx party ur fans -[00:04:10] [Client thread/INFO]: [CHAT] VoidMonk3y: wtf -[00:04:11] [Client thread/INFO]: [CHAT] BullieBulldog: o k -[00:04:19] [Client thread/INFO]: [CHAT] Lunj: lucky -[00:04:23] [Client thread/INFO]: [CHAT] Pluralled: gg -[00:04:23] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: queue unranked sdkywars -[00:04:25] [Client thread/INFO]: [CHAT] f4nt0m3: GG -[00:04:26] [Client thread/INFO]: [CHAT] Bacccalaureat: gg -[00:04:26] [Client thread/INFO]: [CHAT] -[00:04:26] [Client thread/INFO]: [CHAT] ✘ LAEGIT was banned by AntiGamingChair for Unfair Advantage. -[00:04:26] [Client thread/INFO]: [CHAT] -[00:04:27] [Client thread/INFO]: [CHAT] Litow_: zzzzzz -[00:04:29] [Client thread/INFO]: [CHAT] iiGMO: gg -[00:04:30] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: BAD -[00:04:30] [Client thread/INFO]: [CHAT] [✡] verleh: XD -[00:04:32] [Client thread/INFO]: [CHAT] wanish_: bruh -[00:04:32] [Client thread/INFO]: [CHAT] Luca5tevo: xD -[00:04:33] [Client thread/INFO]: [CHAT] souuli: LOL -[00:04:34] [Client thread/INFO]: [CHAT] aquazertinho: GG -[00:04:35] [Client thread/INFO]: [CHAT] POEBEN: могу похлопать -[00:04:35] [Client thread/INFO]: [CHAT] AFzei: ah? -[00:04:39] [Client thread/INFO]: [CHAT] [Partner] CHIEFXD RIZZ: https://www.twitch.tv/chiefxd TOURNEY WINNER POV -[00:04:40] [Client thread/INFO]: [CHAT] VoidMonk3y: f u -[00:04:44] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: WWW PAVEL -[00:04:45] [Client thread/INFO]: [CHAT] -[00:04:45] [Client thread/INFO]: [CHAT] ✘ ivda was banned by AntiGamingChair for Unfair Advantage. -[00:04:45] [Client thread/INFO]: [CHAT] -[00:04:46] [Client thread/INFO]: [CHAT] -[00:04:46] [Client thread/INFO]: [CHAT] [MMC] Giveaways, Events, Updates: minemen.club/discord -[00:04:46] [Client thread/INFO]: [CHAT] -[00:04:49] [Client thread/INFO]: [CHAT] VoidMonk3y: gg -[00:04:50] [Client thread/INFO]: [CHAT] _EliteStrikexz: minecraft__ -[00:04:51] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: look at this oNoob -[00:04:52] [Client thread/INFO]: [CHAT] _Robinou_: gg -[00:04:55] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: really good in parkour -[00:04:57] [Client thread/INFO]: [CHAT] JenMouloude12: gg -[00:04:59] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: luuuuuck -[00:05:00] [Client thread/INFO]: [CHAT] Flav2: gg -[00:05:01] [Client thread/INFO]: [CHAT] AlgerienDeter: ggs -[00:05:04] [Client thread/INFO]: [CHAT] [✷] oCritz: frank be quiet -[00:05:04] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: come back up -[00:05:05] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: rn -[00:05:07] [Client thread/INFO]: [CHAT] [✷] oCritz: its pure skill -[00:05:09] [Client thread/INFO]: [CHAT] JenMouloude12: att -[00:05:10] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: noob -[00:05:10] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: oCritz noooooooob -[00:05:11] [Client thread/INFO]: [CHAT] -[00:05:11] [Client thread/INFO]: [CHAT] Tournament -[00:05:11] [Client thread/INFO]: [CHAT] ● Players: 11/100 -[00:05:11] [Client thread/INFO]: [CHAT] ● Mode: Spleef 1v1 -[00:05:11] [Client thread/INFO]: [CHAT] ● Round: 8th-Finals -[00:05:11] [Client thread/INFO]: [CHAT] §a§l[CLICK TO VIEW] -[00:05:11] [Client thread/INFO]: [CHAT] -[00:05:12] [Client thread/INFO]: [CHAT] [✷] oCritz: . -[00:05:13] [Client thread/INFO]: [CHAT] ItsRenderman: a -[00:05:14] [Client thread/INFO]: [CHAT] JenMouloude12: je change le pack -[00:05:20] [Client thread/INFO]: [CHAT] vinvinvx: a -[00:05:21] [Client thread/INFO]: [CHAT] 73h2: f -[00:05:21] [Client thread/INFO]: [CHAT] Cristian_0_0_TGF: bro cringe ahahaha -[00:05:24] [Client thread/INFO]: [CHAT] ROG0ATNALDO: gl mec -[00:05:26] [Client thread/INFO]: [CHAT] Ohbet: nobody can beat ina 1v1 so it makes sense madlovezeu -[00:05:27] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: CHIEFXD -[00:05:29] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §dKqro§e wants you to play! (Join) -[00:05:35] [Client thread/INFO]: [CHAT] godGgs: A -[00:05:36] [Client thread/INFO]: [CHAT] Itaromi: aeffaefafa -[00:05:41] [Client thread/INFO]: [CHAT] The_Onox: AA -[00:05:45] [Client thread/INFO]: [CHAT] urfavkosta: soo close -[00:05:46] [Client thread/INFO]: [CHAT] _Spatulos_: gg -[00:05:48] [Client thread/INFO]: [CHAT] k4mel: gg -[00:05:48] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: WWWWW -[00:05:50] [Client thread/INFO]: [CHAT] Colled: bruh -[00:05:52] [Client thread/INFO]: [CHAT] Excitations_: ATTT -[00:05:53] [Client thread/INFO]: [CHAT] InoSan_: w -[00:05:54] [Client thread/INFO]: [CHAT] Machine215: nikmok -[00:05:55] [Client thread/INFO]: [CHAT] FreezingBlocks: freezing1505 -[00:05:57] [Client thread/INFO]: [CHAT] Excitations_: cbon -[00:06:00] [Client thread/INFO]: [CHAT] Classicist: add -[00:06:01] [Client thread/INFO]: [CHAT] [Partner] CHIEFXD RIZZ: https://www.twitch.tv/chiefxd TOURNEY WINNER POV -[00:06:03] [Client thread/INFO]: [CHAT] souuli: LOL -[00:06:04] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:06:04] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:06:05] [Client thread/INFO]: [CHAT] DonFronko: gg -[00:06:08] [Client thread/INFO]: [CHAT] Samstrixx: xd bad figt]w -[00:06:09] [Client thread/INFO]: [CHAT] Ohbet: damn Alxx1sBxck how you almost gonna die ina 3v1 -[00:06:09] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §3Ceive§e wants you to play! (Join) -[00:06:15] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: give me youur fish -[00:06:17] [Client thread/INFO]: [CHAT] Vrsovickej: XDD -[00:06:22] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: no -[00:06:23] [Client thread/INFO]: [CHAT] imyourfan: Juuzouuuu lmao -[00:06:25] [Client thread/INFO]: [CHAT] avelmont: kiri -[00:06:27] [Client thread/INFO]: [CHAT] [✷] Alxx1sBxck: ty -[00:06:29] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: my fish -[00:06:32] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: LOL -[00:06:33] [Client thread/INFO]: [CHAT] -[00:06:33] [Client thread/INFO]: [CHAT] Event -[00:06:33] [Client thread/INFO]: [CHAT] ● Winner: YIGO__ -[00:06:33] [Client thread/INFO]: [CHAT] -[00:06:33] [Client thread/INFO]: [CHAT] shahab89: gg -[00:06:33] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: i fumbled -[00:06:34] [Client thread/INFO]: [CHAT] Cristian_0_0_TGF: crnge -[00:06:35] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §dKqro§e wants you to play! (Join) -[00:06:35] [Client thread/INFO]: [CHAT] [Partner] CHIEFXD RIZZ: https://www.twitch.tv/chiefxd TOURNEY WINNER POV -[00:06:40] [Client thread/INFO]: [CHAT] Kylypios: ur good at pvp but u fall to much -[00:06:42] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: little_deer_uwu CRAZZZY -[00:06:44] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: give me -[00:06:44] [Client thread/INFO]: [CHAT] PvP_MaStER___: уебан на софте -[00:06:45] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:06:46] [Client thread/INFO]: [CHAT] -[00:06:46] [Client thread/INFO]: [CHAT] [MMC] Follow for updates: twitter.com/Minemen_Network -[00:06:46] [Client thread/INFO]: [CHAT] -[00:06:47] [Client thread/INFO]: [CHAT] POEBEN: q gapple -[00:06:47] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: and i leave u -[00:06:56] [Client thread/INFO]: [CHAT] Pola_Bear: sficeman is literally a mashup of the cringest players, they were running from combos sneaking in pv -[00:06:57] [Client thread/INFO]: [CHAT] ansfen: nice -[00:06:57] [Client thread/INFO]: [CHAT] Ohbet: Its ok to be worse Valtesse -[00:06:57] [Client thread/INFO]: [CHAT] souuli: LOL -[00:06:59] [Client thread/INFO]: [CHAT] -[00:06:59] [Client thread/INFO]: [CHAT] Tournament -[00:06:59] [Client thread/INFO]: [CHAT] ● Players: 6/100 -[00:06:59] [Client thread/INFO]: [CHAT] ● Mode: Spleef 1v1 -[00:06:59] [Client thread/INFO]: [CHAT] ● Round: Quarter-Finals -[00:06:59] [Client thread/INFO]: [CHAT] §a§l[CLICK TO VIEW] -[00:06:59] [Client thread/INFO]: [CHAT] -[00:07:00] [Client thread/INFO]: [CHAT] Pola_Bear: rano ut of space -[00:07:01] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: ok -[00:07:02] [Client thread/INFO]: [CHAT] souuli: RUG3MAN -[00:07:03] [Client thread/INFO]: [CHAT] POEBEN: pizda mne -[00:07:04] [Client thread/INFO]: [CHAT] JenMouloude12: ;,; -[00:07:10] [Client thread/INFO]: [CHAT] AlgerienDeter: ggs -[00:07:16] [Client thread/INFO]: [CHAT] xIpsyse: 150 ms -[00:07:17] [Client thread/INFO]: [CHAT] BullieBulldog: eyo -[00:07:17] [Client thread/INFO]: [CHAT] ArtaTheFirst: Samstrixx miyay duel? -[00:07:22] [Client thread/INFO]: [CHAT] leq_0: HAHAH -[00:07:22] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:07:23] [Client thread/INFO]: [CHAT] COZYBALLER: . -[00:07:24] [Client thread/INFO]: [CHAT] JenMouloude12: gg -[00:07:24] [Client thread/INFO]: [CHAT] xIpsyse: ! -[00:07:26] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:07:28] [Client thread/INFO]: [CHAT] xIpsyse: 150 ms!! -[00:07:28] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §dKqro§e wants you to play! (Join) -[00:07:29] [Client thread/INFO]: [CHAT] ShakeShackFries: gf -[00:07:31] [Client thread/INFO]: [CHAT] ansfen: gg -[00:07:31] [Client thread/INFO]: [CHAT] abdullah_scav: 1min -[00:07:34] [Client thread/INFO]: [CHAT] Machine215: gg -[00:07:34] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: xIpsyse wtfff -[00:07:40] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: WTF -[00:07:43] [Client thread/INFO]: [CHAT] -[00:07:43] [Client thread/INFO]: [CHAT] ✘ Nejority was banned by AntiGamingChair for Unfair Advantage. -[00:07:43] [Client thread/INFO]: [CHAT] -[00:07:44] [Client thread/INFO]: [CHAT] -[00:07:44] [Client thread/INFO]: [CHAT] ✘ ezkidstopcrying was banned by AntiGamingChair for Unfair Advantage. -[00:07:44] [Client thread/INFO]: [CHAT] -[00:07:45] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: MY fish -[00:07:45] [Client thread/INFO]: [CHAT] brainsickness: sdads -[00:07:46] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:07:46] [Client thread/INFO]: [CHAT] Ohbet: little close there Valtesse huh -[00:07:48] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §dKqro§e wants you to play! (Join) -[00:07:50] [Client thread/INFO]: [CHAT] BullieBulldog: ;o -[00:07:50] [Client thread/INFO]: [CHAT] xIpsyse: Ipsyse im ur big fan -[00:07:54] [Client thread/INFO]: [CHAT] souuli: LOL -[00:07:54] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: french xIpsyse -[00:07:54] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:07:54] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: plzz mr strimmer -[00:07:55] [Client thread/INFO]: [CHAT] DonFronko: gg -[00:07:56] [Client thread/INFO]: [CHAT] Cscro: a -[00:07:56] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: ? -[00:07:58] [Client thread/INFO]: [CHAT] xIpsyse: hahahah -[00:08:02] [Client thread/INFO]: [CHAT] xIpsyse: maybe -[00:08:02] [Client thread/INFO]: [CHAT] Cscro: ada -[00:08:04] [Client thread/INFO]: [CHAT] ItchyChrysalis: gg -[00:08:06] [Client thread/INFO]: [CHAT] BullieBulldog: OneLife__ man whaaat yo ping tf -[00:08:07] [Client thread/INFO]: [CHAT] Tyk1i: ranked boxing -[00:08:08] [Client thread/INFO]: [CHAT] RUG3MAN: duel 3v3 -[00:08:16] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: Oke i go namemc XD -[00:08:18] [Client thread/INFO]: [CHAT] ShakeShackFries: gf -[00:08:19] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: After -[00:08:21] [Client thread/INFO]: [CHAT] AUTOCLIKINGGG: Valtesse -[00:08:22] [Client thread/INFO]: [CHAT] JulineX: doggg -[00:08:23] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: FREEEEEE -[00:08:24] [Client thread/INFO]: [CHAT] imyourfan: Fan2WeshReh_GOMU gg but stop eating so much gapps please -[00:08:31] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §dKqro§e wants you to play! (Join) -[00:08:32] [Client thread/INFO]: [CHAT] souuli: RUG3MAN -[00:08:35] [Client thread/INFO]: [CHAT] RUG3MAN: souuli -[00:08:35] [Client thread/INFO]: [CHAT] souuli: bro -[00:08:36] [Client thread/INFO]: [CHAT] xIpsyse: nice art on namemc XD -[00:08:37] [Client thread/INFO]: [CHAT] wynxtharmi: ' yf[eq -[00:08:41] [Client thread/INFO]: [CHAT] [✡] thaluxx: today nobody spam party chill ;:C -[00:08:41] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: :( -[00:08:41] [Client thread/INFO]: [CHAT] wynxtharmi: э нахуй -[00:08:41] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: noooooob -[00:08:42] [Client thread/INFO]: [CHAT] Ohbet: Valtesse lets duel -[00:08:43] [Client thread/INFO]: [CHAT] arag0n: wtf -[00:08:44] [Client thread/INFO]: [CHAT] [✡] thaluxx: chat -[00:08:45] [Client thread/INFO]: [CHAT] wynxtharmi: наебал -[00:08:45] [Client thread/INFO]: [CHAT] [✷] cuteCarino: a -[00:08:46] [Client thread/INFO]: [CHAT] -[00:08:46] [Client thread/INFO]: [CHAT] [MMC] Buy perks here: store.minemen.club -[00:08:46] [Client thread/INFO]: [CHAT] -[00:08:47] [Client thread/INFO]: [CHAT] Pavel67522: what -[00:08:47] [Client thread/INFO]: [CHAT] Ohbet: you think you good -[00:08:47] [Client thread/INFO]: [CHAT] [✷] Valtesse VAMPIRE: AUTOCLIKINGGG ? -[00:08:49] [Client thread/INFO]: [CHAT] arag0n: what a crazy hacker IxElizabetta -[00:08:52] [Client thread/INFO]: [CHAT] 0hKaito_: cuteCarino amo -[00:08:53] [Client thread/INFO]: [CHAT] AUTOCLIKINGGG: Valtesse what is ur fov -[00:08:57] [Client thread/INFO]: [CHAT] [✷] oCritz: frank biggest noob -[00:08:58] [Client thread/INFO]: [CHAT] -[00:08:58] [Client thread/INFO]: [CHAT] Tournament -[00:08:58] [Client thread/INFO]: [CHAT] ● Players: 3/100 -[00:08:58] [Client thread/INFO]: [CHAT] ● Mode: Spleef 1v1 -[00:08:58] [Client thread/INFO]: [CHAT] ● Round: Semi-Finals -[00:08:58] [Client thread/INFO]: [CHAT] §a§l[CLICK TO VIEW] -[00:08:58] [Client thread/INFO]: [CHAT] -[00:08:59] [Client thread/INFO]: [CHAT] POEBEN: gg -[00:09:01] [Client thread/INFO]: [CHAT] [✷] Valtesse VAMPIRE: 87 -[00:09:03] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: i like -[00:09:07] [Client thread/INFO]: [CHAT] AUTOCLIKINGGG: Valtesse rlly? -[00:09:08] [Client thread/INFO]: [CHAT] wynxtharmi: ты нахуя штаны мои спиздил -[00:09:10] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: like? -[00:09:10] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:09:10] [Client thread/INFO]: [CHAT] imyourfan: i dropped my rod -[00:09:12] [Client thread/INFO]: [CHAT] ansfen: gg -[00:09:13] [Client thread/INFO]: [CHAT] wynxtharmi: дурак ебаный -[00:09:13] [Client thread/INFO]: [CHAT] godGgs: ggs -[00:09:13] [Client thread/INFO]: [CHAT] imyourfan: lol -[00:09:17] [Client thread/INFO]: [CHAT] imyourfan: wait -[00:09:23] [Client thread/INFO]: [CHAT] Mbappenalty: mdr -[00:09:23] [Client thread/INFO]: [CHAT] POEBEN: это я выкинул ты мне их скинул -[00:09:25] [Client thread/INFO]: [CHAT] Xianoye: s -[00:09:26] [Client thread/INFO]: [CHAT] Excitations_: wsh -[00:09:29] [Client thread/INFO]: [CHAT] clqmsy: McDonalds -[00:09:30] [Client thread/INFO]: [CHAT] wynxtharmi: я тебе не те скинул нахуй -[00:09:30] [Client thread/INFO]: [CHAT] JackpaninoYT: lol -[00:09:30] [Client thread/INFO]: [CHAT] Tracalex: POEBEN qq -[00:09:30] [Client thread/INFO]: [CHAT] [✷] Valtesse VAMPIRE: YES but not dynamic -[00:09:34] [Client thread/INFO]: [CHAT] POEBEN: извеняй -[00:09:39] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: OMFTG -[00:09:40] [Client thread/INFO]: [CHAT] POEBEN: qq -[00:09:41] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: UR SO BAD -[00:09:41] [Client thread/INFO]: [CHAT] AUTOCLIKINGGG: Valtesse ty bro -[00:09:42] [Client thread/INFO]: [CHAT] _Ogii_: Hahahah -[00:09:42] [Client thread/INFO]: [CHAT] zDarnes: Tayuko off itt -[00:09:44] [Client thread/INFO]: [CHAT] [✷] oCritz: LMAO PERFECTLY PLACED SNOWBALLS -[00:09:47] [Client thread/INFO]: [CHAT] [✡] thaluxx: AUTOCLIKINGGG ik uuuuu we fight 1 year ago omg XD -[00:09:48] [Client thread/INFO]: [CHAT] [✷] Valtesse VAMPIRE: np -[00:09:49] [Client thread/INFO]: [CHAT] ShakeShackFries: gf -[00:09:50] [Client thread/INFO]: [CHAT] [✷] oCritz: FRANK THAT WAS PURE SKILL BE QUIET -[00:09:53] [Client thread/INFO]: [CHAT] [❃] NervousLeOuf France: xIpsyse -[00:09:54] [Client thread/INFO]: [CHAT] Strzzight: bro what are u doign ur not shanon sharpe -[00:09:54] [Client thread/INFO]: [CHAT] GamingAdvanced: afk -[00:09:54] [Client thread/INFO]: [CHAT] BullieBulldog: noooo -[00:09:55] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: xIpsyse u are xd -[00:09:56] [Client thread/INFO]: [CHAT] -[00:09:56] [Client thread/INFO]: [CHAT] Tournament -[00:09:56] [Client thread/INFO]: [CHAT] ● Players: 2/100 -[00:09:56] [Client thread/INFO]: [CHAT] ● Mode: Spleef 1v1 -[00:09:56] [Client thread/INFO]: [CHAT] ● Round: Finals -[00:09:56] [Client thread/INFO]: [CHAT] §a§l[CLICK TO VIEW] -[00:09:56] [Client thread/INFO]: [CHAT] -[00:09:57] [Client thread/INFO]: [CHAT] Not_Xylon: xd -[00:09:57] [Client thread/INFO]: [CHAT] [❃] NervousLeOuf France: la moula -[00:09:58] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:09:59] [Client thread/INFO]: [CHAT] [✷] oCritz: pavel shit -[00:10:00] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: ow -[00:10:02] [Client thread/INFO]: [CHAT] imyourfan: gf -[00:10:03] [Client thread/INFO]: [CHAT] back2easy: sa -[00:10:04] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: that hurts -[00:10:04] [Client thread/INFO]: [CHAT] Frostie_Cat: lol -[00:10:05] [Client thread/INFO]: [CHAT] Samuelebel: Italiani duellatemi 1v1 invaded -[00:10:07] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: oCritz you are DOOOOOOOOGSHIIIIIIIT -[00:10:08] [Client thread/INFO]: [CHAT] Fan2WeshReh_GOMU: gf too -[00:10:09] [Client thread/INFO]: [CHAT] TryhardX2: lets be friends -[00:10:12] [Client thread/INFO]: [CHAT] DonFronko: xd mi sie regeneruje nie wiem czy wiesz XD -[00:10:16] [Client thread/INFO]: [CHAT] [✡] thaluxx: NervousLeOuf give back gioconda anfameeeeeeee -[00:10:16] [Client thread/INFO]: [CHAT] xIpsyse: what is it -[00:10:19] [Client thread/INFO]: [CHAT] xIpsyse: la moula -[00:10:22] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: this guy just wont push LOOOOL -[00:10:26] [Client thread/INFO]: [CHAT] GamingAdvanced: es de onde? -[00:10:29] [Client thread/INFO]: [CHAT] avelmont: Ki iranie ? -[00:10:31] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: Nothing -[00:10:31] [Client thread/INFO]: [CHAT] JackpaninoYT: lol -[00:10:32] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic -[00:10:33] [Client thread/INFO]: [CHAT] BullieBulldog: wtf -[00:10:34] [Client thread/INFO]: [CHAT] aquazertinho: GG -[00:10:35] [Client thread/INFO]: [CHAT] souuli: LOl -[00:10:35] [Client thread/INFO]: [CHAT] z_dh: MNE -[00:10:38] [Client thread/INFO]: [CHAT] TryhardX2: am i good -[00:10:39] [Client thread/INFO]: [CHAT] [✷] EmiliaPvP ^•ﻌ•^: gg. -[00:10:39] [Client thread/INFO]: [CHAT] Ohbet: thats crazy Sucable -[00:10:40] [Client thread/INFO]: [CHAT] Pluralled: gg -[00:10:40] [Client thread/INFO]: [CHAT] POEBEN: ne jumpresetaisya -[00:10:44] [Client thread/INFO]: [CHAT] Kylypios: gg -[00:10:44] [Client thread/INFO]: [CHAT] Sucable: Ohbet what ? -[00:10:46] [Client thread/INFO]: [CHAT] -[00:10:46] [Client thread/INFO]: [CHAT] [MMC] Apply for staff: minemen.club/applications -[00:10:46] [Client thread/INFO]: [CHAT] -[00:10:46] [Client thread/INFO]: [CHAT] Ohbet: buddy knew he was losin -[00:10:49] [Client thread/INFO]: [CHAT] GamingAdvanced: onde vc mora? -[00:10:49] [Client thread/INFO]: [CHAT] Sucable: You crit me afk -[00:10:50] [Client thread/INFO]: [CHAT] wynxtharmi: дак ты кликер поменьше выставь -[00:10:50] [Client thread/INFO]: [CHAT] TryhardX2: cuz im not so good at boxing -[00:10:53] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:10:53] [Client thread/INFO]: [CHAT] Cristian_0_0_TGF: cringe -[00:10:54] [Client thread/INFO]: [CHAT] avelmont: Ki iranie ? -[00:10:55] [Client thread/INFO]: [CHAT] DonFronko: gg -[00:10:55] [Client thread/INFO]: [CHAT] wynxtharmi: чтоб я тебя мог перекликать -[00:10:55] [Client thread/INFO]: [CHAT] Ohbet: Sucable you ran and healed -[00:10:56] [Client thread/INFO]: [CHAT] Machine215: gg -[00:10:57] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:10:57] [Client thread/INFO]: [CHAT] xIpsyse: oh thanks -[00:10:58] [Client thread/INFO]: [CHAT] GamingAdvanced: no etendo -[00:10:59] [Client thread/INFO]: [CHAT] ReyZhen: gg -[00:11:01] [Client thread/INFO]: [CHAT] Ohbet: you were full hp if not more than i had to start -[00:11:02] [Client thread/INFO]: [CHAT] POEBEN: та блять 16-17 кпс -[00:11:03] [Client thread/INFO]: [CHAT] Not_Xylon: to na farcie bylo XDD -[00:11:07] [Client thread/INFO]: [CHAT] GamingAdvanced: brasil -[00:11:08] [Client thread/INFO]: [CHAT] POEBEN: какой кликер -[00:11:08] [Client thread/INFO]: [CHAT] DonFronko: troche XD -[00:11:09] [Client thread/INFO]: [CHAT] Ohbet: then 2v1ed when you was losin -[00:11:10] [Client thread/INFO]: [CHAT] Machine215: any party fighting -[00:11:11] [Client thread/INFO]: [CHAT] godGgs: xd -[00:11:12] [Client thread/INFO]: [CHAT] RUG3MAN: duel 3v3 -[00:11:12] [Client thread/INFO]: [CHAT] DonFronko: ale ja tez mialem -[00:11:12] [Client thread/INFO]: [CHAT] CRAYAAA: spd -[00:11:14] [Client thread/INFO]: [CHAT] TryhardX2: can i get this win -[00:11:14] [Client thread/INFO]: [CHAT] wynxtharmi: и не свои -[00:11:14] [Client thread/INFO]: [CHAT] xIpsyse: im just ur fan.. -[00:11:16] [Client thread/INFO]: [CHAT] CRAYAAA: vieux himo -[00:11:18] [Client thread/INFO]: [CHAT] -[00:11:21] [Client thread/INFO]: [CHAT] GamingAdvanced: brasil speak -[00:11:21] [Client thread/INFO]: [CHAT] Kylypios: LMAO -[00:11:22] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: oCritz is actually a CRINGE loooooooord -[00:11:23] [Client thread/INFO]: [CHAT] Sucable: Ohbet but... -[00:11:25] [Client thread/INFO]: [CHAT] -[00:11:25] [Client thread/INFO]: [CHAT] ✘ gudending was banned by AntiGamingChair for Unfair Advantage. -[00:11:25] [Client thread/INFO]: [CHAT] -[00:11:28] [Client thread/INFO]: [CHAT] GamingAdvanced: brazil me -[00:11:29] [Client thread/INFO]: [CHAT] [✷] oCritz: pavel -[00:11:33] [Client thread/INFO]: [CHAT] ArshiaKing: what -[00:11:34] [Client thread/INFO]: [CHAT] [✷] oCritz: i hate u -[00:11:35] [Client thread/INFO]: [CHAT] Kianonyx: portugal -[00:11:38] [Client thread/INFO]: [CHAT] RonSi163: ТФРФРФ -[00:11:39] [Client thread/INFO]: [CHAT] keagnn: koui_ i thought my wifi was bad ^ -[00:11:39] [Client thread/INFO]: [CHAT] -[00:11:39] [Client thread/INFO]: [CHAT] ✘ Wamplzz was banned by AntiGamingChair for Unfair Advantage. -[00:11:39] [Client thread/INFO]: [CHAT] -[00:11:41] [Client thread/INFO]: [CHAT] ItsRenderman: gg -[00:11:42] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: oCritz NOOOOOOOOB -[00:11:42] [Client thread/INFO]: [CHAT] GamingAdvanced: my is brazil -[00:11:42] [Client thread/INFO]: [CHAT] Schlopss: u2 -[00:11:43] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: f# -[00:11:43] [Client thread/INFO]: [CHAT] godGgs: come middle -[00:11:46] [Client thread/INFO]: [CHAT] Machine215: 2v2 nb -[00:11:48] [Client thread/INFO]: [CHAT] Ohbet: madlovezeu you run from fair fights -[00:11:54] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §3Ceive§e wants you to play! (Join) -[00:11:56] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: DUDE -[00:11:56] [Client thread/INFO]: [CHAT] -[00:11:56] [Client thread/INFO]: [CHAT] Tournament -[00:11:56] [Client thread/INFO]: [CHAT] ● Winner: oCritz -[00:11:56] [Client thread/INFO]: [CHAT] -[00:11:57] [Client thread/INFO]: [CHAT] muskO___: gg -[00:12:04] [Client thread/INFO]: [CHAT] [✷] oCritz: gg -[00:12:04] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: oCritz is baaaaaad -[00:12:05] [Client thread/INFO]: [CHAT] [✷] oCritz: lol -[00:12:07] [Client thread/INFO]: [CHAT] zock_zock: gg -[00:12:07] [Client thread/INFO]: [CHAT] Vrsovickej: dude -[00:12:07] [Client thread/INFO]: [CHAT] [✷] oCritz: FRANK -[00:12:08] [Client thread/INFO]: [CHAT] [✷] oCritz: BE QUIET -[00:12:10] [Client thread/INFO]: [CHAT] Cristian_0_0_TGF: crine -[00:12:12] [Client thread/INFO]: [CHAT] Ohbet: Host classic tourney -[00:12:12] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: duel me bridge -[00:12:12] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §3Ceive§e wants you to play! (Join) -[00:12:14] [Client thread/INFO]: [CHAT] [✷] oCritz: no -[00:12:15] [Client thread/INFO]: [CHAT] exotroo: ranked boxing -[00:12:16] [Client thread/INFO]: [CHAT] [✷] oCritz: shit no -[00:12:16] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:12:18] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: thats what i t hought -[00:12:18] [Client thread/INFO]: [CHAT] leq_0: cringe? -[00:12:19] [Client thread/INFO]: [CHAT] DonFronko: poddalem sie XD -[00:12:21] [Client thread/INFO]: [CHAT] [✷] oCritz: ok fine -[00:12:22] [Client thread/INFO]: [CHAT] Not_Xylon: to bylo szybkie -[00:12:23] [Client thread/INFO]: [CHAT] avelmont: Im Iran -[00:12:23] [Client thread/INFO]: [CHAT] Kianonyx: portugal for life -[00:12:24] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:12:24] [Client thread/INFO]: [CHAT] leq_0: don't cry -[00:12:25] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:12:28] [Client thread/INFO]: [CHAT] Not_Xylon: zauwazylem XD -[00:12:28] [Client thread/INFO]: [CHAT] Vrso_: lmao ? -[00:12:29] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §3Ceive§e wants you to play! (Join) -[00:12:30] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: ur gonna bow boost -[00:12:32] [Client thread/INFO]: [CHAT] CRAYAAA: vieux himo -[00:12:32] [Client thread/INFO]: [CHAT] muskO___: gg -[00:12:32] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: not doing that -[00:12:36] [Client thread/INFO]: [CHAT] [✷] oCritz: FR scared -[00:12:37] [Client thread/INFO]: [CHAT] [✽] xxBigFrankxx RIZZ: lolololoololl -[00:12:38] [Client thread/INFO]: [CHAT] [✷] oCritz: SCARED -[00:12:41] [Client thread/INFO]: [CHAT] POLIKS: ow -[00:12:41] [Client thread/INFO]: [CHAT] Cristian_0_0_TGF: cringe -[00:12:41] [Client thread/INFO]: [CHAT] Minecraft__: nice reduce of velocity -[00:12:43] [Client thread/INFO]: [CHAT] -[00:12:43] [Client thread/INFO]: [CHAT] ✘ wahobi was banned by AntiGamingChair for Unfair Advantage. -[00:12:43] [Client thread/INFO]: [CHAT] -[00:12:43] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:12:44] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:12:44] [Client thread/INFO]: [CHAT] Not_Xylon: gra prawdziwych chadoiw -[00:12:46] [Client thread/INFO]: [CHAT] ArshiaKing: gg -[00:12:46] [Client thread/INFO]: [CHAT] -[00:12:46] [Client thread/INFO]: [CHAT] [MMC] Need /disguise? Buy ACE Rank: store.minemen.club -[00:12:46] [Client thread/INFO]: [CHAT] -[00:12:46] [Client thread/INFO]: [CHAT] Schlopss: foff -[00:12:46] [Client thread/INFO]: [CHAT] GamingAdvanced: go -[00:12:52] [Client thread/INFO]: [CHAT] diorjeans: ranked builduhc. -[00:12:52] [Client thread/INFO]: [CHAT] ReyZhen: gg -[00:12:52] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §d_Pm§e wants you to play! (Join) -[00:12:55] [Client thread/INFO]: [CHAT] TryhardX2: 2 -[00:12:59] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:13:00] [Client thread/INFO]: [CHAT] TryhardX2: go -[00:13:01] [Client thread/INFO]: [CHAT] Schlopss: ty -[00:13:02] [Client thread/INFO]: [CHAT] Not_Xylon: bruh -[00:13:02] [Client thread/INFO]: [CHAT] GamingAdvanced: gogo -[00:13:02] [Client thread/INFO]: [CHAT] DonFronko: XD -[00:13:04] [Client thread/INFO]: [CHAT] godGgs: ggs -[00:13:07] [Client thread/INFO]: [CHAT] Kylypios: gg -[00:13:07] [Client thread/INFO]: [CHAT] [✷] Valtesse VAMPIRE: :p -[00:13:08] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:13:13] [Client thread/INFO]: [CHAT] DonFronko: uhc moze? -[00:13:15] [Client thread/INFO]: [CHAT] GamingAdvanced: nce -[00:13:20] [Client thread/INFO]: [CHAT] Not_Xylon: pierwszy raz w zyciu takl przegralem w spleefa -[00:13:22] [Client thread/INFO]: [CHAT] TSGabriel_MC: dupa cyce wadowice -[00:13:22] [Client thread/INFO]: [CHAT] iiGMO: oooooooo -[00:13:25] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: stamina ? -[00:13:27] [Client thread/INFO]: [CHAT] [✷] oCritz: f -[00:13:29] [Client thread/INFO]: [CHAT] loganfrmdao: LO -[00:13:29] [Client thread/INFO]: [CHAT] Kylypios: gg -[00:13:30] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:13:32] [Client thread/INFO]: [CHAT] Rascoruru: t -[00:13:36] [Client thread/INFO]: [CHAT] Ohbet: not fun is it ROTULES -[00:13:38] [Client thread/INFO]: [CHAT] zffz: fgf -[00:13:42] [Client thread/INFO]: [CHAT] iPooh: gf -[00:13:43] [Client thread/INFO]: [CHAT] ROTULES: i don't care ? -[00:13:45] [Client thread/INFO]: [CHAT] TSGabriel_MC: dupa cyce wadowice -[00:13:51] [Client thread/INFO]: [CHAT] BullieBulldog: ?? -[00:13:52] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:13:53] [Client thread/INFO]: [CHAT] keagnn: nice skin jiwusa -[00:13:56] [Client thread/INFO]: [CHAT] Mangusttt: BROOOOOO -[00:13:59] [Client thread/INFO]: [CHAT] Mbappenalty: buhc -[00:14:01] [Client thread/INFO]: [CHAT] BullieBulldog: WTf -[00:14:07] [Client thread/INFO]: [CHAT] iMaleskich: i am drunk drunk drunk -[00:14:17] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:14:19] [Client thread/INFO]: [CHAT] KaidoChrono: gg -[00:14:19] [Client thread/INFO]: [CHAT] DonFronko: czemu tu Gheady nie jedza sie odrazu? -[00:14:24] [Client thread/INFO]: [CHAT] Not_Xylon: jedna strzala to przeleciala przez ciebie XD -[00:14:28] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:14:29] [Client thread/INFO]: [CHAT] loganfrmdao: nice blinl -[00:14:33] [Client thread/INFO]: [CHAT] zDarnes: Tayuko off it son of bitch -[00:14:33] [Client thread/INFO]: [CHAT] loganfrmdao: kk -[00:14:36] [Client thread/INFO]: [CHAT] YTopgamer123: gamingadvanced cheater -[00:14:36] [Client thread/INFO]: [CHAT] Not_Xylon: no glupie trochu -[00:14:40] [Client thread/INFO]: [CHAT] BullieBulldog: man tryin to be straight -[00:14:42] [Client thread/INFO]: [CHAT] Lunj: bruh what is my ping LMAO -[00:14:46] [Client thread/INFO]: [CHAT] -[00:14:46] [Client thread/INFO]: [CHAT] [MMC] Need support? Create a ticket: minemen.club/tickets -[00:14:46] [Client thread/INFO]: [CHAT] -[00:14:49] [Client thread/INFO]: [CHAT] Kylypios: ur addicted -[00:14:53] [Client thread/INFO]: [CHAT] Kylypios: lol -[00:14:55] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:14:59] [Client thread/INFO]: [CHAT] BullieBulldog: welp -[00:14:59] [Client thread/INFO]: [CHAT] mikawe: colpa del server down -[00:15:03] [Client thread/INFO]: [CHAT] TSGabriel_MC: dupa cyce wadowice -[00:15:08] [Client thread/INFO]: [CHAT] Kylypios: see -[00:15:12] [Client thread/INFO]: [CHAT] swireG_PL: XDDD -[00:15:12] [Client thread/INFO]: [CHAT] BullieBulldog: Diamond II (2400 Wins) oh -[00:15:13] [Client thread/INFO]: [CHAT] wilq365: XDDDDDDD -[00:15:14] [Client thread/INFO]: [CHAT] Not_Xylon: nop nie -[00:15:15] [Client thread/INFO]: [CHAT] buyuktopcufurkan: wp -[00:15:17] [Client thread/INFO]: [CHAT] k3zi: siema kto pl? -[00:15:20] [Client thread/INFO]: [CHAT] TSGabriel_MC: dupa cyce wadowice -[00:15:21] [Client thread/INFO]: [CHAT] JulineX: ja -[00:15:23] [Client thread/INFO]: [CHAT] POEBEN: даун -[00:15:24] [Client thread/INFO]: [CHAT] Not_Xylon: co to kurwa jest XD -[00:15:33] [Client thread/INFO]: [CHAT] Ohbet: Alxx1sBxck why you play like a bitch -[00:15:39] [Client thread/INFO]: [CHAT] xIpsyse: la moule = the mussel? -[00:15:40] [Client thread/INFO]: [CHAT] mikawe: tf -[00:15:42] [Client thread/INFO]: [CHAT] wilq365: blaszyczowski goatr -[00:15:44] [Client thread/INFO]: [CHAT] xIpsyse: what -[00:15:44] [Client thread/INFO]: [CHAT] POEBEN: та сука -[00:15:49] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: Is money -[00:15:52] [Client thread/INFO]: [CHAT] PvP_MaStER___: мудище ебаное на пинге -[00:15:53] [Client thread/INFO]: [CHAT] swireG_PL: messi goat -[00:15:54] [Client thread/INFO]: [CHAT] ShakeShackFries: gf -[00:16:01] [Client thread/INFO]: [CHAT] xIpsyse: oh im money! Thanks god -[00:16:02] [Client thread/INFO]: [CHAT] wilq365: ronaldo>>>>>messi -[00:16:05] [Client thread/INFO]: [CHAT] Ohbet: Alxx1sBxck you run when losin so you can come back to crit me -[00:16:06] [Client thread/INFO]: [CHAT] Tyk1i: Ayzter WOW -[00:16:07] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:16:10] [Client thread/INFO]: [CHAT] Kylypios: lmao -[00:16:11] [Client thread/INFO]: [CHAT] Cristian_0_0_TGF: cringe -[00:16:14] [Client thread/INFO]: [CHAT] godGgs: ggs -[00:16:15] [Client thread/INFO]: [CHAT] abdullah_scav: lol -[00:16:20] [Client thread/INFO]: [CHAT] Lunj: lol the reach -[00:16:27] [Client thread/INFO]: [CHAT] swireG_PL: pessi>penaldo -[00:16:32] [Client thread/INFO]: [CHAT] N7no: AGREE -[00:16:37] [Client thread/INFO]: [CHAT] Not_Gold3n: ok go -[00:16:42] [Client thread/INFO]: [CHAT] Lunj: ya 0 penaldo meme -[00:16:42] [Client thread/INFO]: [CHAT] N7no: PENALDO IS SHIT -[00:16:44] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:16:46] [Client thread/INFO]: [CHAT] -[00:16:46] [Client thread/INFO]: [CHAT] [Practice] Want to play with a friend? Use /duel -[00:16:46] [Client thread/INFO]: [CHAT] -[00:16:52] [Client thread/INFO]: [CHAT] arag0n: gg -[00:16:53] [Client thread/INFO]: [CHAT] Kylypios: nice clutch -[00:16:54] [Client thread/INFO]: [CHAT] Tracalex: potlag lol -[00:17:00] [Client thread/INFO]: [CHAT] Kylypios: LMAO -[00:17:04] [Client thread/INFO]: [CHAT] GamingAdvanced: daniel alves win prison league -[00:17:13] [Client thread/INFO]: [CHAT] JustinVALO: 2v1 -[00:17:15] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:17:22] [Client thread/INFO]: [CHAT] Ohbet: Talented Valtesse -[00:17:24] [Client thread/INFO]: [CHAT] real_saintmahan: GG -[00:17:26] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:17:28] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: Juuzouuuu say bye to fish -[00:17:31] [Client thread/INFO]: [CHAT] abdullah_scav: lol -[00:17:32] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: no -[00:17:33] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:17:34] [Client thread/INFO]: [CHAT] mikawe: ma che tecnica da down usi? -[00:17:36] [Client thread/INFO]: [CHAT] muskO___: gg -[00:17:37] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: givee me -[00:17:37] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: yes -[00:17:39] [Client thread/INFO]: [CHAT] Kylypios: u do be sweaty asf -[00:17:42] [Client thread/INFO]: [CHAT] iiGMO: gg you so strong -[00:17:47] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: go away or i press q -[00:17:49] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:17:52] [Client thread/INFO]: [CHAT] -[00:17:52] [Client thread/INFO]: [CHAT] ✘ GamingAdvanced was banned by AntiGamingChair for Unfair Advantage. -[00:17:52] [Client thread/INFO]: [CHAT] -[00:18:02] [Client thread/INFO]: [CHAT] ShakeShackFries: gf -[00:18:04] [Client thread/INFO]: [CHAT] [❃] Nera54cm_WGF NODEBUFF MASTER: gg mikawe ora diventi la mia step sis? -[00:18:06] [Client thread/INFO]: [CHAT] Tyk1i: _MiRaGeL_ loser -[00:18:06] [Client thread/INFO]: [CHAT] TSGabriel_MC: dupa cyce wadowice -[00:18:07] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: will you target me again?? -[00:18:08] [Client thread/INFO]: [CHAT] Pola_Bear: wow -[00:18:10] [Client thread/INFO]: [CHAT] [❃] Nera54cm_WGF NODEBUFF MASTER: PLS BRO -[00:18:11] [Client thread/INFO]: [CHAT] diorjeans: builduhc ranked -[00:18:11] [Client thread/INFO]: [CHAT] Kylypios: ugh -[00:18:13] [Client thread/INFO]: [CHAT] mikawe: mh credo sia ingiocabile così -[00:18:15] [Client thread/INFO]: [CHAT] Pola_Bear: cringe man -[00:18:15] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: no -[00:18:18] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: good -[00:18:18] [Client thread/INFO]: [CHAT] INoGox_: f -[00:18:20] [Client thread/INFO]: [CHAT] KaidoChrono: gg -[00:18:21] [Client thread/INFO]: [CHAT] loganfrmdao: LPOLO -[00:18:21] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: so give mee -[00:18:21] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: goodnight then -[00:18:22] [Client thread/INFO]: [CHAT] ShinoUmarekawari: ???????'' -[00:18:22] [Client thread/INFO]: [CHAT] INoGox_: gf -[00:18:25] [Client thread/INFO]: [CHAT] [❃] Nera54cm_WGF NODEBUFF MASTER: no dai era giocabile! -[00:18:28] [Client thread/INFO]: [CHAT] fazziolettoh: tf -[00:18:29] [Client thread/INFO]: [CHAT] muskO___: gg -[00:18:30] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: ok -[00:18:30] [Client thread/INFO]: [CHAT] imyourfan: ahaha -[00:18:31] [Client thread/INFO]: [CHAT] [✡] verleh: ranked classic. -[00:18:31] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:18:33] [Client thread/INFO]: [CHAT] [✷] DrillaUwU ✟: it does -[00:18:35] [Client thread/INFO]: [CHAT] Fan2WeshReh_GOMU: INoGox_ close 0 gap 3 hearth -[00:18:44] [Client thread/INFO]: [CHAT] Pola_Bear: XD fullwifey300 left my first combo then just quit from the second one -[00:18:46] [Client thread/INFO]: [CHAT] -[00:18:46] [Client thread/INFO]: [CHAT] [MMC] Giveaways, Events, Updates: minemen.club/discord -[00:18:46] [Client thread/INFO]: [CHAT] -[00:18:46] [Client thread/INFO]: [CHAT] Kylypios: ffs -[00:18:47] [Client thread/INFO]: [CHAT] godGgs: ? -[00:18:51] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:18:52] [Client thread/INFO]: [CHAT] xIpsyse: WHYYY -[00:18:53] [Client thread/INFO]: [CHAT] fazziolettoh: mikawe -[00:18:55] [Client thread/INFO]: [CHAT] ShakeShackFries: gf -[00:18:56] [Client thread/INFO]: [CHAT] Not_Xylon: gg -[00:18:56] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: Juuzouuuu i took screenshot -[00:18:57] [Client thread/INFO]: [CHAT] DonFronko: JEST -[00:18:58] [Client thread/INFO]: [CHAT] INoGox_: ppl that have nothing to lose are so scary -[00:18:59] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: you said no -[00:19:01] [Client thread/INFO]: [CHAT] Ohbet: Thats so crazy -[00:19:02] [Client thread/INFO]: [CHAT] INoGox_: gf -[00:19:04] [Client thread/INFO]: [CHAT] [❃] Realisticgirl: end of this focus -[00:19:06] [Client thread/INFO]: [CHAT] Not_Xylon: co to wogole btylo xD -[00:19:07] [Client thread/INFO]: [CHAT] CRAYAAA: nice -[00:19:07] [Client thread/INFO]: [CHAT] godGgs: bro -[00:19:08] [Client thread/INFO]: [CHAT] Ohbet: Alxx1sBxck cant 1v1 either -[00:19:09] [Client thread/INFO]: [CHAT] DonFronko: dziwne -[00:19:12] [Client thread/INFO]: [CHAT] buyuktopcufurkan: gap -[00:19:17] [Client thread/INFO]: [CHAT] DonFronko: battle rush i koniec -[00:19:17] [Client thread/INFO]: [CHAT] Faisaal: . -[00:19:18] [Client thread/INFO]: [CHAT] Kylypios: oh god -[00:19:21] [Client thread/INFO]: [CHAT] [✡] verleh: RANKED BATTLERUSH -[00:19:22] [Client thread/INFO]: [CHAT] muskO___: gg -[00:19:24] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:19:25] [Client thread/INFO]: [CHAT] Not_Xylon: sg OwO -[00:19:26] [Client thread/INFO]: [CHAT] Ilsilver: ahaha -[00:19:27] [Client thread/INFO]: [CHAT] Mbappenalty: gg -[00:19:32] [Client thread/INFO]: [CHAT] Pluralled: gg -[00:19:44] [Client thread/INFO]: [CHAT] Tiranaa: bro come stia -[00:19:47] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:19:49] [Client thread/INFO]: [CHAT] Korikajas: LOL -[00:19:50] [Client thread/INFO]: [CHAT] xIpsyse: hahahhaha -[00:19:51] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: im gonna be more evil -[00:19:51] [Client thread/INFO]: [CHAT] _MiRaGeL_: rz -[00:19:51] [Client thread/INFO]: [CHAT] jirman: GG -[00:19:53] [Client thread/INFO]: [CHAT] nnZ12: n oob -[00:19:54] [Client thread/INFO]: [CHAT] ShakeShackFries: gf -[00:19:56] [Client thread/INFO]: [CHAT] iiGMO: whhat -[00:19:58] [Client thread/INFO]: [CHAT] About_ardi: lol runner+ -[00:20:03] [Client thread/INFO]: [CHAT] [❃] hwmy: dont god -[00:20:06] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:20:12] [Client thread/INFO]: [CHAT] muskO___: gg -[00:20:14] [Client thread/INFO]: [CHAT] -[00:20:14] [Client thread/INFO]: [CHAT] ✘ MrSmileyyyyy was banned by AntiGamingChair for Unfair Advantage. -[00:20:14] [Client thread/INFO]: [CHAT] -[00:20:26] [Client thread/INFO]: [CHAT] ItsOkNoToBeOk: Q build uhc ranked -[00:20:27] [Client thread/INFO]: [CHAT] Mbappenalty: gg -[00:20:28] [Client thread/INFO]: [CHAT] [✡] verleh: RANKED BATTLERUSH -[00:20:29] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:20:31] [Client thread/INFO]: [CHAT] ZyQvH: gg -[00:20:33] [Client thread/INFO]: [CHAT] skPurple: -rep bad game -[00:20:35] [Client thread/INFO]: [CHAT] DonFronko: daaj battle rush i koniec -[00:20:36] [Client thread/INFO]: [CHAT] About_ardi: don't use only road -[00:20:37] [Client thread/INFO]: [CHAT] JulineX: tez chce -[00:20:44] [Client thread/INFO]: [CHAT] Efeboy64: My mouse turned off -[00:20:46] [Client thread/INFO]: [CHAT] -[00:20:46] [Client thread/INFO]: [CHAT] [MMC] Follow for updates: twitter.com/Minemen_Network -[00:20:46] [Client thread/INFO]: [CHAT] -[00:20:49] [Client thread/INFO]: [CHAT] Efeboy64: Lemme plug in the other one -[00:20:51] [Client thread/INFO]: [CHAT] Not_Xylon: o to? -[00:20:54] [Client thread/INFO]: [CHAT] real_saintmahan: G -[00:21:01] [Client thread/INFO]: [CHAT] Haytam_GX: fog -[00:21:05] [Client thread/INFO]: [CHAT] Haytam_GX: dog -[00:21:05] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:21:08] [Client thread/INFO]: [CHAT] Kylypios: OMFG -[00:21:10] [Client thread/INFO]: [CHAT] wilq365: penaldog -[00:21:13] [Client thread/INFO]: [CHAT] Kylypios: i hate my mouse -[00:21:16] [Client thread/INFO]: [CHAT] Nocturiaa_: y -[00:21:22] [Client thread/INFO]: [CHAT] swireG_PL: pessi>penaldog -[00:21:28] [Client thread/INFO]: [CHAT] [✷] Valtesse VAMPIRE: ROTULES IM -[00:21:29] [Client thread/INFO]: [CHAT] [❃] Ipsyse France: Mardawx -[00:21:32] [Client thread/INFO]: [CHAT] [✷] Valtesse VAMPIRE: SRY -[00:21:38] [Client thread/INFO]: [CHAT] wilq365: wolf>>>>>kimich -[00:21:38] [Client thread/INFO]: [CHAT] godGgs: xd -[00:21:44] [Client thread/INFO]: [CHAT] xIpsyse: gg -[00:21:48] [Client thread/INFO]: [CHAT] swireG_PL: pionel pessi -[00:21:53] [Client thread/INFO]: [CHAT] Strzzight: he fat -[00:21:56] [Client thread/INFO]: [CHAT] wilq365: penaldo ronaldo -[00:21:59] [Client thread/INFO]: [CHAT] JulineX: bro -[00:22:04] [Client thread/INFO]: [CHAT] swireG_PL: gaystiano penaldo -[00:22:06] [Client thread/INFO]: [CHAT] Ohbet: Jiwusa runnin from only 1v1 -[00:22:06] [Client thread/INFO]: [CHAT] §d§lNA UHC Meetup§7§l » §d_Pm§e wants you to play! (Join) -[00:22:08] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:22:08] [Client thread/INFO]: [CHAT] Strzzight: he had a little wiener -[00:22:13] [Client thread/INFO]: [CHAT] Ohbet: You a pusys -[00:22:14] [Client thread/INFO]: [CHAT] _FireAspect_: ю -[00:22:22] [Client thread/INFO]: [CHAT] fazziolettoh: oloBonolis05 -[00:22:24] [Client thread/INFO]: [CHAT] [ALERT] MoonaLoons purchased ACE at store.minemen.club -[00:22:25] [Client thread/INFO]: [CHAT] JulineX: so cringe -[00:22:28] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: someoen queue unraned skwars -[00:22:29] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:22:30] [Client thread/INFO]: [CHAT] swireG_PL: give my idol penaldo penalty or he retire -[00:22:35] [Client thread/INFO]: [CHAT] Kylypios: lmao -[00:22:36] [Client thread/INFO]: [CHAT] [✡] verleh: RANKED BATTLERUSH -[00:22:38] [Client thread/INFO]: [CHAT] Fan2WeshReh_GOMU: Valtesse c'étais mon 1 vs 1 xD -[00:22:39] [Client thread/INFO]: [CHAT] [❃] NervousLeOuf France: quoi -[00:22:41] [Client thread/INFO]: [CHAT] abdullah_scav: BAD -[00:22:43] [Client thread/INFO]: [CHAT] [✷] Clqps ۪۫☃۰۪۫: vberleh u dont want this smoke -[00:22:46] [Client thread/INFO]: [CHAT] -[00:22:46] [Client thread/INFO]: [CHAT] [MMC] Buy perks here: store.minemen.club -[00:22:46] [Client thread/INFO]: [CHAT] -[00:22:46] [Client thread/INFO]: [CHAT] [✡] verleh: ong -[00:22:49] [Client thread/INFO]: [CHAT] [❃] hwmy: unranked spleef -[00:22:51] [Client thread/INFO]: [CHAT] Djouimed: gg* -[00:22:51] [Client thread/INFO]: [CHAT] Haytam_GX: FUCK] -[00:22:52] [Client thread/INFO]: [CHAT] Guirlyn: gg -[00:22:53] [Client thread/INFO]: [CHAT] [✡] verleh: RANKED BATTLERUSH -[00:22:54] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:23:07] [Client thread/INFO]: [CHAT] [✷] Valtesse VAMPIRE: Fan2WeshReh_GOMU iL a crrash c'etait trop attirant ! -[00:23:08] [Client thread/INFO]: [CHAT] ZaneWhiteNinja: DUDE -[00:23:09] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:23:17] [Client thread/INFO]: [CHAT] ShinoUmarekawari: how==?? -[00:23:20] [Client thread/INFO]: [CHAT] IvarFND: RANKED NOIDEBUFF -[00:23:27] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:23:30] [Client thread/INFO]: [CHAT] xIpsyse: UNRANKED PARKOUR -[00:23:31] [Client thread/INFO]: [CHAT] [✡] verleh: RANKED BATTLERUSH -[00:23:31] [Client thread/INFO]: [CHAT] TYGSiKUN: YES -[00:23:31] [Client thread/INFO]: [CHAT] Beynox_: gg -[00:23:31] [Client thread/INFO]: [CHAT] Uramix2: gg -[00:23:39] [Client thread/INFO]: [CHAT] Mangusttt: inal abuk -[00:23:48] [Client thread/INFO]: [CHAT] [✡] verleh: RANKED BATTLERUSH -[00:23:49] [Client thread/INFO]: [CHAT] Fan2WeshReh_GOMU: Valtesse calme t'es pulsion alors -[00:23:49] [Client thread/INFO]: [CHAT] xIpsyse: UNRANKED PARKOUR -[00:23:49] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:23:53] [Client thread/INFO]: [CHAT] Crepper555: gg -[00:23:58] [Client thread/INFO]: [CHAT] vequix: !L -[00:24:00] [Client thread/INFO]: [CHAT] x222: bruh -[00:24:11] [Client thread/INFO]: [CHAT] xIpsyse: UNRANKED PARKOUR -[00:24:13] [Client thread/INFO]: [CHAT] POEBEN: gg -[00:24:18] [Client thread/INFO]: [CHAT] Kylypios: u were flying lmao -[00:24:19] [Client thread/INFO]: [CHAT] xIpsyse: pleeeasee -[00:24:22] [Client thread/INFO]: [CHAT] xIpsyse: oh thx -[00:24:23] [Client thread/INFO]: [CHAT] [✡] verleh: RANKED BATTLERUSH -[00:24:23] [Client thread/INFO]: [CHAT] Djouimed: gg -[00:24:43] [Client thread/INFO]: [CHAT] LayLow_420: gg -[00:24:44] [Client thread/INFO]: [CHAT] DonFronko: kurw cos mnie gryzlo po twrzy -[00:24:45] [Client thread/INFO]: [CHAT] Not_Xylon: kura -[00:24:46] [Client thread/INFO]: [CHAT] -[00:24:46] [Client thread/INFO]: [CHAT] [MMC] Apply for staff: minemen.club/applications -[00:24:46] [Client thread/INFO]: [CHAT] -[00:24:47] [Client thread/INFO]: [CHAT] TSGabriel_MC: dupa cyce wadowice -[00:24:52] [Client thread/INFO]: [CHAT] k3zi: wvww -[00:24:55] [Client thread/INFO]: [CHAT] wilq365: ja tez -[00:24:58] [Client thread/INFO]: [CHAT] Haytam_GX: MOK 9A7B -[00:25:02] [Client thread/INFO]: [CHAT] TSGabriel_MC: dupa cyce wadowice -[00:25:03] [Client thread/INFO]: [CHAT] DonFronko: XD -[00:25:03] [Client thread/INFO]: [CHAT] Not_Xylon: NIE WIERZE -[00:25:12] [Client thread/INFO]: [CHAT] JulineX: staff tp reacher -[00:25:14] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:25:28] [Client thread/INFO]: [CHAT] wilq365: lol -[00:25:30] [Client thread/INFO]: [CHAT] VelkaKlobasa: gf -[00:25:40] [Client thread/INFO]: [CHAT] JulineX: staff tp reacher plz plz -[00:25:41] [Client thread/INFO]: [CHAT] Not_Xylon: XF -[00:25:41] [Client thread/INFO]: [CHAT] Tayzo: FRère -[00:25:42] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:25:43] [Client thread/INFO]: [CHAT] VelkaKlobasa: slovensko je madarsko -[00:25:46] [Client thread/INFO]: [CHAT] Tayzo: tu joues a quoi -[00:25:54] [Client thread/INFO]: [CHAT] KaidoChrono: au pvp -[00:25:55] [Client thread/INFO]: [CHAT] Hengie0510: gg -[00:25:58] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:25:59] [Client thread/INFO]: [CHAT] [✡] verleh: RANKED BATTLERUSH -[00:26:00] [Client thread/INFO]: [CHAT] loganfrmdao: OKLSOPlapos -[00:26:01] [Client thread/INFO]: [CHAT] JulineX: stupid idiot -[00:26:05] [Client thread/INFO]: [CHAT] CallMeGenius_: tf -[00:26:07] [Client thread/INFO]: [CHAT] Tayzo: tu clc -[00:26:11] [Client thread/INFO]: [CHAT] Ohbet: Valtesse how you rod that much but cant combo -[00:26:12] [Client thread/INFO]: [CHAT] Haytam_GX: 5EA -[00:26:13] [Client thread/INFO]: [CHAT] KaidoChrono: dsl -[00:26:15] [Client thread/INFO]: [CHAT] [✡] verleh: RANKED BATTLERUSH -[00:26:21] [Client thread/INFO]: [CHAT] loganfrmdao: romanasi duel me -[00:26:32] [Client thread/INFO]: [CHAT] Ohbet: you struggle on yo on proxy Valtesse you play this shit everyday for what -[00:26:32] [Client thread/INFO]: [CHAT] diorjeans: SOMEONE QUEUE BUILDUHC RANKED -[00:26:34] [Client thread/INFO]: [CHAT] Slowed_: gg -[00:26:36] [Client thread/INFO]: [CHAT] VelkaKlobasa: gg -[00:26:39] [Client thread/INFO]: [CHAT] [✷] Valtesse VAMPIRE: Ohbet stfu -[00:26:40] [Client thread/INFO]: [CHAT] TwoThighs: gf -[00:26:43] [Client thread/INFO]: [CHAT] buyuktopcufurkan: EsdeathMain -[00:26:45] [Client thread/INFO]: [CHAT] Ohbet: Valtesse you that mad -[00:26:46] [Client thread/INFO]: [CHAT] -[00:26:46] [Client thread/INFO]: [CHAT] [MMC] Need /disguise? Buy ACE Rank: store.minemen.club -[00:26:46] [Client thread/INFO]: [CHAT] -[00:26:50] [Client thread/INFO]: [CHAT] Ohbet: you are the worst eu player -[00:26:51] [Client thread/INFO]: [CHAT] diorjeans: ranked builduhc! -[00:26:54] [Client thread/INFO]: [CHAT] VelkaKlobasa: u are arab -[00:26:58] [Client thread/INFO]: [CHAT] ArshiaKing: im so bad at 1.8 -[00:27:01] [Client thread/INFO]: [CHAT] EsdeathMain: burakadynn -[00:27:05] [Client thread/INFO]: [CHAT] EsdeathMain: buyuktopcufurkan -[00:27:11] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:27:12] [Client thread/INFO]: [CHAT] diorjeans: ranked builduhc! -[00:27:13] [Client thread/INFO]: [CHAT] Fl0pito: go hcf -[00:27:20] [Client thread/INFO]: [CHAT] xAzaky_y: gg -[00:27:27] [Client thread/INFO]: [CHAT] Not_Xylon: GG -[00:27:29] [Client thread/INFO]: [CHAT] POEBEN: gg -[00:27:29] [Client thread/INFO]: [CHAT] Korikajas: nice cheats -[00:27:32] [Client thread/INFO]: [CHAT] kvb3k_: gg -[00:27:32] [Client thread/INFO]: [CHAT] DonFronko: GG -[00:27:34] [Client thread/INFO]: [CHAT] Tracalex: GG -[00:27:34] [Client thread/INFO]: [CHAT] Fl0pito: go hcf -[00:27:37] [Client thread/INFO]: [CHAT] DonFronko: ide juz -[00:27:40] [Client thread/INFO]: [CHAT] Not_Xylon: spk papa -[00:27:41] [Client thread/INFO]: [CHAT] EsdeathMain: gg -[00:27:43] [Client thread/INFO]: [CHAT] VelkaKlobasa: gg -[00:27:47] [Client thread/INFO]: [CHAT] Nobohss: ranked sumo -[00:27:51] [Client thread/INFO]: [CHAT] Slowed_: laag -[00:27:52] [Client thread/INFO]: [CHAT] [✡] verleh: RANKED BATTLERUSH -[00:27:53] [Client thread/INFO]: [CHAT] wilq365: spk elo -[00:27:54] [Client thread/INFO]: [CHAT] -[00:27:54] [Client thread/INFO]: [CHAT] ✘ triganqqe was banned by AntiGamingChair for Unfair Advantage. -[00:27:54] [Client thread/INFO]: [CHAT] -[00:28:08] [Client thread/INFO]: [CHAT] diorjeans: ranked builduhc! -[00:28:22] [Client thread/INFO]: [CHAT] Juuzouuuu CLASSIC MASTER: merci mon pote à la compote -[00:28:31] [Client thread/INFO]: [CHAT] striker85: уя -[00:28:32] [Client thread/INFO]: [CHAT] ThundereeK: off -[00:28:35] [Client thread/INFO]: [CHAT] striker85: вы шлюхи -[00:28:39] [Client thread/INFO]: [CHAT] diorjeans: ranked builduhc! -[00:28:44] [Client thread/INFO]: [CHAT] wKadoma: zzzz -[00:28:46] [Client thread/INFO]: [CHAT] -[00:28:46] [Client thread/INFO]: [CHAT] [MMC] Need support? Create a ticket: minemen.club/tickets -[00:28:46] [Client thread/INFO]: [CHAT] -[00:28:51] [Client thread/INFO]: [CHAT] Tracalex: haha -[00:28:51] [Client thread/INFO]: [CHAT] Hengie0510: gg -[00:28:55] [Client thread/INFO]: [CHAT] xIpsyse: 30 CPS? -[00:29:00] [Client thread/INFO]: [CHAT] diorjeans: ranked builduhc! -[00:29:01] [Client thread/INFO]: [CHAT] Tracalex: i don't like pvpers like u -[00:30:09] [Server thread/INFO]: Starting integrated minecraft server version 1.8.8 -[00:30:09] [Server thread/INFO]: Generating keypair -[00:30:09] [Server thread/INFO]: Preparing start region for level 0 -[00:30:09] [Server thread/INFO]: Changing view distance to 8, from 10 -[00:30:09] [Server thread/INFO]: ziue[local:E:ba77e61f] logged in with entity id 48957 at (376.1560038976822, 68.16610926093821, 1052.6468651684158) -[00:30:09] [Server thread/INFO]: ziue joined the game -[00:33:21] [Server thread/INFO]: Saving and pausing game... -[00:33:21] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[00:33:21] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[00:33:21] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[00:35:04] [Server thread/INFO]: Saving and pausing game... -[00:35:04] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[00:35:04] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[00:35:04] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[00:35:04] [Server thread/INFO]: Stopping server -[00:35:04] [Server thread/INFO]: Saving players -[00:35:04] [Server thread/INFO]: Saving worlds -[00:35:04] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[00:35:04] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[00:35:04] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[00:35:42] [Server thread/INFO]: Starting integrated minecraft server version 1.8.8 -[00:35:42] [Server thread/INFO]: Generating keypair -[00:35:42] [Server thread/INFO]: Preparing start region for level 0 -[00:35:42] [Server thread/INFO]: Changing view distance to 8, from 10 -[00:35:43] [Server thread/INFO]: ziue[local:E:6845f897] logged in with entity id 52755 at (408.5448313984978, 73.60185518076844, 987.0996342270762) -[00:35:43] [Server thread/INFO]: ziue joined the game -[00:35:48] [Server thread/INFO]: Saving and pausing game... -[00:35:48] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[00:35:48] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[00:35:48] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[00:35:57] [Client thread/INFO]: [Athena] you have hit the bot -[00:35:57] [Client thread/INFO]: [Athena] Accuracy: 100.0% -[00:35:58] [Client thread/INFO]: [Athena] you have hit the bot -[00:35:58] [Client thread/INFO]: [Athena] Accuracy: 100.0% -[00:35:59] [Client thread/INFO]: [Athena] you have hit the bot -[00:35:59] [Client thread/INFO]: [Athena] Accuracy: 100.0% -[00:35:59] [Client thread/INFO]: [Athena] you have hit the bot -[00:35:59] [Client thread/INFO]: [Athena] Accuracy: 100.0% -[00:36:35] [Server thread/INFO]: Saving and pausing game... -[00:36:35] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[00:36:35] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[00:36:35] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[00:36:36] [Server thread/INFO]: Saving and pausing game... -[00:36:36] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[00:36:36] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[00:36:36] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[00:36:36] [Server thread/INFO]: Stopping server -[00:36:36] [Server thread/INFO]: Saving players -[00:36:36] [Server thread/INFO]: Saving worlds -[00:36:36] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[00:36:36] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[00:36:36] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[00:37:47] [Server thread/INFO]: Starting integrated minecraft server version 1.8.8 -[00:37:47] [Server thread/INFO]: Generating keypair -[00:37:47] [Server thread/INFO]: Preparing start region for level 0 -[00:37:48] [Server thread/INFO]: Changing view distance to 8, from 10 -[00:37:48] [Server thread/INFO]: ziue[local:E:d79093f7] logged in with entity id 53565 at (411.73008746547794, 67.24918707874468, 1035.699999988079) -[00:37:48] [Server thread/INFO]: ziue joined the game -[01:03:18] [Server thread/INFO]: Saving and pausing game... -[01:03:18] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[01:03:18] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[01:03:18] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[01:03:23] [Server thread/INFO]: Saving and pausing game... -[01:03:23] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[01:03:23] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[01:03:23] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[01:04:54] [Client Shutdown Thread/INFO]: Stopping server -[01:04:54] [Client Shutdown Thread/INFO]: Saving players +[21:31:51] [Client thread/INFO]: Setting user: Player700 +[21:31:51] [Client thread/INFO]: (Session ID is token:0:Player700) +[21:31:52] [Client thread/INFO]: [OptiFine] *** Reflector Forge *** +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.Attributes +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: mods.betterfoliage.client.BetterFoliageClient +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.asm.transformers.BlamingTransformer +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.ChunkWatchEvent$UnWatch +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.relauncher.CoreModManager +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.DimensionManager +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Pre +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Post +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$CameraSetup +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$FogColors +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.EventBus +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event$Result +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.ExtendedBlockState +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.FMLClientHandler +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.FMLCommonHandler +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.biome.BiomeGenBase.getWaterColorMultiplier +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.addDestroyEffects +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.addHitEffects +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.canCreatureSpawn +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.canRenderInLayer +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.doesSideBlockRendering +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.getBedDirection +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.getExtendedState +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.hasTileEntity +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isAir +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isBed +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isBedFoot +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isSideSolid +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.canRiderInteract +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: net.minecraft.entity.Entity.captureDrops +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: net.minecraft.entity.Entity.capturedDrops +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.shouldRenderInPass +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.shouldRiderSit +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.ForgeEventFactory +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeHooks +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ForgeHooksClient +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.getDurabilityForDisplay +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.getModel +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.onEntitySwing +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.shouldCauseReequipAnimation +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.showDurabilityBar +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.ItemRecord.getRecordResource +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeModContainer +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.potion.PotionEffect.isCurativeItem +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.canRenderBreaking +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.getRenderBoundingBox +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.hasFastRenderer +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.shouldRenderInPass +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.preDrawBatch +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.drawBatch +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.vertex.VertexFormatElement$EnumUsage.preDraw +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.vertex.VertexFormatElement$EnumUsage.postDraw +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.World.countEntities +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.World.getPerWorldStorage +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getCloudRenderer +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getSkyRenderer +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getWeatherRenderer +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.GuiModList +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.IColoredBakedQuad +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.IExtendedBlockState +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.IRenderHandler +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.ISmartBlockModel +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ItemModelMesherForge +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraft.launchwrapper.Launch +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.pipeline.LightUtil +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.MinecraftForge +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.MinecraftForgeClient +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.ModelLoader +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderBlockOverlayEvent$OverlayType +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.registry.RenderingRegistry +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderItemInFrameEvent +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Pre +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Post +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Pre +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Post +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.SplashProgress +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.WorldEvent$Load +[21:31:52] [Client thread/INFO]: [OptiFine] *** Reflector Vanilla *** +[21:31:52] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: optifine.OptiFineClassTransformer +[21:31:55] [Client Shutdown Thread/INFO]: Stopping server diff --git a/workspace/saves/Copy of mcpworldpp/data/villages.dat b/workspace/saves/Copy of mcpworldpp/data/villages.dat index 21466ee0..521232b4 100644 Binary files a/workspace/saves/Copy of mcpworldpp/data/villages.dat and b/workspace/saves/Copy of mcpworldpp/data/villages.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/data/villages_end.dat b/workspace/saves/Copy of mcpworldpp/data/villages_end.dat index 25af26e9..9483f329 100644 Binary files a/workspace/saves/Copy of mcpworldpp/data/villages_end.dat and b/workspace/saves/Copy of mcpworldpp/data/villages_end.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/data/villages_nether.dat b/workspace/saves/Copy of mcpworldpp/data/villages_nether.dat index ed90ac0c..e5918928 100644 Binary files a/workspace/saves/Copy of mcpworldpp/data/villages_nether.dat and b/workspace/saves/Copy of mcpworldpp/data/villages_nether.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/level.dat b/workspace/saves/Copy of mcpworldpp/level.dat index 27ca5043..e1544ee4 100644 Binary files a/workspace/saves/Copy of mcpworldpp/level.dat and b/workspace/saves/Copy of mcpworldpp/level.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/level.dat_old b/workspace/saves/Copy of mcpworldpp/level.dat_old index 0fbdc8e7..2b3f1010 100644 Binary files a/workspace/saves/Copy of mcpworldpp/level.dat_old and b/workspace/saves/Copy of mcpworldpp/level.dat_old differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/3ab608c1-368b-3111-9725-7a01f0b8ec9e.dat b/workspace/saves/Copy of mcpworldpp/playerdata/3ab608c1-368b-3111-9725-7a01f0b8ec9e.dat index afb0291c..8cbe940f 100644 Binary files a/workspace/saves/Copy of mcpworldpp/playerdata/3ab608c1-368b-3111-9725-7a01f0b8ec9e.dat and b/workspace/saves/Copy of mcpworldpp/playerdata/3ab608c1-368b-3111-9725-7a01f0b8ec9e.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/region/r.-1.0.mca b/workspace/saves/Copy of mcpworldpp/region/r.-1.0.mca index 4a8ad18d..3198741f 100644 Binary files a/workspace/saves/Copy of mcpworldpp/region/r.-1.0.mca and b/workspace/saves/Copy of mcpworldpp/region/r.-1.0.mca differ diff --git a/workspace/saves/Copy of mcpworldpp/region/r.-1.1.mca b/workspace/saves/Copy of mcpworldpp/region/r.-1.1.mca index 22c2e7de..b57e0d13 100644 Binary files a/workspace/saves/Copy of mcpworldpp/region/r.-1.1.mca and b/workspace/saves/Copy of mcpworldpp/region/r.-1.1.mca differ diff --git a/workspace/saves/Copy of mcpworldpp/region/r.0.0.mca b/workspace/saves/Copy of mcpworldpp/region/r.0.0.mca index 95979451..3c90ea5e 100644 Binary files a/workspace/saves/Copy of mcpworldpp/region/r.0.0.mca and b/workspace/saves/Copy of mcpworldpp/region/r.0.0.mca differ diff --git a/workspace/saves/Copy of mcpworldpp/region/r.0.1.mca b/workspace/saves/Copy of mcpworldpp/region/r.0.1.mca index dc413bd2..701255e6 100644 Binary files a/workspace/saves/Copy of mcpworldpp/region/r.0.1.mca and b/workspace/saves/Copy of mcpworldpp/region/r.0.1.mca differ diff --git a/workspace/saves/Copy of mcpworldpp/region/r.0.2.mca b/workspace/saves/Copy of mcpworldpp/region/r.0.2.mca index f431f744..6b3a2710 100644 Binary files a/workspace/saves/Copy of mcpworldpp/region/r.0.2.mca and b/workspace/saves/Copy of mcpworldpp/region/r.0.2.mca differ diff --git a/workspace/saves/Copy of mcpworldpp/region/r.1.1.mca b/workspace/saves/Copy of mcpworldpp/region/r.1.1.mca index 7dc76b3a..82dd95bd 100644 Binary files a/workspace/saves/Copy of mcpworldpp/region/r.1.1.mca and b/workspace/saves/Copy of mcpworldpp/region/r.1.1.mca differ diff --git a/workspace/saves/Copy of mcpworldpp/region/r.1.2.mca b/workspace/saves/Copy of mcpworldpp/region/r.1.2.mca index 238dd115..827d1460 100644 Binary files a/workspace/saves/Copy of mcpworldpp/region/r.1.2.mca and b/workspace/saves/Copy of mcpworldpp/region/r.1.2.mca differ diff --git a/workspace/saves/Copy of mcpworldpp/session.lock b/workspace/saves/Copy of mcpworldpp/session.lock index e1b0f2ba..f1905669 100644 Binary files a/workspace/saves/Copy of mcpworldpp/session.lock and b/workspace/saves/Copy of mcpworldpp/session.lock differ diff --git a/workspace/saves/Copy of mcpworldpp/stats/3ab608c1-368b-3111-9725-7a01f0b8ec9e.json b/workspace/saves/Copy of mcpworldpp/stats/3ab608c1-368b-3111-9725-7a01f0b8ec9e.json index 6511b6dc..95c6b430 100644 --- a/workspace/saves/Copy of mcpworldpp/stats/3ab608c1-368b-3111-9725-7a01f0b8ec9e.json +++ b/workspace/saves/Copy of mcpworldpp/stats/3ab608c1-368b-3111-9725-7a01f0b8ec9e.json @@ -1 +1 @@ -{"stat.walkOneCm":4352,"stat.leaveGame":3,"stat.mobKills":1,"stat.useItem.minecraft.diamond_sword":4,"stat.flyOneCm":1063,"stat.jump":8,"stat.playOneMinute":30933,"stat.damageDealt":370,"stat.killEntity.Zombie":1,"stat.timeSinceDeath":30933,"stat.sprintOneCm":1702,"stat.useItem.minecraft.spawn_egg":1,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills"]}} \ No newline at end of file +{"stat.walkOneCm":4352,"stat.leaveGame":4,"stat.mobKills":1,"stat.useItem.minecraft.diamond_sword":4,"stat.flyOneCm":1063,"stat.jump":8,"stat.playOneMinute":31238,"stat.damageDealt":370,"stat.killEntity.Zombie":1,"stat.timeSinceDeath":31238,"stat.sprintOneCm":1702,"stat.useItem.minecraft.spawn_egg":1,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills","Desert"]}} \ No newline at end of file diff --git a/workspace/settings/accounts.json b/workspace/settings/accounts.json new file mode 100644 index 00000000..6e7628d6 --- /dev/null +++ b/workspace/settings/accounts.json @@ -0,0 +1,3 @@ +Account:CRACKED:t:0:0 +Account:MICROSOFT:ziue:74e897386c9e4f5983efd365849e6049:M.C107_BL2.-CYIxeKF*QQ5SaDfkCjXtB7w63z4jGDwTp6AxR9Jp5JvEZ7Bm9muXbEDR47!n8m9Zwyzeq95!*8g9Xyvvkg8cZHzR44lYjk04zMKx5xEk2V4eZdi5y9Zsob1Qzrg1BvoWiF0Erk3AIFiAUhnbGeONv6UMKQ*VTYpAQADACC8pNa4TIgyqTqlDiQiGZDwbMAphYcfhe7ZEEf8bblcyKILbgkEJrmkjV1OTtPA0XnsYBhe57iZWVpcRFHfmSbPfMibmeqMOz*9X4Zr45hJZi3cScc4$ +Current:ziue diff --git a/workspace/usercache.json b/workspace/usercache.json index d6ce0412..27fc36ee 100644 --- a/workspace/usercache.json +++ b/workspace/usercache.json @@ -1 +1 @@ -[{"name":"ziue","uuid":"74e89738-6c9e-4f59-83ef-d365849e6049","expiresOn":"2023-07-17 00:37:48 +0200"},{"name":"Player24","uuid":"68cf6d02-03bc-3f3b-ab98-76a8ec749597","expiresOn":"2023-07-10 12:40:04 +0200"},{"name":"Player918","uuid":"7fac0f4d-6ee9-33e9-a874-7b4a3cc238c6","expiresOn":"2023-07-08 19:37:58 +0200"},{"name":"Player325","uuid":"1aca2fd8-a080-3d28-afe0-430fc033484e","expiresOn":"2023-07-10 15:43:49 +0200"},{"name":"Player790","uuid":"2f0d3d8c-afbe-358f-b8f3-786d7b0f9259","expiresOn":"2023-07-08 16:44:53 +0200"},{"name":"Player172","uuid":"31a9aee6-8c2b-389d-b14e-b75d71479611","expiresOn":"2023-07-08 16:15:57 +0200"},{"name":"teste","uuid":"4fdf550e-f3b3-3a06-8485-0916b2b491bc","expiresOn":"2023-07-10 18:59:51 +0200"},{"name":"Player604","uuid":"11cdf046-d362-394c-93e8-583f0c5ef255","expiresOn":"2023-07-10 12:27:52 +0200"},{"name":"Player69","uuid":"eee10812-13cd-3f90-b77f-2195c9c5b71e","expiresOn":"2023-07-10 12:41:47 +0200"},{"name":"Player514","uuid":"4ed9b5cf-d91a-3bc8-9000-b0476eccd342","expiresOn":"2023-07-09 20:21:06 +0200"},{"name":"Player197","uuid":"ccf0c278-c21f-3ec3-a87c-05202673a5dd","expiresOn":"2023-07-09 20:05:23 +0200"},{"name":"Player977","uuid":"9e5d41e7-4785-3b2f-8261-593dade57f6e","expiresOn":"2023-07-10 13:36:09 +0200"},{"name":"Player132","uuid":"5cc48495-676c-3721-aed2-7336730ff405","expiresOn":"2023-07-09 20:59:28 +0200"},{"name":"Player444","uuid":"b136c8aa-0654-3583-8db1-8749e12181a1","expiresOn":"2023-07-10 15:37:49 +0200"},{"name":"Player306","uuid":"a08e137b-04fa-3fce-96cc-517c7a87690d","expiresOn":"2023-07-09 19:24:35 +0200"},{"name":"wrangs","uuid":"7ee45f81-0efe-43fa-af9d-1376f7ae217c","expiresOn":"2023-07-16 22:59:54 +0200"},{"name":"Player999","uuid":"3c28cca8-db38-324d-ac91-779beed87c8d","expiresOn":"2023-07-09 18:15:03 +0200"},{"name":"Player529","uuid":"989691b1-d197-3995-a55e-281cda3663ae","expiresOn":"2023-07-10 14:26:11 +0200"},{"name":"Player203","uuid":"d96be705-d0ae-31d3-afba-31a637d80f6d","expiresOn":"2023-07-08 16:29:04 +0200"},{"name":"Player579","uuid":"6ae8fe40-3ccb-3755-8fd2-c5445728b386","expiresOn":"2023-07-08 19:18:18 +0200"},{"name":"Player939","uuid":"0704e0ba-eaf6-3b26-b880-53fd45ec3b48","expiresOn":"2023-07-08 19:15:56 +0200"},{"name":"Player815","uuid":"41dc22e0-3e7d-3bce-88c0-a274eb3e3859","expiresOn":"2023-07-08 19:16:28 +0200"},{"name":"ziue","uuid":"ae330cf9-3749-3ca0-ba31-8447e2a2786f","expiresOn":"2023-07-13 16:40:05 +0200"},{"name":"Player814","uuid":"777409db-46bf-31bf-844f-6d600c083d6c","expiresOn":"2023-07-08 09:47:50 +0200"},{"name":"Player991","uuid":"fe171829-6121-3106-a1a5-6a3600a4ef7d","expiresOn":"2023-07-09 17:48:04 +0200"},{"name":"Player571","uuid":"5d4844c1-110f-375f-8c73-6803b7a61e5d","expiresOn":"2023-07-08 08:06:30 +0200"},{"name":"Player426","uuid":"71f66ac1-c861-3de2-8cda-9d0f80277f27","expiresOn":"2023-07-08 19:55:34 +0200"},{"name":"Player455","uuid":"fc74fe37-e9f9-3198-8e46-1eee97cacfa6","expiresOn":"2023-07-10 13:46:20 +0200"},{"name":"Player854","uuid":"2a68c4a4-c1ba-3396-a626-ac7041e25da5","expiresOn":"2023-07-09 19:29:22 +0200"},{"name":"Player480","uuid":"1714a812-885f-3243-b534-9a660fba6e8b","expiresOn":"2023-07-09 18:17:13 +0200"},{"name":"test","uuid":"530fa97a-357f-3c19-94d3-0c5c65c18fe8","expiresOn":"2023-07-10 19:15:10 +0200"},{"name":"Player396","uuid":"7ba45a5a-c3de-3909-ba3c-f9f78edf15b6","expiresOn":"2023-07-10 15:32:01 +0200"},{"name":"Player302","uuid":"babe9e7f-35b2-34ef-82f9-4869d34a0755","expiresOn":"2023-07-09 19:54:04 +0200"},{"name":"Player712","uuid":"e4358028-bc3b-38cc-b645-4d08d3b4f456","expiresOn":"2023-07-09 20:11:05 +0200"},{"name":"Player755","uuid":"8dbdaed5-4750-31ee-aa4f-4c3b2bfbc6f7","expiresOn":"2023-07-08 19:11:24 +0200"},{"name":"Player308","uuid":"6db1171d-4fa6-31cb-b425-1896281a26e2","expiresOn":"2023-07-10 13:03:00 +0200"},{"name":"Player320","uuid":"77167de3-5df9-3c83-b06a-bed9a476e835","expiresOn":"2023-07-09 19:39:10 +0200"},{"name":"Player118","uuid":"df7bffa7-7a2f-3fb4-9898-fa23c41e49b8","expiresOn":"2023-07-09 20:39:44 +0200"},{"name":"Player270","uuid":"e122e0b0-374f-3b1b-a986-63f4fefee57a","expiresOn":"2023-07-10 14:49:10 +0200"},{"name":"Player434","uuid":"fd09468e-08e7-31aa-bab7-195a6ef31320","expiresOn":"2023-07-09 19:49:25 +0200"},{"name":"Player773","uuid":"b7a940e4-3cde-3275-9c73-2f71fe593c98","expiresOn":"2023-07-08 16:37:19 +0200"},{"name":"Player484","uuid":"29aa321a-1ce7-35de-bfab-f37fa4095c7d","expiresOn":"2023-07-10 12:37:26 +0200"},{"name":"Player641","uuid":"34c6f761-a0d4-3d62-b5ee-df15e4530215","expiresOn":"2023-07-09 17:34:30 +0200"},{"name":"Player82","uuid":"7328fbd9-6879-3343-b321-ed1f1a1e9892","expiresOn":"2023-07-10 14:02:44 +0200"},{"name":"Player412","uuid":"d978d670-4b07-3a90-bfb6-b4e7c70fe7fc","expiresOn":"2023-07-08 18:15:08 +0200"},{"name":"Player210","uuid":"66157e7a-53e0-3299-9208-7674efd706f9","expiresOn":"2023-07-09 19:28:27 +0200"},{"name":"Player53","uuid":"12477fb0-fd41-3fca-893f-e59684d982a8","expiresOn":"2023-07-08 21:24:44 +0200"},{"name":"Player651","uuid":"5c4f0ba0-5b89-33cd-bd9d-007c51e4a99f","expiresOn":"2023-07-09 20:07:16 +0200"},{"name":"Player565","uuid":"f72636fb-c7db-3c44-8cd4-8a6790fd9b69","expiresOn":"2023-07-10 14:15:29 +0200"},{"name":"Player268","uuid":"b84ce5d9-353d-370c-a2cf-b4a66513f5a8","expiresOn":"2023-07-08 10:42:07 +0200"},{"name":"Player155","uuid":"60d19c6d-8381-348f-9d23-cb28708609fc","expiresOn":"2023-07-08 17:36:23 +0200"},{"name":"Player750","uuid":"2659329e-1c65-3850-9659-d27fc655aa3c","expiresOn":"2023-07-08 19:27:39 +0200"},{"name":"tesfdrsdfsdf","uuid":"2adbb68a-c561-3c7a-ac3a-f724c1f981bb","expiresOn":"2023-07-10 20:17:14 +0200"},{"name":"Player766","uuid":"71ee4b7e-330e-3d50-90a4-3d964a618ea8","expiresOn":"2023-07-09 23:33:32 +0200"},{"name":"Player697","uuid":"09805145-bb70-3fc1-9783-30845f8dd6d0","expiresOn":"2023-07-08 16:35:52 +0200"},{"name":"Player693","uuid":"f2937d48-a72f-3375-bb6f-69c5f204d185","expiresOn":"2023-07-08 19:16:58 +0200"},{"name":"Player813","uuid":"fb8576b0-fae6-3c1e-b44e-6422260d3c41","expiresOn":"2023-07-08 17:27:24 +0200"},{"name":"Player169","uuid":"3247b050-58df-3a7e-91f5-44a3d807681c","expiresOn":"2023-07-09 19:35:50 +0200"},{"name":"Player781","uuid":"bf0c47d3-02b6-3463-8e38-457226b1407c","expiresOn":"2023-07-10 15:48:29 +0200"},{"name":"sdfsdfgsdfgdfshdfgjn","uuid":"0271cc2d-ed8a-353c-95e1-e209c412b712","expiresOn":"2023-07-13 18:06:10 +0200"},{"name":"Player601","uuid":"3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4","expiresOn":"2023-07-08 13:17:47 +0200"},{"name":"Player730","uuid":"409ad871-75ba-3dbd-b116-807d64800e7d","expiresOn":"2023-07-08 17:48:36 +0200"},{"name":"Player685","uuid":"4f2b9d55-5b3e-32ee-ad58-c8df44a23337","expiresOn":"2023-07-09 19:08:06 +0200"},{"name":"Player621","uuid":"55199b58-d04f-3d22-9ce2-5472509a024b","expiresOn":"2023-07-08 16:26:24 +0200"},{"name":"Player3","uuid":"f318a6c7-0ff1-368e-9d3e-1b850b84da5e","expiresOn":"2023-07-10 14:04:29 +0200"},{"name":"Player422","uuid":"cb3fd6c5-1d0c-334b-a8d4-85d2c85eb576","expiresOn":"2023-07-08 17:21:41 +0200"},{"name":"Player6","uuid":"6e946422-0041-3048-9c85-48e4f886211a","expiresOn":"2023-07-08 18:00:50 +0200"},{"name":"Player324","uuid":"942531dd-7690-3c0a-ad42-657bb212e7b6","expiresOn":"2023-07-09 19:50:40 +0200"},{"name":"Player103","uuid":"f0c5379b-0e4e-34aa-808d-37fef9b5ce6c","expiresOn":"2023-07-10 12:33:50 +0200"},{"name":"Player957","uuid":"094b1c52-a449-3e9f-896c-59239b943c71","expiresOn":"2023-07-09 23:34:47 +0200"},{"name":"Player841","uuid":"197d9491-ff34-3fd1-8394-1aadd56cfa2c","expiresOn":"2023-07-10 13:32:20 +0200"},{"name":"Player829","uuid":"4e1f5e28-f05f-3acf-ac65-db01d9d51f95","expiresOn":"2023-07-10 14:19:41 +0200"},{"name":"Player491","uuid":"46f780a1-2e26-3e88-a90a-02cf37fe1547","expiresOn":"2023-07-08 19:10:32 +0200"},{"name":"Player401","uuid":"a7507e7e-f998-31cf-a2de-0cc0fd0a4de6","expiresOn":"2023-07-09 17:45:25 +0200"},{"name":"Player536","uuid":"8cfc5391-e37d-328f-a689-9b5f6c4663f5","expiresOn":"2023-07-10 13:43:43 +0200"},{"name":"Player467","uuid":"ed3ff7cb-6a3b-37aa-85ff-4e536390779c","expiresOn":"2023-07-08 20:52:15 +0200"},{"name":"Player893","uuid":"e012d939-bd4c-38f9-ae46-831d4959ff05","expiresOn":"2023-07-09 21:58:42 +0200"},{"name":"Player239","uuid":"75e52373-1963-3666-bda9-8904d639e38b","expiresOn":"2023-07-10 15:37:14 +0200"},{"name":"Player809","uuid":"e664a043-6e9c-3d0d-9b38-cc385e35aba9","expiresOn":"2023-07-10 12:36:27 +0200"},{"name":"Player77","uuid":"2e2bad62-fd9f-3bb5-a89e-b314a4f30e73","expiresOn":"2023-07-10 15:24:13 +0200"},{"name":"Player405","uuid":"600ef575-e50b-3323-b0f1-19e3a176b08b","expiresOn":"2023-07-08 19:15:08 +0200"},{"name":"Player517","uuid":"3fff7d86-24d6-33b1-8ce1-9423a13c7c89","expiresOn":"2023-07-09 18:10:12 +0200"},{"name":"Player920","uuid":"ad8236b9-e26f-349c-902e-7100197cd86d","expiresOn":"2023-07-08 19:13:30 +0200"},{"name":"Player136","uuid":"f4642d2b-29f9-34b7-8b90-e6570e856434","expiresOn":"2023-07-08 16:32:44 +0200"},{"name":"Player810","uuid":"24a37f0a-2af1-3ac4-9024-e5424f979e18","expiresOn":"2023-07-08 20:10:21 +0200"},{"name":"Player597","uuid":"618c707a-83d7-31ad-b075-bd98e2c75926","expiresOn":"2023-07-08 16:49:56 +0200"},{"name":"Player189","uuid":"43c314ca-2c75-349f-b8fe-ad7c6fada15e","expiresOn":"2023-07-10 19:28:13 +0200"},{"name":"Player335","uuid":"168f5f60-1523-35b7-93b7-01b2c42226b4","expiresOn":"2023-07-10 15:53:11 +0200"},{"name":"Player527","uuid":"638f7175-5dde-3b0d-a13d-f593ecd79b38","expiresOn":"2023-07-10 12:52:57 +0200"},{"name":"Player995","uuid":"93bfa0b6-cc14-3c0c-8efa-0bcc48245274","expiresOn":"2023-07-09 18:45:54 +0200"},{"name":"Player980","uuid":"d1b650bf-5f9c-37d3-a469-4d66d1968f90","expiresOn":"2023-07-10 21:48:02 +0200"},{"name":"Player887","uuid":"df2d3e26-a8b7-3aae-9296-f3a891282132","expiresOn":"2023-07-09 22:02:05 +0200"},{"name":"Player959","uuid":"e4e5b30f-b972-382c-b5e5-86c2e785a8a6","expiresOn":"2023-07-09 23:52:34 +0200"},{"name":"Player962","uuid":"7ef37f89-ec95-314c-ad83-8a71ac6e461c","expiresOn":"2023-07-08 18:46:33 +0200"},{"name":"Player414","uuid":"408d12c9-559c-3212-bca5-d1a3fc38a0f7","expiresOn":"2023-07-08 18:22:02 +0200"},{"name":"Player889","uuid":"a205b8da-efc6-37ad-8e1d-84c0239cdd21","expiresOn":"2023-07-08 16:14:54 +0200"},{"name":"Player336","uuid":"2eef3335-8d1f-3428-af42-f3cec9010d4c","expiresOn":"2023-07-08 19:21:04 +0200"},{"name":"Player87","uuid":"3eec9f18-1d0e-3f17-917c-6994e7d034d1","expiresOn":"2023-07-09 19:11:12 +0200"},{"name":"Player870","uuid":"eadcccd1-5981-31ce-8342-c727c73b0197","expiresOn":"2023-07-10 14:22:37 +0200"},{"name":"Player602","uuid":"7fef5833-06c9-398a-84c0-fbd3a81ff548","expiresOn":"2023-07-10 13:22:13 +0200"},{"name":"Player101","uuid":"4bb7849b-3b46-3d6a-81b9-13bb408e8517","expiresOn":"2023-07-10 14:41:18 +0200"},{"name":"Player914","uuid":"9df70e84-3251-33fb-9047-d59112057246","expiresOn":"2023-07-09 19:51:26 +0200"},{"name":"Player367","uuid":"dcea94fd-efa4-3c29-93d8-2d56666245c7","expiresOn":"2023-07-10 12:57:12 +0200"},{"name":"Player107","uuid":"eed453d8-1b3a-3fa3-9fc5-1cf433d73521","expiresOn":"2023-07-10 12:32:33 +0200"},{"name":"Player894","uuid":"b25e3f31-3d0d-30a3-b307-8902510a505e","expiresOn":"2023-07-10 13:27:49 +0200"},{"name":"Player847","uuid":"6004b361-ef29-34d2-b89c-32df237908c7","expiresOn":"2023-07-08 19:29:12 +0200"},{"name":"Player901","uuid":"fcaa91cc-3a77-3318-a8ae-f2f3862b7fde","expiresOn":"2023-07-10 15:51:32 +0200"},{"name":"t","uuid":"3ab608c1-368b-3111-9725-7a01f0b8ec9e","expiresOn":"2023-07-13 16:39:56 +0200"},{"name":"Player744","uuid":"aeca01bf-232e-37a2-985b-599827b3226a","expiresOn":"2023-07-10 14:09:54 +0200"},{"name":"nigger","uuid":"1b03cef3-3bb0-3335-8575-75a992fee2b9","expiresOn":"2023-07-16 20:39:22 +0200"},{"name":"Player465","uuid":"d447d002-8f00-3c6c-8a29-93b028d90375","expiresOn":"2023-07-08 20:12:40 +0200"},{"name":"Player742","uuid":"01d9f825-5509-3b83-aacf-c98ce0dce1c7","expiresOn":"2023-07-08 17:55:59 +0200"},{"name":"pierswrld","uuid":"b5e13944-7253-3c2b-b5cd-9e6826e34c86","expiresOn":"2023-07-13 17:38:32 +0200"}] \ No newline at end of file +[{"name":"t","uuid":"3ab608c1-368b-3111-9725-7a01f0b8ec9e","expiresOn":"2023-07-17 01:09:55 +0200"},{"name":"test","uuid":"530fa97a-357f-3c19-94d3-0c5c65c18fe8","expiresOn":"2023-07-10 19:15:10 +0200"},{"name":"Player685","uuid":"4f2b9d55-5b3e-32ee-ad58-c8df44a23337","expiresOn":"2023-07-09 19:08:06 +0200"},{"name":"Player414","uuid":"408d12c9-559c-3212-bca5-d1a3fc38a0f7","expiresOn":"2023-07-08 18:22:02 +0200"},{"name":"Player889","uuid":"a205b8da-efc6-37ad-8e1d-84c0239cdd21","expiresOn":"2023-07-08 16:14:54 +0200"},{"name":"Player621","uuid":"55199b58-d04f-3d22-9ce2-5472509a024b","expiresOn":"2023-07-08 16:26:24 +0200"},{"name":"Player396","uuid":"7ba45a5a-c3de-3909-ba3c-f9f78edf15b6","expiresOn":"2023-07-10 15:32:01 +0200"},{"name":"Player24","uuid":"68cf6d02-03bc-3f3b-ab98-76a8ec749597","expiresOn":"2023-07-10 12:40:04 +0200"},{"name":"Player712","uuid":"e4358028-bc3b-38cc-b645-4d08d3b4f456","expiresOn":"2023-07-09 20:11:05 +0200"},{"name":"Player422","uuid":"cb3fd6c5-1d0c-334b-a8d4-85d2c85eb576","expiresOn":"2023-07-08 17:21:41 +0200"},{"name":"Player87","uuid":"3eec9f18-1d0e-3f17-917c-6994e7d034d1","expiresOn":"2023-07-09 19:11:12 +0200"},{"name":"Player336","uuid":"2eef3335-8d1f-3428-af42-f3cec9010d4c","expiresOn":"2023-07-08 19:21:04 +0200"},{"name":"Player3","uuid":"f318a6c7-0ff1-368e-9d3e-1b850b84da5e","expiresOn":"2023-07-10 14:04:29 +0200"},{"name":"Player302","uuid":"babe9e7f-35b2-34ef-82f9-4869d34a0755","expiresOn":"2023-07-09 19:54:04 +0200"},{"name":"ziue","uuid":"74e89738-6c9e-4f59-83ef-d365849e6049","expiresOn":"2023-07-17 00:37:48 +0200"},{"name":"Player854","uuid":"2a68c4a4-c1ba-3396-a626-ac7041e25da5","expiresOn":"2023-07-09 19:29:22 +0200"},{"name":"Player601","uuid":"3b1946fe-c2d1-3fab-8b74-bd39d8b52fb4","expiresOn":"2023-07-08 13:17:47 +0200"},{"name":"Player959","uuid":"e4e5b30f-b972-382c-b5e5-86c2e785a8a6","expiresOn":"2023-07-09 23:52:34 +0200"},{"name":"Player914","uuid":"9df70e84-3251-33fb-9047-d59112057246","expiresOn":"2023-07-09 19:51:26 +0200"},{"name":"Player957","uuid":"094b1c52-a449-3e9f-896c-59239b943c71","expiresOn":"2023-07-09 23:34:47 +0200"},{"name":"Player118","uuid":"df7bffa7-7a2f-3fb4-9898-fa23c41e49b8","expiresOn":"2023-07-09 20:39:44 +0200"},{"name":"Player172","uuid":"31a9aee6-8c2b-389d-b14e-b75d71479611","expiresOn":"2023-07-08 16:15:57 +0200"},{"name":"Player455","uuid":"fc74fe37-e9f9-3198-8e46-1eee97cacfa6","expiresOn":"2023-07-10 13:46:20 +0200"},{"name":"sdfsdfgsdfgdfshdfgjn","uuid":"0271cc2d-ed8a-353c-95e1-e209c412b712","expiresOn":"2023-07-13 18:06:10 +0200"},{"name":"Player887","uuid":"df2d3e26-a8b7-3aae-9296-f3a891282132","expiresOn":"2023-07-09 22:02:05 +0200"},{"name":"Player870","uuid":"eadcccd1-5981-31ce-8342-c727c73b0197","expiresOn":"2023-07-10 14:22:37 +0200"},{"name":"Player6","uuid":"6e946422-0041-3048-9c85-48e4f886211a","expiresOn":"2023-07-08 18:00:50 +0200"},{"name":"Player755","uuid":"8dbdaed5-4750-31ee-aa4f-4c3b2bfbc6f7","expiresOn":"2023-07-08 19:11:24 +0200"},{"name":"Player918","uuid":"7fac0f4d-6ee9-33e9-a874-7b4a3cc238c6","expiresOn":"2023-07-08 19:37:58 +0200"},{"name":"Player426","uuid":"71f66ac1-c861-3de2-8cda-9d0f80277f27","expiresOn":"2023-07-08 19:55:34 +0200"},{"name":"Player781","uuid":"bf0c47d3-02b6-3463-8e38-457226b1407c","expiresOn":"2023-07-10 15:48:29 +0200"},{"name":"Player980","uuid":"d1b650bf-5f9c-37d3-a469-4d66d1968f90","expiresOn":"2023-07-10 21:48:02 +0200"},{"name":"Player602","uuid":"7fef5833-06c9-398a-84c0-fbd3a81ff548","expiresOn":"2023-07-10 13:22:13 +0200"},{"name":"Player324","uuid":"942531dd-7690-3c0a-ad42-657bb212e7b6","expiresOn":"2023-07-09 19:50:40 +0200"},{"name":"Player308","uuid":"6db1171d-4fa6-31cb-b425-1896281a26e2","expiresOn":"2023-07-10 13:03:00 +0200"},{"name":"Player325","uuid":"1aca2fd8-a080-3d28-afe0-430fc033484e","expiresOn":"2023-07-10 15:43:49 +0200"},{"name":"Player480","uuid":"1714a812-885f-3243-b534-9a660fba6e8b","expiresOn":"2023-07-09 18:17:13 +0200"},{"name":"Player730","uuid":"409ad871-75ba-3dbd-b116-807d64800e7d","expiresOn":"2023-07-08 17:48:36 +0200"},{"name":"Player962","uuid":"7ef37f89-ec95-314c-ad83-8a71ac6e461c","expiresOn":"2023-07-08 18:46:33 +0200"},{"name":"Player101","uuid":"4bb7849b-3b46-3d6a-81b9-13bb408e8517","expiresOn":"2023-07-10 14:41:18 +0200"},{"name":"Player103","uuid":"f0c5379b-0e4e-34aa-808d-37fef9b5ce6c","expiresOn":"2023-07-10 12:33:50 +0200"},{"name":"Player320","uuid":"77167de3-5df9-3c83-b06a-bed9a476e835","expiresOn":"2023-07-09 19:39:10 +0200"},{"name":"Player790","uuid":"2f0d3d8c-afbe-358f-b8f3-786d7b0f9259","expiresOn":"2023-07-08 16:44:53 +0200"},{"name":"Player991","uuid":"fe171829-6121-3106-a1a5-6a3600a4ef7d","expiresOn":"2023-07-09 17:48:04 +0200"},{"name":"Player813","uuid":"fb8576b0-fae6-3c1e-b44e-6422260d3c41","expiresOn":"2023-07-08 17:27:24 +0200"},{"name":"Player527","uuid":"638f7175-5dde-3b0d-a13d-f593ecd79b38","expiresOn":"2023-07-10 12:52:57 +0200"},{"name":"Player847","uuid":"6004b361-ef29-34d2-b89c-32df237908c7","expiresOn":"2023-07-08 19:29:12 +0200"},{"name":"Player401","uuid":"a7507e7e-f998-31cf-a2de-0cc0fd0a4de6","expiresOn":"2023-07-09 17:45:25 +0200"},{"name":"Player484","uuid":"29aa321a-1ce7-35de-bfab-f37fa4095c7d","expiresOn":"2023-07-10 12:37:26 +0200"},{"name":"Player514","uuid":"4ed9b5cf-d91a-3bc8-9000-b0476eccd342","expiresOn":"2023-07-09 20:21:06 +0200"},{"name":"Player814","uuid":"777409db-46bf-31bf-844f-6d600c083d6c","expiresOn":"2023-07-08 09:47:50 +0200"},{"name":"Player693","uuid":"f2937d48-a72f-3375-bb6f-69c5f204d185","expiresOn":"2023-07-08 19:16:58 +0200"},{"name":"Player335","uuid":"168f5f60-1523-35b7-93b7-01b2c42226b4","expiresOn":"2023-07-10 15:53:11 +0200"},{"name":"Player367","uuid":"dcea94fd-efa4-3c29-93d8-2d56666245c7","expiresOn":"2023-07-10 12:57:12 +0200"},{"name":"Player841","uuid":"197d9491-ff34-3fd1-8394-1aadd56cfa2c","expiresOn":"2023-07-10 13:32:20 +0200"},{"name":"Player270","uuid":"e122e0b0-374f-3b1b-a986-63f4fefee57a","expiresOn":"2023-07-10 14:49:10 +0200"},{"name":"teste","uuid":"4fdf550e-f3b3-3a06-8485-0916b2b491bc","expiresOn":"2023-07-10 18:59:51 +0200"},{"name":"ziue","uuid":"ae330cf9-3749-3ca0-ba31-8447e2a2786f","expiresOn":"2023-07-13 16:40:05 +0200"},{"name":"Player697","uuid":"09805145-bb70-3fc1-9783-30845f8dd6d0","expiresOn":"2023-07-08 16:35:52 +0200"},{"name":"Player189","uuid":"43c314ca-2c75-349f-b8fe-ad7c6fada15e","expiresOn":"2023-07-10 19:28:13 +0200"},{"name":"Player107","uuid":"eed453d8-1b3a-3fa3-9fc5-1cf433d73521","expiresOn":"2023-07-10 12:32:33 +0200"},{"name":"Player829","uuid":"4e1f5e28-f05f-3acf-ac65-db01d9d51f95","expiresOn":"2023-07-10 14:19:41 +0200"},{"name":"Player434","uuid":"fd09468e-08e7-31aa-bab7-195a6ef31320","expiresOn":"2023-07-09 19:49:25 +0200"},{"name":"Player604","uuid":"11cdf046-d362-394c-93e8-583f0c5ef255","expiresOn":"2023-07-10 12:27:52 +0200"},{"name":"Player571","uuid":"5d4844c1-110f-375f-8c73-6803b7a61e5d","expiresOn":"2023-07-08 08:06:30 +0200"},{"name":"Player169","uuid":"3247b050-58df-3a7e-91f5-44a3d807681c","expiresOn":"2023-07-09 19:35:50 +0200"},{"name":"Player995","uuid":"93bfa0b6-cc14-3c0c-8efa-0bcc48245274","expiresOn":"2023-07-09 18:45:54 +0200"},{"name":"Player894","uuid":"b25e3f31-3d0d-30a3-b307-8902510a505e","expiresOn":"2023-07-10 13:27:49 +0200"},{"name":"Player491","uuid":"46f780a1-2e26-3e88-a90a-02cf37fe1547","expiresOn":"2023-07-08 19:10:32 +0200"},{"name":"Player773","uuid":"b7a940e4-3cde-3275-9c73-2f71fe593c98","expiresOn":"2023-07-08 16:37:19 +0200"},{"name":"Player69","uuid":"eee10812-13cd-3f90-b77f-2195c9c5b71e","expiresOn":"2023-07-10 12:41:47 +0200"},{"name":"Player939","uuid":"0704e0ba-eaf6-3b26-b880-53fd45ec3b48","expiresOn":"2023-07-08 19:15:56 +0200"},{"name":"tesfdrsdfsdf","uuid":"2adbb68a-c561-3c7a-ac3a-f724c1f981bb","expiresOn":"2023-07-10 20:17:14 +0200"},{"name":"Player810","uuid":"24a37f0a-2af1-3ac4-9024-e5424f979e18","expiresOn":"2023-07-08 20:10:21 +0200"},{"name":"nigger","uuid":"1b03cef3-3bb0-3335-8575-75a992fee2b9","expiresOn":"2023-07-16 20:39:22 +0200"},{"name":"Player239","uuid":"75e52373-1963-3666-bda9-8904d639e38b","expiresOn":"2023-07-10 15:37:14 +0200"},{"name":"Player210","uuid":"66157e7a-53e0-3299-9208-7674efd706f9","expiresOn":"2023-07-09 19:28:27 +0200"},{"name":"Player444","uuid":"b136c8aa-0654-3583-8db1-8749e12181a1","expiresOn":"2023-07-10 15:37:49 +0200"},{"name":"Player579","uuid":"6ae8fe40-3ccb-3755-8fd2-c5445728b386","expiresOn":"2023-07-08 19:18:18 +0200"},{"name":"Player750","uuid":"2659329e-1c65-3850-9659-d27fc655aa3c","expiresOn":"2023-07-08 19:27:39 +0200"},{"name":"Player136","uuid":"f4642d2b-29f9-34b7-8b90-e6570e856434","expiresOn":"2023-07-08 16:32:44 +0200"},{"name":"Player901","uuid":"fcaa91cc-3a77-3318-a8ae-f2f3862b7fde","expiresOn":"2023-07-10 15:51:32 +0200"},{"name":"Player536","uuid":"8cfc5391-e37d-328f-a689-9b5f6c4663f5","expiresOn":"2023-07-10 13:43:43 +0200"},{"name":"Player641","uuid":"34c6f761-a0d4-3d62-b5ee-df15e4530215","expiresOn":"2023-07-09 17:34:30 +0200"},{"name":"Player197","uuid":"ccf0c278-c21f-3ec3-a87c-05202673a5dd","expiresOn":"2023-07-09 20:05:23 +0200"},{"name":"Player203","uuid":"d96be705-d0ae-31d3-afba-31a637d80f6d","expiresOn":"2023-07-08 16:29:04 +0200"},{"name":"Player155","uuid":"60d19c6d-8381-348f-9d23-cb28708609fc","expiresOn":"2023-07-08 17:36:23 +0200"},{"name":"Player920","uuid":"ad8236b9-e26f-349c-902e-7100197cd86d","expiresOn":"2023-07-08 19:13:30 +0200"},{"name":"Player742","uuid":"01d9f825-5509-3b83-aacf-c98ce0dce1c7","expiresOn":"2023-07-08 17:55:59 +0200"},{"name":"Player467","uuid":"ed3ff7cb-6a3b-37aa-85ff-4e536390779c","expiresOn":"2023-07-08 20:52:15 +0200"},{"name":"Player82","uuid":"7328fbd9-6879-3343-b321-ed1f1a1e9892","expiresOn":"2023-07-10 14:02:44 +0200"},{"name":"Player977","uuid":"9e5d41e7-4785-3b2f-8261-593dade57f6e","expiresOn":"2023-07-10 13:36:09 +0200"},{"name":"Player815","uuid":"41dc22e0-3e7d-3bce-88c0-a274eb3e3859","expiresOn":"2023-07-08 19:16:28 +0200"},{"name":"Player766","uuid":"71ee4b7e-330e-3d50-90a4-3d964a618ea8","expiresOn":"2023-07-09 23:33:32 +0200"},{"name":"Player597","uuid":"618c707a-83d7-31ad-b075-bd98e2c75926","expiresOn":"2023-07-08 16:49:56 +0200"},{"name":"Player744","uuid":"aeca01bf-232e-37a2-985b-599827b3226a","expiresOn":"2023-07-10 14:09:54 +0200"},{"name":"Player893","uuid":"e012d939-bd4c-38f9-ae46-831d4959ff05","expiresOn":"2023-07-09 21:58:42 +0200"},{"name":"Player412","uuid":"d978d670-4b07-3a90-bfb6-b4e7c70fe7fc","expiresOn":"2023-07-08 18:15:08 +0200"},{"name":"Player132","uuid":"5cc48495-676c-3721-aed2-7336730ff405","expiresOn":"2023-07-09 20:59:28 +0200"},{"name":"Player999","uuid":"3c28cca8-db38-324d-ac91-779beed87c8d","expiresOn":"2023-07-09 18:15:03 +0200"},{"name":"Player565","uuid":"f72636fb-c7db-3c44-8cd4-8a6790fd9b69","expiresOn":"2023-07-10 14:15:29 +0200"},{"name":"Player405","uuid":"600ef575-e50b-3323-b0f1-19e3a176b08b","expiresOn":"2023-07-08 19:15:08 +0200"},{"name":"pierswrld","uuid":"b5e13944-7253-3c2b-b5cd-9e6826e34c86","expiresOn":"2023-07-13 17:38:32 +0200"},{"name":"Player517","uuid":"3fff7d86-24d6-33b1-8ce1-9423a13c7c89","expiresOn":"2023-07-09 18:10:12 +0200"},{"name":"Player268","uuid":"b84ce5d9-353d-370c-a2cf-b4a66513f5a8","expiresOn":"2023-07-08 10:42:07 +0200"},{"name":"Player529","uuid":"989691b1-d197-3995-a55e-281cda3663ae","expiresOn":"2023-07-10 14:26:11 +0200"},{"name":"wrangs","uuid":"7ee45f81-0efe-43fa-af9d-1376f7ae217c","expiresOn":"2023-07-16 22:59:54 +0200"},{"name":"Player651","uuid":"5c4f0ba0-5b89-33cd-bd9d-007c51e4a99f","expiresOn":"2023-07-09 20:07:16 +0200"},{"name":"Player77","uuid":"2e2bad62-fd9f-3bb5-a89e-b314a4f30e73","expiresOn":"2023-07-10 15:24:13 +0200"},{"name":"Player465","uuid":"d447d002-8f00-3c6c-8a29-93b028d90375","expiresOn":"2023-07-08 20:12:40 +0200"},{"name":"Player809","uuid":"e664a043-6e9c-3d0d-9b38-cc385e35aba9","expiresOn":"2023-07-10 12:36:27 +0200"},{"name":"Player53","uuid":"12477fb0-fd41-3fca-893f-e59684d982a8","expiresOn":"2023-07-08 21:24:44 +0200"},{"name":"Player306","uuid":"a08e137b-04fa-3fce-96cc-517c7a87690d","expiresOn":"2023-07-09 19:24:35 +0200"}] \ No newline at end of file