aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/accessor/SlotAccessor.java14
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java20
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionHouseScreenHandler.java40
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/SlotClickHandler.java11
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/AuctionTypeWidget.java66
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/CategoryTabWidget.java61
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/SliderWidget.java110
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/SortWidget.java66
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/all.pngbin0 -> 268 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/auctions.pngbin0 -> 271 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/back.pngbin0 -> 220 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/bin.pngbin0 -> 275 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/hover.pngbin0 -> 142 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/browser/background.pngbin0 -> 1063 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/browser/background_view.pngbin0 -> 837 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/rarity_widget/background.pngbin0 -> 410 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/rarity_widget/hover.pngbin0 -> 137 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/back.pngbin0 -> 186 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/high.pngbin0 -> 295 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/hover.pngbin0 -> 143 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/low.pngbin0 -> 307 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/rand.pngbin0 -> 294 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/soon.pngbin0 -> 305 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/sprites/down_arrow_even.pngbin0 -> 137 bytes
-rw-r--r--src/main/resources/assets/skyblocker/textures/gui/sprites/up_arrow_even.pngbin0 -> 137 bytes
-rw-r--r--src/main/resources/skyblocker.mixins.json5
26 files changed, 392 insertions, 1 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixin/accessor/SlotAccessor.java b/src/main/java/de/hysky/skyblocker/mixin/accessor/SlotAccessor.java
new file mode 100644
index 00000000..2a0a418f
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/mixin/accessor/SlotAccessor.java
@@ -0,0 +1,14 @@
+package de.hysky.skyblocker.mixin.accessor;
+
+import net.minecraft.screen.slot.Slot;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(Slot.class)
+public interface SlotAccessor {
+
+ @Accessor("x")
+ void setX(int x);
+ @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
new file mode 100644
index 00000000..48b528ee
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java
@@ -0,0 +1,20 @@
+package de.hysky.skyblocker.skyblock.auction;
+
+import de.hysky.skyblocker.SkyblockerMod;
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.screen.ingame.HandledScreen;
+import net.minecraft.entity.player.PlayerInventory;
+import net.minecraft.text.Text;
+import net.minecraft.util.Identifier;
+
+public class AuctionBrowserScreen extends HandledScreen<AuctionHouseScreenHandler> {
+ protected static final Identifier TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/auctions_gui/browser/background.png");
+ public AuctionBrowserScreen(AuctionHouseScreenHandler handler, PlayerInventory inventory, Text title) {
+ super(handler, inventory, title);
+ }
+
+ @Override
+ protected void drawBackground(DrawContext context, float delta, int mouseX, int mouseY) {
+ context.drawTexture(TEXTURE, this.x, this.y, 0, 0, this.backgroundWidth, this.backgroundHeight);
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionHouseScreenHandler.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionHouseScreenHandler.java
new file mode 100644
index 00000000..58adfc6c
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionHouseScreenHandler.java
@@ -0,0 +1,40 @@
+package de.hysky.skyblocker.skyblock.auction;
+
+import de.hysky.skyblocker.mixin.accessor.SlotAccessor;
+import net.minecraft.entity.player.PlayerInventory;
+import net.minecraft.inventory.Inventory;
+import net.minecraft.screen.GenericContainerScreenHandler;
+import net.minecraft.screen.ScreenHandlerType;
+import net.minecraft.screen.slot.Slot;
+
+public class AuctionHouseScreenHandler extends GenericContainerScreenHandler {
+ public AuctionHouseScreenHandler(ScreenHandlerType<?> type, int syncId, PlayerInventory playerInventory, Inventory inventory, int rows, boolean isView) {
+ super(type, syncId, playerInventory, inventory, rows);
+
+ int yOffset = (rows - 4) * 18;
+ // Shift player inventory by 2 pixels and also remove the yOffset
+ for (int i = rows*9; i < slots.size(); i++) {
+ SlotAccessor slotAccessor = (SlotAccessor) slots.get(i);
+ slotAccessor.setY(2-yOffset);
+ }
+
+ if (isView) return;
+ // disable ALL THE OTHER SLOTS MWAHAHAHA and also move the good ones around and stuff
+ for (int i = 9; i < (rows-1)*9; i++) {
+ int lineI = i % 9;
+ Slot slot = slots.get(i);
+ if (lineI > 1 && lineI < 8) {
+ SlotAccessor slotAccessor = (SlotAccessor) slot;
+ slotAccessor.setX(8+ lineI * 18);
+ slotAccessor.setY(18 + (i/9 -1) * 18);
+ } else {
+ slots.set(i, new Slot(slot.inventory, slot.getIndex(), slot.x, slot.y){
+ @Override
+ public boolean isEnabled() {
+ return false;
+ }
+ });
+ }
+ }
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/SlotClickHandler.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/SlotClickHandler.java
new file mode 100644
index 00000000..b64a4583
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/SlotClickHandler.java
@@ -0,0 +1,11 @@
+package de.hysky.skyblocker.skyblock.auction;
+
+@FunctionalInterface
+public interface SlotClickHandler {
+
+ void click(int slot, int button);
+
+ default void click(int slot) {
+ click(slot, 0);
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/AuctionTypeWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/AuctionTypeWidget.java
new file mode 100644
index 00000000..64410d72
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/AuctionTypeWidget.java
@@ -0,0 +1,66 @@
+package de.hysky.skyblocker.skyblock.auction.widgets;
+
+import de.hysky.skyblocker.SkyblockerMod;
+import de.hysky.skyblocker.skyblock.auction.SlotClickHandler;
+import net.minecraft.text.Text;
+import net.minecraft.util.Identifier;
+import net.minecraft.util.math.MathHelper;
+
+public class AuctionTypeWidget extends SliderWidget<AuctionTypeWidget.Option> {
+
+ /**
+ * @param x x position
+ * @param y y position
+ * @param slotClick IDK figure it out
+ */
+ public AuctionTypeWidget(int x, int y, SlotClickHandler slotClick) {
+ super(x, y, 17, 17, Text.literal("Auction Type Widget"), slotClick, Option.ALL);
+ }
+
+ public enum Option implements OptionInfo {
+ ALL("all.png"),
+ BIN("bin.png"),
+ AUC("auctions.png");
+
+ private final Identifier texture;
+ private static final String prefix = "textures/gui/auctions_gui/auction_type_widget/";
+ private static final Identifier HOVER_TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, prefix + "hover.png");
+ private static final Identifier BACK_TEXTURE = new Identifier(SkyblockerMod.NAMESPACE,prefix + "back.png");
+
+ Option(String textureName) {
+ texture = new Identifier(SkyblockerMod.NAMESPACE, prefix + textureName);
+ }
+ private static final AuctionTypeWidget.Option[] values = values();
+ public static AuctionTypeWidget.Option get(int ordinal) {return values[MathHelper.clamp(ordinal, 0, values.length-1)];}
+
+ @Override
+ public boolean isVertical() {
+ return true;
+ }
+
+ @Override
+ public int getOffset() {
+ return 4 * ordinal();
+ }
+
+ @Override
+ public int[] getOptionSize() {
+ return new int[]{17, 9};
+ }
+
+ @Override
+ public Identifier getOptionTexture() {
+ return texture;
+ }
+
+ @Override
+ public Identifier getBackTexture() {
+ return BACK_TEXTURE;
+ }
+
+ @Override
+ public Identifier getHoverTexture() {
+ return HOVER_TEXTURE;
+ }
+ }
+}
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
new file mode 100644
index 00000000..6c515e50
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/CategoryTabWidget.java
@@ -0,0 +1,61 @@
+package de.hysky.skyblocker.skyblock.auction.widgets;
+
+import de.hysky.skyblocker.skyblock.auction.SlotClickHandler;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.screen.ButtonTextures;
+import net.minecraft.client.gui.widget.ToggleButtonWidget;
+import net.minecraft.client.item.TooltipContext;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.Identifier;
+import org.jetbrains.annotations.NotNull;
+
+public class CategoryTabWidget extends ToggleButtonWidget {
+ private static final ButtonTextures TEXTURES = new ButtonTextures(new Identifier("recipe_book/tab"), new Identifier("recipe_book/tab_selected"));
+
+ public void setIcon(@NotNull ItemStack icon) {
+ this.icon = icon.copy();
+ }
+
+ private @NotNull ItemStack icon;
+ private final SlotClickHandler slotClick;
+ private int slotId = -1;
+
+ public CategoryTabWidget(@NotNull ItemStack icon, SlotClickHandler slotClick) {
+ super(0, 0, 35, 27, false);
+ this.icon = icon.copy(); // copy prevents item disappearing on click
+ this.slotClick = slotClick;
+ setTextures(TEXTURES);
+ }
+
+ @Override
+ public void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
+ if (textures == null) return;
+ 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();
+ }
+
+ }
+
+ public void setSlotId(int slotId) {
+ this.slotId = slotId;
+ }
+
+ @Override
+ public void onClick(double mouseX, double mouseY) {
+ if (this.toggled || slotId == -1) return;
+ slotClick.click(slotId);
+ this.setToggled(true);
+ }
+}
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
new file mode 100644
index 00000000..97543d23
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/SliderWidget.java
@@ -0,0 +1,110 @@
+package de.hysky.skyblocker.skyblock.auction.widgets;
+
+import de.hysky.skyblocker.skyblock.auction.SlotClickHandler;
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
+import net.minecraft.client.gui.widget.ClickableWidget;
+import net.minecraft.text.Text;
+import net.minecraft.util.Identifier;
+
+import java.util.function.Consumer;
+import java.util.function.DoubleConsumer;
+
+// This is kinda excessive, but I thought it was a good idea
+public class SliderWidget<E extends Enum<E> & SliderWidget.OptionInfo> extends ClickableWidget {
+ private final SlotClickHandler clickSlot;
+ private int button = 0;
+ private int slotId = -1;
+
+ protected E current;
+
+ float posProgress;
+
+ /**
+ *
+ * @param x x position
+ * @param y y position
+ * @param width width
+ * @param height height
+ * @param message probably useless, just put the widget name
+ * @param clickSlot the parent AuctionsBrowser
+ * @param defaultOption the default option <strong>should be the one at ordinal 0</strong>
+ */
+ public SliderWidget(int x, int y, int width, int height, Text message, SlotClickHandler clickSlot, E defaultOption) {
+ super(x, y, width, height, message);
+ this.clickSlot = clickSlot;
+ this.current = defaultOption;
+ posProgress = current.getOffset();
+ }
+
+ @Override
+ protected void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
+ if (posProgress < current.getOffset()) {
+ posProgress += delta * 5;
+ if (posProgress > current.getOffset()) posProgress = current.getOffset();
+ } else if (posProgress > current.getOffset()) {
+ posProgress -= delta * 5;
+ if (posProgress < current.getOffset()) posProgress = current.getOffset();
+ }
+
+
+ context.getMatrices().push();
+ context.getMatrices().translate(getX(), getY(), 0);
+
+ int x = current.isVertical() ? 0: Math.round(posProgress);
+ int y = current.isVertical() ? Math.round(posProgress): 0;
+
+ 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()) {
+ context.drawTexture(current.getHoverTexture(), x, y, 0, 0, optionWidth, optionHeight, optionWidth, optionHeight);
+
+ }
+ context.getMatrices().pop();
+ }
+
+ @Override
+ public void onClick(double mouseX, double mouseY) {
+ if (slotId == -1) return;
+ clickSlot.click(slotId, button);
+ super.onClick(mouseX, mouseY);
+ }
+
+ @Override
+ protected boolean isValidClickButton(int button) {
+ this.button = button;
+ return super.isValidClickButton(button) || button == 1;
+ }
+
+ public void setSlotId(int slotId) {
+ this.slotId = slotId;
+ }
+
+ public void setCurrent(E current) {
+ this.current = current;
+ }
+
+ @Override
+ protected void appendClickableNarrations(NarrationMessageBuilder builder) {}
+ public interface OptionInfo {
+ boolean isVertical();
+
+ /**
+ * @return The current option's position offset from the first option's position
+ */
+ int getOffset();
+
+ int[] getOptionSize();
+
+ Identifier getOptionTexture();
+
+ Identifier getBackTexture();
+
+ Identifier getHoverTexture();
+
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/SortWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/SortWidget.java
new file mode 100644
index 00000000..62c3a497
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/widgets/SortWidget.java
@@ -0,0 +1,66 @@
+package de.hysky.skyblocker.skyblock.auction.widgets;
+
+import de.hysky.skyblocker.SkyblockerMod;
+import de.hysky.skyblocker.skyblock.auction.SlotClickHandler;
+import net.minecraft.text.Text;
+import net.minecraft.util.Identifier;
+import net.minecraft.util.math.MathHelper;
+
+public class SortWidget extends SliderWidget<SortWidget.Option> {
+
+ /**
+ * @param x x position
+ * @param y y position
+ * @param clickSlot the parent AuctionsBrowser
+ */
+ public SortWidget(int x, int y, SlotClickHandler clickSlot) {
+ super(x, y, 36, 9, Text.literal("Sort Widget"), clickSlot, Option.HIGH);
+ }
+
+ public enum Option implements OptionInfo {
+ HIGH("high.png"),
+ LOW("low.png"),
+ SOON("soon.png"),
+ RAND("rand.png");
+
+ private final Identifier texture;
+ private static final String prefix = "textures/gui/auctions_gui/sort_widget/";
+ private static final Identifier HOVER_TEXTURE = new Identifier(SkyblockerMod.NAMESPACE, prefix + "hover.png");
+ private static final Identifier BACK_TEXTURE = new Identifier(SkyblockerMod.NAMESPACE,prefix + "back.png");
+
+ Option(String textureName) {
+ texture = new Identifier(SkyblockerMod.NAMESPACE, prefix + textureName);
+ }
+ public Identifier getOptionTexture() {
+ return texture;
+ }
+
+ private static final Option[] values = values();
+ public static Option get(int ordinal) {return values[MathHelper.clamp(ordinal, 0, values.length-1)];}
+
+ @Override
+ public boolean isVertical() {
+ return false;
+ }
+
+ @Override
+ public int getOffset() {
+ return 5 * ordinal();
+ }
+
+ @Override
+ public int[] getOptionSize() {
+ return new int[]{21, 9};
+ }
+
+ @Override
+ public Identifier getBackTexture() {
+ return BACK_TEXTURE;
+ }
+
+ @Override
+ public Identifier getHoverTexture() {
+ return HOVER_TEXTURE;
+ }
+ }
+}
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/all.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/all.png
new file mode 100644
index 00000000..8842041d
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/all.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/auctions.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/auctions.png
new file mode 100644
index 00000000..1de6b9aa
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/auctions.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/back.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/back.png
new file mode 100644
index 00000000..58e84c34
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/back.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/bin.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/bin.png
new file mode 100644
index 00000000..b816a9fb
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/bin.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/hover.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/hover.png
new file mode 100644
index 00000000..cb55b1f0
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/auction_type_widget/hover.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/browser/background.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/browser/background.png
new file mode 100644
index 00000000..ca52a9e8
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/browser/background.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/browser/background_view.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/browser/background_view.png
new file mode 100644
index 00000000..34bf95c4
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/browser/background_view.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/rarity_widget/background.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/rarity_widget/background.png
new file mode 100644
index 00000000..d55e1973
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/rarity_widget/background.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/rarity_widget/hover.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/rarity_widget/hover.png
new file mode 100644
index 00000000..81ca8ef0
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/rarity_widget/hover.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/back.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/back.png
new file mode 100644
index 00000000..890b98d7
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/back.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/high.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/high.png
new file mode 100644
index 00000000..4e8a455a
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/high.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/hover.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/hover.png
new file mode 100644
index 00000000..eeb6b1c6
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/hover.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/low.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/low.png
new file mode 100644
index 00000000..c53864fc
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/low.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/rand.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/rand.png
new file mode 100644
index 00000000..d7dea847
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/rand.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/soon.png b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/soon.png
new file mode 100644
index 00000000..d72acf59
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/auctions_gui/sort_widget/soon.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/sprites/down_arrow_even.png b/src/main/resources/assets/skyblocker/textures/gui/sprites/down_arrow_even.png
new file mode 100644
index 00000000..94243d0a
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/sprites/down_arrow_even.png
Binary files differ
diff --git a/src/main/resources/assets/skyblocker/textures/gui/sprites/up_arrow_even.png b/src/main/resources/assets/skyblocker/textures/gui/sprites/up_arrow_even.png
new file mode 100644
index 00000000..2243bb95
--- /dev/null
+++ b/src/main/resources/assets/skyblocker/textures/gui/sprites/up_arrow_even.png
Binary files differ
diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json
index 9f5f8240..9a911b86 100644
--- a/src/main/resources/skyblocker.mixins.json
+++ b/src/main/resources/skyblocker.mixins.json
@@ -52,5 +52,8 @@
],
"injectors": {
"defaultRequire": 1
- }
+ },
+ "mixins": [
+ "accessor.SlotAccessor"
+ ]
}