Skip to content

Commit

Permalink
fix color pickers not updating correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
moehreag committed Jan 24, 2025
1 parent a09a4a7 commit 0370e76
Show file tree
Hide file tree
Showing 14 changed files with 166 additions and 136 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ public class ColorSelectionScreen extends io.github.axolotlclient.AxolotlClientC
private final ColorOption option;
private final Screen parent;
private NVGPaint paint;
private BooleanOption chroma;
private FloatOption speed;
private IntegerOption alpha;
private final BooleanOption chroma;
private final FloatOption speed;
private final IntegerOption alpha;
private int selectorRadius;
private float selectorX;
private float selectorY;
Expand All @@ -69,16 +69,8 @@ public ColorSelectionScreen(Screen parent, ColorOption option) {
super("select_color");
this.option = option;
this.parent = parent;
}

@Override
public void init() {
super.init();
addDrawableChild(new RoundedButtonWidget(width / 2 - 75, height - 40, new TranslatableText("gui.back"),
button -> MinecraftClient.getInstance().openScreen(parent)));

chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), option.getOriginal()::setChroma);
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), option.getOriginal()::setChromaSpeed, 0f, 4f);
chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), v -> option.getOriginal().setChroma(v));
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), v -> option.getOriginal().setChromaSpeed(v), 0f, 4f);
alpha = new IntegerOption("option.alpha", option.getOriginal().getAlpha(), val -> {
option.getOriginal().setAlpha(val);
children().forEach(e -> {
Expand All @@ -87,6 +79,13 @@ public void init() {
}
});
}, 0, 255);
}

@Override
public void init() {
super.init();
addDrawableChild(new RoundedButtonWidget(width / 2 - 75, height - 40, new TranslatableText("gui.back"),
button -> MinecraftClient.getInstance().openScreen(parent)));

selectorRadius = Math.max(Math.min(width / 4 - 10, (height) / 2 - 60), 75);
selectorX = width / 4f - selectorRadius;//width/2f-selectorRadius*2;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ public class ColorSelectionScreen extends io.github.axolotlclient.AxolotlClientC
private final ColorOption option;
private final Identifier texture = new Identifier("axolotlclientconfig", "textures/gui/colorwheel.png");
private final Screen parent;
private BooleanOption chroma;
private FloatOption speed;
private IntegerOption alpha;
private final BooleanOption chroma;
private final FloatOption speed;
private final IntegerOption alpha;
private int selectorRadius;
private float selectorX;
private float selectorY;
Expand All @@ -63,16 +63,8 @@ public ColorSelectionScreen(Screen parent, ColorOption option) {
super("select_color");
this.option = option;
this.parent = parent;
}

@Override
public void init() {
super.init();
addDrawableChild(new VanillaButtonWidget(width / 2 - 75, height - 40, 150, 20,
ScreenTexts.BACK, buttonWidget -> removed()));

chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), option.getOriginal()::setChroma);
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), option.getOriginal()::setChromaSpeed, 0f, 4f);
chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), v -> option.getOriginal().setChroma(v));
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), v -> option.getOriginal().setChromaSpeed(v), 0f, 4f);
alpha = new IntegerOption("option.alpha", option.getOriginal().getAlpha(), val -> {
option.getOriginal().setAlpha(val);
children().forEach(e -> {
Expand All @@ -81,6 +73,13 @@ public void init() {
}
});
}, 0, 255);
}

@Override
public void init() {
super.init();
addDrawableChild(new VanillaButtonWidget(width / 2 - 75, height - 40, 150, 20,
ScreenTexts.BACK, buttonWidget -> removed()));

selectorRadius = Math.max(Math.min(width / 4 - 10, (height) / 2 - 60), 75);
selectorX = width / 4f - selectorRadius;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ public class ColorSelectionScreen extends Screen implements DrawingUtil {
private final ColorOption option;
private final Screen parent;
private NVGPaint paint;
private BooleanOption chroma;
private FloatOption speed;
private IntegerOption alpha;
private final BooleanOption chroma;
private final FloatOption speed;
private final IntegerOption alpha;
private int selectorRadius;
private float selectorX;
private float selectorY;
Expand All @@ -68,15 +68,8 @@ public ColorSelectionScreen(Screen parent, ColorOption option) {
super(Text.translatable("select_color"));
this.option = option;
this.parent = parent;
}

@Override
public void init() {
addDrawableChild(new RoundedButtonWidget(width / 2 - 75, height - 40, Text.translatable("gui.back"),
button -> MinecraftClient.getInstance().setScreen(parent)));

chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), option.getOriginal()::setChroma);
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), option.getOriginal()::setChromaSpeed, 0f, 4f);
chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), v -> option.getOriginal().setChroma(v));
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), v -> option.getOriginal().setChromaSpeed(v), 0f, 4f);
alpha = new IntegerOption("option.alpha", option.getOriginal().getAlpha(), val -> {
option.getOriginal().setAlpha(val);
children().forEach(e -> {
Expand All @@ -85,6 +78,12 @@ public void init() {
}
});
}, 0, 255);
}

