aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemListWidget.java25
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java20
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) {