diff options
author | Fix3d <serhanduzce@gmail.com> | 2023-03-28 10:54:30 +0300 |
---|---|---|
committer | Fix3d <serhanduzce@gmail.com> | 2023-03-28 10:54:30 +0300 |
commit | ea05cbb827c06ec7480a3006e39ccfec1c7bf137 (patch) | |
tree | eb85b9823791ca175907a57ae78dee53b85fc389 | |
parent | 47e9ec4135540eb03e2363ddfc6ca7535e77377e (diff) | |
download | Skyblocker-ea05cbb827c06ec7480a3006e39ccfec1c7bf137.tar.gz Skyblocker-ea05cbb827c06ec7480a3006e39ccfec1c7bf137.tar.bz2 Skyblocker-ea05cbb827c06ec7480a3006e39ccfec1c7bf137.zip |
async updateItemRepo
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java | 25 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java | 20 |
2 files changed, 31 insertions, 14 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java index a635cea2..75d53323 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java @@ -13,7 +13,6 @@ import net.minecraft.client.render.GameRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.screen.AbstractRecipeScreenHandler; import net.minecraft.text.Text; -import net.minecraft.text.TranslatableTextContent; import net.minecraft.util.Formatting; @Environment(value= EnvType.CLIENT) @@ -39,8 +38,10 @@ public class ItemListWidget extends RecipeBookWidget implements Drawable, Select this.searchField = ((RecipeBookWidgetAccessor)this).getSearchField(); int x = (this.parentWidth - 147) / 2 - this.leftOffset; int y = (this.parentHeight - 166) / 2; - this.results = new SearchResultsWidget(this.client, x , y); - this.updateSearchResult(); + if (ItemRegistry.filesImported) { + this.results = new SearchResultsWidget(this.client, x, y); + this.updateSearchResult(); + } } @Override @@ -56,33 +57,39 @@ public class ItemListWidget extends RecipeBookWidget implements Drawable, Select int j = (this.parentHeight - 166) / 2; this.drawTexture(matrices, i, j, 1, 1, 147, 166); this.searchField = ((RecipeBookWidgetAccessor)this).getSearchField(); - if (!this.searchField.isFocused() && this.searchField.getText().isEmpty()) { + + if (!ItemRegistry.filesImported && !this.searchField.isFocused() && this.searchField.getText().isEmpty()) { + Text hintText = (Text.literal("Loading...")).formatted(Formatting.ITALIC).formatted(Formatting.GRAY); + drawTextWithShadow(matrices, this.client.textRenderer, hintText, i + 25, j + 14, -1); + } else if (!this.searchField.isFocused() && this.searchField.getText().isEmpty()) { Text hintText = (Text.translatable("gui.recipebook.search_hint")).formatted(Formatting.ITALIC).formatted(Formatting.GRAY); drawTextWithShadow(matrices, this.client.textRenderer, hintText, i + 25, j + 14, -1); } else { this.searchField.render(matrices, mouseX, mouseY, delta); } - this.updateSearchResult(); - this.results.render(matrices, mouseX, mouseY, delta); + if (ItemRegistry.filesImported && results != null){ + this.updateSearchResult(); + this.results.render(matrices, mouseX, mouseY, delta); + } matrices.pop(); } } @Override public void drawTooltip(MatrixStack matrices, int x, int y, int mouseX, int mouseY) { - if (this.isOpen()) { + if (this.isOpen() && ItemRegistry.filesImported && results != null) { this.results.drawTooltip(matrices, mouseX, mouseY); } } @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (this.isOpen() && !this.client.player.isSpectator()) { + if (this.isOpen() && !this.client.player.isSpectator() && ItemRegistry.filesImported && results != null) { if (this.searchField.mouseClicked(mouseX, mouseY, button)) { this.results.closeRecipeView(); return true; } - if (this.results.mouseClicked(mouseX, mouseY, button)) return true; + return this.results.mouseClicked(mouseX, mouseY, button); } return 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 2bb16a34..f0958514 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java @@ -17,8 +17,10 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; +import java.util.concurrent.CompletableFuture; public class ItemRegistry { + private static final Logger LOGGER = LoggerFactory.getLogger(ItemRegistry.class); protected static final String REMOTE_ITEM_REPO = "https://github.com/NotEnoughUpdates/NotEnoughUpdates-REPO"; protected static final Path LOCAL_ITEM_REPO_DIR = FabricLoader.getInstance().getConfigDir().resolve("skyblocker/item-repo"); @@ -27,13 +29,20 @@ 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(); + protected static final MinecraftClient client = MinecraftClient.getInstance(); + static boolean filesImported = false; - // TODO: make async public static void init() { - updateItemRepo(); - ItemStackBuilder.init(); - importItemFiles(); + CompletableFuture.runAsync(ItemRegistry::updateItemRepo) + .whenComplete((result, ex) -> { + if (ex == null) { + ItemStackBuilder.init(); + importItemFiles(); + } + else { + LOGGER.error("[Skyblocker-ItemRegistry] " + ex); + } + }); } private static void updateItemRepo() { @@ -97,6 +106,7 @@ public class ItemRegistry { } return lhsFamilyName.compareTo(rhsFamilyName); }); + filesImported = true; } public static String getWikiLink(String internalName) { |