Compare commits

...
7 Commits
Author SHA1 Message Date
slprime b612897ddb Skip WAILA tooltip updates when GUI is open (#60) 2026-02-07 14:37:38 +01:00
Martin Robertz a5607eda00 update 2026-01-24 20:40:06 +01:00
Connor-ColensoandConnor Colenso f242cf77a9 Format numbers follow up (#59)
Co-authored-by: Connor Colenso <colen@CONNORSPC>
2026-01-24 20:37:57 +01:00
9d1840dabc Format numbers migration (#57)
Co-authored-by: Connor Colenso <[email protected]>
Co-authored-by: Connor Colenso <colen@CONNORSPC>
2026-01-23 18:55:28 +00:00
evgengoldwar 677a74dad7 Add small icon variant for TTRenderStack (#58) 2026-01-19 22:25:21 +01:00
MalTeeezandMartin Robertz 10219fd204 Allow showing empty tanks via Fluid Bars (#51)
Co-authored-by: Martin Robertz <[email protected]>
2025-11-17 00:50:29 +01:00
MalTeeezandMartin Robertz d14044c92e Use progress bars to render IEnergyInfo RF content (#55)
Co-authored-by: Martin Robertz <[email protected]>
2025-11-17 00:50:04 +01:00
31 changed files with 358 additions and 198 deletions

No files matched your search

+17 -2
View File
@@ -1,9 +1,24 @@
// Add your dependencies here
dependencies {
implementation('com.github.GTNewHorizons:NotEnoughItems:2.8.20-GTNH:dev')
implementation('com.github.GTNewHorizons:NotEnoughItems:2.8.55-GTNH:dev')
shadowImplementation('au.com.bytecode:opencsv:2.4')
compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.52.69:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.52.226:dev") { transitive = false }
runtimeOnlyNonPublishable("com.github.GTNewHorizons:WAILAPlugins:0.7.2:dev") {
exclude group: 'com.github.GTNewHorizons', module: 'waila'
}
runtimeOnlyNonPublishable("com.github.GTNewHorizons:EnderCore:0.5.5:dev")
runtimeOnlyNonPublishable("com.github.GTNewHorizons:BuildCraft:7.1.48:dev")
runtimeOnlyNonPublishable("curse.maven:cofh-lib-220333:2388748")
runtimeOnlyNonPublishable("curse.maven:extrautils-225561:2264383")
runtimeOnlyNonPublishable("com.github.GTNewHorizons:OpenBlocks:1.12.4-GTNH:dev")
runtimeOnlyNonPublishable("com.github.GTNewHorizons:Railcraft:9.17.15:dev")
runtimeOnlyNonPublishable('curse.maven:thermal-foundation-222880:2388753')
runtimeOnlyNonPublishable('curse.maven:thermal-expansion-69163:2388759')
runtimeOnlyNonPublishable('curse.maven:thermal-dynamics-227443:2388756')
implementation('curse.maven:cofh-core-69162:2388751')
api("com.github.GTNewHorizons:GTNHLib:0.9.6:dev")
}
+36 -3
View File
@@ -39,9 +39,33 @@ remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/co
# `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE.
developmentEnvironmentUserName = Developer
# Enables using modern Java syntax (up to version 17) via Jabel, while still targeting JVM 8.
# See https://github.com/bsideup/jabel for details on how this works.
enableModernJavaSyntax = true
# Enables modern Java syntax support. Valid values:
# - false: No modern syntax, Java 8 only
# - jabel: Jabel syntax-only support, compiles to J8 bytecode
# - jvmDowngrader: Full modern Java via JVM Downgrader (syntax + stdlib APIs)
# - modern: Native modern Java bytecode, no downgrading
enableModernJavaSyntax = jabel
# If set, ignores the above setting and compiles with the given toolchain. This may cause unexpected issues,
# and should *not* be used in most situations. -1 disables this.
# forceToolchainVersion = -1
# Target JVM version for JVM Downgrader bytecode downgrading.
# Only used when enableModernJavaSyntax = jvmDowngrader
# downgradeTargetVersion = 8
# Comma-separated list of Java versions for multi-release jar support (JVM Downgrader only).
# Classes will be available in META-INF/versions/N/ for each version N in this list.
# Default: "21,25" (J25+ gets native classes, J21-24 gets partial downgrade, J8-20 gets full downgrade).
# jvmDowngraderMultiReleaseVersions = 21,25
# Specifies how JVM Downgrader API stubs are provided. Options:
# - shade: Shade minimized stubs into the jar
# - gtnhlib: GTNHLib provides stubs at runtime (adds version constraint)
# - external: Another dependency provides stubs (no constraint, no warning)
# - (empty): Warning reminding you to configure stubs
# Note: 'shade' option requires you to verify license compliance, see: https://github.com/unimined/JvmDowngrader/blob/main/LICENSE.md
# jvmDowngraderStubsProvider =
# Enables injecting missing generics into the decompiled source code for a better coding experience.
# Turns most publicly visible List, Map, etc. into proper List<E>, Map<K, V> types.
@@ -174,6 +198,12 @@ curseForgeRelations =
# projects. New projects should not use this parameter.
# customArchiveBaseName =
# Optional parameter to customize the default working directory used by the runClient* tasks. Relative to the project directory.
# runClientWorkingDirectory = run/client
# Optional parameter to customize the default working directory used by the runServer* tasks. Relative to the project directory.
# runServerWorkingDirectory = run/server
# Optional parameter to have the build automatically fail if an illegal version is used.
# This can be useful if you e.g. only want to allow versions in the form of '1.1.xxx'.
# The check is ONLY performed if the version is a git tag.
@@ -203,3 +233,6 @@ curseForgeRelations =
# This is meant to be set in $HOME/.gradle/gradle.properties.
# ideaCheckSpotlessOnBuild = true
# Non-GTNH properties
org.gradle.configuration-cache = true
org.gradle.parallel = true
+12
View File
@@ -0,0 +1,12 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/df211d3c3eefdc408b462041881bc575/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/93aeea858331bd6bb00ba94759830234/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/df211d3c3eefdc408b462041881bc575/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/93aeea858331bd6bb00ba94759830234/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7799fb2cb9f9eb382df2b8b6fb793b77/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/99a42fd36e2e41c7c8ed49f423f49fdf/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/df211d3c3eefdc408b462041881bc575/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/93aeea858331bd6bb00ba94759830234/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/3087f28f30be41ab6818c16a488f5f8a/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/552c7bffe0370c66410a51c55985b511/redirect
toolchainVersion=25
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Vendored
+2 -5
View File
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -114,7 +114,6 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
@@ -172,7 +171,6 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -212,8 +210,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
Vendored
+1 -2
View File
@@ -70,11 +70,10 @@ goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
+1 -1
View File
@@ -17,7 +17,7 @@ pluginManagement {
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.46'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.18'
}
@@ -1,5 +1,8 @@
package mcp.mobius.waila.addons.buildcraft;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatFluid;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -19,7 +22,6 @@ import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.impl.ConfigHandler;
import mcp.mobius.waila.cbcore.LangUtil;
import mcp.mobius.waila.utils.NumberFormatter;
public class TankFluidHandler implements IWailaDataProvider {
@@ -60,12 +62,7 @@ public class TankFluidHandler implements IWailaDataProvider {
int liquidAmount = stack != null ? stack.amount : 0;
int capacity = tank != null ? tank.capacity : 0;
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(liquidAmount),
NumberFormatter.format(capacity),
ConfigHandler.instance().fluidUnit));
currenttip.add(String.format("%s / %s", formatNumber(liquidAmount), formatFluid(capacity)));
return currenttip;
}
@@ -1,5 +1,8 @@
package mcp.mobius.waila.addons.exu;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatFluid;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -14,8 +17,6 @@ import net.minecraftforge.fluids.IFluidHandler;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.impl.ConfigHandler;
import mcp.mobius.waila.utils.NumberFormatter;
public class DrumFluidHandler implements IWailaDataProvider {
@@ -43,12 +44,7 @@ public class DrumFluidHandler implements IWailaDataProvider {
if (tanks.length != 1) return currenttip;
int amount = tanks[0].fluid == null ? 0 : tanks[0].fluid.amount;
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(amount),
NumberFormatter.format(tanks[0].capacity),
ConfigHandler.instance().fluidUnit));
currenttip.add(String.format("%s / %s", formatNumber(amount), formatFluid(tanks[0].capacity)));
return currenttip;
}
@@ -1,5 +1,8 @@
package mcp.mobius.waila.addons.openblocks;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatFluid;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -15,9 +18,7 @@ import net.minecraftforge.fluids.IFluidHandler;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.impl.ConfigHandler;
import mcp.mobius.waila.cbcore.LangUtil;
import mcp.mobius.waila.utils.NumberFormatter;
public class TankFluidHandler implements IWailaDataProvider {
@@ -59,12 +60,7 @@ public class TankFluidHandler implements IWailaDataProvider {
if (tanks.length != 1) return currenttip;
int amount = tanks[0].fluid == null ? 0 : tanks[0].fluid.amount;
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(amount),
NumberFormatter.format(tanks[0].capacity),
ConfigHandler.instance().fluidUnit));
currenttip.add(String.format("%s / %s", formatNumber(amount), formatFluid(tanks[0].capacity)));
return currenttip;
}
@@ -1,5 +1,8 @@
package mcp.mobius.waila.addons.railcraft;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatFluid;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -15,9 +18,7 @@ import net.minecraftforge.fluids.IFluidTank;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.impl.ConfigHandler;
import mcp.mobius.waila.cbcore.LangUtil;
import mcp.mobius.waila.utils.NumberFormatter;
import mcp.mobius.waila.utils.WailaExceptionHandler;
public class TankFluidHandler implements IWailaDataProvider {
@@ -56,12 +57,7 @@ public class TankFluidHandler implements IWailaDataProvider {
FluidStack fluid = tank.getFluid();
int amount = fluid == null ? 0 : fluid.amount;
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(amount),
NumberFormatter.format(tank.getCapacity()),
ConfigHandler.instance().fluidUnit));
currenttip.add(String.format("%s / %s", formatNumber(amount), formatFluid(tank.getCapacity())));
return currenttip;
}
@@ -1,5 +1,6 @@
package mcp.mobius.waila.addons.stevescarts;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import static mcp.mobius.waila.api.SpecialChars.ALIGNRIGHT;
import static mcp.mobius.waila.api.SpecialChars.GRAY;
import static mcp.mobius.waila.api.SpecialChars.ITALIC;
@@ -80,7 +81,8 @@ public class HUDCargoManager implements IWailaDataProvider {
String direction = (toCart & (1 << i)) != 0 ? "Load" : "Unload";
String shouldReturn = (doReturn & (1 << i)) != 0 ? "Ret." : "Cont.";
String sAmount = amount == 0 ? "All" : this.getAmount(amount) + " " + this.getAmountType(amount);
String sAmount = amount == 0 ? "All"
: formatNumber(this.getAmount(amount)) + " " + this.getAmountType(amount);
String selection = (String) StevesCartsModule.GetSelectionName
.invoke(StevesCartsModule.CargoItemSelection.cast(itemSelection.get(target)));
@@ -1,5 +1,6 @@
package mcp.mobius.waila.addons.stevescarts;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatFluid;
import static mcp.mobius.waila.api.SpecialChars.ALIGNRIGHT;
import static mcp.mobius.waila.api.SpecialChars.GRAY;
import static mcp.mobius.waila.api.SpecialChars.ITALIC;
@@ -77,13 +78,14 @@ public class HUDLiquidManager implements IWailaDataProvider {
fluidAmount = tag.getCompoundTag("Fluid" + i).getInteger("Amount");
}
String fluidString = fluidAmount == 0 ? "<Empty>" : String.format("%s mB of %s", fluidAmount, fluidName);
String fluidString = fluidAmount == 0 ? "<Empty>"
: String.format("%s of %s", formatFluid(fluidAmount), fluidName);
if (color == 5) continue;
String direction = (toCart & (1 << i)) != 0 ? "Load" : "Unload";
String shouldReturn = (doReturn & (1 << i)) != 0 ? "Ret." : "Cont.";
String sAmount = amount == 0 ? "All" : this.getMaxAmountBuckets(amount) + " mB";
String sAmount = amount == 0 ? "All" : formatFluid(this.getMaxAmountBuckets(amount));
currenttip.add(
String.format(
@@ -1,5 +1,6 @@
package mcp.mobius.waila.addons.stevescarts;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import static mcp.mobius.waila.api.SpecialChars.ALIGNRIGHT;
import static mcp.mobius.waila.api.SpecialChars.GRAY;
import static mcp.mobius.waila.api.SpecialChars.ITALIC;
@@ -47,7 +48,7 @@ public class HUDMinecartModular implements IWailaEntityProvider {
return currenttip;
}
Item ItemCartModule = null;
Item ItemCartModule;
try {
ItemCartModule = (Item) StevesCartsModule.ItemCartModule.get(null);
} catch (Exception e) {
@@ -76,12 +77,11 @@ public class HUDMinecartModular implements IWailaEntityProvider {
currenttip.add(
new ItemStack(ItemCartModule, 1, metas[i]).getDisplayName() + TAB
+ ALIGNRIGHT
+ GRAY
+ " [ "
+ WHITE
+ amount
+ GRAY
+ " mB of "
+ WHITE
+ formatNumber(amount)
+ " of "
+ fluid
+ GRAY
+ " ]");
@@ -1,5 +1,8 @@
package mcp.mobius.waila.addons.thermaldynamics;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatFluid;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -15,9 +18,7 @@ import net.minecraftforge.fluids.IFluidHandler;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.impl.ConfigHandler;
import mcp.mobius.waila.cbcore.LangUtil;
import mcp.mobius.waila.utils.NumberFormatter;
/**
* Created by Lordmau5 on 28.02.2015.
@@ -71,12 +72,7 @@ public class FluiductFluidHandler implements IWailaDataProvider {
return currenttip;
}
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(amount),
NumberFormatter.format(capacity),
ConfigHandler.instance().fluidUnit));
currenttip.add(String.format("%s / %s", formatNumber(amount), formatFluid(capacity)));
return currenttip;
}
@@ -1,5 +1,7 @@
package mcp.mobius.waila.addons.thermalexpansion;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -36,11 +38,11 @@ public class HUDHandlerEnergyCell implements IWailaDataProvider {
currenttip.add(
String.format(
"%s/%s : %d / %d RF/t",
"%s/%s : %s / %s RF/t",
LangUtil.translateG("hud.msg.in"),
LangUtil.translateG("hud.msg.out"),
energyReceive,
energySend));
formatNumber(energyReceive),
formatNumber(energySend)));
return currenttip;
}
@@ -1,5 +1,7 @@
package mcp.mobius.waila.addons.thermalexpansion;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -13,7 +15,7 @@ import mcp.mobius.waila.api.ITaggedList;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.utils.WailaExceptionHandler;
import mcp.mobius.waila.api.SpecialChars;
public class HUDHandlerIEnergyHandler implements IWailaDataProvider {
@@ -34,15 +36,23 @@ public class HUDHandlerIEnergyHandler implements IWailaDataProvider {
if (!config.getConfig("thermalexpansion.energyhandler")) return currenttip;
if (!accessor.getNBTData().hasKey("Energy")) return currenttip;
if (!accessor.getNBTData().hasKey("MaxStorage")) return currenttip;
int energy = accessor.getNBTInteger(accessor.getNBTData(), "Energy");
int maxEnergy = accessor.getNBTInteger(accessor.getNBTData(), "MaxStorage");
try {
if ((maxEnergy != 0) && (((ITaggedList) currenttip).getEntries("RFEnergyStorage").size() == 0)) {
((ITaggedList) currenttip).add(String.format("%d / %d RF", energy, maxEnergy), "RFEnergyStorage");
if (currenttip instanceof ITaggedList taggedTips) {
int energy = accessor.getNBTInteger(accessor.getNBTData(), "Energy");
int maxEnergy = accessor.getNBTInteger(accessor.getNBTData(), "MaxStorage");
if (maxEnergy > 0 && taggedTips.getEntries("RFEnergyStorage").isEmpty()) {
if (config.getConfig("thermalexpansion.rfenergybar")) {
taggedTips.add(
SpecialChars.getRenderString("waila.rfenergy", energy + "", maxEnergy + ""),
"RFEnergyStorage");
} else {
taggedTips.add(
String.format("%s / %s RF", formatNumber(energy), formatNumber(maxEnergy)),
"RFEnergyStorage");
}
}
} catch (Exception e) {
currenttip = WailaExceptionHandler.handleErr(e, accessor.getTileEntity().getClass().getName(), currenttip);
}
return currenttip;
@@ -11,6 +11,7 @@ import net.minecraft.world.World;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.SpecialChars;
import mcp.mobius.waila.cbcore.LangUtil;
public class HUDHandlerTesseract implements IWailaDataProvider {
@@ -33,9 +34,9 @@ public class HUDHandlerTesseract implements IWailaDataProvider {
if (config.getConfig("thermalexpansion.tesssendrecv")) {
String send = String.format("%s : ", LangUtil.translateG("hud.msg.send"));
String recv = String.format("%s : ", LangUtil.translateG("hud.msg.recv"));
String item = String.format("\u00a7a%s ", LangUtil.translateG("hud.msg.item"));
String fluid = String.format("\u00a79%s ", LangUtil.translateG("hud.msg.fluid"));
String energ = String.format("\u00a7c%s ", LangUtil.translateG("hud.msg.energ"));
String item = String.format("%s ", SpecialChars.GREEN + LangUtil.translateG("hud.msg.item"));
String fluid = String.format("%s ", SpecialChars.BLUE + LangUtil.translateG("hud.msg.fluid"));
String energ = String.format("%s ", SpecialChars.RED + LangUtil.translateG("hud.msg.energ"));
switch (accessor.getNBTInteger(accessor.getNBTData(), "Item.Mode")) {
case 0:
@@ -1,5 +1,8 @@
package mcp.mobius.waila.addons.thermalexpansion;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatFluid;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -12,9 +15,7 @@ import net.minecraftforge.fluids.FluidStack;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.impl.ConfigHandler;
import mcp.mobius.waila.cbcore.LangUtil;
import mcp.mobius.waila.utils.NumberFormatter;
import mcp.mobius.waila.utils.WailaExceptionHandler;
public class TankFluidHandler implements IWailaDataProvider {
@@ -65,12 +66,7 @@ public class TankFluidHandler implements IWailaDataProvider {
int amount = (Integer) ThermalExpansionModule.TileTank_getTankAmount.invoke(tileEntity);
int capacity = (Integer) ThermalExpansionModule.TileTank_getTankCapacity.invoke(tileEntity);
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(amount),
NumberFormatter.format(capacity),
ConfigHandler.instance().fluidUnit));
currenttip.add(String.format("%s / %s", formatNumber(amount), formatFluid(capacity)));
} catch (Exception e) {
WailaExceptionHandler.handleErr(e, tileEntity.getClass().getName(), currenttip);
@@ -68,6 +68,7 @@ public class ThermalExpansionModule {
IEnergyInfo_getCurStorage = IEnergyInfo.getMethod("getInfoEnergyStored");
ModuleRegistrar.instance().addConfigRemote("Thermal Expansion", "thermalexpansion.energyhandler");
ModuleRegistrar.instance().addConfigRemote("Thermal Expansion", "thermalexpansion.rfenergybar");
ModuleRegistrar.instance().registerBodyProvider(new HUDHandlerIEnergyHandler(), IEnergyProvider);
ModuleRegistrar.instance().registerNBTProvider(new HUDHandlerIEnergyHandler(), IEnergyProvider);
ModuleRegistrar.instance().registerBodyProvider(new HUDHandlerIEnergyHandler(), IEnergyReceiver);
@@ -34,8 +34,6 @@ public class ConfigHandler implements IWailaConfigHandler {
public HashMap<String, Boolean> forcedConfigs = new HashMap<>();
public Configuration config = null;
public String fluidUnit;
public void addModule(String modName, HashMap<String, String> options) {
this.addModule(modName, new ConfigModule(modName, options));
}
@@ -152,7 +150,6 @@ public class ConfigHandler implements IWailaConfigHandler {
config.get(Configuration.CATEGORY_GENERAL, Constants.CFG_WAILA_KEYBIND, true);
config.get(Configuration.CATEGORY_GENERAL, Constants.CFG_WAILA_NEWFILTERS, true);
config.get(Configuration.CATEGORY_GENERAL, Constants.CFG_WAILA_SHOWICON, true);
fluidUnit = config.get(Configuration.CATEGORY_GENERAL, Constants.CFG_WAILA_FLUIDUNIT, "mB").getString();
OverlayConfig.posX = config.get(Configuration.CATEGORY_GENERAL, Constants.CFG_WAILA_POSX, 5000).getInt();
OverlayConfig.posY = config.get(Configuration.CATEGORY_GENERAL, Constants.CFG_WAILA_POSY, 100).getInt();
@@ -1,10 +1,6 @@
package mcp.mobius.waila.client;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.IReloadableResourceManager;
import net.minecraft.client.resources.IResourceManager;
import net.minecraft.client.resources.IResourceManagerReloadListener;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.MinecraftForge;
@@ -24,10 +20,10 @@ 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.TTRenderRFBar;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderStack;
import mcp.mobius.waila.server.ProxyServer;
import mcp.mobius.waila.utils.LoadedMods;
import mcp.mobius.waila.utils.NumberFormatter;
public class ProxyClient extends ProxyServer {
@@ -61,13 +57,11 @@ public class ProxyClient extends ProxyServer {
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.rfenergy", new TTRenderRFBar());
ModuleRegistrar.instance().registerTooltipRenderer("waila.tcaspect", new TTRenderAspectString());
MinecraftForge.EVENT_BUS.register(new WorldUnloadEventHandler());
((IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager())
.registerReloadListener(new NumberFormatterReloadListener());
}
@Override
@@ -86,12 +80,4 @@ public class ProxyClient extends ProxyServer {
}
}
}
private static class NumberFormatterReloadListener implements IResourceManagerReloadListener {
@Override
public void onResourceManagerReload(IResourceManager resourceManager) {
NumberFormatter.onResourcesReload();
}
}
}
@@ -15,14 +15,16 @@ public class OverlayRenderer {
private static boolean hasDepthTest;
private static int boundTexIndex;
public static void renderOverlay(Tooltip tooltip) {
Minecraft mc = Minecraft.getMinecraft();
if (!(mc.currentScreen == null && mc.theWorld != null
public static boolean isOverlayVisible() {
final Minecraft mc = Minecraft.getMinecraft();
return (mc.currentScreen == null && mc.theWorld != null
&& Minecraft.isGuiEnabled()
&& !mc.gameSettings.keyBindPlayerList.getIsKeyPressed()
&& ConfigHandler.instance().showTooltip()
&& RayTracing.instance().getTarget() != null))
return;
&& ConfigHandler.instance().showTooltip());
}
public static void renderOverlay(Tooltip tooltip) {
if (!isOverlayVisible() || RayTracing.instance().getTarget() == null) return;
if (RayTracing.instance().getTarget().typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK
&& RayTracing.instance().getTargetStack() != null) {
@@ -35,13 +35,9 @@ public class WailaTickHandler {
@SubscribeEvent
public void tickClient(TickEvent.ClientTickEvent event) {
if (event.phase == TickEvent.Phase.START) return;
Minecraft mc = Minecraft.getMinecraft();
World world = mc.theWorld;
EntityPlayer player = mc.thePlayer;
if (world == null || player == null) {
if (!OverlayRenderer.isOverlayVisible()) {
this.tooltip = null;
RayTracing.instance().clear();
return;
@@ -49,6 +45,9 @@ public class WailaTickHandler {
RayTracing.instance().fire();
MovingObjectPosition target = RayTracing.instance().getTarget();
Minecraft mc = Minecraft.getMinecraft();
EntityPlayer player = mc.thePlayer;
World world = mc.theWorld;
List<String> currenttip;
List<String> currenttipHead;
@@ -1,5 +1,8 @@
package mcp.mobius.waila.overlay.tooltiprenderers;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatFluid;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.awt.Dimension;
import java.util.function.Consumer;
@@ -20,10 +23,9 @@ 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.api.impl.ConfigHandler;
import mcp.mobius.waila.cbcore.LangUtil;
import mcp.mobius.waila.overlay.DisplayUtil;
import mcp.mobius.waila.utils.LoadedMods;
import mcp.mobius.waila.utils.NumberFormatter;
public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
@@ -50,16 +52,15 @@ public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
@Override
public Dimension getSize(String[] params, IWailaCommonAccessor accessor) {
int commaCount = (int) (Math.floor((params[2].length() - 1) / 3D) + Math.floor((params[3].length() - 1) / 3D));
// ",".repeat(commaCount) doesn't exist in java 8 so do this instead.
StringBuilder sb = new StringBuilder(commaCount);
for (int i = 0; i < commaCount; i++) {
sb.append(",");
}
return new Dimension(
DisplayUtil.getDisplayWidth(
params[2] + " / " + params[3] + ConfigHandler.instance().fluidUnit + params[1] + sb) + 4,
height);
boolean isEmpty = (params[0].equals("EMPTYFLUID") && params[1].equals("EMPTYFLUID"));
int displayWidth = DisplayUtil.getDisplayWidth(
buildDisplayText(
isEmpty ? 0 : Double.parseDouble(params[2]),
Double.parseDouble(params[3]),
params[1],
isEmpty));
return new Dimension(displayWidth + 4, height);
}
public static final ResourceLocation gradient = new ResourceLocation("waila", "textures/gradient.png");
@@ -71,56 +72,61 @@ public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
double amount = Double.parseDouble(params[2]);
double capacity = Double.parseDouble(params[3]);
Tessellator tessellator = Tessellator.instance;
IIcon icon = FluidRegistry.getFluid(fluidName).getIcon();
boolean isEmpty = fluidName.equals("EMPTYFLUID") && localizedName.equals("EMPTYFLUID");
Minecraft mc = Minecraft.getMinecraft();
mc.getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
if (!isEmpty) {
IIcon icon = FluidRegistry.getFluid(fluidName).getIcon();
mc.getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
bindColor.accept(fluidName);
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 > height; i = i - height) {
drawRectFromIcon(tessellator, 1 + (j * height), 0, 0, icon, height, height);
j++;
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 > height; i = i - height) {
drawRectFromIcon(tessellator, 1 + (j * height), 0, 0, icon, height, height);
j++;
}
if (i > 0) drawRect(
tessellator,
1 + (j * height),
0,
0,
i,
height,
icon.getMinU(),
icon.getMinV(),
icon.getMinU() + ((icon.getMaxU() - icon.getMinU()) * ((double) i / height)),
icon.getMaxV());
tessellator.draw();
}
if (i > 0) drawRect(
tessellator,
1 + (j * height),
0,
0,
i,
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();
if (!isEmpty) {
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();
} else {
Gui.drawRect(1, 0, maxStringW - 1, height - 1, 0x1A575656);
}
drawThickBeveledBox(0, 0, maxStringW, height, 1, 0xFF505050, 0xFF505050, -1);
DisplayUtil.drawString(
NumberFormatter.format((int) amount) + " / "
+ NumberFormatter.format((int) capacity)
+ " "
+ ConfigHandler.instance().fluidUnit
+ " "
+ localizedName,
buildDisplayText(amount, capacity, localizedName, isEmpty),
2,
2,
0xFFFFFFFF,
isEmpty ? 0xFFDDDDDD : 0xFFFFFFFF,
true);
}
public String buildDisplayText(double amount, double capacity, String fluidName, boolean isEmpty) {
return isEmpty ? String.format("%s / %s", LangUtil.translateG("hud.msg.empty"), formatFluid(capacity))
: String.format("%s / %s %s", formatNumber(amount), formatFluid(capacity), fluidName);
}
public static void drawRectFromIcon(Tessellator tessellator, int x, int y, double z, IIcon icon, int width,
@@ -0,0 +1,117 @@
package mcp.mobius.waila.overlay.tooltiprenderers;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
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.ResourceLocation;
import org.lwjgl.opengl.GL11;
import mcp.mobius.waila.api.IWailaCommonAccessor;
import mcp.mobius.waila.api.IWailaVariableWidthTooltipRenderer;
import mcp.mobius.waila.overlay.DisplayUtil;
public class TTRenderRFBar implements IWailaVariableWidthTooltipRenderer {
int maxStringW;
private static final int height = 12;
private static final int width = 2;
@Override
public Dimension getSize(String[] params, IWailaCommonAccessor accessor) {
return new Dimension(
DisplayUtil.getDisplayWidth(buildDisplayText(Integer.parseInt(params[0]), Integer.parseInt(params[1])))
+ 4,
height);
}
public static final ResourceLocation barTexture = new ResourceLocation("waila", "textures/rf_energy_bar.png");
public static final ResourceLocation gradientTexture = new ResourceLocation("waila", "textures/gradient.png");
@Override
public void draw(String[] params, IWailaCommonAccessor accessor) {
int amount = Integer.parseInt(params[0]);
int capacity = Integer.parseInt(params[1]);
Tessellator tessellator = Tessellator.instance;
Minecraft mc = Minecraft.getMinecraft();
mc.getTextureManager().bindTexture(barTexture);
GL11.glColor4f(1F, 1F, 1F, 1F);
tessellator.startDrawingQuads();
// Draw dark (uncharged) background for whole bar first
for (int i = 0; i < (maxStringW - 2); i += width) {
drawRect(tessellator, 1 + i, 0, 0, width, height, 0.0, 0.0, 0.5, 1.0);
}
double i = (double) (maxStringW - 2) * amount / capacity;
int drawnRects = 0;
for (; i > width; i -= width) {
drawRect(tessellator, 1 + (drawnRects * width), 0, 0, width, height, 0.5, 0.0, 1.0, 1.0);
drawnRects++;
}
// Do less than full increments just as much as they take up on the scaled texture
drawRectD(tessellator, 1 + (drawnRects * width), 0, 0, i, height, 0.5, 0.0, 0.5 + 0.25 * i, 1.0);
tessellator.draw();
// Border
drawThickBeveledBox(0, 0, maxStringW, height, 1, 0xFF505050, 0xFF505050, -1);
// Gradient
GL11.glEnable(GL11.GL_BLEND);
GL11.glColor4f(1F, 1F, 1F, 0.5F);
mc.getTextureManager().bindTexture(gradientTexture);
tessellator.startDrawingQuads();
drawRect(tessellator, 1, 1, 0, maxStringW - 2, height - 2, 0, 0, 1, 1);
tessellator.draw();
DisplayUtil.drawString(buildDisplayText(amount, capacity), 2, 2, 0xFFFFFFFF, true);
}
public String buildDisplayText(int amount, int capacity) {
return String.format("%s / %s RF", formatNumber(amount), formatNumber(capacity));
}
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, minV);
tessellator.addVertexWithUV(x, y, z, minU, minV);
}
public static void drawRectD(Tessellator tessellator, double x, double y, double z, double width, double 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, minV);
tessellator.addVertexWithUV(x, y, z, minU, minV);
}
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 setMaxLineWidth(int width) {
maxStringW = width + 2;
}
@Override
public int getMaxLineWidth() {
return maxStringW;
}
}
@@ -7,15 +7,21 @@ import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import cpw.mods.fml.common.registry.GameData;
import mcp.mobius.waila.api.IWailaCommonAccessor;
import mcp.mobius.waila.api.IWailaTooltipRenderer;
import mcp.mobius.waila.api.SpecialChars;
import mcp.mobius.waila.overlay.DisplayUtil;
public class TTRenderStack implements IWailaTooltipRenderer {
@Override
public Dimension getSize(String[] params, IWailaCommonAccessor accessor) {
return new Dimension(16, 16);
boolean small = Boolean.parseBoolean(params.length > 4 ? params[4] : "false");
return small ? new Dimension(10, 8) : new Dimension(16, 16);
}
@Override
@@ -24,14 +30,43 @@ public class TTRenderStack implements IWailaTooltipRenderer {
String name = params[1]; // Fully qualified name
int amount = Integer.parseInt(params[2]);
int meta = Integer.parseInt(params[3]);
boolean small = Boolean.parseBoolean(params.length > 4 ? params[4] : "false");
final float scale = 0.5f;
ItemStack stack = null;
if (type == 0) stack = new ItemStack((Block) Block.blockRegistry.getObject(name), amount, meta);
if (type == 1) stack = new ItemStack((Item) Item.itemRegistry.getObject(name), amount, meta);
RenderHelper.enableGUIStandardItemLighting();
DisplayUtil.renderStack(0, 0, stack);
if (small) {
GL11.glPushMatrix();
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
GL11.glScaled(scale, scale, 1.0f);
DisplayUtil.renderStack(0, 0, stack);
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
GL11.glPopMatrix();
} else {
DisplayUtil.renderStack(0, 0, stack);
}
RenderHelper.disableStandardItemLighting();
}
public static String create(ItemStack itemStack, int amount, boolean small) {
String name = GameData.getItemRegistry().getNameForObject(itemStack.getItem());
int meta = itemStack.getItemDamage();
return SpecialChars.getRenderString(
"waila.stack",
String.valueOf(1),
name,
String.valueOf(amount),
String.valueOf(meta),
String.valueOf(small));
}
public static String create(ItemStack itemStack, boolean small) {
return create(itemStack, 1, small);
}
}
@@ -1,34 +0,0 @@
package mcp.mobius.waila.utils;
import java.text.NumberFormat;
import java.util.Locale;
import net.minecraft.client.Minecraft;
import gregtech.api.util.GTUtility;
public class NumberFormatter {
private static NumberFormat numberFormat = NumberFormat.getInstance(getCurrentLocale());
public static String format(long number) {
if (LoadedMods.GT5U) {
return GTUtility.formatNumbers(number);
}
return numberFormat.format(number);
}
public static Locale getCurrentLocale() {
String langCode = Minecraft.getMinecraft().getLanguageManager().getCurrentLanguage().getLanguageCode();
String[] parts = langCode.split("_", 2);
String language = parts[0];
String country = parts.length == 1 ? "" : parts[1];
return new Locale(language, country);
}
public static void onResourcesReload() {
numberFormat = NumberFormat.getInstance(getCurrentLocale());
}
}
@@ -114,6 +114,7 @@ option.ic2.consump=Show consumption
option.ic2.tradeomat=Show Trade-O-Mat request
option.thaumcraft.storedvis=Capacitor storage
option.thermalexpansion.energyhandler=Show RF storage
option.thermalexpansion.rfenergybar=Use Progress Bar for RF
option.thermalexpansion.energycell=Show ECell IN/OUT
option.thermalexpansion.fluidtype=Show fluid type
option.thermalexpansion.fluidamount=Show fluid amount
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB