Skip to content
This repository was archived by the owner on Feb 9, 2025. It is now read-only.

Commit 0d4e215

Browse files
committed
add transparent widget backgrounds
1 parent 3877440 commit 0d4e215

File tree

13 files changed

+97
-10
lines changed

13 files changed

+97
-10
lines changed
Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,30 @@
11
package github.io.lucunji.explayerenderer.mixin.yacl;
22

3-
import com.llamalad7.mixinextras.injector.v2.WrapWithCondition;
4-
import dev.isxander.yacl3.gui.YACLScreen;
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import github.io.lucunji.explayerenderer.Main;
56
import github.io.lucunji.explayerenderer.config.Configs;
67
import net.minecraft.client.MinecraftClient;
7-
import net.minecraft.client.gui.DrawContext;
8-
import net.minecraft.client.gui.widget.ClickableWidget;
8+
import net.minecraft.client.gui.screen.ButtonTextures;
99
import net.minecraft.client.gui.widget.PressableWidget;
1010
import net.minecraft.util.Identifier;
1111
import org.spongepowered.asm.mixin.Mixin;
12+
import org.spongepowered.asm.mixin.Unique;
1213
import org.spongepowered.asm.mixin.injection.At;
1314

1415
@Mixin(PressableWidget.class)
1516
public abstract class PressableWidgetMixin {
17+
@Unique
18+
private static final ButtonTextures TEXTURES = new ButtonTextures(
19+
Identifier.of(Main.MOD_ID, "widget/button"),
20+
Identifier.of(Main.MOD_ID, "widget/button_disabled"),
21+
Identifier.of(Main.MOD_ID, "widget/button_highlighted"));
1622

17-
@WrapWithCondition(method = "renderWidget", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lnet/minecraft/util/Identifier;IIII)V"))
18-
public boolean skipDrawingButtonBackground(DrawContext instance, Identifier texture, int x, int y, int width, int height) {
23+
@WrapOperation(method = "renderWidget", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ButtonTextures;get(ZZ)Lnet/minecraft/util/Identifier;"))
24+
public Identifier drawTransparentButtonTexture(ButtonTextures instance, boolean enabled, boolean focused, Operation<Identifier> original) {
1925
MinecraftClient minecraftClient = MinecraftClient.getInstance();
2026
if (!Configs.isConfigScreen(minecraftClient.currentScreen))
21-
return true;
22-
var currentTab = (YACLScreen.CategoryTab) ((YACLScreen) minecraftClient.currentScreen).tabManager.getCurrentTab();
23-
var thisBtn = (ClickableWidget) (Object) this;
24-
return currentTab == null || currentTab.undoButton != thisBtn && currentTab.cancelResetButton != thisBtn && currentTab.saveFinishedButton != thisBtn;
27+
return original.call(instance, enabled, focused);
28+
return TEXTURES.get(enabled, focused);
2529
}
2630
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package github.io.lucunji.explayerenderer.mixin.yacl;
2+
3+
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
4+
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
5+
import dev.isxander.yacl3.gui.SearchFieldWidget;
6+
import github.io.lucunji.explayerenderer.Main;
7+
import github.io.lucunji.explayerenderer.config.Configs;
8+
import net.minecraft.client.MinecraftClient;
9+
import net.minecraft.client.gui.screen.ButtonTextures;
10+
import net.minecraft.client.gui.widget.TextFieldWidget;
11+
import net.minecraft.util.Identifier;
12+
import org.spongepowered.asm.mixin.Mixin;
13+
import org.spongepowered.asm.mixin.Unique;
14+
import org.spongepowered.asm.mixin.injection.At;
15+
16+
@Mixin(TextFieldWidget.class)
17+
public class TextFieldWidgetMixin {
18+
@Unique
19+
private static final ButtonTextures TEXTURES = new ButtonTextures(
20+
Identifier.of(Main.MOD_ID, "widget/text_field"),
21+
Identifier.of(Main.MOD_ID, "widget/text_field_highlighted"));
22+
23+
@WrapOperation(method = "renderWidget", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ButtonTextures;get(ZZ)Lnet/minecraft/util/Identifier;"))
24+
public Identifier drawTransparentTextFieldTexture(ButtonTextures instance, boolean enabled, boolean focused, Operation<Identifier> original) {
25+
//noinspection ConstantValue
26+
if (Configs.isConfigScreen(MinecraftClient.getInstance().currentScreen) &&
27+
((TextFieldWidget) (Object) this) instanceof SearchFieldWidget) {
28+
return TEXTURES.get(enabled, focused);
29+
}
30+
return original.call(instance, enabled, focused);
31+
}
32+
}
Loading
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"gui": {
3+
"scaling": {
4+
"type": "nine_slice",
5+
"width": 200,
6+
"height": 20,
7+
"border": 3
8+
}
9+
}
10+
}
Loading
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"gui": {
3+
"scaling": {
4+
"type": "nine_slice",
5+
"width": 200,
6+
"height": 20,
7+
"border": 1
8+
}
9+
}
10+
}
Loading
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"gui": {
3+
"scaling": {
4+
"type": "nine_slice",
5+
"width": 200,
6+
"height": 20,
7+
"border": 3
8+
}
9+
}
10+
}
Loading
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"gui": {
3+
"scaling": {
4+
"type": "nine_slice",
5+
"width": 200,
6+
"height": 20,
7+
"border": 1
8+
}
9+
}
10+
}
Loading
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"gui": {
3+
"scaling": {
4+
"type": "nine_slice",
5+
"width": 200,
6+
"height": 20,
7+
"border": 1
8+
}
9+
}
10+
}

src/main/resources/explayerenderer.mixins.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"yacl.ControllerWidgetMixin",
1313
"yacl.PressableWidgetMixin",
1414
"yacl.ScreenMixin",
15+
"yacl.TextFieldWidgetMixin",
1516
"yacl.YACLScreenMixin"
1617
],
1718
"injectors": {

0 commit comments

Comments
 (0)