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
@@ -2,9 +2,12 @@ package de.shiewk.widgets;
import com.google.gson.JsonElement;
import de.shiewk.widgets.utils.WidgetUtils;
import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.Drawable;
import net.minecraft.client.gui.widget.ClickableWidget;
import net.minecraft.client.gui.widget.Widget;
import net.minecraft.client.input.CharInput;
import net.minecraft.client.input.KeyInput;
import net.minecraft.text.Text;
import java.util.function.BooleanSupplier;
@@ -43,23 +46,23 @@ public abstract class WidgetSettingOption implements Drawable, Widget {
public abstract JsonElement saveState();
public abstract void loadState(JsonElement state);
public boolean mouseClicked(double mouseX, double mouseY, int button) {
public boolean mouseClicked(Click click, boolean doubled) {
return false;
}
public boolean mouseReleased(double mouseX, double mouseY, int button){
public boolean mouseReleased(Click click){
return false;
}
public boolean charTyped(char chr, int modifiers) {
public boolean charTyped(CharInput input) {
return false;
}
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
public boolean keyPressed(KeyInput input) {
return false;
}
public boolean keyReleased(int keyCode, int scanCode, int modifiers) {
public boolean keyReleased(KeyInput input) {
return false;
}
@@ -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;
}
@@ -2,6 +2,7 @@ package de.shiewk.widgets.mixin;
import de.shiewk.widgets.widgets.CPSWidget;
import net.minecraft.client.Mouse;
import net.minecraft.client.input.MouseInput;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@@ -11,17 +12,17 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
public class MixinMouse {
@Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/Mouse;leftButtonClicked:Z"), method = "onMouseButton")
public void onLeftClick(long window, int button, int action, int mods, CallbackInfo ci){
public void onLeftClick(long window, MouseInput input, int action, CallbackInfo ci){
if (action == 1) CPSWidget.clickLeft();
}
@Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/Mouse;middleButtonClicked:Z"), method = "onMouseButton")
public void onMiddleClick(long window, int button, int action, int mods, CallbackInfo ci){
public void onMiddleClick(long window, MouseInput input, int action, CallbackInfo ci){
if (action == 1) CPSWidget.clickMiddle();
}
@Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/Mouse;rightButtonClicked:Z"), method = "onMouseButton")
public void onRightClick(long window, int button, int action, int mods, CallbackInfo ci){
public void onRightClick(long window, MouseInput input, int action, CallbackInfo ci){
if (action == 1) CPSWidget.clickRight();
}
}
@@ -61,7 +61,7 @@ public class SpeedWidget extends BasicTextWidget {
ClientPlayerEntity player = MinecraftClient.getInstance().player;
if (player != null) {
Vec3d lastPos = this.lastPos;
Vec3d newPos = this.lastPos = player.getPos();
Vec3d newPos = this.lastPos = player.getEntityPos();
Vec3d velocity = lastPos.subtract(newPos);
double rt = 0;
if (withXVelocity) rt += velocity.getX() * velocity.getX();
@@ -5,6 +5,7 @@ import com.google.gson.JsonPrimitive;
import de.shiewk.widgets.WidgetSettingOption;
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.text.Text;
@@ -81,13 +82,13 @@ public class EnumWidgetSetting<T extends Enum<T>> extends WidgetSettingOption {
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
public boolean mouseClicked(Click click, boolean doubled) {
mouseClick = true;
return false;
}
@Override
public boolean mouseReleased(double mouseX, double mouseY, int button) {
public boolean mouseReleased(Click click) {
mouseClick = false;
boolean changed = this.changed;
this.changed = false;
@@ -5,10 +5,11 @@ import com.google.gson.JsonPrimitive;
import de.shiewk.widgets.WidgetSettingOption;
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.input.KeyInput;
import net.minecraft.text.Text;
import net.minecraft.util.math.MathHelper;
import org.lwjgl.glfw.GLFW;
public class IntSliderWidgetSetting extends WidgetSettingOption {
@@ -26,11 +27,11 @@ public class IntSliderWidgetSetting extends WidgetSettingOption {
}
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
if (maxValue > value && keyCode == GLFW.GLFW_KEY_RIGHT) {
public boolean keyPressed(KeyInput input) {
if (maxValue > value && input.isRight()) {
value++;
return true;
} else if (minValue < value && keyCode == GLFW.GLFW_KEY_LEFT){
} else if (minValue < value && input.isLeft()){
value--;
return true;
}
@@ -73,13 +74,13 @@ public class IntSliderWidgetSetting extends WidgetSettingOption {
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
public boolean mouseClicked(Click click, boolean doubled) {
this.clicked = true;
return super.mouseClicked(mouseX, mouseY, button);
return super.mouseClicked(click, doubled);
}
@Override
public boolean mouseReleased(double mouseX, double mouseY, int button) {
public boolean mouseReleased(Click click) {
this.clicked = false;
boolean t = this.changed;
this.changed = false;
@@ -5,6 +5,7 @@ import com.google.gson.JsonPrimitive;
import de.shiewk.widgets.WidgetSettingOption;
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.text.Text;
import net.minecraft.util.math.MathHelper;
@@ -107,14 +108,14 @@ public class RGBAColorWidgetSetting extends WidgetSettingOption {
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
public boolean mouseClicked(Click click, boolean doubled) {
this.mouseClicked = true;
sv = 0;
return false;
}
@Override
public boolean mouseReleased(double mouseX, double mouseY, int button) {
public boolean mouseReleased(Click click) {
this.mouseClicked = false;
final boolean c = this.sv != 0;
this.sv = 0;
@@ -6,8 +6,11 @@ import de.shiewk.widgets.WidgetSettingOption;
import de.shiewk.widgets.WidgetsMod;
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.widget.TextFieldWidget;
import net.minecraft.client.input.CharInput;
import net.minecraft.client.input.KeyInput;
import net.minecraft.text.Text;
public class TextFieldWidgetSettingOption extends WidgetSettingOption {
@@ -92,28 +95,28 @@ public class TextFieldWidgetSettingOption extends WidgetSettingOption {
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
return isFocused() && textField.mouseClicked(mouseX, mouseY, button);
public boolean mouseClicked(Click click, boolean doubled) {
return isFocused() && textField.mouseClicked(click, doubled);
}
@Override
public boolean mouseReleased(double mouseX, double mouseY, int button) {
return isFocused() && textField.mouseReleased(mouseX, mouseY, button);
public boolean mouseReleased(Click click) {
return isFocused() && textField.mouseReleased(click);
}
@Override
public boolean charTyped(char chr, int modifiers) {
return isFocused() && textField.charTyped(chr, modifiers);
public boolean charTyped(CharInput input) {
return isFocused() && textField.charTyped(input);
}
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
return isFocused() && textField.keyPressed(keyCode, scanCode, modifiers);
public boolean keyPressed(KeyInput input) {
return isFocused() && textField.keyPressed(input);
}
@Override
public boolean keyReleased(int keyCode, int scanCode, int modifiers) {
return isFocused() && textField.keyReleased(keyCode, scanCode, modifiers);
public boolean keyReleased(KeyInput input) {
return isFocused() && textField.keyReleased(input);
}
@Override
@@ -4,6 +4,7 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import de.shiewk.widgets.WidgetSettingOption;
import de.shiewk.widgets.utils.WidgetUtils;
import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.text.Text;
import net.minecraft.util.Util;
@@ -56,7 +57,7 @@ public class ToggleWidgetSetting extends WidgetSettingOption {
}
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
public boolean mouseClicked(Click click, boolean doubled) {
toggle();
return true;
}