diff --git a/src/main/java/de/pauljako/cosmeticserver/CosmeticSocket.java b/src/main/java/de/pauljako/cosmeticserver/CosmeticSocket.java index 1e5efb2..0312370 100644 --- a/src/main/java/de/pauljako/cosmeticserver/CosmeticSocket.java +++ b/src/main/java/de/pauljako/cosmeticserver/CosmeticSocket.java @@ -54,6 +54,26 @@ public class CosmeticSocket implements SocketHandler, ListenerAdapter { return; } + if (data.contains("all")) { + + String type = data.getString("all"); + + JsonObject cosmetic = allServerCosmetics(type); + System.out.println(cosmetic); + + Json result = JsonParser.parse("{}"); + result.set("id", data.getLong("id")); + result.set("all", type); + result.set("result", false); + + if (cosmetic != null) { + result.set("result", cosmetic); + } + + exchange.client().sendMessage(result.toString()); + return; + } + if (data.contains("cosmetics") && data.contains("uuid")) { UUID uuid = UUID.fromString(data.getString("uuid")); @@ -112,6 +132,30 @@ public class CosmeticSocket implements SocketHandler, ListenerAdapter { .getObject(); } + private JsonObject allServerCosmetics(String type) { + Json serverCosmetics = CosmeticServer.instance().getServerCosmetics(); + if (!serverCosmetics.contains(type + ".")) return null; + + Json allCosmetics = Json.empty(); + + for (String cosmeticName : serverCosmetics.getJson(type).keySet()) { + Json cosmetic = serverCosmetics.getJson(type + "." + cosmeticName); + + String id = cosmetic.contains("id") ? cosmetic.getString("id") : cosmeticName; + + Json cosmeticObject = JsonParser.parse("{}") + .set("display", cosmetic.contains("display") ? cosmetic.get("display") : cosmeticName) + .set("name", cosmeticName) + .set("delay", cosmetic.contains("delay") ? cosmetic.getInt("delay") : 30) + .set("frames", cosmetic.contains("frames") ? cosmetic.getStringList("frames").size() : 1) + .set("url", "https://cosmetic.airclient.pauljako.de/v1/cosmetic/assets/" + type + "/" + cosmeticName + "/frame_" + id); + + allCosmetics.set(cosmeticName, cosmeticObject); + } + + return allCosmetics.getObject().getAsJsonObject(); + } + private JsonElement bakeData(ConcurrentHashMap elements) { Json object = JsonParser.parse("{}"); elements.forEach(object::set);