diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-04-12 18:10:12 -0400 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-04-12 18:10:12 -0400 |
commit | 27e9e7b90a76bb662fd7a5f8fe1d7fbec17a8cb9 (patch) | |
tree | 572a952b05a30afaf2632bbbcee7ef770be40463 /src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java | |
parent | 1c6fffb0c191074d09d993fb24ce9c24c234f5f4 (diff) | |
download | Skyblocker-27e9e7b90a76bb662fd7a5f8fe1d7fbec17a8cb9.tar.gz Skyblocker-27e9e7b90a76bb662fd7a5f8fe1d7fbec17a8cb9.tar.bz2 Skyblocker-27e9e7b90a76bb662fd7a5f8fe1d7fbec17a8cb9.zip |
Refactor fancy auction house
- Add color and center rarity filter text
- Use ItemUtils.getNbtTooltips
- Use longs for item prices
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java | 48 |
1 files changed, 28 insertions, 20 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java index 628c5bd5..d47fef05 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java @@ -9,6 +9,7 @@ import de.hysky.skyblocker.skyblock.auction.widgets.RarityWidget; import de.hysky.skyblocker.skyblock.auction.widgets.SortWidget; import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; +import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.render.gui.AbstractCustomHypixelGUI; import it.unimi.dsi.fastutil.ints.Int2BooleanOpenHashMap; import net.minecraft.client.MinecraftClient; @@ -16,7 +17,6 @@ import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.item.TooltipContext; import net.minecraft.client.texture.Sprite; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerInventory; @@ -30,6 +30,8 @@ import net.minecraft.util.Colors; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import org.lwjgl.glfw.GLFW; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.awt.*; import java.util.ArrayList; @@ -37,7 +39,8 @@ import java.util.List; import java.util.function.Supplier; public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseScreenHandler> { - protected static final Identifier TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/auctions_gui/browser/background.png"); + private static final Logger LOGGER = LoggerFactory.getLogger(AuctionBrowserScreen.class); + private static final Identifier TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/auctions_gui/browser/background.png"); private static final Identifier SCROLLER_TEXTURE = new Identifier("container/creative_inventory/scroller"); private static final Identifier up_arrow_tex = new Identifier(SkyblockerMod.NAMESPACE, "up_arrow_even"); // Put them in their own fields to avoid object allocation on each frame @@ -129,7 +132,10 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS for (CategoryTabWidget categoryTabWidget : categoryTabWidgets) { categoryTabWidget.render(context, mouseX, mouseY, delta); } - if (isWaitingForServer) context.drawText(textRenderer, "Waiting...", 0, 0, Colors.WHITE, true); + if (isWaitingForServer) { + String waiting = "Waiting for server..."; + context.drawText(textRenderer, waiting, this.width - textRenderer.getWidth(waiting) - 5, this.height - textRenderer.fontHeight - 2, Colors.WHITE, true); + } MatrixStack matrices = context.getMatrices(); matrices.push(); @@ -234,13 +240,13 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS } } case SORT_BUTTON_SLOT -> - sortWidget.setCurrent(SortWidget.Option.get(getOrdinal(stack.getTooltip(client.player, TooltipContext.BASIC)))); + sortWidget.setCurrent(SortWidget.Option.get(getOrdinal(ItemUtils.getNbtTooltips(stack)))); case AUCTION_TYPE_BUTTON_SLOT -> - auctionTypeWidget.setCurrent(AuctionTypeWidget.Option.get(getOrdinal(stack.getTooltip(client.player, TooltipContext.BASIC)))); + auctionTypeWidget.setCurrent(AuctionTypeWidget.Option.get(getOrdinal(ItemUtils.getNbtTooltips(stack)))); case RARITY_BUTTON_SLOT -> { - List<Text> tooltip = stack.getTooltip(client.player, TooltipContext.BASIC); + List<Text> tooltip = ItemUtils.getNbtTooltips(stack); int ordinal = getOrdinal(tooltip); - String split = tooltip.get(ordinal + 2).getString().substring(2); + String split = tooltip.get(ordinal + 1).getString().substring(2); rarityWidget.setText(tooltip.subList(1, tooltip.size() - 3), split); } case RESET_BUTTON_SLOT -> { @@ -248,7 +254,7 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS resetFiltersButton.active = handler.getSlot(slotId).getStack().isOf(Items.ANVIL); } case SEARCH_BUTTON_SLOT -> { - List<Text> tooltipSearch = stack.getTooltip(client.player, TooltipContext.BASIC); + List<Text> tooltipSearch = ItemUtils.getNbtTooltips(stack); for (Text text : tooltipSearch) { String string = text.getString(); if (string.contains("Filtered:")) { @@ -265,7 +271,7 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS CategoryTabWidget categoryTabWidget = categoryTabWidgets.get(slotId / 9); categoryTabWidget.setSlotId(slotId); categoryTabWidget.setIcon(handler.getSlot(slotId).getStack()); - List<Text> tooltipDefault = handler.getSlot(slotId).getStack().getTooltip(client.player, TooltipContext.BASIC); + List<Text> tooltipDefault = ItemUtils.getNbtTooltips(handler.getSlot(slotId).getStack()); for (int j = tooltipDefault.size() - 1; j >= 0; j--) { String lowerCase = tooltipDefault.get(j).getString().toLowerCase(); if (lowerCase.contains("currently")) { @@ -277,8 +283,8 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS } else categoryTabWidget.setToggled(false); } } else if (slotId > 9 && slotId < (handler.getRows() - 1) * 9 && slotId % 9 > 1 && slotId % 9 < 8) { - List<Text> tooltip = stack.getTooltip(client.player, TooltipContext.BASIC); if (!SkyblockerConfigManager.get().general.fancyAuctionHouse.highlightCheapBIN) return; + List<Text> tooltip = ItemUtils.getNbtTooltips(stack); for (int k = tooltip.size() - 1; k >= 0; k--) { Text text = tooltip.get(k); String string = text.getString(); @@ -287,7 +293,7 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS if (split.length < 2) continue; String coins = split[1].replace(",", "").replace("coins", "").trim(); try { - int parsed = Integer.parseInt(coins); + long parsed = Long.parseLong(coins); String name = ItemTooltip.getInternalNameFromNBT(stack, false); String internalID = ItemTooltip.getInternalNameFromNBT(stack, true); String neuName = name; @@ -300,7 +306,8 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS else { isSlotHighlighted.put(slotId, jsonElement.getAsDouble() > parsed); } - } catch (NumberFormatException ignored) { + } catch (Exception e) { + LOGGER.error("[Skyblocker Fancy Auction House] Failed to parse BIN price", e); } } } @@ -324,9 +331,9 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS private static int getOrdinal(List<Text> tooltip) { int ordinal = 0; - for (int j = 0; j < tooltip.size() - 3; j++) { - if (j + 2 >= tooltip.size()) break; - if (tooltip.get(j + 2).getString().contains("▶")) { + for (int j = 0; j < tooltip.size() - 4; j++) { + if (j + 1 >= tooltip.size()) break; + if (tooltip.get(j + 1).getString().contains("▶")) { ordinal = j; break; } @@ -341,14 +348,15 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS private void parsePage(ItemStack stack) { assert client != null; - List<Text> tooltip = stack.getTooltip(client.player, TooltipContext.BASIC); - String str = tooltip.get(1).getString().trim(); - str = str.substring(1, str.length() - 1); // remove parentheses - String[] parts = str.split("/"); // split the string try { + List<Text> tooltip = ItemUtils.getNbtTooltips(stack); + String str = tooltip.get(0).getString().trim(); + str = str.substring(1, str.length() - 1); // remove parentheses + String[] parts = str.split("/"); // split the string currentPage = Integer.parseInt(parts[0].replace(",", "")); // parse current page totalPages = Integer.parseInt(parts[1].replace(",", "")); // parse total - } catch (NumberFormatException ignored) { + } catch (Exception e) { + LOGGER.error("[Skyblocker Fancy Auction House] Failed to parse page arrow", e); } } |