diff options
| author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-11-29 22:42:30 -0500 |
|---|---|---|
| committer | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-12-08 16:10:14 -0500 |
| commit | 58974e524cd0ceccdd1e88e11680807126d6afe6 (patch) | |
| tree | da0aa9255590211fbb028652aabd45be636a1dd0 /src/main/java | |
| parent | b6bfebcfb3a8bb27fcf1e21839b8f5db0b2eee3f (diff) | |
| download | Skyblocker-58974e524cd0ceccdd1e88e11680807126d6afe6.tar.gz Skyblocker-58974e524cd0ceccdd1e88e11680807126d6afe6.tar.bz2 Skyblocker-58974e524cd0ceccdd1e88e11680807126d6afe6.zip | |
1.21.4-rc3
Diffstat (limited to 'src/main/java')
20 files changed, 82 insertions, 719 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/InGameOverlayRendererMixin.java b/src/main/java/de/hysky/skyblocker/mixins/InGameOverlayRendererMixin.java index d3b79efe..38c93253 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/InGameOverlayRendererMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/InGameOverlayRendererMixin.java @@ -9,7 +9,7 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; @Mixin(InGameOverlayRenderer.class) public class InGameOverlayRendererMixin { - @ModifyArg(method = "renderFireOverlay", index = 2, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/BufferBuilder;vertex(Lorg/joml/Matrix4f;FFF)Lnet/minecraft/client/render/VertexConsumer;")) + @ModifyArg(method = "renderFireOverlay", index = 2, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/VertexConsumer;vertex(Lorg/joml/Matrix4f;FFF)Lnet/minecraft/client/render/VertexConsumer;")) private static float configureFlameHeight(float y) { return y - (0.5f - ((float) SkyblockerConfigManager.get().uiAndVisuals.flameOverlay.flameHeight / 200.0f)); } diff --git a/src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureMixin.java b/src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureDownloaderMixin.java index a9c07adc..fe9702c9 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureDownloaderMixin.java @@ -3,9 +3,7 @@ package de.hysky.skyblocker.mixins; import java.awt.Color; import java.util.Set; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -19,11 +17,11 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.item.PlayerHeadHashCache; import de.hysky.skyblocker.utils.Utils; import net.minecraft.client.texture.NativeImage; -import net.minecraft.client.texture.PlayerSkinTexture; +import net.minecraft.client.texture.PlayerSkinTextureDownloader; import net.minecraft.util.math.ColorHelper; -@Mixin(PlayerSkinTexture.class) -public class PlayerSkinTextureMixin { +@Mixin(PlayerSkinTextureDownloader.class) +public class PlayerSkinTextureDownloaderMixin { @Unique private static final Set<String> STRIP_DE_FACTO_TRANSPARENT_PIXELS = Set.of( "4f3b91b6aa7124f30ed4ad1b2bb012a82985a33640555e18e792f96af8f58ec6", /*Titanium Necklace*/ @@ -32,14 +30,10 @@ public class PlayerSkinTextureMixin { @Unique private static final float BRIGHTNESS_THRESHOLD = 0.1f; - @Shadow - @Final - private String url; - @Inject(method = "remapTexture", at = @At("HEAD")) - private void skyblocker$determineSkinSource(NativeImage image, CallbackInfoReturnable<NativeImage> cir, @Share("isSkyblockSkinTexture") LocalBooleanRef isSkyblockSkinTexture) { + private static void skyblocker$determineSkinSource(NativeImage image, String uri, CallbackInfoReturnable<NativeImage> cir, @Share("isSkyblockSkinTexture") LocalBooleanRef isSkyblockSkinTexture) { if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.dontStripSkinAlphaValues) { - String skinTextureHash = PlayerHeadHashCache.getSkinHash(this.url); + String skinTextureHash = PlayerHeadHashCache.getSkinHash(uri); int skinHash = skinTextureHash.hashCode(); isSkyblockSkinTexture.set(PlayerHeadHashCache.contains(skinHash)); @@ -50,8 +44,8 @@ public class PlayerSkinTextureMixin { } } - @WrapWithCondition(method = "remapTexture", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/PlayerSkinTexture;stripAlpha(Lnet/minecraft/client/texture/NativeImage;IIII)V")) - private boolean skyblocker$dontStripAlphaValues(NativeImage image, int x1, int y1, int x2, int y2, @Share("isSkyblockSkinTexture") LocalBooleanRef isSkyblockSkinTexture) { + @WrapWithCondition(method = "remapTexture", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/PlayerSkinTextureDownloader;stripAlpha(Lnet/minecraft/client/texture/NativeImage;IIII)V")) + private static boolean skyblocker$dontStripAlphaValues(NativeImage image, int x1, int y1, int x2, int y2, @Share("isSkyblockSkinTexture") LocalBooleanRef isSkyblockSkinTexture) { return !isSkyblockSkinTexture.get(); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java b/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java index 6ca1f236..d0e1b9f6 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java @@ -68,7 +68,7 @@ public class InventorySearch { // Unfocus when clicking outside @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (isFocused() && !clicked(mouseX, mouseY)) { + if (isFocused() && !isMouseOver(mouseX, mouseY)) { setFocused(false); return false; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java index 1fb763e2..97d593a2 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java @@ -124,7 +124,7 @@ public class ChatRulesConfigListWidget extends ElementListWidget<ChatRulesConfig .build(); deleteButton = ButtonWidget.builder(Text.translatable("selectServer.delete"), a -> { - oldScrollAmount = getScrollAmount(); + oldScrollAmount = getScrollY(); client.setScreen(new ConfirmScreen(this::deleteEntry, Text.translatable("skyblocker.config.chat.chatRules.screen.deleteQuestion"), Text.translatable("skyblocker.config.chat.chatRules.screen.deleteWarning", chatRule.getName()), Text.translatable("selectServer.deleteButton"), ScreenTexts.CANCEL)); }) .size(50, 20) @@ -155,7 +155,7 @@ public class ChatRulesConfigListWidget extends ElementListWidget<ChatRulesConfig } client.setScreen(screen); - setScrollAmount(oldScrollAmount); + setScrollY(oldScrollAmount); } @Override diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/FinderSettingsContainer.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/FinderSettingsContainer.java index 70902a17..955d1a7a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/FinderSettingsContainer.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/FinderSettingsContainer.java @@ -280,4 +280,14 @@ public class FinderSettingsContainer extends ContainerWidget { @Override protected void appendClickableNarrations(NarrationMessageBuilder builder) {} + + @Override + protected int getContentsHeightWithPadding() { + return 0; + } + + @Override + protected double getDeltaYPerScroll() { + return 0; + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/OptionDropdownWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/OptionDropdownWidget.java index d2159751..1088b016 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/OptionDropdownWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/OptionDropdownWidget.java @@ -25,17 +25,15 @@ public class OptionDropdownWidget extends ElementListWidget<OptionDropdownWidget private float animationProgress = 0f; public OptionDropdownWidget(PartyFinderScreen screen, Text name, @Nullable Option selectedOption, int x, int y, int width, int height, int slotId) { - super(screen.getClient(), width, height, y, 15); + super(screen.getClient(), width, height, y, 15, 25); this.screen = screen; this.slotId = slotId; setX(x); - setRenderHeader(true, 25); this.name = name; this.selectedOption = selectedOption; } - @Override - protected boolean clickedHeader(int x, int y) { + private boolean clickedHeader(int x, int y) { if (!(x >= 0 && y >= 10 && x < getWidth() && y < 26)) return false; if (screen.isWaitingForServer()) return false; if (isOpen) { @@ -74,7 +72,14 @@ public class OptionDropdownWidget extends ElementListWidget<OptionDropdownWidget screen.clickAndWaitForServer(backButtonId); return true; } - return super.mouseClicked(mouseX, mouseY, button); + + boolean superClicked = super.mouseClicked(mouseX, mouseY, button); + + if (!superClicked && clickedHeader((int)(mouseX - (double)(this.getX() + this.width / 2 - this.getRowWidth() / 2)), (int)(mouseY - (double)this.getY()) + (int)this.getScrollY() - 4)) { + return true; + } + + return superClicked; } @Override diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java index 385b97f0..6a4e189a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java @@ -94,7 +94,7 @@ public class PartyEntryListWidget extends ElementListWidget<PartyEntry> { if (children().isEmpty()) { Text string = Text.translatable("skyblocker.partyFinder.loadingError"); TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; - context.drawTextWrapped(textRenderer, string, getRowLeft(), getY() + 10, getRowWidth(), 0xFFFFFFFF); + context.drawWrappedText(textRenderer, string, getRowLeft(), getY() + 10, getRowWidth(), 0xFFFFFFFF, false); } else super.renderWidget(context, mouseX, mouseY, delta); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/RangedValueWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/RangedValueWidget.java index 0fcd9d1b..fc6f09ff 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/RangedValueWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/RangedValueWidget.java @@ -266,4 +266,14 @@ public class RangedValueWidget extends ContainerWidget { @Override protected void appendClickableNarrations(NarrationMessageBuilder builder) {} + + @Override + protected int getContentsHeightWithPadding() { + return 0; + } + + @Override + protected double getDeltaYPerScroll() { + return 0; + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarColorPopup.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarColorPopup.java index 64e79bab..c98e18f8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarColorPopup.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarColorPopup.java @@ -113,5 +113,15 @@ public class EditBarColorPopup extends AbstractPopupScreen { super.setY(y); textFieldWidget.setY(getY()); } + + @Override + protected int getContentsHeightWithPadding() { + return 0; + } + + @Override + protected double getDeltaYPerScroll() { + return 0; + } } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarWidget.java index f74d53da..e3a94bcd 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarWidget.java @@ -324,4 +324,14 @@ public class EditBarWidget extends ContainerWidget { this.onChange = onChange; } } -} + + @Override + protected int getContentsHeightWithPadding() { + return 0; + } + + @Override + protected double getDeltaYPerScroll() { + return 0; + } +}
\ No newline at end of file diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListTab.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListTab.java deleted file mode 100644 index 3493216b..00000000 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListTab.java +++ /dev/null @@ -1,93 +0,0 @@ -package de.hysky.skyblocker.skyblock.itemlist; - -import com.mojang.blaze3d.systems.RenderSystem; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.Element; -import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; -import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; - -import java.util.List; - -@Deprecated(forRemoval = true) -public class ItemListTab extends ItemListWidget.TabContainerWidget { - - private SearchResultsWidget results; - private final MinecraftClient client; - private TextFieldWidget searchField; - - public ItemListTab(int x, int y, MinecraftClient client, TextFieldWidget searchField) { - super(x, y, Text.literal("Item List Tab")); - this.client = client; - this.searchField = searchField; - if (ItemRepository.filesImported()) { - this.results = new SearchResultsWidget(this.client, x - 9, y - 9 ); - this.results.updateSearchResult(searchField == null ? "": this.searchField.getText()); - } - } - - @Override - public List<? extends Element> children() { - return List.of(results, searchField); - } - - @Override - protected void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) { - MatrixStack matrices = context.getMatrices(); - matrices.push(); - matrices.translate(0.0D, 0.0D, 100.0D); - RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - int x = getX(); - int y = getY(); - - // all coordinates offseted -9 - if (!ItemRepository.filesImported() && !this.searchField.isFocused() && this.searchField.getText().isEmpty()) { - Text hintText = (Text.literal("Loading...")).formatted(Formatting.ITALIC).formatted(Formatting.GRAY); - context.drawTextWithShadow(this.client.textRenderer, hintText, x + 16, y + 7, -1); - } else if (!this.searchField.isFocused() && this.searchField.getText().isEmpty()) { - Text hintText = (Text.translatable("gui.recipebook.search_hint")).formatted(Formatting.ITALIC).formatted(Formatting.GRAY); - context.drawTextWithShadow(this.client.textRenderer, hintText, x + 16, y + 7, -1); - } else { - this.searchField.render(context, mouseX, mouseY, delta); - } - if (ItemRepository.filesImported()) { - if (results == null) { - this.results = new SearchResultsWidget(this.client, x - 9, y - 9); - } - this.results.updateSearchResult(this.searchField.getText()); - this.results.render(context, mouseX, mouseY, delta); - } - matrices.pop(); - } - - @Override - protected void appendClickableNarrations(NarrationMessageBuilder builder) {} - - public void setSearchField(TextFieldWidget searchField) { - this.searchField = searchField; - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (!visible) return false; - if (this.searchField.mouseClicked(mouseX, mouseY, button) && this.results != null) { - this.results.closeRecipeView(); - this.searchField.setFocused(true); - return true; - } else if (results != null) { - this.searchField.setFocused(false); - - return this.results.mouseClicked(mouseX, mouseY, button); - } - - return false; - } - - @Override - public void drawTooltip(DrawContext context, int mouseX, int mouseY) { - if (this.results != null) this.results.drawTooltip(context, mouseX, mouseY); - } -} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListWidget.java deleted file mode 100644 index 62458c0d..00000000 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListWidget.java +++ /dev/null @@ -1,136 +0,0 @@ -package de.hysky.skyblocker.skyblock.itemlist; - -import de.hysky.skyblocker.mixins.accessors.RecipeBookWidgetAccessor; -import de.hysky.skyblocker.utils.render.gui.SideTabButtonWidget; -import it.unimi.dsi.fastutil.Pair; -import it.unimi.dsi.fastutil.objects.ObjectObjectImmutablePair; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; -import net.minecraft.client.gui.tooltip.Tooltip; -import net.minecraft.client.gui.widget.ContainerWidget; -import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.screen.AbstractRecipeScreenHandler; -import net.minecraft.text.Text; - -import java.util.ArrayList; -import java.util.List; - -@Environment(value = EnvType.CLIENT) -@Deprecated(forRemoval = true) -public class ItemListWidget /*extends RecipeBookWidget*/ { - /*private int parentWidth; - private int parentHeight; - private int leftOffset; - - private TabContainerWidget currentTabContent; - private final List<Pair<SideTabButtonWidget, TabContainerWidget>> tabs = new ArrayList<>(2); - private ItemListTab itemListTab; - - private static int currentTab = 0; - - public ItemListWidget() { - super(); - } - - @Override - public void initialize(int parentWidth, int parentHeight, MinecraftClient client, boolean narrow, AbstractRecipeScreenHandler<?, ?> craftingScreenHandler) { - super.initialize(parentWidth, parentHeight, client, narrow, craftingScreenHandler); - this.parentWidth = parentWidth; - this.parentHeight = parentHeight; - this.leftOffset = narrow ? 0 : 86; - TextFieldWidget searchField = ((RecipeBookWidgetAccessor) this).getSearchField(); - int x = (parentWidth - 147) / 2 - leftOffset; - int y = (parentHeight - 166) / 2; - - // Init all the tabs, content and the tab button on the left - tabs.clear(); - - // Item List - itemListTab = new ItemListTab(x + 9, y + 9, this.client, searchField); - SideTabButtonWidget itemListTabButton = new SideTabButtonWidget(x - 30, y + 3, currentTab == 0, new ItemStack(Items.CRAFTING_TABLE)); - itemListTabButton.setTooltip(Tooltip.of(Text.literal("Item List"))); - if (currentTab == 0) currentTabContent = itemListTab; - tabs.add(new ObjectObjectImmutablePair<>( - itemListTabButton, - this.itemListTab)); - - // Upcoming Events - UpcomingEventsTab upcomingEventsTab = new UpcomingEventsTab(x + 9, y + 9, this.client); - SideTabButtonWidget eventsTabButtonWidget = new SideTabButtonWidget(x - 30, y + 3 + 27, currentTab == 1, new ItemStack(Items.CLOCK)); - eventsTabButtonWidget.setTooltip(Tooltip.of(Text.literal("Upcoming Events"))); - if (currentTab == 1) currentTabContent = upcomingEventsTab; - tabs.add(new ObjectObjectImmutablePair<>( - eventsTabButtonWidget, - upcomingEventsTab - )); - - } - - @Override - public void reset() { - super.reset(); - if (itemListTab != null) itemListTab.setSearchField(((RecipeBookWidgetAccessor) this).getSearchField()); - } - - @Override - public void render(DrawContext context, int mouseX, int mouseY, float delta) { - if (this.isOpen()) { - int i = (this.parentWidth - 147) / 2 - this.leftOffset; - int j = (this.parentHeight - 166) / 2; - // Draw the texture - context.drawTexture(TEXTURE, i, j, 1, 1, 147, 166); - // Draw the tab's content - if (currentTabContent != null) currentTabContent.render(context, mouseX, mouseY, delta); - // Draw the tab buttons - for (Pair<SideTabButtonWidget, TabContainerWidget> tab : tabs) { - tab.left().render(context, mouseX, mouseY, delta); - } - - } - } - - @Override - public void drawTooltip(DrawContext context, int x, int y, int mouseX, int mouseY) { - if (this.isOpen() && currentTabContent != null) { - this.currentTabContent.drawTooltip(context, mouseX, mouseY); - } - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (this.isOpen() && this.client.player != null && !this.client.player.isSpectator()) { - // check if a tab is clicked - for (Pair<SideTabButtonWidget, TabContainerWidget> tab : tabs) { - if (tab.first().mouseClicked(mouseX, mouseY, button) && currentTabContent != tab.right()) { - for (Pair<SideTabButtonWidget, TabContainerWidget> tab2 : tabs) { - tab2.first().setToggled(false); - } - tab.first().setToggled(true); - currentTabContent = tab.right(); - currentTab = tabs.indexOf(tab); - return true; - } - } - // click the tab content - if (currentTabContent != null) return currentTabContent.mouseClicked(mouseX, mouseY, button); - else return false; - } else return false; - }*/ - - /** - * A container widget but with a fixed width and height and a drawTooltip method to implement - */ - public abstract static class TabContainerWidget extends ContainerWidget { - - public TabContainerWidget(int x, int y, Text text) { - super(x, y, 131, 150, text); - } - - public abstract void drawTooltip(DrawContext context, int mouseX, int mouseY); - } -}
\ No newline at end of file diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java deleted file mode 100644 index 91c7a7bc..00000000 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java +++ /dev/null @@ -1,53 +0,0 @@ -package de.hysky.skyblocker.skyblock.itemlist; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; -import net.minecraft.client.gui.widget.ClickableWidget; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.item.ItemStack; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; - -import java.util.List; - -@Deprecated(forRemoval = true) -public class ResultButtonWidget extends ClickableWidget { - private static final Identifier BACKGROUND_TEXTURE = Identifier.ofVanilla("recipe_book/slot_craftable"); - - protected ItemStack itemStack = null; - - public ResultButtonWidget(int x, int y) { - super(x, y, 25, 25, Text.literal("")); - } - - protected void setItemStack(ItemStack itemStack) { - this.active = !itemStack.isEmpty(); - this.visible = true; - this.itemStack = itemStack; - } - - protected void clearItemStack() { - this.visible = false; - this.itemStack = null; - } - - @Override - public void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) { - MinecraftClient client = MinecraftClient.getInstance(); - context.drawGuiTexture(RenderLayer::getGuiTextured, BACKGROUND_TEXTURE, this.getX(), this.getY(), this.getWidth(), this.getHeight()); - context.drawItem(this.itemStack, this.getX() + 4, this.getY() + 4); - context.drawStackOverlay(client.textRenderer, itemStack, this.getX() + 4, this.getY() + 4); - } - - public void renderTooltip(DrawContext context, int mouseX, int mouseY) { - MinecraftClient client = MinecraftClient.getInstance(); - if (client.currentScreen == null) return; - List<Text> tooltip = Screen.getTooltipFromItem(client, this.itemStack); - client.currentScreen.setTooltip(tooltip.stream().map(Text::asOrderedText).toList()); - } - - @Override - protected void appendClickableNarrations(NarrationMessageBuilder builder) {} -} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/SearchResultsWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/itemlist/SearchResultsWidget.java deleted file mode 100644 index 19bd05cc..00000000 --- a/src/main/java/de/hysky/skyblocker/skyblock/itemlist/SearchResultsWidget.java +++ /dev/null @@ -1,228 +0,0 @@ -package de.hysky.skyblocker.skyblock.itemlist; - -import com.mojang.blaze3d.systems.RenderSystem; -import de.hysky.skyblocker.utils.ItemUtils; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.Drawable; -import net.minecraft.client.gui.Element; -import net.minecraft.client.gui.screen.ButtonTextures; -import net.minecraft.client.gui.widget.ToggleButtonWidget; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.LoreComponent; -import net.minecraft.item.ItemStack; -import net.minecraft.text.OrderedText; -import net.minecraft.text.StringVisitable; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; -import net.minecraft.util.Language; - -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - -@Deprecated(forRemoval = true) -public class SearchResultsWidget implements Drawable, Element { - private static final ButtonTextures PAGE_FORWARD_TEXTURES = new ButtonTextures(Identifier.ofVanilla("recipe_book/page_forward"), Identifier.ofVanilla("recipe_book/page_forward_highlighted")); - private static final ButtonTextures PAGE_BACKWARD_TEXTURES = new ButtonTextures(Identifier.ofVanilla("recipe_book/page_backward"), Identifier.ofVanilla("recipe_book/page_backward_highlighted")); - private static final int COLS = 5; - private static final int MAX_TEXT_WIDTH = 124; - private static final String ELLIPSIS = "..."; - - private final MinecraftClient client; - private final int parentX; - private final int parentY; - - private final List<ItemStack> searchResults = new ArrayList<>(); - private List<SkyblockCraftingRecipe> recipeResults = new ArrayList<>(); - private String searchText = null; - private final List<ResultButtonWidget> resultButtons = new ArrayList<>(); - private final ToggleButtonWidget nextPageButton; - private final ToggleButtonWidget prevPageButton; - private int currentPage = 0; - private int pageCount = 0; - private boolean displayRecipes = false; - - public SearchResultsWidget(MinecraftClient client, int parentX, int parentY) { - this.client = client; - this.parentX = parentX; - this.parentY = parentY; - int gridX = parentX + 11; - int gridY = parentY + 31; - int rows = 4; - for (int i = 0; i < rows; ++i) - for (int j = 0; j < COLS; ++j) { - int x = gridX + j * 25; - int y = gridY + i * 25; - resultButtons.add(new ResultButtonWidget(x, y)); - } - this.nextPageButton = new ToggleButtonWidget(parentX + 93, parentY + 137, 12, 17, false); - this.nextPageButton.setTextures(PAGE_FORWARD_TEXTURES); - this.prevPageButton = new ToggleButtonWidget(parentX + 38, parentY + 137, 12, 17, true); - this.prevPageButton.setTextures(PAGE_BACKWARD_TEXTURES); - } - - public void closeRecipeView() { - this.currentPage = 0; - this.pageCount = (this.searchResults.size() - 1) / resultButtons.size() + 1; - this.displayRecipes = false; - this.updateButtons(); - } - - protected void updateSearchResult(String searchText) { - searchText = searchText.toLowerCase(Locale.ENGLISH); - - if (!searchText.equals(this.searchText)) { - this.searchText = searchText; - this.searchResults.clear(); - for (ItemStack entry : ItemRepository.getItems()) { - String name = entry.getName().toString().toLowerCase(Locale.ENGLISH); - LoreComponent lore = entry.getOrDefault(DataComponentTypes.LORE, LoreComponent.DEFAULT); - if (name.contains(this.searchText) || lore.lines().stream().map(Text::getString).anyMatch(s -> s.contains(this.searchText))) - this.searchResults.add(entry); - } - this.currentPage = 0; - this.pageCount = (this.searchResults.size() - 1) / resultButtons.size() + 1; - this.displayRecipes = false; - this.updateButtons(); |
