diff options
author | Fix3d <serhanduzce@gmail.com> | 2023-03-22 13:55:34 +0300 |
---|---|---|
committer | Fix3d <serhanduzce@gmail.com> | 2023-03-22 13:55:34 +0300 |
commit | 4a3b5a00c174d9c7abe2cfaed84ac09bf464650a (patch) | |
tree | 5ce2571fb4448ed7da1ac89054a7f18f255f018a | |
parent | f362d95f9b8477c1f8190e79ca390a09adb658c5 (diff) | |
download | Skyblocker-4a3b5a00c174d9c7abe2cfaed84ac09bf464650a.tar.gz Skyblocker-4a3b5a00c174d9c7abe2cfaed84ac09bf464650a.tar.bz2 Skyblocker-4a3b5a00c174d9c7abe2cfaed84ac09bf464650a.zip |
fix freezing while open wiki and...
get wiki link from local repo which is same and exist for recipe book
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java | 29 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java | 16 |
2 files changed, 22 insertions, 23 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java index afaf487f..76b4e7c3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java @@ -1,9 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.item; import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; +import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemRegistry; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.minecraft.client.MinecraftClient; @@ -16,11 +14,7 @@ import net.minecraft.text.Text; import net.minecraft.util.Util; import org.lwjgl.glfw.GLFW; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; -import java.net.URLConnection; +import java.util.concurrent.CompletableFuture; public class WikiLookup { public static KeyBinding wikiLookup; @@ -51,23 +45,12 @@ public class WikiLookup { if (Utils.isOnSkyblock) { id = getSkyblockId(slot); try { - //Setting up a connection with the repo - String urlString = "https://raw.githubusercontent.com/NotEnoughUpdates/NotEnoughUpdates-REPO/master/items/" + id + ".json"; - URL url = new URL(urlString); - URLConnection request = url.openConnection(); - request.connect(); - - //yoinking the wiki link - JsonElement root = JsonParser.parseReader(new InputStreamReader((InputStream) request.getContent())); - JsonObject rootobj = root.getAsJsonObject(); - String wikiLink = rootobj.get("info").getAsJsonArray().get(1).getAsString(); - Util.getOperatingSystem().open(wikiLink); - } catch (IOException | NullPointerException e) { - e.printStackTrace(); - client.player.sendMessage(Text.of("Can't locate a wiki article for this item..."), false); + String wikiLink = ItemRegistry.getWikiLink(id); + CompletableFuture.runAsync(() -> Util.getOperatingSystem().open(wikiLink)); } catch (IndexOutOfBoundsException | IllegalStateException e) { e.printStackTrace(); - client.player.sendMessage(Text.of("Error while retrieving wiki article..."), false); + if (client.player != null) + client.player.sendMessage(Text.of("Error while retrieving wiki article..."), false); } } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java index 7bfa0997..2bb16a34 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java @@ -4,13 +4,16 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.client.MinecraftClient; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.text.Text; import org.eclipse.jgit.api.Git; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; @@ -24,6 +27,7 @@ public class ItemRegistry { protected static List<ItemStack> items = new ArrayList<>(); protected static Map<String, ItemStack> itemsMap = new HashMap<>(); protected static List<Recipe> recipes = new ArrayList<>(); + static final MinecraftClient client = MinecraftClient.getInstance(); // TODO: make async public static void init() { @@ -95,6 +99,18 @@ public class ItemRegistry { }); } + public static String getWikiLink(String internalName) { + try { + String fileContent = Files.readString(ITEM_LIST_DIR.resolve(internalName + ".json")); + JsonObject fileJson = JsonParser.parseString(fileContent).getAsJsonObject(); + return fileJson.get("info").getAsJsonArray().get(1).getAsString(); + } catch (IOException | NullPointerException e) { + e.printStackTrace(); + client.player.sendMessage(Text.of("Can't locate a wiki article for this item..."), false); + return null; + } + } + public static List<Recipe> getRecipes(String internalName) { List<Recipe> result = new ArrayList<>(); for (Recipe recipe : recipes) |