Compare commits

...
9 changed files with 172 additions and 14 deletions

No files matched your search

+3 -1
View File
@@ -1,7 +1,9 @@
// Add your dependencies here
dependencies {
implementation('com.github.GTNewHorizons:NotEnoughItems:2.8.14-GTNH:dev')
implementation('com.github.GTNewHorizons:NotEnoughItems:2.8.16-GTNH:dev')
shadowImplementation('au.com.bytecode:opencsv:2.4')
compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.52.57:dev") { transitive = false }
}
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.43'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.44'
}
@@ -0,0 +1,9 @@
package mcp.mobius.waila.api;
public interface IWailaVariableWidthTooltipRenderer extends IWailaTooltipRenderer {
void setMaxStringW(int width);
int getMaxStringW();
}
@@ -33,6 +33,9 @@ public class SpecialChars {
public static String WailaStyle = "\u00A4";
public static String WailaIcon = "\u00A5";
public static String WailaRenderer = "\u00A6";
public static String WailaRendererBracketLeft = "\u0080";
public static String WailaRendererBracketRight = "\u0081";
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 +46,26 @@ 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\U+0080(?<name>[^U+0082U+0081]*)U+0082?(?<args>[^U+0081]*)\U+0081)
public static final Pattern patternRender = Pattern.compile(
"(?i)(" + RENDER
+ "\\"
+ WailaRendererBracketLeft
+ "(?<name>[^"
+ WailaRendererComma
+ WailaRendererBracketRight
+ "]*)"
+ WailaRendererComma
+ "?(?<args>[^"
+ WailaRendererBracketRight
+ "]*)\\"
+ WailaRendererBracketRight
+ ")");
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\U+0080(?<name>[^U+0082U+0081]*)U+0082?(?<args>[^U+0081]*)\U+0081|[^¤]+)
public static final Pattern patternLineSplit = Pattern.compile(
"(?i)(" + WailaStyle
+ WailaStyle
@@ -60,7 +77,18 @@ public class SpecialChars {
+ "[0-9A-Z]|"
+ WailaStyle
+ WailaRenderer
+ "a\\{([^,}]*),?([^}]*)\\}|[^"
+ "a\\"
+ WailaRendererBracketLeft
+ "(?<name>[^"
+ WailaRendererComma
+ WailaRendererBracketRight
+ "]*)"
+ WailaRendererComma
+ "?(?<args>[^"
+ WailaRendererBracketRight
+ "]*)\\"
+ WailaRendererBracketRight
+ "|[^"
+ WailaStyle
+ "]+)");
@@ -69,11 +97,11 @@ public class SpecialChars {
* give back a directly usable String for the tooltip.
*/
public static String getRenderString(String name, String... params) {
StringBuilder result = new StringBuilder(RENDER + "{" + name);
StringBuilder result = new StringBuilder(RENDER + WailaRendererBracketLeft + name);
for (String s : params) {
result.append(",").append(s);
result.append(WailaRendererComma).append(s);
}
result.append("}");
result.append(WailaRendererBracketRight);
return result.toString();
}
}
@@ -18,6 +18,7 @@ import mcp.mobius.waila.handlers.HUDHandlerEntities;
import mcp.mobius.waila.handlers.VanillaTooltipHandler;
import mcp.mobius.waila.handlers.nei.NEIHandler;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderAspectString;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderFluidBar;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderHealth;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderProgressBar;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderStack;
@@ -54,6 +55,7 @@ public class ProxyClient extends ProxyServer {
ModuleRegistrar.instance().registerTooltipRenderer("waila.health", new TTRenderHealth());
ModuleRegistrar.instance().registerTooltipRenderer("waila.stack", new TTRenderStack());
ModuleRegistrar.instance().registerTooltipRenderer("waila.progress", new TTRenderProgressBar());
ModuleRegistrar.instance().registerTooltipRenderer("waila.fluid", new TTRenderFluidBar());
ModuleRegistrar.instance().registerTooltipRenderer("waila.tcaspect", new TTRenderAspectString());
@@ -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);
@@ -21,6 +21,8 @@ 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;
@@ -40,6 +42,7 @@ public class Tooltip {
ArrayList<Renderable> elements = new ArrayList<>();
ArrayList<Renderable> elements2nd = new ArrayList<>();
ArrayList<Renderable> elements3rd = new ArrayList<>();
int w, h, x, y, ty;
int offsetX;
@@ -180,8 +183,11 @@ public class Tooltip {
renderable = new Renderable(
renderer,
new Point(offsetX, offsetY),
renderMatcher.group("args").split(","));
this.elements2nd.add(renderable);
renderMatcher.group("args").split(SpecialChars.WailaRendererComma));
if (renderer instanceof IWailaVariableWidthTooltipRenderer) {
((IWailaVariableWidthTooltipRenderer) renderable.renderer).setMaxStringW(maxStringW);
this.elements3rd.add(renderable);
} else this.elements2nd.add(renderable);
}
} else if (iconMatcher.find()) {
renderable = new Renderable(
@@ -244,5 +250,6 @@ public class Tooltip {
public void draw2nd() {
for (Renderable r : this.elements2nd) r.draw(accessor, x + offsetX, y + ty);
for (Renderable r : this.elements3rd) r.draw(accessor, x + offsetX, y + ty);
}
}
@@ -0,0 +1,109 @@
package mcp.mobius.waila.overlay.tooltiprenderers;
import java.awt.Dimension;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.common.Loader;
import gregtech.api.util.GTUtil;
import gregtech.common.fluid.GTFluid;
import gtPlusPlus.api.objects.minecraft.FluidGT6;
import gtPlusPlus.core.util.minecraft.FluidUtils;
import mcp.mobius.waila.api.IWailaCommonAccessor;
import mcp.mobius.waila.api.IWailaVariableWidthTooltipRenderer;
import mcp.mobius.waila.overlay.DisplayUtil;
import mcp.mobius.waila.overlay.OverlayConfig;
public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
int maxStringW;
@Override
public Dimension getSize(String[] params, IWailaCommonAccessor accessor) {
return new Dimension(DisplayUtil.getDisplayWidth(params[1] + 2), 12);
}
@Override
public void draw(String[] params, IWailaCommonAccessor accessor) {
drawThickBeveledBox(0, 0, maxStringW, 12, 1, 0xFF505050, 0xFF505050, -1);
IIcon icon = FluidRegistry.getFluid(params[0]).getIcon();
Minecraft mc = Minecraft.getMinecraft();
mc.getTextureManager().bindTexture(net.minecraft.client.renderer.texture.TextureMap.locationBlocksTexture);
if (Loader.isModLoaded("gregtech")) {
FluidStack aCheck = FluidUtils.getWildcardFluidStack(params[0], 1000);
if (aCheck != null && (aCheck.getFluid() instanceof FluidGT6 || aCheck.getFluid() instanceof GTFluid)) {
short[] RGBa = GTUtil.getRGBaArray(aCheck.getFluid().getColor());
GL11.glColor4f(RGBa[0] / 255F, RGBa[1] / 255F, RGBa[2] / 255F, 1F);
} else {
GL11.glColor4f(1F, 1F, 1F, 1F);
}
} else {
GL11.glColor4f(1F, 1F, 1F, 1F);
}
int i = (int) ((maxStringW - 2) * Double.parseDouble(params[2]));
int j = 0;
for (; i > 10; i = i - 10) {
drawTexturedModelRectFromIcon(1 + (j * 10), 1, icon, 10, 10, 100);
j++;
}
if (i > 0) drawTexturedModelRectFromIcon(
1 + (j * 10),
1,
icon,
i,
10,
100,
icon.getMinU() + ((icon.getMaxU() - icon.getMinU()) * ((double) i / 10D)),
icon.getMaxV());
DisplayUtil.drawString(params[1], 2, 2, OverlayConfig.fontcolor, 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 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);
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();
}
public static void drawThickBeveledBox(int x1, int y1, int x2, int y2, int thickness, int topleftcolor,
int botrightcolor, int fillcolor) {
if (fillcolor != -1) {
Gui.drawRect(x1 + 1, y1 + 1, x2 - 1, y2 - 1, fillcolor);
}
Gui.drawRect(x1, y1, x2 - 1, y1 + thickness, topleftcolor);
Gui.drawRect(x1, y1, x1 + thickness, y2 - 1, topleftcolor);
Gui.drawRect(x2 - thickness, y1, x2, y2 - 1, botrightcolor);
Gui.drawRect(x1, y2 - thickness, x2, y2, botrightcolor);
}
@Override
public void setMaxStringW(int width) {
maxStringW = width + 2;
}
@Override
public int getMaxStringW() {
return maxStringW;
}
}