21
21
import com .terraformersmc .modmenu .gui .widget .entries .ModListEntry ;
22
22
import net .minecraft .client .MinecraftClient ;
23
23
import net .minecraft .client .gui .screen .Screen ;
24
+ import net .minecraft .text .LiteralText ;
24
25
import net .minecraft .text .Text ;
25
26
import net .minecraft .text .TranslatableText ;
26
27
import net .minecraft .util .Identifier ;
34
35
import xyz .deathsgun .modmanager .gui .ModsOverviewScreen ;
35
36
import xyz .deathsgun .modmanager .gui .widget .TexturedButton ;
36
37
38
+ import java .util .Map ;
39
+
37
40
@ Mixin (ModsScreen .class )
38
41
public abstract class ModsScreenMixin extends Screen {
39
42
@@ -48,6 +51,9 @@ public abstract class ModsScreenMixin extends Screen {
48
51
@ Shadow
49
52
private ModListEntry selected ;
50
53
54
+ @ Shadow
55
+ public abstract Map <String , Boolean > getModHasConfigScreen ();
56
+
51
57
private TexturedButton hideButton ;
52
58
53
59
protected ModsScreenMixin (Text title ) {
@@ -60,9 +66,12 @@ public void onInit(CallbackInfo ci) {
60
66
this .addDrawableChild (new ModMenuTexturedButtonWidget (this .paneWidth / 2 + searchBoxWidth / 2 + 14 ,
61
67
22 , 20 , 20 , 0 , 0 , MODMANAGER_BUTTON_LOCATION , 32 , 64 , button -> {
62
68
MinecraftClient .getInstance ().setScreen (new ModsOverviewScreen (this ));
63
- }, new TranslatableText ("modmanager.button.open" )));
64
-
65
- // TODO: Switch texture to a better one
69
+ }, LiteralText .EMPTY , (button , matrices , mouseX , mouseY ) -> {
70
+ if (!button .isHovered ()) {
71
+ return ;
72
+ }
73
+ this .renderTooltip (matrices , new TranslatableText ("modmanager.button.open" ), mouseX , mouseY );
74
+ }));
66
75
this .hideButton = this .addDrawableChild (new TexturedButton (width - 24 - 22 , paneY , 20 , 20 , 0 ,
67
76
0 , MODMANAGER_HIDE_BUTTON , 32 , 64 , button -> {
68
77
if (ModManager .modManager .config .getHidden ().contains (selected .getMod ().getId ())) {
@@ -71,19 +80,28 @@ public void onInit(CallbackInfo ci) {
71
80
ModManager .modManager .config .getHidden ().add (selected .getMod ().getId ());
72
81
}
73
82
Config .Companion .saveConfig (ModManager .modManager .config );
74
- }));
83
+ }, ((button , matrices , mouseX , mouseY ) -> {
84
+ if (!hideButton .isJustHovered () || !button .isHovered ()) {
85
+ return ;
86
+ }
87
+ TranslatableText text = new TranslatableText ("modmanager.button.hide" );
88
+ if (ModManager .modManager .config .getHidden ().contains (selected .getMod ().getId ())) {
89
+ text = new TranslatableText ("modmanager.button.show" );
90
+ }
91
+ this .renderTooltip (matrices , text , mouseX , mouseY );
92
+ })));
75
93
}
76
94
77
95
@ Inject (method = "tick" , at = @ At ("HEAD" ))
78
96
public void onTick (CallbackInfo ci ) {
79
- // TODO: Change texture depending on status
80
97
this .hideButton .visible = ModManager .modManager .getUpdate ().getUpdates ()
81
98
.stream ().anyMatch (it -> it .getFabricId ().equalsIgnoreCase (selected .mod .getId ()));
82
99
if (ModManager .modManager .config .getHidden ().contains (selected .getMod ().getId ())) {
83
100
this .hideButton .setImage (MODMANAGER_SHOW_BUTTON );
84
101
} else {
85
102
this .hideButton .setImage (MODMANAGER_HIDE_BUTTON );
86
103
}
104
+ this .hideButton .x = getModHasConfigScreen ().getOrDefault (selected .getMod ().getId (), false ) ? width - 24 - 22 : width - 24 ;
87
105
}
88
106
89
107
}
0 commit comments