66import appeng .client .gui .implementations .GuiMEMonitorable ;
77import appeng .client .me .SlotME ;
88import appeng .helpers .InventoryAction ;
9- import appeng .util .Platform ;
109import com .glodblock .github .common .item .fake .FakeItemRegister ;
1110import com .glodblock .github .coremod .mixin .jei .AccessorGhostIngredientDragManager ;
1211import com .glodblock .github .coremod .mixin .jei .AccessorIngredientListOverlay ;
1514import com .glodblock .github .loader .FCItems ;
1615import com .mekeng .github .common .me .data .IAEGasStack ;
1716import it .unimi .dsi .fastutil .objects .ObjectArrayList ;
17+ import it .unimi .dsi .fastutil .objects .Reference2ObjectMap ;
18+ import it .unimi .dsi .fastutil .objects .Reference2ObjectOpenHashMap ;
1819import net .minecraft .client .Minecraft ;
1920import net .minecraft .client .gui .GuiScreen ;
2021import net .minecraft .client .gui .inventory .GuiContainer ;
2526import net .minecraft .inventory .Slot ;
2627import net .minecraft .item .ItemStack ;
2728import net .minecraft .util .text .TextFormatting ;
29+ import net .minecraftforge .fluids .Fluid ;
30+ import net .minecraftforge .fluids .FluidStack ;
2831import net .minecraftforge .fml .common .Loader ;
2932import net .minecraftforge .fml .common .Optional ;
3033import net .minecraftforge .fml .relauncher .Side ;
3134import net .minecraftforge .fml .relauncher .SideOnly ;
3235import org .apache .commons .lang3 .tuple .MutablePair ;
3336
37+ import javax .annotation .Nonnull ;
3438import java .text .NumberFormat ;
3539import java .util .Arrays ;
3640import java .util .List ;
3741import java .util .Locale ;
3842
39- import static com .glodblock .github .util .Util .mekModName ;
40-
4143@ SideOnly (Side .CLIENT )
4244public final class UtilClient {
4345
46+ public static final String mekModName ;
47+ private static final Reference2ObjectMap <Fluid , String > fluidModNameMap = new Reference2ObjectOpenHashMap <>();
48+
4449 public static boolean shouldAutoCraft (final Slot slot , final int mouseButton , final ClickType clickType ) {
4550 if (slot instanceof SlotME ) {
4651 final IAEItemStack stack ;
@@ -158,20 +163,32 @@ public static boolean rendererFluid(final GuiContainer gui, final IAEItemStack i
158163 return rendererFluid (gui , item , mouseX , mouseY , gui instanceof GuiMEMonitorable );
159164 }
160165
166+ static {
167+ if (ModAndClassUtil .GAS ) {
168+ mekModName = UtilClient .getDisplayModName ("mekanism" );
169+ } else mekModName = "" ;
170+ }
171+
172+ @ Optional .Method (modid = "mekeng" )
173+ public static boolean rendererGas (final GuiContainer gui , final IAEItemStack item , final int mouseX , final int mouseY ) {
174+ return rendererGas (gui , item , mouseX , mouseY , gui instanceof GuiMEMonitorable );
175+ }
176+
161177 public static boolean rendererFluid (final GuiContainer gui , final IAEItemStack item , final int mouseX , final int mouseY , final boolean isStorage ) {
162178 if (item == null ) return false ;
163179 if (item .getItem () == FCItems .FLUID_DROP ) {
164180 if (cacheTooltip .left == null || !cacheTooltip .left .equals (item ) || cacheTooltip .left .getStackSize () != item .getStackSize () || cacheIsStorage != isStorage ) {
165181 final IAEFluidStack fluidStack = FakeItemRegister .getAEStack (item .copy ().setStackSize (1 ));
166182 if (fluidStack != null ) {
167183 fluidStack .setStackSize (item .getStackSize ());
168- final String formattedAmount = GuiScreen .isShiftKeyDown () ? NumberFormat .getNumberInstance (Locale .US ).format (fluidStack .getStackSize ()) + " mB" : NumberFormat .getNumberInstance (Locale .US ).format ((double ) fluidStack .getStackSize () / (double ) 1000.0F ) + " B" ;
169- final String modName = TextFormatting .BLUE .toString () + TextFormatting .ITALIC + Loader .instance ().getIndexedModList ().get (Platform .getModId (fluidStack )).getName ();
184+ final String modName = getFluidDisplayModName (fluidStack .getFluid ());
170185 final List <String > list = new ObjectArrayList <>();
171186 list .add (fluidStack .getFluidStack ().getLocalizedName ());
172187 list .add (modName );
173- if (isStorage )
188+ if (isStorage ) {
189+ final String formattedAmount = GuiScreen .isShiftKeyDown () ? NumberFormat .getNumberInstance (Locale .US ).format (fluidStack .getStackSize ()) + " mB" : NumberFormat .getNumberInstance (Locale .US ).format ((double ) fluidStack .getStackSize () / (double ) 1000.0F ) + " B" ;
174190 list .add (TextFormatting .DARK_GRAY + I18n .format ("gui.appliedenergistics2.StoredFluids" ) + " : " + formattedAmount );
191+ }
175192 if (item .isCraftable ())
176193 list .add (TextFormatting .GRAY + I18n .format ("gui.tooltips.appliedenergistics2.ItemsCraftable" ));
177194 gui .drawHoveringText (list , mouseX , mouseY );
@@ -188,11 +205,6 @@ public static boolean rendererFluid(final GuiContainer gui, final IAEItemStack i
188205 return false ;
189206 }
190207
191- @ Optional .Method (modid = "mekeng" )
192- public static boolean rendererGas (final GuiContainer gui , final IAEItemStack item , final int mouseX , final int mouseY ) {
193- return rendererGas (gui , item , mouseX , mouseY , gui instanceof GuiMEMonitorable );
194- }
195-
196208 @ Optional .Method (modid = "mekeng" )
197209 public static boolean rendererGas (final GuiContainer gui , final IAEItemStack item , final int mouseX , final int mouseY , final boolean isStorage ) {
198210 if (item == null ) return false ;
@@ -201,12 +213,13 @@ public static boolean rendererGas(final GuiContainer gui, final IAEItemStack ite
201213 final IAEGasStack gs = FakeItemRegister .getAEStack (item .copy ().setStackSize (1 ));
202214 if (gs != null ) {
203215 gs .setStackSize (item .getStackSize ());
204- final String formattedAmount = GuiScreen .isShiftKeyDown () ? NumberFormat .getNumberInstance (Locale .US ).format (gs .getStackSize ()) + " mB" : NumberFormat .getNumberInstance (Locale .US ).format ((double ) gs .getStackSize () / (double ) 1000.0F ) + " B" ;
205216 final List <String > list = new ObjectArrayList <>();
206217 list .add (gs .getGas ().getLocalizedName ());
207218 list .add (mekModName );
208- if (isStorage )
219+ if (isStorage ) {
220+ final String formattedAmount = GuiScreen .isShiftKeyDown () ? NumberFormat .getNumberInstance (Locale .US ).format (gs .getStackSize ()) + " mB" : NumberFormat .getNumberInstance (Locale .US ).format ((double ) gs .getStackSize () / (double ) 1000.0F ) + " B" ;
209221 list .add (TextFormatting .DARK_GRAY + I18n .format ("tooltip.stored" ) + " : " + formattedAmount );
222+ }
210223 if (item .isCraftable ())
211224 list .add (TextFormatting .GRAY + I18n .format ("gui.tooltips.appliedenergistics2.ItemsCraftable" ));
212225 gui .drawHoveringText (list , mouseX , mouseY );
@@ -223,4 +236,18 @@ public static boolean rendererGas(final GuiContainer gui, final IAEItemStack ite
223236 return false ;
224237 }
225238
239+ public static String getFluidDisplayModName (FluidStack fluidStack ) {
240+ if (fluidStack == null ) return "" ;
241+ return getFluidDisplayModName (fluidStack .getFluid ());
242+ }
243+
244+ public static String getFluidDisplayModName (Fluid fluid ) {
245+ if (fluid == null ) return "" ;
246+ return fluidModNameMap .computeIfAbsent (fluid , f -> getDisplayModName (Util .getFluidModID (f )));
247+ }
248+
249+ public static String getDisplayModName (@ Nonnull String modid ) {
250+ return TextFormatting .BLUE .toString () + TextFormatting .ITALIC + Loader .instance ().getIndexedModList ().get (modid ).getName ();
251+ }
252+
226253}
0 commit comments