@Override
public void init() {
addDrawableChild(new RoundedButtonWidget(width / 2 - 75, height - 40, Text.translatable("gui.back"),
button -> MinecraftClient.getInstance().setScreen(parent)));

selectorRadius = Math.max(Math.min(width / 4 - 10, (height) / 2 - 60), 75);
selectorX = width / 4f - selectorRadius;//width/2f-selectorRadius*2;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ public class ColorSelectionScreen extends Screen {
private final ColorOption option;
private final Identifier texture = new Identifier("axolotlclientconfig", "textures/gui/colorwheel.png");
private final Screen parent;
private BooleanOption chroma;
private FloatOption speed;
private IntegerOption alpha;
private final BooleanOption chroma;
private final FloatOption speed;
private final IntegerOption alpha;
private int selectorRadius;
private float selectorX;
private float selectorY;
Expand All @@ -62,16 +62,8 @@ public ColorSelectionScreen(Screen parent, ColorOption option) {
super(Text.translatable("select_color"));
this.option = option;
this.parent = parent;
}

@Override
public void init() {
super.init();
addDrawableChild(ButtonWidget.builder(CommonTexts.BACK, buttonWidget -> closeScreen())
.position(width / 2 - 75, height - 40).build());

chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), option.getOriginal()::setChroma);
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), option.getOriginal()::setChromaSpeed, 0f, 4f);
chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), v -> option.getOriginal().setChroma(v));
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), v -> option.getOriginal().setChromaSpeed(v), 0f, 4f);
alpha = new IntegerOption("option.alpha", option.getOriginal().getAlpha(), val -> {
option.getOriginal().setAlpha(val);
children().forEach(e -> {
Expand All @@ -80,6 +72,13 @@ public void init() {
}
});
}, 0, 255);
}

@Override
public void init() {
super.init();
addDrawableChild(ButtonWidget.builder(CommonTexts.BACK, buttonWidget -> closeScreen())
.position(width / 2 - 75, height - 40).build());

selectorRadius = Math.max(Math.min(width / 4 - 10, (height) / 2 - 60), 75);
selectorX = width / 4f - selectorRadius;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/*
* Copyright © 2021-2025 moehreag <[email protected]> & Contributors
*
* This file is part of AxolotlClient.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* For more information, see the LICENSE file.
*/

package io.github.axolotlclient.AxolotlClientConfig.impl.mixin;

import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import io.github.axolotlclient.AxolotlClientConfig.impl.ui.rounded.widgets.RoundedButtonListWidget;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractSelectionList;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;

@Mixin(AbstractSelectionList.class)
public class AbstractSelectionListMixin {

@WrapOperation(method = "renderWidget", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiGraphics;disableScissor()V"))
private void noVanillaScissor(GuiGraphics instance, Operation<Void> original) {
if (!(((AbstractSelectionList<?>) (Object) this) instanceof RoundedButtonListWidget)) {
original.call(instance);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ public class ColorSelectionScreen extends Screen implements DrawingUtil {
private final ColorOption option;
private final Screen parent;
private NVGPaint paint;
private BooleanOption chroma;
private FloatOption speed;
private IntegerOption alpha;
private final BooleanOption chroma;
private final FloatOption speed;
private final IntegerOption alpha;
private int selectorRadius;
private float selectorX;
private float selectorY;
Expand All @@ -68,15 +68,8 @@ public ColorSelectionScreen(Screen parent, ColorOption option) {
super(Component.translatable("select_color"));
this.option = option;
this.parent = parent;
}

@Override
public void init() {
addRenderableWidget(new RoundedButtonWidget(width / 2 - 75, height - 40, Component.translatable("gui.back"),
button -> minecraft.setScreen(parent)));

chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), option.getOriginal()::setChroma);
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), option.getOriginal()::setChromaSpeed, 0f, 4f);
chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), v -> option.getOriginal().setChroma(v));
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), v -> option.getOriginal().setChromaSpeed(v), 0f, 4f);
alpha = new IntegerOption("option.alpha", option.getOriginal().getAlpha(), val -> {
option.getOriginal().setAlpha(val);
children().forEach(e -> {
Expand All @@ -85,6 +78,12 @@ public void init() {
}
});
}, 0, 255);
}

