aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAlex <8379108+Alex33856@users.noreply.github.com>2025-06-17 14:39:58 -0400
committerGitHub <noreply@github.com>2025-06-17 14:39:58 -0400
commit69b11e1fe4122f61b47ace47f4529ef58f4e1df9 (patch)
treebc3a69f70fa964e9ab3998220017ca9832300d56 /src/main/java
parent1f980eae2b1e63ad52dc5179930288a0572940fb (diff)
downloadSkyblocker-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')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/ClientPlayerEntityMixin.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/OverlayScreen.java36
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java45
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();
}