Skip to content

Commit 5c0d8fc

Browse files
Zorbatronbrachy84
andauthored
Item and fluid mod name in tooltips (#165)
* Add mod name to item slot tooltips * Add mod name to fluid slot tooltips * mod name to bottom --------- Co-authored-by: brachy84 <[email protected]>
1 parent 5a04536 commit 5c0d8fc

File tree

4 files changed

+61
-8
lines changed

4 files changed

+61
-8
lines changed

src/main/java/com/cleanroommc/modularui/ModularUI.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ public enum Mods {
6666
BLUR(ModIds.BLUR),
6767
BOGOSORTER(ModIds.BOGOSORTER),
6868
JEI(ModIds.JEI),
69-
NEA(ModIds.NEA);
69+
NEA(ModIds.NEA),
70+
MODNAMETOOLTIP(ModIds.MODNAMETOOLTIP);
7071

7172
public final String id;
7273
private boolean loaded = false;
@@ -101,5 +102,6 @@ public static class ModIds {
101102
public static final String JEI = "jei";
102103
public static final String NEA = "neverenoughanimations";
103104
public static final String BAUBLES = "baubles";
105+
public static final String MODNAMETOOLTIP = "modnametooltip";
104106
}
105107
}

src/main/java/com/cleanroommc/modularui/ModularUIConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,7 @@ public class ModularUIConfig {
3838

3939
@Config.Comment("If true, vanilla tooltip will be replaced with MUI's RichTooltip")
4040
public static boolean replaceVanillaTooltips = false;
41+
42+
@Config.Comment({"The format prefix of the mod name tooltip line.", "Default (Blue and Italic): §9§o"})
43+
public static String modNameFormat = "§9§o";
4144
}

src/main/java/com/cleanroommc/modularui/api/MCHelper.java

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
package com.cleanroommc.modularui.api;
22

3+
import com.cleanroommc.modularui.ModularUI;
4+
import com.cleanroommc.modularui.ModularUIConfig;
5+
import com.cleanroommc.modularui.api.drawable.IKey;
6+
37
import net.minecraft.client.Minecraft;
48
import net.minecraft.client.entity.EntityPlayerSP;
59
import net.minecraft.client.gui.FontRenderer;
610
import net.minecraft.client.gui.GuiScreen;
711
import net.minecraft.client.util.ITooltipFlag;
812
import net.minecraft.item.ItemStack;
913
import net.minecraft.util.text.TextFormatting;
14+
import net.minecraftforge.fluids.Fluid;
15+
import net.minecraftforge.fluids.FluidRegistry;
16+
import net.minecraftforge.fluids.FluidStack;
17+
import net.minecraftforge.fml.common.Loader;
18+
import net.minecraftforge.fml.common.ModContainer;
1019

20+
import org.jetbrains.annotations.NotNull;
1121
import org.jetbrains.annotations.Nullable;
1222

1323
import java.util.Collections;
@@ -60,17 +70,51 @@ public static FontRenderer getFontRenderer() {
6070
return null;
6171
}
6272

63-
public static List<String> getItemToolTip(ItemStack item) {
73+
public static @NotNull List<String> getItemToolTip(@NotNull ItemStack item) {
6474
if (!hasMc()) return Collections.emptyList();
65-
if (getMc().currentScreen != null) return getMc().currentScreen.getItemToolTip(item);
66-
List<String> list = item.getTooltip(getPlayer(), getMc().gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL);
67-
for (int i = 0; i < list.size(); ++i) {
75+
if (getMc().currentScreen != null) {
76+
List<String> tooltips = getMc().currentScreen.getItemToolTip(item);
77+
if (!ModularUI.Mods.MODNAMETOOLTIP.isLoaded()) {
78+
tooltips.add(ModularUIConfig.modNameFormat + getItemModName(item) + "§r");
79+
}
80+
81+
return tooltips;
82+
}
83+
84+
List<String> tooltips = item.getTooltip(getPlayer(), getMc().gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL);
85+
for (int i = 0; i < tooltips.size(); ++i) {
6886
if (i == 0) {
69-
list.set(i, item.getItem().getForgeRarity(item).getColor() + list.get(i));
87+
tooltips.set(i, item.getItem().getForgeRarity(item).getColor() + tooltips.get(i));
7088
} else {
71-
list.set(i, TextFormatting.GRAY + list.get(i));
89+
tooltips.set(i, TextFormatting.GRAY + tooltips.get(i));
7290
}
7391
}
74-
return list;
92+
93+
if (!ModularUI.Mods.MODNAMETOOLTIP.isLoaded()) {
94+
tooltips.add(ModularUIConfig.modNameFormat + getItemModName(item) + "§r");
95+
}
96+
97+
return tooltips;
98+
}
99+
100+
public static @Nullable String getItemModName(@NotNull ItemStack item) {
101+
ModContainer modContainer = Loader.instance().getIndexedModList().get(item.getItem().getCreatorModId(item));
102+
return modContainer == null ? null : modContainer.getName();
103+
}
104+
105+
public static @NotNull IKey getFluidModNameKey(@NotNull FluidStack fluidStack) {
106+
return IKey.str(getFluidModName(fluidStack));
107+
}
108+
109+
public static @NotNull String getFluidModName(@NotNull FluidStack fluid) {
110+
ModContainer modContainer = Loader.instance().getIndexedModList().get(getFluidModID(fluid.getFluid()));
111+
if (modContainer == null) throw new IllegalStateException(
112+
"Tried to get the mod name of a fluid that isn't registered to the Forge FluidRegistry");
113+
return "§9§o" + modContainer.getName() + "§r";
114+
}
115+
116+
public static @NotNull String getFluidModID(@NotNull Fluid fluid) {
117+
String fluidModName = FluidRegistry.getDefaultFluidName(fluid);
118+
return fluidModName.substring(0, fluidModName.indexOf(":"));
75119
}
76120
}

src/main/java/com/cleanroommc/modularui/widgets/slot/FluidSlot.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.cleanroommc.modularui.ModularUI;
44
import com.cleanroommc.modularui.api.ITheme;
5+
import com.cleanroommc.modularui.api.MCHelper;
56
import com.cleanroommc.modularui.api.UpOrDown;
67
import com.cleanroommc.modularui.api.drawable.IDrawable;
78
import com.cleanroommc.modularui.api.drawable.IKey;
@@ -102,6 +103,9 @@ public FluidSlot() {
102103
}
103104
}
104105
}
106+
if (fluid != null) {
107+
tooltip.addLine(MCHelper.getFluidModName(fluid));
108+
}
105109
});
106110
}
107111

0 commit comments

Comments
 (0)