@Override
public void init() {
addRenderableWidget(new RoundedButtonWidget(width / 2 - 75, height - 40, Component.translatable("gui.back"),
button -> minecraft.setScreen(parent)));

selectorRadius = Math.max(Math.min(width / 4 - 10, (height) / 2 - 60), 75);
selectorX = width / 4f - selectorRadius;//width/2f-selectorRadius*2;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,11 @@ protected void renderDecorations(GuiGraphics graphics, int mouseX, int mouseY) {
}
}

@Override
protected void enableScissor(GuiGraphics guiGraphics) {

}

private class RoundedOptionEntry extends Entry implements DrawingUtil {

private final Option<?> option;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ public class ColorSelectionScreen extends Screen {
private final ColorOption option;
private final ResourceLocation texture = ResourceLocation.fromNamespaceAndPath("axolotlclientconfig", "textures/gui/colorwheel.png");
private final Screen parent;
private BooleanOption chroma;
private FloatOption speed;
private IntegerOption alpha;
private final BooleanOption chroma;
private final FloatOption speed;
private final IntegerOption alpha;
private int selectorRadius;
private float selectorX;
private float selectorY;
Expand All @@ -62,16 +62,8 @@ public ColorSelectionScreen(Screen parent, ColorOption option) {
super(Component.translatable("select_color"));
this.option = option;
this.parent = parent;
}

@Override
public void init() {
super.init();
addRenderableWidget(Button.builder(CommonComponents.GUI_BACK, buttonWidget -> onClose())
.pos(width / 2 - 75, height - 40).build());

chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), option.getOriginal()::setChroma);
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), option.getOriginal()::setChromaSpeed, 0f, 4f);
chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), v -> option.getOriginal().setChroma(v));
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), v -> option.getOriginal().setChromaSpeed(v), 0f, 4f);
alpha = new IntegerOption("option.alpha", option.getOriginal().getAlpha(), val -> {
option.getOriginal().setAlpha(val);
children().forEach(e -> {
Expand All @@ -80,6 +72,13 @@ public void init() {
}
});
}, 0, 255);
}

@Override
public void init() {
super.init();
addRenderableWidget(Button.builder(CommonComponents.GUI_BACK, buttonWidget -> onClose())
.pos(width / 2 - 75, height - 40).build());

selectorRadius = Math.max(Math.min(width / 4 - 10, (height) / 2 - 60), 75);
selectorX = width / 4f - selectorRadius;
Expand Down
1 change: 1 addition & 0 deletions 1.21.4/src/main/resources/axolotlclientconfig.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"compatibilityLevel": "JAVA_21",
"mixins": [],
"client": [
"AbstractSelectionListMixin",
"NativeImageInvoker"
],
"injectors": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ public class ColorSelectionScreen extends Screen implements DrawingUtil {
private final ColorOption option;
private final Screen parent;
private NVGPaint paint;
private BooleanOption chroma;
private FloatOption speed;
private IntegerOption alpha;
private final BooleanOption chroma;
private final FloatOption speed;
private final IntegerOption alpha;
private int selectorRadius;
private float selectorX;
private float selectorY;
Expand All @@ -68,15 +68,8 @@ public ColorSelectionScreen(Screen parent, ColorOption option) {
super(Text.translatable("select_color"));
this.option = option;
this.parent = parent;
}

@Override
public void init() {
addDrawableSelectableElement(new RoundedButtonWidget(width / 2 - 75, height - 40, Text.translatable("gui.back"),
button -> MinecraftClient.getInstance().setScreen(parent)));

chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), option.getOriginal()::setChroma);
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), option.getOriginal()::setChromaSpeed, 0f, 4f);
chroma = new BooleanOption("option.chroma", option.getOriginal().isChroma(), v -> option.getOriginal().setChroma(v));
speed = new FloatOption("option.speed", option.getOriginal().getChromaSpeed(), v -> option.getOriginal().setChromaSpeed(v), 0f, 4f);
alpha = new IntegerOption("option.alpha", option.getOriginal().getAlpha(), val -> {
option.getOriginal().setAlpha(val);
children().forEach(e -> {
Expand All @@ -85,6 +78,12 @@ public void init() {
}
});
}, 0, 255);
}

@Override
public void init() {
addDrawableSelectableElement(new RoundedButtonWidget(width / 2 - 75, height - 40, Text.translatable("gui.back"),
button -> MinecraftClient.getInstance().setScreen(parent)));

selectorRadius = Math.max(Math.min(width / 4 - 10, (height) / 2 - 60), 75);
selectorX = width / 4f - selectorRadius;//width/2f-selectorRadius*2;
Expand Down
Loading

0 comments on commit 0370e76

Please sign in to comment.