44import java .net .URL ;
55import java .net .URLEncoder ;
66import java .util .ArrayList ;
7+ import java .util .HashMap ;
78import java .util .List ;
9+ import java .util .Map ;
810import java .util .UUID ;
911
1012import com .google .gson .JsonArray ;
@@ -157,6 +159,36 @@ public NamelessPlayer getPlayer(UUID uuid) throws NamelessException {
157159 return new NamelessPlayer (uuid , apiUrl );
158160 }
159161
162+ public Map <UUID , String > getRegisteredUsers () throws NamelessException {
163+ Request request = new Request (apiUrl , Action .LIST_USERS );
164+ request .connect ();
165+ if (request .hasError ()) {
166+ throw new ApiError (request .getError ());
167+ }
168+
169+ Map <UUID , String > users = new HashMap <>();
170+
171+ request .getResponse ().get ("users" ).getAsJsonArray ().forEach (userJsonElement -> {
172+ final String uuid = userJsonElement .getAsJsonObject ().get ("uuid" ).getAsString ();
173+ final String username = userJsonElement .getAsJsonObject ().get ("username" ).getAsString ();
174+
175+ users .put (websiteUuidToJavaUuid (uuid ), username );
176+ });
177+
178+ return users ;
179+ }
180+
181+ public List <NamelessPlayer > getRegisteredUsersAsNamelessPlayerList () throws NamelessException {
182+ Map <UUID , String > users = getRegisteredUsers ();
183+ List <NamelessPlayer > namelessPlayers = new ArrayList <>();
184+
185+ for (UUID userUuid : users .keySet ()) {
186+ namelessPlayers .add (this .getPlayer (userUuid ));
187+ }
188+
189+ return namelessPlayers ;
190+ }
191+
160192 static String encode (Object object ) {
161193 try {
162194 return URLEncoder .encode (object .toString (), "UTF-8" );
@@ -170,6 +202,24 @@ static String[] jsonToArray(JsonArray jsonArray) {
170202 jsonArray .iterator ().forEachRemaining ((element ) -> list .add (element .getAsString ()));
171203 return list .toArray (new String [] {});
172204 }
205+
206+ static UUID websiteUuidToJavaUuid (String uuid ) {
207+ // Add dashes to uuid
208+ // https://bukkit.org/threads/java-adding-dashes-back-to-minecrafts-uuids.272746/
209+ StringBuffer sb = new StringBuffer (uuid );
210+ sb .insert (8 , "-" );
211+
212+ sb = new StringBuffer (sb .toString ());
213+ sb .insert (13 , "-" );
214+
215+ sb = new StringBuffer (sb .toString ());
216+ sb .insert (18 , "-" );
217+
218+ sb = new StringBuffer (sb .toString ());
219+ sb .insert (23 , "-" );
220+
221+ return UUID .fromString (sb .toString ());
222+ }
173223
174224
175225}
0 commit comments