Skip to content
This repository was archived by the owner on Dec 30, 2022. It is now read-only.

Commit e9b15cd

Browse files
committed
Added tooltips and adjust the position based on config button
Signed-off-by: deathsgun <deathsgun@protonmail.com>
1 parent 780c2c0 commit e9b15cd

File tree

3 files changed

+43
-7
lines changed

3 files changed

+43
-7
lines changed

src/main/java/xyz/deathsgun/modmanager/mixin/ModsScreenMixin.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.terraformersmc.modmenu.gui.widget.entries.ModListEntry;
2222
import net.minecraft.client.MinecraftClient;
2323
import net.minecraft.client.gui.screen.Screen;
24+
import net.minecraft.text.LiteralText;
2425
import net.minecraft.text.Text;
2526
import net.minecraft.text.TranslatableText;
2627
import net.minecraft.util.Identifier;
@@ -34,6 +35,8 @@
3435
import xyz.deathsgun.modmanager.gui.ModsOverviewScreen;
3536
import xyz.deathsgun.modmanager.gui.widget.TexturedButton;
3637

38+
import java.util.Map;
39+
3740
@Mixin(ModsScreen.class)
3841
public abstract class ModsScreenMixin extends Screen {
3942

@@ -48,6 +51,9 @@ public abstract class ModsScreenMixin extends Screen {
4851
@Shadow
4952
private ModListEntry selected;
5053

54+
@Shadow
55+
public abstract Map<String, Boolean> getModHasConfigScreen();
56+
5157
private TexturedButton hideButton;
5258

5359
protected ModsScreenMixin(Text title) {
@@ -60,9 +66,12 @@ public void onInit(CallbackInfo ci) {
6066
this.addDrawableChild(new ModMenuTexturedButtonWidget(this.paneWidth / 2 + searchBoxWidth / 2 + 14,
6167
22, 20, 20, 0, 0, MODMANAGER_BUTTON_LOCATION, 32, 64, button -> {
6268
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+
}));
6675
this.hideButton = this.addDrawableChild(new TexturedButton(width - 24 - 22, paneY, 20, 20, 0,
6776
0, MODMANAGER_HIDE_BUTTON, 32, 64, button -> {
6877
if (ModManager.modManager.config.getHidden().contains(selected.getMod().getId())) {
@@ -71,19 +80,28 @@ public void onInit(CallbackInfo ci) {
7180
ModManager.modManager.config.getHidden().add(selected.getMod().getId());
7281
}
7382
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+
})));
7593
}
7694

7795
@Inject(method = "tick", at = @At("HEAD"))
7896
public void onTick(CallbackInfo ci) {
79-
// TODO: Change texture depending on status
8097
this.hideButton.visible = ModManager.modManager.getUpdate().getUpdates()
8198
.stream().anyMatch(it -> it.getFabricId().equalsIgnoreCase(selected.mod.getId()));
8299
if (ModManager.modManager.config.getHidden().contains(selected.getMod().getId())) {
83100
this.hideButton.setImage(MODMANAGER_SHOW_BUTTON);
84101
} else {
85102
this.hideButton.setImage(MODMANAGER_HIDE_BUTTON);
86103
}
104+
this.hideButton.x = getModHasConfigScreen().getOrDefault(selected.getMod().getId(), false) ? width - 24 - 22 : width - 24;
87105
}
88106

89107
}

src/main/kotlin/xyz/deathsgun/modmanager/gui/widget/TexturedButton.kt

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package xyz.deathsgun.modmanager.gui.widget
1919
import com.mojang.blaze3d.systems.RenderSystem
2020
import com.terraformersmc.modmenu.gui.widget.ModMenuTexturedButtonWidget
2121
import net.minecraft.client.util.math.MatrixStack
22+
import net.minecraft.text.LiteralText
2223
import net.minecraft.util.Identifier
2324

2425
class TexturedButton(
@@ -31,8 +32,22 @@ class TexturedButton(
3132
texture: Identifier,
3233
private val uWidth: Int,
3334
private val vHeight: Int,
34-
onPress: PressAction?
35-
) : ModMenuTexturedButtonWidget(x, y, width, height, u, v, texture, uWidth, vHeight, onPress) {
35+
onPress: PressAction?,
36+
tooltipSupplier: TooltipSupplier
37+
) : ModMenuTexturedButtonWidget(
38+
x,
39+
y,
40+
width,
41+
height,
42+
u,
43+
v,
44+
texture,
45+
uWidth,
46+
vHeight,
47+
onPress,
48+
LiteralText.EMPTY,
49+
tooltipSupplier
50+
) {
3651

3752
var image: Identifier = texture
3853

src/main/resources/assets/modmanager/lang/en_us.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
"modmanager.button.defaultProvider": "Default provider",
1010
"modmanager.button.updateChannel": "Update channel",
1111
"modmanager.button.save": "Save",
12+
"modmanager.button.hide": "Hide updates",
13+
"modmanager.button.show": "Show updates",
14+
"modmanager.button.open": "Open ModManager",
1215
"modmanager.categories": "Categories",
1316
"modmanager.category.updatable": "Updatable mods",
1417
"modmanager.category.technology": "Technology",

0 commit comments

Comments
 (0)