aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorYasin <LifeIsAParadox@users.noreply.github.com>2024-12-11 22:06:41 +0100
committerGitHub <noreply@github.com>2024-12-11 22:06:41 +0100
commit28f0ace5576b69dc7e27888cc95de74b135c4000 (patch)
tree7907d6052f657905057d92083718a16ff2874135 /src/main/java
parentb6bfebcfb3a8bb27fcf1e21839b8f5db0b2eee3f (diff)
parent08b237757db08b14dd9de10cdfdaec4d95d794be (diff)
downloadSkyblocker-28f0ace5576b69dc7e27888cc95de74b135c4000.tar.gz
Skyblocker-28f0ace5576b69dc7e27888cc95de74b135c4000.tar.bz2
Skyblocker-28f0ace5576b69dc7e27888cc95de74b135c4000.zip
Merge pull request #1070 from SkyblockerMod/1.21.4
1.21.4
Diffstat (limited to 'src/main/java')
-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
30 files changed, 345 insertions, 834 deletions
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/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/fancybars/StatusBar.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java
index a2fd510b..96f871d7 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java
@@ -140,7 +140,7 @@ public class StatusBar implements Widget, Drawable, Element, Selectable {
if (hasOverflow && overflowFill > 0) {
- RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, y + 2, (int) ((barWith - 2) * overflowFill), 5, transparency(colors[1].getRGB()));
+ RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, y + 2, (int) ((barWith - 2) * Math.min(overflowFill, 1)), 5, transparency(colors[1].getRGB()));
}
//context.drawText(MinecraftClient.getInstance().textRenderer, gridX + " " + gridY + " s:" + size , x, y-9, Colors.WHITE, true);
if (showText()) {
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorAnimatedDyes.java b/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorAnimatedDyes.java
index 0621fd24..48f345c4 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorAnimatedDyes.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/CustomArmorAnimatedDyes.java
@@ -9,6 +9,7 @@ import de.hysky.skyblocker.annotations.Init;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.utils.Constants;
import de.hysky.skyblocker.utils.ItemUtils;
+import de.hysky.skyblocker.utils.OkLabColor;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.command.argumenttypes.color.ColorArgumentType;
import dev.isxander.yacl3.config.v2.api.SerialEntry;
@@ -21,7 +22,6 @@ import net.minecraft.command.CommandRegistryAccess;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.tag.ItemTags;
import net.minecraft.text.Text;
-import net.minecraft.util.math.MathHelper;
import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument;
import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
@@ -102,25 +102,6 @@ public class CustomArmorAnimatedDyes {
return animatedDye.interpolate(trackedState);
}
- //Credit to https://codepen.io/OliverBalfour/post/programmatically-making-gradients
- public static int interpolate(int firstColor, int secondColor, double percentage) {
- int r1 = MathHelper.square((firstColor >> 16) & 0xFF);
- int g1 = MathHelper.square((firstColor >> 8) & 0xFF);
- int b1 = MathHelper.square(firstColor & 0xFF);
-
- int r2 = MathHelper.square((secondColor >> 16) & 0xFF);
- int g2 = MathHelper.square((secondColor >> 8) & 0xFF);<