From d98070f7c05587bbb3102e4056816d058fa1a0a5 Mon Sep 17 00:00:00 2001 From: Flummi Date: Tue, 6 Jun 2023 01:13:40 +0200 Subject: [PATCH] get Skills from API --- .../flummi/skilloverlay/api/ApiSkills.java | 48 +++++++++++++++++++ .../skilloverlay/api/records/Skills.java | 33 +++++++++++++ .../lel/flummi/skilloverlay/skilloverlay.java | 2 + 3 files changed, 83 insertions(+) create mode 100644 src/main/java/lel/flummi/skilloverlay/api/ApiSkills.java create mode 100644 src/main/java/lel/flummi/skilloverlay/api/records/Skills.java diff --git a/src/main/java/lel/flummi/skilloverlay/api/ApiSkills.java b/src/main/java/lel/flummi/skilloverlay/api/ApiSkills.java new file mode 100644 index 0000000..747e4b3 --- /dev/null +++ b/src/main/java/lel/flummi/skilloverlay/api/ApiSkills.java @@ -0,0 +1,48 @@ +package lel.flummi.skilloverlay.api; + +import java.io.InputStreamReader; +import java.net.URL; +import java.util.HashMap; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import lel.flummi.skilloverlay.api.records.Skills; +import lel.flummi.skilloverlay.api.records.Skills.Skill; +import lel.flummi.skilloverlay.config.skilloverlayconfig; + +public class ApiSkills { + public static HashMap SKILLS; + + public static void init() { + String apikey = skilloverlayconfig.get().general.apiKey; + String apiurl = "https://api.hypixel.net/resources/skyblock/skills?key=" + apikey; + + if(apikey.length() > 0) { + Skills skills = ApiSkills.updateSkills(apiurl); + if(skills != null) { + SKILLS = skills.skills(); + } + else { + System.out.println("leer uff"); + } + } + } + + public static Skills updateSkills(String apiurl) { + if(apiurl.length() == 0) + return null; + + try { + URL url = new URL(apiurl); + InputStreamReader reader = new InputStreamReader(url.openStream()); + Gson gson = new GsonBuilder() + .serializeNulls() + .create(); + return gson.fromJson(reader, Skills.class); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/src/main/java/lel/flummi/skilloverlay/api/records/Skills.java b/src/main/java/lel/flummi/skilloverlay/api/records/Skills.java new file mode 100644 index 0000000..219d09c --- /dev/null +++ b/src/main/java/lel/flummi/skilloverlay/api/records/Skills.java @@ -0,0 +1,33 @@ +package lel.flummi.skilloverlay.api.records; + +import java.util.HashMap; +import java.util.List; + +public record Skills( + HashMap skills +) { + public record Skill( + String name, + int maxLevel, + List levels + ) { + public record Level( + int level, + long totalExpRequired + ) {} + + public int getLevel(double exp) { + int aktLevel = 0; + + for(Level tmp: this.levels()) { + System.out.println((exp > tmp.totalExpRequired) + "; exp: " + exp + "; ter: " + tmp.totalExpRequired); + if(exp < tmp.totalExpRequired) { + return aktLevel; + } + aktLevel = tmp.level; + } + + return 0; + } + } +} diff --git a/src/main/java/lel/flummi/skilloverlay/skilloverlay.java b/src/main/java/lel/flummi/skilloverlay/skilloverlay.java index 50c2d38..6cd2b80 100644 --- a/src/main/java/lel/flummi/skilloverlay/skilloverlay.java +++ b/src/main/java/lel/flummi/skilloverlay/skilloverlay.java @@ -4,6 +4,7 @@ import net.fabricmc.api.ModInitializer; import lel.flummi.skilloverlay.overlays.FarmingOverlay; import lel.flummi.skilloverlay.api.PlayerProfile; +import lel.flummi.skilloverlay.api.ApiSkills; import lel.flummi.skilloverlay.config.skilloverlayconfig; public class skilloverlay implements ModInitializer { @@ -17,6 +18,7 @@ public class skilloverlay implements ModInitializer { skilloverlayconfig.init(); OVERLAY = new FarmingOverlay(); + ApiSkills.init(); PlayerProfile.init(); } }