diff --git a/build.gradle b/build.gradle index 6bf78fec..6ccf2399 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id "architectury-plugin" version "3.4-SNAPSHOT" id "dev.architectury.loom" version "1.10-SNAPSHOT" apply false - id "me.modmuss50.mod-publish-plugin" version "2.0.0-beta.2" + id "me.modmuss50.mod-publish-plugin" version "2.1.0" } apply from: 'https://raw.githubusercontent.com/FTBTeam/mods-meta/main/gradle/changelog.gradle' diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java index e792cbf2..69bfeacb 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/EditStringConfigOverlay.java @@ -165,12 +165,13 @@ public void onEnterPressed() { } @Override - public boolean mouseScrolled(double scroll) { - return config.scrollValue(currentValue, scroll > 0).map(v -> { + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { + var directionlessDelta = xDelta != 0 ? xDelta : yDelta; + return config.scrollValue(currentValue, directionlessDelta > 0).map(v -> { textBox.setText(config.getStringFromValue(v)); textBox.setSelectionPos(textBox.getCursorPos()); return true; - }).orElse(super.mouseScrolled(scroll)); + }).orElse(super.mouseScrolled(mouseX, mouseY, xDelta, yDelta)); } } } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java index 7ecfcc77..a8566441 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/config/ui/resource/ResourceSelectorScreen.java @@ -1,7 +1,5 @@ package dev.ftb.mods.ftblibrary.config.ui.resource; -import com.google.common.base.Stopwatch; -import com.mojang.datafixers.util.Pair; import dev.ftb.mods.ftblibrary.FTBLibrary; import dev.ftb.mods.ftblibrary.config.ConfigCallback; import dev.ftb.mods.ftblibrary.config.ResourceConfigValue; @@ -21,6 +19,8 @@ import dev.ftb.mods.ftblibrary.ui.misc.SimpleToast; import dev.ftb.mods.ftblibrary.util.SearchTerms; import dev.ftb.mods.ftblibrary.util.TooltipList; +import com.google.common.base.Stopwatch; +import com.mojang.datafixers.util.Pair; import net.minecraft.ChatFormatting; import net.minecraft.Util; import net.minecraft.client.Minecraft; @@ -347,13 +347,15 @@ public CountTextBox() { } @Override - public boolean mouseScrolled(double scroll) { + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { if (!isMouseOver) return false; + + var directionlessDelta = xDelta != 0 ? xDelta : yDelta; if (isShiftKeyDown()) { - int adj = scroll > 0 ? getCount() : -getCount() / 2; + int adj = directionlessDelta > 0 ? getCount() : -getCount() / 2; adjust(adj); } else { - adjust((int) Math.signum(scroll)); + adjust((int) Math.signum(directionlessDelta)); } return true; } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java index 4ac652f0..e27303fd 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/BaseScreen.java @@ -1,7 +1,5 @@ package dev.ftb.mods.ftblibrary.ui; -import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.platform.Window; import dev.ftb.mods.ftblibrary.icon.Color4I; import dev.ftb.mods.ftblibrary.ui.input.Key; import dev.ftb.mods.ftblibrary.ui.input.KeyModifiers; @@ -10,6 +8,8 @@ import dev.ftb.mods.ftblibrary.util.BooleanConsumer; import dev.ftb.mods.ftblibrary.util.TooltipList; import dev.ftb.mods.ftblibrary.util.client.ClientUtils; +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.Window; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.ChatScreen; @@ -468,11 +468,11 @@ public void mouseReleased(MouseButton button) { } @Override - public boolean mouseScrolled(double scroll) { - if (focusedWidget != null && focusedWidget.mouseScrolled(scroll)) { + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { + if (focusedWidget != null && focusedWidget.mouseScrolled(mouseX, mouseY, xDelta, yDelta)) { return true; } - return modalPanels.isEmpty() ? super.mouseScrolled(scroll) : modalPanels.peekFirst().mouseScrolled(scroll); + return modalPanels.isEmpty() ? super.mouseScrolled(mouseX, mouseY, xDelta, yDelta) : modalPanels.peekFirst().mouseScrolled(mouseX, mouseY, xDelta, yDelta); } @Override diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/DropDownMenu.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/DropDownMenu.java index c0c3757c..eb3a3ae9 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/DropDownMenu.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/DropDownMenu.java @@ -31,11 +31,6 @@ public void onTextChanged() { this.scrollBar = new PanelScrollBar(this, ScrollBar.Plane.VERTICAL, mainPanel); } - @Override - public boolean scrollPanel(double scroll) { - return super.scrollPanel(scroll); - } - @Override public void addWidgets() { add(textBox); diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java index a744b46f..e40af13f 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/IntTextBox.java @@ -43,9 +43,11 @@ public void setMinMax(int min, int max) { } @Override - public boolean mouseScrolled(double scroll) { + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { + var directionlessDelta = xDelta != 0 ? xDelta : yDelta; + if (allowInput()) { - setAmount(getIntValue() + (int) scroll); + setAmount(getIntValue() + (int) directionlessDelta); return true; } return false; @@ -69,4 +71,4 @@ public void ensureValue() { setAmount(max); } } -} \ No newline at end of file +} diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java index 92a42da5..ec941608 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Panel.java @@ -331,19 +331,19 @@ public void mouseReleased(MouseButton button) { } @Override - public boolean mouseScrolled(double scroll) { + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { setOffset(true); for (var i = widgets.size() - 1; i >= 0; i--) { var widget = widgets.get(i); - if (widget.isEnabled() && widget.mouseScrolled(scroll)) { + if (widget.isEnabled() && widget.mouseScrolled(mouseX, mouseY, xDelta, yDelta)) { setOffset(false); return true; } } - var scrollPanel = scrollPanel(scroll); + var scrollPanel = scrollPanel(xDelta, yDelta); setOffset(false); return scrollPanel; } @@ -365,15 +365,23 @@ public boolean mouseDragged(int button, double dragX, double dragY) { return false; } - public boolean scrollPanel(double scroll) { + public boolean scrollPanel(double xDelta, double yDelta) { if (attachedScrollbar != null || !isMouseOver()) { return false; } - if (isDefaultScrollVertical() != isShiftKeyDown()) { - return movePanelScroll(0, -getScrollStep() * scroll); + // No scroll direction was given? + var directionlessDelta = yDelta != 0 ? yDelta : xDelta; + if (directionlessDelta == 0) { + return false; + } + + // If the user is pressing shift, we'll always attempt to scroll horizontally, otherwise we'll just blindly apply both directions + if (isShiftKeyDown()) { + var scrollAmount = -getScrollStep() * directionlessDelta; + return movePanelScroll(scrollAmount, 0); } else { - return movePanelScroll(-getScrollStep() * scroll, 0); + return movePanelScroll(-getScrollStep() * xDelta, -getScrollStep() * yDelta); } } @@ -404,10 +412,6 @@ public boolean movePanelScroll(double dx, double dy) { return getScrollX() != sx || getScrollY() != sy; } - public boolean isDefaultScrollVertical() { - return true; - } - public double getScrollStep() { return scrollStep; } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java index 4dae5bb3..62645566 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScreenWrapper.java @@ -1,10 +1,10 @@ package dev.ftb.mods.ftblibrary.ui; -import dev.architectury.platform.Platform; import dev.ftb.mods.ftblibrary.ui.input.Key; import dev.ftb.mods.ftblibrary.ui.input.KeyModifiers; import dev.ftb.mods.ftblibrary.ui.input.MouseButton; import dev.ftb.mods.ftblibrary.util.TooltipList; +import dev.architectury.platform.Platform; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; import net.minecraft.world.item.ItemStack; @@ -53,7 +53,9 @@ public boolean mouseReleased(double x, double y, int button) { @Override public boolean mouseScrolled(double x, double y, double dirX, double dirY) { - return wrappedGui.mouseScrolled(dirY) || super.mouseScrolled(x, y, dirX, dirY); + return wrappedGui.mouseScrolled(x, y, dirX, dirY) || + wrappedGui.mouseScrolled(dirY) || // TODO: Remove this when all guis are updated to the new mouseScrolled method + super.mouseScrolled(x, y, dirX, dirY); } @Override diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java index 0947c850..d71669f2 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/ScrollBar.java @@ -71,9 +71,11 @@ public boolean mousePressed(MouseButton button) { } @Override - public boolean mouseScrolled(double scroll) { - if (scroll != 0 && canMouseScrollPlane() && canMouseScroll()) { - setValue(getValue() - getScrollStep() * scroll); + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { + // We don't care which direction the user scrolled, just apply it. + var scrollDelta = yDelta == 0 ? xDelta : yDelta; + if (scrollDelta != 0 && canMouseScrollPlane() && canMouseScroll()) { + setValue(getValue() - getScrollStep() * scrollDelta); return true; } diff --git a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java index a587aad0..12853849 100644 --- a/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java +++ b/common/src/main/java/dev/ftb/mods/ftblibrary/ui/Widget.java @@ -1,11 +1,11 @@ package dev.ftb.mods.ftblibrary.ui; -import com.mojang.blaze3d.platform.Window; import dev.ftb.mods.ftblibrary.ui.input.Key; import dev.ftb.mods.ftblibrary.ui.input.KeyModifiers; import dev.ftb.mods.ftblibrary.ui.input.MouseButton; import dev.ftb.mods.ftblibrary.util.TooltipList; import dev.ftb.mods.ftblibrary.util.client.PositionedIngredient; +import com.mojang.blaze3d.platform.Window; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; @@ -192,10 +192,18 @@ public boolean mouseDoubleClicked(MouseButton button) { public void mouseReleased(MouseButton button) { } - public boolean mouseScrolled(double scroll) { + /** + * @deprecated use {@link #mouseScrolled(double, double, double, double)} instead + */ + @Deprecated + public boolean mouseScrolled(double yDelta) { return false; } + public boolean mouseScrolled(double mouseX, double mouseY, double xDelta, double yDelta) { + return this.mouseScrolled(yDelta); + } + public boolean mouseDragged(int button, double dragX, double dragY) { return false; }