Compare commits

...
5 Commits
Author SHA1 Message Date
ceb94e3e2c fix loader check (#45)
Co-authored-by: Martin Robertz <[email protected]>
Co-authored-by: SuperSoupr <[email protected]>
2025-11-11 18:29:45 +00:00
SuperSouprandsisyphussy 8ea26bf073 Add gradient to fluid bar to improve visibility (#49)
Co-authored-by: sisyphussy <[email protected]>
2025-11-11 18:50:58 +01:00
Worive 2aabfdb64c Rename hasAdvancedBody to hasWailaAdvancedBody (#48) 2025-10-25 14:04:28 +02:00
Martin Robertz a34460c159 update 2025-10-24 22:59:20 +02:00
SuperSouprandSuper 1f3fd64a38 Use special comma for renderer formatting (#47)
Co-authored-by: Super <[email protected]>
2025-10-24 13:29:56 +02:00
11 changed files with 69 additions and 39 deletions

No files matched your search

+1 -1
View File
@@ -5,5 +5,5 @@ dependencies {
shadowImplementation('au.com.bytecode:opencsv:2.4')
compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.52.65:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.52.69:dev") { transitive = false }
}
+3 -1
View File
@@ -96,7 +96,9 @@ usesMixinDebug = false
# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise.
mixinPlugin =
# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail!
# Specify the package that contains all of your Mixins. The package must exist or
# the build will fail. If you have a package property defined in your mixins.<modid>.json,
# it must match with this or the build will fail.
mixinsPackage =
# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin!
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.44'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.46'
}
@@ -72,7 +72,7 @@ public interface IWailaDataProvider {
* @param config Current configuration of Waila.
* @return True if advanced body information is available, false otherwise.
*/
default boolean hasAdvancedBody(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config) {
default boolean hasWailaAdvancedBody(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config) {
return false; // Default to false for backward compatibility
}
@@ -33,6 +33,7 @@ public class SpecialChars {
public static String WailaStyle = "\u00A4";
public static String WailaIcon = "\u00A5";
public static String WailaRenderer = "\u00A6";
public static String WailaRendererComma = "\u0082";
public static String TAB = WailaStyle + WailaStyle + "a";
public static String ALIGNRIGHT = WailaStyle + WailaStyle + "b";
public static String ALIGNCENTER = WailaStyle + WailaStyle + "c";
@@ -43,12 +44,19 @@ public class SpecialChars {
public static final Pattern patternMinecraft = Pattern.compile("(?i)" + MCStyle + "[0-9A-FK-OR]");
public static final Pattern patternWaila = Pattern.compile("(?i)(" + WailaStyle + "(?<type>..))");
public static final Pattern patternRender = Pattern
.compile("(?i)(" + RENDER + "\\{(?<name>[^,}]*),?(?<args>[^}]*)\\})");
// (?i)(¤¦a\{(?<name>[^U+0082}]*)U+0082?(?<args>[^}]*)\})
public static final Pattern patternRender = Pattern.compile(
"(?i)(" + RENDER
+ "\\{(?<name>[^"
+ WailaRendererComma
+ "}]*)"
+ WailaRendererComma
+ "?(?<args>[^}]*)\\})");
public static final Pattern patternTab = Pattern.compile("(?i)" + TAB);
public static final Pattern patternRight = Pattern.compile("(?i)" + ALIGNRIGHT);
public static final Pattern patternCenter = Pattern.compile("(?i)" + ALIGNCENTER);
public static final Pattern patternIcon = Pattern.compile("(?i)(" + WailaStyle + WailaIcon + "(?<type>[0-9a-z]))");
// (?i)(¤¤[^¤]+|¤¥[0-9A-Z]|¤¦a\{(?<name>[^U+0082}]*)U+0082?(?<args>[^}]*)\}|[^¤]+)
public static final Pattern patternLineSplit = Pattern.compile(
"(?i)(" + WailaStyle
+ WailaStyle
@@ -60,7 +68,11 @@ public class SpecialChars {
+ "[0-9A-Z]|"
+ WailaStyle
+ WailaRenderer
+ "a\\{([^,}]*),?([^}]*)\\}|[^"
+ "a\\{(?<name>[^"
+ WailaRendererComma
+ "}]*)"
+ WailaRendererComma
+ "?(?<args>[^}]*)\\}|[^"
+ WailaStyle
+ "]+)");
@@ -71,7 +83,7 @@ public class SpecialChars {
public static String getRenderString(String name, String... params) {
StringBuilder result = new StringBuilder(RENDER + "{" + name);
for (String s : params) {
result.append(",").append(s);
result.append(WailaRendererComma).append(s);
}
result.append("}");
return result.toString();
@@ -155,7 +155,7 @@ public class MetaDataProvider {
for (IWailaDataProvider dataProvider : providersList) try {
currenttip = dataProvider.getWailaBody(itemStack, currenttip, accessor, ConfigHandler.instance());
if (dataProvider.hasAdvancedBody(itemStack, accessor, ConfigHandler.instance())) {
if (dataProvider.hasWailaAdvancedBody(itemStack, accessor, ConfigHandler.instance())) {
hasAdvancedBodyAvailable = true;
if (isAdvancedKeyDown) {
@@ -2,7 +2,6 @@ package mcp.mobius.waila.handlers;
import static mcp.mobius.waila.api.SpecialChars.BLUE;
import static mcp.mobius.waila.api.SpecialChars.ITALIC;
import static mcp.mobius.waila.api.SpecialChars.RENDER;
import java.util.List;
@@ -72,7 +71,7 @@ public class HUDHandlerBlocks implements IWailaDataProvider {
@Override
public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor,
IWailaConfigHandler config) {
currenttip.add(RENDER + "{Plip}" + RENDER + "{Plop,thisisatest,222,333}");
// currenttip.add(RENDER + "{Plip}" + RENDER + "{Plop,thisisatest,222,333}");
String modName = ModIdentification.nameFromStack(itemStack);
if (modName != null && !modName.isEmpty()) {
@@ -23,6 +23,7 @@ import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import mcp.mobius.waila.api.IWailaTooltipRenderer;
import mcp.mobius.waila.api.SpecialChars;
import mcp.mobius.waila.api.impl.DataAccessorCommon;
import mcp.mobius.waila.api.impl.ModuleRegistrar;
import mcp.mobius.waila.utils.WailaExceptionHandler;
@@ -41,8 +42,9 @@ public class DisplayUtil {
Matcher renderMatcher = patternRender.matcher(s);
while (renderMatcher.find()) {
IWailaTooltipRenderer renderer = ModuleRegistrar.instance().getTooltipRenderer(renderMatcher.group("name"));
if (renderer != null)
width += renderer.getSize(renderMatcher.group("args").split(","), DataAccessorCommon.instance).width;
if (renderer != null) width += renderer.getSize(
renderMatcher.group("args").split(SpecialChars.WailaRendererComma),
DataAccessorCommon.instance).width;
}
Matcher iconMatcher = patternIcon.matcher(s);
@@ -22,6 +22,7 @@ import org.lwjgl.opengl.GL11;
import mcp.mobius.waila.api.IWailaCommonAccessor;
import mcp.mobius.waila.api.IWailaTooltipRenderer;
import mcp.mobius.waila.api.IWailaVariableWidthTooltipRenderer;
import mcp.mobius.waila.api.SpecialChars;
import mcp.mobius.waila.api.impl.ConfigHandler;
import mcp.mobius.waila.api.impl.DataAccessorCommon;
import mcp.mobius.waila.api.impl.ModuleRegistrar;
@@ -181,7 +182,7 @@ public class Tooltip {
renderable = new Renderable(
renderer,
new Point(offsetX, offsetY),
renderMatcher.group("args").split(","));
renderMatcher.group("args").split(SpecialChars.WailaRendererComma));
if (renderer instanceof IWailaVariableWidthTooltipRenderer variableWidthRenderer) {
variableWidthRenderer.setMaxLineWidth(maxStringW);
}
@@ -9,6 +9,7 @@ import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
@@ -24,7 +25,6 @@ import mcp.mobius.waila.api.IWailaCommonAccessor;
import mcp.mobius.waila.api.IWailaVariableWidthTooltipRenderer;
import mcp.mobius.waila.api.impl.ConfigHandler;
import mcp.mobius.waila.overlay.DisplayUtil;
import mcp.mobius.waila.overlay.OverlayConfig;
public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
@@ -32,9 +32,10 @@ public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
private final Consumer<String> bindColor;
private final Function<Integer, String> formatNumber;
private static final int height = 12;
public TTRenderFluidBar() {
if (Loader.isModLoaded("gregtech")) {
if (Loader.isModLoaded("gregtech_nh")) {
bindColor = (fluidName) -> {
FluidStack aCheck = FluidUtils.getWildcardFluidStack(fluidName, 1000);
if (aCheck != null && (aCheck.getFluid() instanceof FluidGT6 || aCheck.getFluid() instanceof GTFluid)) {
@@ -63,17 +64,18 @@ public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
return new Dimension(
DisplayUtil.getDisplayWidth(
params[2] + " / " + params[3] + ConfigHandler.instance().fluidUnit + params[1] + sb) + 4,
12);
height);
}
public static final ResourceLocation gradient = new ResourceLocation("waila", "textures/gradient.png");
@Override
public void draw(String[] params, IWailaCommonAccessor accessor) {
String fluidName = params[0];
String localizedName = params[1];
double amount = Double.parseDouble(params[2]);
double capacity = Double.parseDouble(params[3]);
drawThickBeveledBox(0, 0, maxStringW, 12, 1, 0xFF505050, 0xFF505050, -1);
Tessellator tessellator = Tessellator.instance;
IIcon icon = FluidRegistry.getFluid(fluidName).getIcon();
@@ -82,21 +84,35 @@ public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
bindColor.accept(fluidName);
tessellator.startDrawingQuads();
// Intentionally draw 2 pixels taller than needed than cover with the border to make the texture more visible
int i = (int) ((double) (maxStringW - 2) * amount / capacity);
int j = 0;
for (; i > 10; i = i - 10) {
drawTexturedModelRectFromIcon(1 + (j * 10), 1, icon, 10, 10, 100);
for (; i > height; i = i - height) {
drawRectFromIcon(tessellator, 1 + (j * height), 0, 0, icon, height, height);
j++;
}
if (i > 0) drawTexturedModelRectFromIcon(
1 + (j * 10),
1,
icon,
if (i > 0) drawRect(
tessellator,
1 + (j * height),
0,
0,
i,
10,
100,
icon.getMinU() + ((icon.getMaxU() - icon.getMinU()) * ((double) i / 10D)),
height,
icon.getMinU(),
icon.getMinV(),
icon.getMinU() + ((icon.getMaxU() - icon.getMinU()) * ((double) i / height)),
icon.getMaxV());
tessellator.draw();
GL11.glEnable(GL11.GL_BLEND);
GL11.glColor4f(1F, 1F, 1F, 0.70F);
mc.getTextureManager().bindTexture(gradient);
tessellator.startDrawingQuads();
drawRect(tessellator, 1, 0, 0, maxStringW - 2, height - 1, 0, 0, 1, 1);
tessellator.draw();
drawThickBeveledBox(0, 0, maxStringW, height, 1, 0xFF505050, 0xFF505050, -1);
DisplayUtil.drawString(
formatNumber.apply((int) amount) + " / "
@@ -107,24 +123,22 @@ public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
+ localizedName,
2,
2,
OverlayConfig.fontcolor,
0xFFFFFFFF,
true);
}
public static void drawTexturedModelRectFromIcon(int x, int y, IIcon icon, int width, int height, double z) {
drawTexturedModelRectFromIcon(x, y, icon, width, height, z, icon.getMaxU(), icon.getMaxV());
public static void drawRectFromIcon(Tessellator tessellator, int x, int y, double z, IIcon icon, int width,
int height) {
drawRect(tessellator, x, y, z, width, height, icon.getMinU(), icon.getMinV(), icon.getMaxU(), icon.getMaxV());
}
public static void drawTexturedModelRectFromIcon(int x, int y, IIcon icon, int width, int height, double z,
double maxU, double maxV) {
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV(x, y + height, z, icon.getMinU(), maxV);
public static void drawRect(Tessellator tessellator, int x, int y, double z, int width, int height, double minU,
double minV, double maxU, double maxV) {
tessellator.addVertexWithUV(x, y + height, z, minU, maxV);
tessellator.addVertexWithUV(x + width, y + height, z, maxU, maxV);
tessellator.addVertexWithUV(x + width, y, z, maxU, icon.getMinV());
tessellator.addVertexWithUV(x, y, z, icon.getMinU(), icon.getMinV());
tessellator.draw();
tessellator.addVertexWithUV(x + width, y, z, maxU, minV);
tessellator.addVertexWithUV(x, y, z, minU, minV);
}
public static void drawThickBeveledBox(int x1, int y1, int x2, int y2, int thickness, int topleftcolor,
Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B