diff options
Diffstat (limited to 'src/main/java/de')
11 files changed, 208 insertions, 187 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java index a8f22bbc..a1e1dadc 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -272,13 +272,6 @@ public class SkyblockerConfig { public Object2ObjectOpenHashMap<String, CustomArmorAnimatedDyes.AnimatedDye> customAnimatedDyes = new Object2ObjectOpenHashMap<>(); } - public static class FancyAuctionHouse { - @SerialEntry - public boolean enabled = true; - @SerialEntry - public boolean highlightCheapBIN = true; - } - public static class TabHudConf { @SerialEntry public boolean tabHudEnabled = true; @@ -416,138 +409,11 @@ public class SkyblockerConfig { public boolean enableQuiverWarningAfterDungeon = true; } - public static class Hitbox { - @SerialEntry - public boolean oldFarmlandHitbox = false; - - @SerialEntry - public boolean oldLeverHitbox = false; - } - - public static class TitleContainer { - @SerialEntry - public float titleContainerScale = 100; - - @SerialEntry - public int x = 540; - - @SerialEntry - public int y = 10; - - @SerialEntry - public Direction direction = Direction.HORIZONTAL; - - @SerialEntry - public Alignment alignment = Alignment.MIDDLE; - } - - public enum Direction { - HORIZONTAL, VERTICAL; - - @Override - public String toString() { - return switch (this) { - case HORIZONTAL -> "Horizontal"; - case VERTICAL -> "Vertical"; - }; - } - } - - public enum Alignment { - LEFT, RIGHT, MIDDLE; - - @Override - public String toString() { - return switch (this) { - case LEFT -> "Left"; - case RIGHT -> "Right"; - case MIDDLE -> "Middle"; - }; - } - } - - public static class TeleportOverlay { - @SerialEntry - public boolean enableTeleportOverlays = true; - - @SerialEntry - public boolean enableWeirdTransmission = true; - - @SerialEntry - public boolean enableInstantTransmission = true; - - @SerialEntry - public boolean enableEtherTransmission = true; - - @SerialEntry - public boolean enableSinrecallTransmission = true; - - @SerialEntry - public boolean enableWitherImpact = true; - } - - public static class FlameOverlay { - @SerialEntry - public int flameHeight = 100; - - @SerialEntry - public int flameOpacity = 100; - } - - public static class SearchOverlay { - @SerialEntry - public boolean enableBazaar = true; - - @SerialEntry - public boolean enableAuctionHouse = true; - - @SerialEntry - public boolean keepPreviousSearches = false; - - @SerialEntry - public int maxSuggestions = 3; - - @SerialEntry - public int historyLength = 3; - - @SerialEntry - public boolean enableCommands = false; - - @SerialEntry - public List<String> bazaarHistory = new ArrayList<>(); - - @SerialEntry - public List<String> auctionHistory = new ArrayList<>(); - } - - public static class RichPresence { - @SerialEntry - public boolean enableRichPresence = false; - - @SerialEntry - public Info info = Info.LOCATION; - - @SerialEntry - public boolean cycleMode = false; - - @SerialEntry - public String customMessage = "Playing Skyblock"; - } - public static class ItemList { @SerialEntry public boolean enableItemList = true; } - public enum Average { - ONE_DAY, THREE_DAY, BOTH; - - @Override - public String toString() { - return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name()); - } - } - public static class ItemTooltip { @SerialEntry public boolean enableNPCPrice = true; @@ -580,6 +446,15 @@ public class SkyblockerConfig { public boolean enableAccessoriesHelper = true; } + public enum Average { + ONE_DAY, THREE_DAY, BOTH; + + @Override + public String toString() { + return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name()); + } + } + public static class ItemInfoDisplay { @SerialEntry public boolean attributeShardInfo = true; @@ -661,6 +536,118 @@ public class SkyblockerConfig { public boolean rareDungeonDropEffects = true; } + public static class Hitbox { + @SerialEntry + public boolean oldFarmlandHitbox = false; + + @SerialEntry + public boolean oldLeverHitbox = false; + } + + public static class TitleContainer { + @SerialEntry + public float titleContainerScale = 100; + + @SerialEntry + public int x = 540; + + @SerialEntry + public int y = 10; + + @SerialEntry + public Direction direction = Direction.HORIZONTAL; + + @SerialEntry + public Alignment alignment = Alignment.MIDDLE; + } + + public enum Direction { + HORIZONTAL, VERTICAL; + + @Override + public String toString() { + return switch (this) { + case HORIZONTAL -> "Horizontal"; + case VERTICAL -> "Vertical"; + }; + } + } + + public enum Alignment { + LEFT, RIGHT, MIDDLE; + + @Override + public String toString() { + return switch (this) { + case LEFT -> "Left"; + case RIGHT -> "Right"; + case MIDDLE -> "Middle"; + }; + } + } + + public static class TeleportOverlay { + @SerialEntry + public boolean enableTeleportOverlays = true; + + @SerialEntry + public boolean enableWeirdTransmission = true; + + @SerialEntry + public boolean enableInstantTransmission = true; + + @SerialEntry + public boolean enableEtherTransmission = true; + + @SerialEntry + public boolean enableSinrecallTransmission = true; + + @SerialEntry + public boolean enableWitherImpact = true; + } + + public static class FlameOverlay { + @SerialEntry + public int flameHeight = 100; + + @SerialEntry + public int flameOpacity = 100; + } + + public static class SearchOverlay { + @SerialEntry + public boolean enableBazaar = true; + + @SerialEntry + public boolean enableAuctionHouse = true; + + @SerialEntry + public boolean keepPreviousSearches = false; + + @SerialEntry + public int maxSuggestions = 3; + + @SerialEntry + public int historyLength = 3; + + @SerialEntry + public boolean enableCommands = false; + + @SerialEntry + public List<String> bazaarHistory = new ArrayList<>(); + + @SerialEntry + public List<String> auctionHistory = new ArrayList<>(); + } + + public static class FancyAuctionHouse { + @SerialEntry + public boolean enabled = true; + + @SerialEntry + public boolean highlightCheapBIN = true; + } + public static class Locations { @SerialEntry public Barn barn = new Barn(); @@ -1252,6 +1239,20 @@ public class SkyblockerConfig { public int announcementScale = 3; } + public static class RichPresence { + @SerialEntry + public boolean enableRichPresence = false; + + @SerialEntry + public Info info = Info.LOCATION; + + @SerialEntry + public boolean cycleMode = false; + + @SerialEntry + public String customMessage = "Playing Skyblock"; + } + public enum Info { PURSE, BITS, LOCATION; diff --git a/src/main/java/de/hysky/skyblocker/mixin/accessor/SlotAccessor.java b/src/main/java/de/hysky/skyblocker/mixin/accessor/SlotAccessor.java index b8c5618f..ef11006c 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/accessor/SlotAccessor.java +++ b/src/main/java/de/hysky/skyblocker/mixin/accessor/SlotAccessor.java @@ -7,10 +7,10 @@ import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(Slot.class) public interface SlotAccessor { - @Mutable @Accessor("x") void setX(int x); + @Mutable @Accessor("y") void setY(int y); 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); } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionViewScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionViewScreen.java index a365b799..a8b30a50 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionViewScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionViewScreen.java @@ -1,6 +1,7 @@ package de.hysky.skyblocker.skyblock.auction; import de.hysky.skyblocker.SkyblockerMod; +import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.render.gui.AbstractCustomHypixelGUI; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.PopupScreen; @@ -8,7 +9,6 @@ import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.DirectionalLayoutWidget; import net.minecraft.client.gui.widget.SimplePositioningWidget; import net.minecraft.client.gui.widget.TextWidget; -import net.minecraft.client.item.TooltipContext; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; @@ -198,18 +198,18 @@ public class AuctionViewScreen extends AbstractCustomHypixelGUI<AuctionHouseScre if (priceParsed) return; if (stack.isOf(Items.POISONOUS_POTATO)) { changeState(BuyState.CANT_AFFORD); - getPriceFromTooltip(stack.getTooltip(client.player, TooltipContext.BASIC)); + getPriceFromTooltip(ItemUtils.getNbtTooltips(stack)); buySlotID = slotId; } else if (stack.isOf(Items.GOLD_NUGGET)) { changeState(BuyState.AFFORD); - getPriceFromTooltip(stack.getTooltip(client.player, TooltipContext.BASIC)); + getPriceFromTooltip(ItemUtils.getNbtTooltips(stack)); buySlotID = slotId; } else if (stack.isOf(Items.GOLD_BLOCK)) { changeState(BuyState.TOP_BID); - getPriceFromTooltip(stack.getTooltip(client.player, TooltipContext.BASIC)); + getPriceFromTooltip(ItemUtils.getNbtTooltips(stack)); buySlotID = slotId; } else if (stack.isOf(Items.NAME_TAG)) { - getPriceFromTooltip(stack.getTooltip(client.player, TooltipContext.BASIC)); + getPriceFromTooltip(ItemUtils.getNbtTooltips(stack)); changeProfile = true; buySlotID = slotId; } @@ -264,7 +264,7 @@ public class AuctionViewScreen extends AbstractCustomHypixelGUI<AuctionHouseScre return Optional.ofNullable(res); }, Style.EMPTY).ifPresent(s -> stringAtomicReference.set(stringAtomicReference.get() + s)); } - //System.out.println("Experiment: " + stringAtomicReference.get()); + if (priceString == null) priceString = stringAtomicReference.get(); if (minBid != null) this.minBid = minBid; else this.minBid = priceString; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/EditBidPopup.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/EditBidPopup.java index 86d5c44b..6b90b86c 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/auction/EditBidPopup.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/EditBidPopup.java @@ -1,6 +1,6 @@ package de.hysky.skyblocker.skyblock.auction; -import de.hysky.skyblocker.utils.render.gui.BarebonesPopupScreen; +import de.hysky.skyblocker.utils.render.gui.AbstractPopupScreen; import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; @@ -11,7 +11,7 @@ import net.minecraft.text.Text; import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; -public class EditBidPopup extends BarebonesPopupScreen { +public class EditBidPopup extends AbstractPopupScreen { private DirectionalLayoutWidget layout = DirectionalLayoutWidget.vertical(); private final String minimumBid; private final SignBlockEntity signBlockEntity; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/CategoryTabWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/CategoryTabWidget.java index f200179a..03d91780 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/CategoryTabWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/CategoryTabWidget.java @@ -34,14 +34,11 @@ public class CategoryTabWidget extends ToggleButtonWidget { Identifier identifier = textures.get(true, this.toggled); int x = getX(); if (toggled) x -= 2; - //RenderSystem.disableDepthTest(); context.drawGuiTexture(identifier, x, this.getY(), this.width, this.height); - //RenderSystem.enableDepthTest(); context.drawItem(icon, x + 9, getY() + 5); if (isMouseOver(mouseX, mouseY)) { context.getMatrices().push(); - //context.getMatrices().translate(0, 0, 500f); context.drawTooltip(MinecraftClient.getInstance().textRenderer, icon.getTooltip(MinecraftClient.getInstance().player, TooltipContext.BASIC), mouseX, mouseY); context.getMatrices().pop(); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/RarityWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/RarityWidget.java index a5bc34a3..b6bd42a9 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/RarityWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/RarityWidget.java @@ -2,6 +2,8 @@ package de.hysky.skyblocker.skyblock.auction.widgets; import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.skyblock.auction.SlotClickHandler; +import de.hysky.skyblocker.skyblock.item.ItemRarityBackgrounds; +import de.hysky.skyblocker.skyblock.item.SkyblockItemRarity; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.DrawContext; @@ -9,9 +11,11 @@ import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import java.util.List; +import java.util.Map; public class RarityWidget extends ClickableWidget { @@ -30,7 +34,6 @@ public class RarityWidget extends ClickableWidget { MatrixStack matrices = context.getMatrices(); matrices.push(); matrices.translate(getX(), getY(), 0); - //context.drawText(parent.getTextRender(), String.valueOf(slotId), 0, -9, Colors.RED, true); boolean onLeftArrow = isOnLeftArrow(mouseX); boolean onRightArrow = isOnRightArrow(mouseX); context.drawTexture(TEXTURE, 0, 0, 0, 0, 48, 11, 48, 11); @@ -40,16 +43,15 @@ public class RarityWidget extends ClickableWidget { // Text TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; int textWidth = textRenderer.getWidth(current); - int color = 0xFFEAEAEA; if (textWidth > 34) { + float scale = 34f / textWidth; matrices.push(); - //matrices.translate(-7-getX(), -5.5f-getY(), 0); - matrices.translate(7, 5.5f, 0); - matrices.scale(34.f / textWidth, 34.f / textWidth, 1.f); - context.drawText(textRenderer, current, 0, -textRenderer.fontHeight / 2, color, false); + matrices.translate(0, 5.5, 0); + matrices.scale(scale, scale, 1); + context.drawCenteredTextWithShadow(textRenderer, current, (int) (24 / scale), -textRenderer.fontHeight / 2, color); matrices.pop(); } else { - context.drawText(textRenderer, current, 7, 2, color, false); + context.drawCenteredTextWithShadow(textRenderer, current, 24, 2, color); } matrices.pop(); @@ -57,11 +59,11 @@ public class RarityWidget extends ClickableWidget { } - private boolean isOnRightArrow(int mouseX) { + private boolean isOnRightArrow(double mouseX) { return isHovered() && mouseX - getX() > 40; } - private boolean isOnLeftArrow(int mouseX) { + private boolean isOnLeftArrow(double mouseX) { return isHovered() && mouseX - getX() < 7; } @@ -76,18 +78,27 @@ public class RarityWidget extends ClickableWidget { private List<Text> tooltip = List.of(); private String current = "?"; + private int color = 0xFFEAEAEA; public void setText(List<Text> tooltip, String current) { this.tooltip = tooltip; this.current = current; + for (Map.Entry<String, SkyblockItemRarity> rarity : ItemRarityBackgrounds.LORE_RARITIES.entrySet()) { + if (current.toUpperCase().contains(rarity.getKey())) { + this.color = rarity.getValue().color | 0xFF000000; + return; + } + } + //noinspection DataFlowIssue + this.color = Formatting.GRAY.getColorValue() | 0xFF000000; } @Override public void onClick(double mouseX, double mouseY) { if (slotId == -1) return; - if (isOnLeftArrow((int) mouseX)) { + if (isOnLeftArrow(mouseX)) { onClick.click(slotId, 1); - } else if (isOnRightArrow((int) mouseX)) { + } else if (isOnRightArrow(mouseX)) { onClick.click(slotId, 0); } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/SliderWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/SliderWidget.java index 549980ae..22fa1ad8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/SliderWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/SliderWidget.java @@ -53,7 +53,6 @@ public class SliderWidget<E extends Enum<E> & SliderWidget.OptionInfo> extends C int optionWidth = current.getOptionSize()[0]; int optionHeight = current.getOptionSize()[1]; - //context.drawText(parent.getTextRender(), String.valueOf(slotId), 0, -9, Colors.RED, true); context.drawTexture(current.getBackTexture(), 0, 0, 0, 0, getWidth(), getHeight(), getWidth(), getHeight()); context.drawTexture(current.getOptionTexture(), x, y, 0, 0, optionWidth, optionHeight, optionWidth, optionHeight); if (isHovered()) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/ItemRarityBackgrounds.java b/src/main/java/de/hysky/skyblocker/skyblock/item/ItemRarityBackgrounds.java index c9cdb99a..d4bf3d52 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/ItemRarityBackgrounds.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/ItemRarityBackgrounds.java @@ -26,7 +26,7 @@ import net.minecraft.text.Text; public class ItemRarityBackgrounds { private static final SkyblockerConfig.ItemInfoDisplay CONFIG = SkyblockerConfigManager.get().general.itemInfoDisplay; private static final Supplier<Sprite> SPRITE = () -> MinecraftClient.getInstance().getGuiAtlasManager().getSprite(CONFIG.itemRarityBackgroundStyle.tex); - private static final ImmutableMap<String, SkyblockItemRarity> LORE_RARITIES = ImmutableMap.ofEntries( + public static final ImmutableMap<String, SkyblockItemRarity> LORE_RARITIES = ImmutableMap.ofEntries( Map.entry("ADMIN", SkyblockItemRarity.ADMIN), Map.entry("ULTIMATE", SkyblockItemRarity.ULTIMATE), Map.entry("SPECIAL", SkyblockItemRarity.SPECIAL), //Very special is the same color so this will cover it diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/SkyblockItemRarity.java b/src/main/java/de/hysky/skyblocker/skyblock/item/SkyblockItemRarity.java index 4addeac6..60bda976 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/SkyblockItemRarity.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/SkyblockItemRarity.java @@ -15,16 +15,17 @@ public enum SkyblockItemRarity { UNCOMMON(Formatting.GREEN), COMMON(Formatting.WHITE); + public final int color; public final float r; public final float g; public final float b; SkyblockItemRarity(Formatting formatting) { - @SuppressWarnings("DataFlowIssue") - int rgb = formatting.getColorValue(); + //noinspection DataFlowIssue + this.color = formatting.getColorValue(); - this.r = ((rgb >> 16) & 0xFF) / 255f; - this.g = ((rgb >> 8) & 0xFF) / 255f; - this.b = (rgb & 0xFF) / 255f; + this.r = ((color >> 16) & 0xFF) / 255f; + this.g = ((color >> 8) & 0xFF) / 255f; + this.b = (color & 0xFF) / 255f; } } diff --git a/src/main/java/de/hysky/skyblocker/utils/render/gui/BarebonesPopupScreen.java b/src/main/java/de/hysky/skyblocker/utils/render/gui/AbstractPopupScreen.java index 56b07966..2bd15955 100644 --- a/src/main/java/de/hysky/skyblocker/utils/render/gui/BarebonesPopupScreen.java +++ b/src/main/java/de/hysky/skyblocker/utils/render/gui/AbstractPopupScreen.java @@ -11,11 +11,11 @@ import net.minecraft.util.Identifier; /** * A more bare-bones version of Vanilla's Popup Screen. Meant to be extended. */ -public class BarebonesPopupScreen extends Screen { +public class AbstractPopupScreen extends Screen { private static final Identifier BACKGROUND_TEXTURE = new Identifier("popup/background"); private final Screen backgroundScreen; - protected BarebonesPopupScreen(Text title, Screen backgroundScreen) { + protected AbstractPopupScreen(Text title, Screen backgroundScreen) { super(title); this.backgroundScreen = backgroundScreen; } @@ -44,8 +44,12 @@ public class BarebonesPopupScreen extends Screen { @Override protected void init() { super.init(); - this.backgroundScreen.resize(this.client, width, height); + initTabNavigation(); + } + @Override + protected void initTabNavigation() { + this.backgroundScreen.resize(this.client, this.width, this.height); } @Override |