aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--build.gradle6
-rw-r--r--gradle.properties14
-rw-r--r--gradle/wrapper/gradle-wrapper.properties2
-rw-r--r--src/main/java/de/hysky/skyblocker/debug/SnapshotDebug.java24
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java20
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/InGameOverlayRendererMixin.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureDownloaderMixin.java (renamed from src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureMixin.java)24
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java44
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/StaminaTestHelper.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/FinderSettingsContainer.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/OptionDropdownWidget.java14
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/PartyEntryListWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dungeon/partyfinder/RangedValueWidget.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarColorPopup.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/fancybars/EditBarWidget.java12
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorAnimatedDyes.java29
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListTab.java93
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/ItemListWidget.java136
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java53
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/SearchResultsWidget.java228
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/itemlist/UpcomingEventsTab.java168
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/utils/SubPageSelectButton.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/shortcut/ShortcutsConfigScreen.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/waypoint/DropdownWidget.java25
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/ApiAuthentication.java6
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/ColorUtils.java23
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/OkLabColor.java104
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/RenderHelper.java92
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/render/SkyblockerRenderLayers.java21
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java9
-rw-r--r--src/main/resources/fabric.mod.json8
-rw-r--r--src/main/resources/skyblocker.mixins.json2
-rw-r--r--src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointTest.java1
37 files changed, 362 insertions, 852 deletions
diff --git a/README.md b/README.md
index a2152a94..614a21a7 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
\
[![Discord](https://img.shields.io/discord/879732108745125969?logo=discord&labelColor=cecece&color=7289DA&label=)](https://discord.com/invite/aNNJHQykck)
-Hypixel Skyblock Mod for Minecraft 1.21.2 & 1.21.3
+Hypixel Skyblock Mod for Minecraft 1.21.4
Installation guide is [here](https://github.com/SkyblockerMod/Skyblocker/wiki/installation) or use our [Modpack](https://modrinth.com/modpack/skyblocker-modpack)
## Features
diff --git a/build.gradle b/build.gradle
index 375f80e1..4e2fcc4f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,7 @@
plugins {
- id 'fabric-loom' version '1.8-SNAPSHOT'
+ id 'fabric-loom' version '1.9-SNAPSHOT'
id 'maven-publish'
- id "me.modmuss50.mod-publish-plugin" version "0.7.4"
+ id "me.modmuss50.mod-publish-plugin" version "0.8.1"
id "de.hysky.skyblocker.annotation-processor"
}
@@ -286,4 +286,4 @@ publishing {
// The repositories here will be used for publishing your artifact, not for
// retrieving dependencies.
}
-} \ No newline at end of file
+}
diff --git a/gradle.properties b/gradle.properties
index 1eae9d00..02a97e8a 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,18 +2,18 @@ org.gradle.jvmargs=-Xmx1G -Dfile.encoding=UTF-8 -Duser.language=en -Duser.countr
org.gradle.parallel=true
# Fabric Properties (https://fabricmc.net/versions.html)
-## 1.21.2
-minecraft_version=1.21.3
-yarn_mappings=1.21.3+build.2
-loader_version=0.16.7
+## 1.21.4
+minecraft_version=1.21.4
+yarn_mappings=1.21.4+build.1
+loader_version=0.16.9
#Fabric api
-## 1.21.2
-fabric_api_version=0.106.1+1.21.3
+## 1.21.4
+fabric_api_version=0.111.0+1.21.4
# Minecraft Mods
## YACL (https://github.com/isXander/YetAnotherConfigLib)
-yacl_version=3.6.1+1.21.2
+yacl_version=3.6.2+1.21.4
## HM API (https://github.com/AzureAaron/hm-api)
hm_api_version=1.0.1+1.21.2
## Mod Menu (https://modrinth.com/mod/modmenu/versions)
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index df97d72b..e2847c82 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/src/main/java/de/hysky/skyblocker/debug/SnapshotDebug.java b/src/main/java/de/hysky/skyblocker/debug/SnapshotDebug.java
index bd4abd2c..0f70d651 100644
--- a/src/main/java/de/hysky/skyblocker/debug/SnapshotDebug.java
+++ b/src/main/java/de/hysky/skyblocker/debug/SnapshotDebug.java
@@ -4,14 +4,17 @@ import de.hysky.skyblocker.utils.render.RenderHelper;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
import net.minecraft.SharedConstants;
+import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
public class SnapshotDebug {
+ private static final MinecraftClient CLIENT = MinecraftClient.getInstance();
private static final float[] RED = { 1.0f, 0.0f, 0.0f };
private static final float ALPHA = 0.5f;
private static final float LINE_WIDTH = 8f;
+ private static final long AARON_WORLD_SEED = 5629719634239627355L;
private static boolean isInSnapshot() {
return !SharedConstants.getGameVersion().isStable();
@@ -24,9 +27,22 @@ public class SnapshotDebug {
}
private static void renderTest(WorldRenderContext wrc) {
- RenderHelper.renderFilledWithBeaconBeam(wrc, new BlockPos(175, 63, -14), RED, ALPHA, true);
- RenderHelper.renderLinesFromPoints(wrc, new Vec3d[] { new Vec3d(173, 66, -7.5), new Vec3d(178, 66, -7.5) }, RED, ALPHA, LINE_WIDTH, false);
- RenderHelper.renderQuad(wrc, new Vec3d[] { new Vec3d(183, 66, -16), new Vec3d(183, 63, -16), new Vec3d(183, 63, -14), new Vec3d(183, 66, -14) }, RED, ALPHA, false);
- RenderHelper.renderText(wrc, Text.of("Skyblocker on " + SharedConstants.getGameVersion().getName() + "!"), new Vec3d(175.5, 67.5, -7.5), false);
+ if (getSeed() == AARON_WORLD_SEED) {
+ RenderHelper.renderFilledWithBeaconBeam(wrc, new BlockPos(175, 63, -14), RED, ALPHA, true);
+ RenderHelper.renderLinesFromPoints(wrc, new Vec3d[] { new Vec3d(173, 66, -7.5), new Vec3d(178, 66, -7.5) }, RED, ALPHA, LINE_WIDTH, false);
+ RenderHelper.renderQuad(wrc, new Vec3d[] { new Vec3d(183, 66, -16), new Vec3d(183, 63, -16), new Vec3d(183, 63, -14), new Vec3d(183, 66, -14) }, RED, ALPHA, false);
+ RenderHelper.renderText(wrc, Text.of("Skyblocker on " + SharedConstants.getGameVersion().getName() + "!"), new Vec3d(175.5, 67.5, -7.5), false);
+ } else {
+ RenderHelper.renderFilledWithBeaconBeam(wrc, new BlockPos(-3, 63, 5), RED, ALPHA, true);
+ RenderHelper.renderOutline(wrc, new BlockPos(-3, 63, 5), RED, 5, true); // Use waypoint default line width
+ RenderHelper.renderLinesFromPoints(wrc, new Vec3d[] { new Vec3d(-2, 65, 6.5), new Vec3d(3, 65, 6.5) }, RED, ALPHA, LINE_WIDTH, false);
+ RenderHelper.renderLineFromCursor(wrc, new Vec3d(-2.5, 63.5, 5.5), RED, ALPHA, LINE_WIDTH);
+ RenderHelper.renderQuad(wrc, new Vec3d[] { new Vec3d(3, 66, 3), new Vec3d(3, 63, 3), new Vec3d(3, 63, 5), new Vec3d(3, 66, 5) }, RED, ALPHA, false);
+ RenderHelper.renderText(wrc, Text.of("Skyblocker on " + SharedConstants.getGameVersion().getName() + "!"), new Vec3d(0.5, 66.5, 6.5), false);
+ }
+ }
+
+ private static long getSeed() {
+ return CLIENT.isIntegratedServerRunning() ? CLIENT.getServer().getOverworld().getSeed() : 0L;
}
}
diff --git a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java
index fc9381b9..c833d06c 100644
--- a/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java
+++ b/src/main/java/de/hysky/skyblocker/mixins/HandledScreenMixin.java
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.mixins;
+import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import com.llamalad7.mixinextras.sugar.Local;
import com.mojang.blaze3d.systems.RenderSystem;
@@ -22,9 +23,11 @@ import de.hysky.skyblocker.utils.ItemUtils;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.container.ContainerSolver;
import de.hysky.skyblocker.utils.container.ContainerSolverManager;
+import net.fabricmc.fabric.api.client.screen.v1.Screens;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.HandledScreen;
+import net.minecraft.client.gui.widget.ClickableWidget;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.inventory.SimpleInventory;
import net.minecraft.item.ItemStack;
@@ -48,6 +51,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
import java.util.regex.Matcher;
@@ -144,6 +148,22 @@ public abstract class HandledScreenMixin<T extends ScreenHandler> extends Screen
}
}
+ @ModifyExpressionValue(method = "mouseClicked", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;mouseClicked(DDI)Z"))
+ public boolean skyblocker$passThroughSearchFieldUnfocusedClicks(boolean superClicked, double mouseX, double mouseY, int button) {
+ //Handle Search Field clicks - as of 1.21.4 the game will only send clicks to the selected element rather than trying to send one to each and stopping when the first returns true (if any).
+ if (!superClicked) {
+ Optional<ClickableWidget> searchField = Screens.getButtons(this).stream()
+ .filter(InventorySearch.SearchTextFieldWidget.class::isInstance)
+ .findFirst();
+
+ if (searchField.isPresent() && searchField.get().mouseClicked(mouseX, mouseY, button)) {
+ return true;
+ }
+ }
+
+ return superClicked;
+ }
+
/**
* Draws the unselected tabs in front of the background blur, but behind the main inventory, similar to creative inventory tabs
*/
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..f959e2d7 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;
@@ -17,13 +15,15 @@ import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.item.PlayerHeadHashCache;
+import de.hysky.skyblocker.skyblock.profileviewer.ProfileViewerScreen;
import de.hysky.skyblocker.utils.Utils;
+import net.minecraft.client.MinecraftClient;
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 +32,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) {
- if (Utils.isOnSkyblock() && SkyblockerConfigManager.get().uiAndVisuals.dontStripSkinAlphaValues) {
- String skinTextureHash = PlayerHeadHashCache.getSkinHash(this.url);
+ private static void skyblocker$determineSkinSource(NativeImage image, String uri, CallbackInfoReturnable<NativeImage> cir, @Share("isSkyblockSkinTexture") LocalBooleanRef isSkyblockSkinTexture) {
+ if (SkyblockerConfigManager.get().uiAndVisuals.dontStripSkinAlphaValues && (Utils.isOnSkyblock() || MinecraftClient.getInstance().currentScreen instanceof ProfileViewerScreen)) {
+ String skinTextureHash = PlayerHeadHashCache.getSkinHash(uri);
int skinHash = skinTextureHash.hashCode();
isSkyblockSkinTexture.set(PlayerHeadHashCache.contains(skinHash));
@@ -50,8 +46,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/CompactDamage.java b/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java
index 8285a823..96de8e2e 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java
@@ -1,7 +1,7 @@
package de.hysky.skyblocker.skyblock;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
-import de.hysky.skyblocker.skyblock.item.CustomArmorAnimatedDyes;
+import de.hysky.skyblocker.utils.OkLabColor;
import net.minecraft.entity.decoration.ArmorStandEntity;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
@@ -57,10 +57,10 @@ public class CompactDamage {
int length = prettifiedDmg.length();
for (int i = 0; i < length; i++) {
prettierCustomName.append(Text.literal(prettifiedDmg.substring(i, i + 1)).withColor(
- CustomArmorAnimatedDyes.interpolate(
+ OkLabColor.interpolate(
SkyblockerConfigManager.get().uiAndVisuals.compactDamage.critDamageGradientStart.getRGB() & 0x00FFFFFF,
SkyblockerConfigManager.get().uiAndVisuals.compactDamage.critDamageGradientEnd.getRGB() & 0x00FFFFFF,
- i / (length - 1.0)
+ i / (length - 1.0f)
)
));
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java b/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java
index 6ca1f236..d1e147ce 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/InventorySearch.java
@@ -57,24 +57,7 @@ public class InventorySearch {
private static @NotNull TextFieldWidget getTextFieldWidget(HandledScreen<?> handledScreen) {
// Slightly modified text field widget
- TextFieldWidget textFieldWidget = new TextFieldWidget(Screens.getTextRenderer(handledScreen), 120, 20, Text.literal("Search Inventory")) {
- @Override
- public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
- // Makes the widget catch all key presses (except escape) to fix closing the inventory when pressing E
- // also check that the widget is focused and active
- return super.keyPressed(keyCode, scanCode, modifiers) || (keyCode != GLFW.GLFW_KEY_ESCAPE && this.isNarratable() && this.isFocused());
- }
-
- // Unfocus when clicking outside
- @Override
- public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (isFocused() && !clicked(mouseX, mouseY)) {
- setFocused(false);
- return false;
- }
- return super.mouseClicked(mouseX, mouseY, button);
- }
- };
+ TextFieldWidget textFieldWidget = new SearchTextFieldWidget(handledScreen);
textFieldWidget.setPosition((handledScreen.width - textFieldWidget.getWidth()) / 2, 15);
textFieldWidget.setPlaceholder(Text.translatable("gui.socialInteractions.search_hint"));
textFieldWidget.setText(search); // Restore previous search
@@ -106,7 +89,6 @@ public class InventorySearch {
* Button to open the search bar, for accessibility reasons (pojav and general preferences)
*/
private static class SearchTextWidget extends TextWidget {
-
private final Text underlinedText;
private final Text normalText;
private final HandledScreen<?> screen;
@@ -137,4 +119,28 @@ public class InventorySearch {
super.renderWidget(context, mouseX, mouseY, delta);
}
}
+
+ public static class SearchTextFieldWidget extends TextFieldWidget {
+ public SearchTextFieldWidget(HandledScreen<?> handledScreen) {
+ super(Screens.getTextRenderer(handledScreen), 120, 20, Text.literal("Search Inventory"));
+ }
+
+ @Override
+ public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
+ // Makes the widget catch all key presses (except escape) to fix closing the inventory when pressing E
+ // also check that the widget is focused and active
+ return super.keyPressed(keyCode, scanCode, modifiers) || (keyCode != GLFW.GLFW_KEY_ESCAPE && this.isNarratable() && this.isFocused());
+ }
+
+ // Unfocus when clicking outside
+ @Override
+ public boolean mouseClicked(double mouseX, double mouseY, int button) {
+ if (isFocused() && !isMouseOver(mouseX, mouseY)) {
+ setFocused(false);
+ return false;
+ }
+
+ return super.mouseClicked(mouseX, mouseY, button);
+ }
+ }
}
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/crimson/dojo/StaminaTestHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/StaminaTestHelper.java
index 3f7dfe56..ee490cf2 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/StaminaTestHelper.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/crimson/dojo/StaminaTestHelper.java
@@ -262,7 +262,7 @@ public class StaminaTestHelper {
BlockPos playerPos = CLIENT.player.getBlockPos();
for (Box hole : wallHoles) {
float[] color = isHoleIncoming(hole, holeDirections.get(hole), playerPos) ? INCOMING_COLOR : OUTGOING_COLOR;
- RenderHelper.renderFilled(context, new BlockPos((int) hole.minX, (int) hole.minY, (int) hole.minZ), new Vec3d(hole.getLengthX(), hole.getLengthY(), hole.getLengthZ()), color, 0.3f, false);
+ RenderHelper.renderFilled(context, hole, color, 0.3f, false);
}
}
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..0a96ade0 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,13 @@ public class OptionDropdownWidget extends ElementListWidget<OptionDropdownWidget
screen.clickAndWaitForServer(backButtonId);
return true;
}
- return super.mouseClicked(mouseX, mouseY, button);
+
+ if (super.mouseClicked(mouseX, mouseY, button)) return true;
+
+ if (clickedHeader((int) (mouseX - (double) (this.getX() + this.width / 2 - this.getRowWidth() / 2)), (int) (mouseY - (double) this.getY()) + (int) this.getScrollY() - 4)) {
+ return true;
+ }
+ return false;
}
@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/