1
mirror of https://github.com/Shiewk/Widgets.git synced 2026-04-28 11:34:17 +02:00

1.21.9 support

This commit is contained in:
Shy
2025-10-03 10:44:30 +02:00
parent 9d31f5f0a2
commit 4b27e15e0c
15 changed files with 99 additions and 77 deletions
@@ -21,7 +21,6 @@ public class WidgetsModClient implements ClientModInitializer {
static KeyBinding configKeyBinding;
@Override
public void onInitializeClient() {
WidgetRenderer widgetRenderer = new WidgetRenderer();
@@ -33,7 +32,7 @@ public class WidgetsModClient implements ClientModInitializer {
"widgets.key.config",
InputUtil.Type.KEYSYM,
GLFW.GLFW_KEY_RIGHT_SHIFT,
"widgets.key.category"
KeyBinding.Category.create(Identifier.of(WidgetsMod.MOD_ID, "main"))
));
// in-game /widgetsmod command
@@ -5,6 +5,7 @@ import de.shiewk.widgets.ModWidget;
import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.client.WidgetManager;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.tooltip.Tooltip;
@@ -148,16 +149,16 @@ public class EditWidgetPositionsScreen extends AnimatedScreen {
}
}
if (selectedWidget == null ? hoveredWidget == widget : selectedWidget == widget){
context.drawBorder((int) Math.round(wx-1), (int) Math.round(wy-1), ww+2, wh+2, SELECT_COLOR);
context.drawBorder((int) Math.round(wx), (int) Math.round(wy), ww, wh, SELECT_COLOR);
context.drawStrokedRectangle((int) Math.round(wx-1), (int) Math.round(wy-1), ww+2, wh+2, SELECT_COLOR);
context.drawStrokedRectangle((int) Math.round(wx), (int) Math.round(wy), ww, wh, SELECT_COLOR);
}
widget.render(context, Util.getMeasuringTimeNano(), textRenderer, (int) Math.round(wx), (int) Math.round(wy));
}
}
@Override
public boolean mouseReleased(double mouseX, double mouseY, int button) {
if (button == 0 && selectedWidget != null){
public boolean mouseReleased(Click click) {
if (click.button() == 0 && selectedWidget != null){
final AlignResult alignedX = alignX(translateToScreen(selectedWidget.getSettings().posX, this.width), (int) (selectedWidget.width() * selectedWidget.getScaleFactor()), selectedWidget);
if (alignedX != null){
selectedWidget.getSettings().setPosX(translateToWidgetSettingsValue(alignedX.result(), this.width), (int) (selectedWidget.width() * selectedWidget.getScaleFactor()), this.width);
@@ -169,20 +170,20 @@ public class EditWidgetPositionsScreen extends AnimatedScreen {
onEdit.accept(selectedWidget);
selectedWidget = null;
}
return super.mouseReleased(mouseX, mouseY, button);
return super.mouseReleased(click);
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
if (button == 0 && hoveredWidget != null){
public boolean mouseClicked(Click click, boolean doubled) {
if (click.button() == 0 && hoveredWidget != null){
selectedWidget = hoveredWidget;
}
return super.mouseClicked(mouseX, mouseY, button);
return super.mouseClicked(click, doubled);
}
@Override
public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) {
if (button == 0){
public boolean mouseDragged(Click click, double deltaX, double deltaY) {
if (click.button() == 0){
assert client != null;
final ModWidget widget = selectedWidget;
if (widget != null){
@@ -191,8 +192,8 @@ public class EditWidgetPositionsScreen extends AnimatedScreen {
final int wx = (int) Math.min(translateToScreen(settings.posX, this.width), this.width - ww);
final int wh = (int) (widget.height() * widget.getScaleFactor());
final int wy = (int) Math.min(translateToScreen(settings.posY, this.height), this.height - wh);
if (mouseX <= wx + ww + deltaX && mouseX >= wx + deltaX){
if (mouseY <= wy + wh + deltaY && mouseY >= wy + deltaY){
if (click.x() <= wx + ww + deltaX && click.x() >= wx + deltaX){
if (click.y() <= wy + wh + deltaY && click.y() >= wy + deltaY){
double newPosX = settings.posX + translateToWidgetSettingsValue(deltaX, this.width);
double newPosY = settings.posY + translateToWidgetSettingsValue(deltaY, this.height);
settings.setPosX(newPosX, ww, this.width);
@@ -202,7 +203,7 @@ public class EditWidgetPositionsScreen extends AnimatedScreen {
}
}
}
return super.mouseDragged(mouseX, mouseY, button, deltaX, deltaY);
return super.mouseDragged(click, deltaX, deltaY);
}
@Override
@@ -4,6 +4,7 @@ import de.shiewk.widgets.ModWidget;
import de.shiewk.widgets.client.WidgetManager;
import de.shiewk.widgets.client.screen.components.WidgetListWidget;
import de.shiewk.widgets.utils.WidgetUtils;
import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.AxisGridWidget;
@@ -86,10 +87,10 @@ public class WidgetConfigScreen extends Screen {
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
if (super.mouseClicked(mouseX, mouseY, button)){
public boolean mouseClicked(Click click, boolean doubled) {
if (super.mouseClicked(click, doubled)){
return true;
} else return widgetList.mouseClicked(mouseX, mouseY, button);
} else return widgetList.mouseClicked(click, doubled);
}
@Override
@@ -3,6 +3,7 @@ package de.shiewk.widgets.client.screen.components;
import de.shiewk.widgets.ModWidget;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.Element;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
@@ -78,16 +79,19 @@ public class WidgetListWidget extends ScrollableWidget {
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
public boolean mouseClicked(Click click, boolean doubled) {
double mouseY = click.y();
double mouseX = click.x();
mouseY += getScrollY();
Click newClick = new Click(mouseX, mouseY, click.buttonInfo());
for (Element element : elements) {
if (element.mouseClicked(mouseX, mouseY, 0)){
if (element.mouseClicked(newClick, doubled)){
client.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F));
return true;
}
}
if (super.checkScrollbarDragged(mouseX, mouseY - getScrollY(), button)) return true;
return super.mouseClicked(mouseX, mouseY - getScrollY(), button);
if (super.checkScrollbarDragged(newClick)) return true;
return super.mouseClicked(newClick, doubled);
}
@Override
@@ -3,9 +3,12 @@ package de.shiewk.widgets.client.screen.components;
import de.shiewk.widgets.ModWidget;
import de.shiewk.widgets.WidgetSettingOption;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.widget.ScrollableWidget;
import net.minecraft.client.input.CharInput;
import net.minecraft.client.input.KeyInput;
import net.minecraft.text.Text;
import org.joml.Matrix3x2fStack;
@@ -79,7 +82,9 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
public boolean mouseClicked(Click click, boolean doubled) {
double mouseY = click.y();
double mouseX = click.x();
mouseY += getScrollY();
for (WidgetSettingOption customSetting : widget.getSettings().getCustomSettings()) {
if (!customSetting.shouldShow()) continue;
@@ -87,7 +92,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
&& mouseY >= customSetting.getY() && mouseY <= customSetting.getY() + customSetting.getHeight()){
focus = customSetting;
customSetting.setFocused(true);
if (customSetting.mouseClicked(mouseX, mouseY + getScrollY(), button)){
if (customSetting.mouseClicked(new Click(mouseX, mouseY + getScrollY(), click.buttonInfo()), doubled)){
onChange.run();
return true;
}
@@ -95,53 +100,53 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
customSetting.setFocused(false);
}
}
if (checkScrollbarDragged(mouseX, mouseY - getScrollY(), button)) return true;
return super.mouseClicked(mouseX, mouseY - getScrollY(), button);
if (checkScrollbarDragged(click)) return true;
return super.mouseClicked(click, doubled);
}
@Override
public boolean mouseReleased(double mouseX, double mouseY, int button) {
public boolean mouseReleased(Click click) {
for (WidgetSettingOption customSetting : widget.getSettings().getCustomSettings()) {
if (!customSetting.shouldShow()) continue;
if (customSetting.mouseReleased(mouseX, mouseY + getScrollY(), button)){
if (customSetting.mouseReleased(new Click(click.x(), click.y() + getScrollY(), click.buttonInfo()))){
onChange.run();
return true;
}
}
return super.mouseReleased(mouseX, mouseY, button);
return super.mouseReleased(click);
}
@Override
public boolean charTyped(char chr, int modifiers) {
public boolean charTyped(CharInput input) {
if (this.focus != null){
if (this.focus.charTyped(chr, modifiers)){
if (this.focus.charTyped(input)){
onChange.run();
return true;
}
}
return super.charTyped(chr, modifiers);
return super.charTyped(input);
}
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
public boolean keyPressed(KeyInput input) {
if (this.focus != null){
if (this.focus.keyPressed(keyCode, scanCode, modifiers)){
if (this.focus.keyPressed(input)){
onChange.run();
return true;
}
}
return super.keyPressed(keyCode, scanCode, modifiers);
return super.keyPressed(input);
}
@Override
public boolean keyReleased(int keyCode, int scanCode, int modifiers) {
public boolean keyReleased(KeyInput input) {
if (this.focus != null){
if (this.focus.keyReleased(keyCode, scanCode, modifiers)){
if (this.focus.keyReleased(input)){
onChange.run();
return true;
}
}
return super.keyReleased(keyCode, scanCode, modifiers);
return super.keyReleased(input);
}
@Override
@@ -5,6 +5,7 @@ import de.shiewk.widgets.client.screen.WidgetSettingsScreen;
import de.shiewk.widgets.utils.WidgetUtils;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.widget.ClickableWidget;
@@ -68,11 +69,11 @@ public class WidgetWidget extends ClickableWidget {
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
if (isMouseOver(mouseX, mouseY)){
public boolean mouseClicked(Click click, boolean doubled) {
if (isMouseOver(click.x(), click.y())){
client.setScreen(new WidgetSettingsScreen(client.currentScreen, widget));
return true;
} else if (isMouseOverToggle(mouseX, mouseY)){
} else if (isMouseOverToggle(click.x(), click.y())){
this.toggleWidget();
return true;
}