diff options
| author | Alex <8379108+Alex33856@users.noreply.github.com> | 2025-06-17 14:39:58 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-17 14:39:58 -0400 |
| commit | 69b11e1fe4122f61b47ace47f4529ef58f4e1df9 (patch) | |
| tree | bc3a69f70fa964e9ab3998220017ca9832300d56 /src/main/java | |
| parent | 1f980eae2b1e63ad52dc5179930288a0572940fb (diff) | |
| download | Skyblocker-69b11e1fe4122f61b47ace47f4529ef58f4e1df9.tar.gz Skyblocker-69b11e1fe4122f61b47ace47f4529ef58f4e1df9.tar.bz2 Skyblocker-69b11e1fe4122f61b47ace47f4529ef58f4e1df9.zip | |
Add Deleting Items from AH/BZ Search Overlay History (#1346)
* Add deleting history from ah/bz search overlay
* Switch texture and add comments
Diffstat (limited to 'src/main/java')
3 files changed, 66 insertions, 21 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/ClientPlayerEntityMixin.java b/src/main/java/de/hysky/skyblocker/mixins/ClientPlayerEntityMixin.java index 90879293..f7fd94cd 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/ClientPlayerEntityMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/ClientPlayerEntityMixin.java @@ -67,16 +67,16 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity if (SkyblockerConfigManager.get().uiAndVisuals.searchOverlay.enableAuctionHouse && client.currentScreen.getTitle().getString().toLowerCase().contains("auction")) { if (sign.getText(front).getMessage(3, false).getString().equalsIgnoreCase("enter query")) { SearchOverManager.updateSign(sign, front, true); - client.setScreen(new OverlayScreen(Text.of(""))); + client.setScreen(new OverlayScreen()); ci.cancel(); } } else if (SkyblockerConfigManager.get().uiAndVisuals.searchOverlay.enableBazaar && client.currentScreen.getTitle().getString().toLowerCase().contains("bazaar")) { if (sign.getText(front).getMessage(3, false).getString().equalsIgnoreCase("enter query")) { SearchOverManager.updateSign(sign, front, false); - client.setScreen(new OverlayScreen(Text.of(""))); + client.setScreen(new OverlayScreen()); ci.cancel(); } } } } -}
\ No newline at end of file +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/OverlayScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/OverlayScreen.java index 8ef19596..a41fa47f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/OverlayScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/OverlayScreen.java @@ -1,5 +1,6 @@ package de.hysky.skyblocker.skyblock.searchoverlay; +import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.config.SkyblockerConfigManager; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -20,17 +21,20 @@ import static de.hysky.skyblocker.skyblock.itemlist.ItemRepository.getItemStack; public class OverlayScreen extends Screen { protected static final Identifier SEARCH_ICON_TEXTURE = Identifier.ofVanilla("icon/search"); + protected static final Identifier DELETE_ICON_TEXTURE = Identifier.ofVanilla("textures/gui/sprites/pending_invite/reject.png"); private static final Identifier BACKGROUND_TEXTURE = Identifier.ofVanilla("social_interactions/background"); private static final int rowHeight = 20; + private static final int specialButtonSize = rowHeight; private TextFieldWidget searchField; private ButtonWidget finishedButton; private ButtonWidget maxPetButton; private ButtonWidget dungeonStarButton; private ButtonWidget[] suggestionButtons; private ButtonWidget[] historyButtons; + private ButtonWidget[] deleteButtons; - public OverlayScreen(Text title) { - super(title); + public OverlayScreen() { + super(Text.empty()); } /** @@ -52,8 +56,7 @@ public class OverlayScreen extends Screen { // finish buttons finishedButton = ButtonWidget.builder(Text.literal(""), a -> close()) .position(startX + rowWidth - rowHeight, startY) - .size(rowHeight, rowHeight).build(); - + .size(specialButtonSize, specialButtonSize).build(); // suggested item buttons int rowOffset = rowHeight; @@ -69,24 +72,34 @@ public class OverlayScreen extends Screen { suggestionButtons[i].visible = false; rowOffset += rowHeight; } + // history item buttons rowOffset += (int) (rowHeight * 0.75); int historyLength = SkyblockerConfigManager.get().uiAndVisuals.searchOverlay.historyLength; this.historyButtons = new ButtonWidget[historyLength]; + this.deleteButtons = new ButtonWidget[historyLength]; for (int i = 0; i < historyLength; i++) { String text = SearchOverManager.getHistory(i); if (text != null) { historyButtons[i] = ButtonWidget.builder(Text.literal(text).setStyle(Style.EMPTY), (a) -> { SearchOverManager.updateSearch(a.getMessage().getString()); close(); - }) - .position(startX, startY + rowOffset) - .size(rowWidth, rowHeight).build(); + }).position(startX, startY + rowOffset) + .size(rowWidth-rowHeight, rowHeight).build(); + + final int slotId = i; + deleteButtons[i] = ButtonWidget.builder(Text.empty(), (a) -> { + SearchOverManager.removeHistoryItem(slotId); + clearAndInit(); + }).position(startX+rowWidth-rowHeight, startY + rowOffset) + .tooltip(Tooltip.of(Text.translatable("skyblocker.config.general.searchOverlay.deleteTooltip"))) + .size(specialButtonSize, specialButtonSize).build(); rowOffset += rowHeight; } else { break; } } + //auction only elements if (SearchOverManager.isAuction) { //max pet level button @@ -118,6 +131,11 @@ public class OverlayScreen extends Screen { addDrawableChild(historyOption); } } + for (ButtonWidget deleteButton : deleteButtons) { + if (deleteButton != null) { + addDrawableChild(deleteButton); + } + } addDrawableChild(finishedButton); if (SearchOverManager.isAuction) { @@ -218,6 +236,10 @@ public class OverlayScreen extends Screen { for (int i = 0; i < historyButtons.length; i++) { drawItemAndTooltip(context, mouseX, mouseY, SearchOverManager.getHistoryId(i), historyButtons[i], renderOffset); } + for (ButtonWidget deleteButton : deleteButtons) { + if (deleteButton == null) continue; + context.drawTexture(RenderLayer::getGuiTextured, DELETE_ICON_TEXTURE, deleteButton.getX() + renderOffset, deleteButton.getY() + renderOffset, 0, 0, 16, 16, 16, 16); + } } /** diff --git a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java index ad62c58a..11437233 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java @@ -94,7 +94,7 @@ public class SearchOverManager { updateSearch(itemName); } - CLIENT.send(() -> CLIENT.setScreen(new OverlayScreen(Text.of("")))); + CLIENT.send(() -> CLIENT.setScreen(new OverlayScreen())); return Command.SINGLE_SUCCESS; } @@ -277,6 +277,19 @@ public class SearchOverManager { return namesToNeuId.get(getHistory(index)); } + protected static void removeHistoryItem(int index) { + UIAndVisualsConfig.SearchOverlay config = SkyblockerConfigManager.get().uiAndVisuals.searchOverlay; + if (isAuction) { + if (config.auctionHistory.size() > index) { + config.auctionHistory.remove(index); + } + } else { + if (config.bazaarHistory.size() > index) { + config.bazaarHistory.remove(index); + } + } + } + /** * Add the current search value to the start of the history list and truncate to the max history value and save this to the config */ @@ -284,19 +297,29 @@ public class SearchOverManager { //save to history UIAndVisualsConfig.SearchOverlay config = SkyblockerConfigManager.get().uiAndVisuals.searchOverlay; if (isAuction) { - if (config.auctionHistory.isEmpty() || !config.auctionHistory.getFirst().equals(search)) { + if (config.auctionHistory.isEmpty() || !config.auctionHistory.contains(search)) { + // Add new search to history config.auctionHistory.addFirst(search); - if (config.auctionHistory.size() > config.historyLength) { - config.auctionHistory = config.auctionHistory.subList(0, config.historyLength); - } - } + if (config.auctionHistory.size() > config.historyLength) { + config.auctionHistory = config.auctionHistory.subList(0, config.historyLength); + } + } else { + // Move existing search to the top of the history list + config.auctionHistory.remove(search); + config.auctionHistory.addFirst(search); + } } else { - if (config.bazaarHistory.isEmpty() || !config.bazaarHistory.getFirst().equals(search)) { + if (config.bazaarHistory.isEmpty() || !config.bazaarHistory.contains(search)) { + // Add new search to history config.bazaarHistory.addFirst(search); - if (config.bazaarHistory.size() > config.historyLength) { - config.bazaarHistory = config.bazaarHistory.subList(0, config.historyLength); - } - } + if (config.bazaarHistory.size() > config.historyLength) { + config.bazaarHistory = config.bazaarHistory.subList(0, config.historyLength); + } + } else { + // Move existing search to the top of the history list + config.bazaarHistory.remove(search); + config.bazaarHistory.addFirst(search); + } } SkyblockerConfigManager.save(); } |
