Compare commits

..
28 Commits
Author SHA1 Message Date
Martin Robertz 3f2ebe44e8 update + sa + fix 2025-11-15 13:34:00 +01:00
Martin Robertz 34176738d5 sa 2025-11-15 13:23:43 +01:00
Martin Robertz a7971e1e3a Merge remote-tracking branch 'MalTeeez/energybars' into dev
# Conflicts:
#	dependencies.gradle
2025-11-15 13:23:18 +01:00
Martin Robertz 62b4f9d8ce Merge remote-tracking branch 'danyadev/WailaPlugins-compat' into dev
# Conflicts:
#	src/main/java/mcp/mobius/waila/addons/railcraft/TankFluidHandler.java
#	src/main/java/mcp/mobius/waila/addons/thermalexpansion/TankFluidHandler.java
#	src/main/java/mcp/mobius/waila/addons/thermalexpansion/TankModeHandler.java
#	src/main/java/mcp/mobius/waila/overlay/tooltiprenderers/TTRenderFluidBar.java
2025-11-15 13:22:57 +01:00
danyadev 940a65e01c review fixes 2025-11-15 15:18:49 +03:00
danyadev e855e9d579 no need for setGroupingUsed as it's true by default 2025-11-15 15:18:49 +03:00
danyadev 64de9d0d76 remove < > symbols from hud.msg.empty 2025-11-15 15:18:49 +03:00
danyadev 259caad7ac fix server 2025-11-15 15:18:49 +03:00
danyadev 1ec4b77057 use NumberFormat 2025-11-15 15:18:49 +03:00
danyadev 2b6634ef1f format numbers with , 2025-11-15 15:18:49 +03:00
danyadev a979059af7 damn spotless 2025-11-15 15:18:49 +03:00
danyadev 0f1dda58ae use fluidUnit from config 2025-11-15 15:18:49 +03:00
danyadev 3c9a443fb0 hide fluid settings when WailaPlugins is present 2025-11-15 15:18:49 +03:00
danyadev d551b63e45 don't show fluid info if WailaPlugins mod is present 2025-11-15 15:18:49 +03:00
danyadev 955bd4cb2c extract loaded mod checks in a LoadedMods class 2025-11-15 15:18:49 +03:00
Martin Robertz 37e6858a2d Merge branch 'master' into energybars 2025-11-15 13:07:49 +01:00
Martin Robertz 464bd14f41 Merge branch 'master' into master 2025-11-15 13:07:41 +01:00
MalTeeez 6ae4a8fb6e Merge branch 'master' into energybars 2025-11-15 01:13:32 +01:00
Mika Hensel 4fb2924e2c Revert language changes to be compatible with #54 2025-11-15 00:06:16 +01:00
Mika Hensel 7d2a9221a7 Format Numbers for non-bar case 2025-11-14 23:50:17 +01:00
Mika Hensel ebdc187f48 Add config option for energy bar 2025-11-14 23:26:27 +01:00
Mika Hensel 147598567e Finish first version of energy bar with subpixel skips, need to add a config setting to optionally use the bars 2025-11-14 03:11:24 +01:00
Mika Hensel 157399c11b Switch to String.format for tooltip strings, remove wrong padding for getsize on empty tanks 2025-11-13 05:54:04 +01:00
Mika Hensel 604c4eb253 Fix italian language change, use correct double for size calculation, switch back background opacity
Use old version of background opacity for filled tanks since we now treat bot of those as separate backgrounds
2025-11-13 05:43:23 +02:00
Mika Hensel 4098a2fcf4 Add another 'Empty' localization entry without the <> and use that instead
(cherry picked from commit f0b35d061b0dd1df6e42f48e322789f3a615318e)
2025-11-13 05:43:23 +02:00
Mika Hensel 15e40a94cd Change box color back, consider empty tanks in getSize() too
(cherry picked from commit cc9861c44bf0cd5e60e646a4522411525fd98ca2)
2025-11-13 05:43:23 +02:00
Mika Hensel ca489363fa Only render fluid when not empty, change colors a little to fit empty bar better 2025-11-13 05:43:23 +02:00
Mika Hensel 05b3488dc1 Accept empty fluid tanks and treat them differently in fluid bars
(cherry picked from commit 7cb54e77707b844aae2f379e1759a59640dd7221)
2025-11-12 22:47:48 +02:00
50 changed files with 420 additions and 701 deletions

No files matched your search

+2 -2
View File
@@ -3,9 +3,9 @@ name: Build and test
on:
pull_request:
branches: [ master, main, release/** ]
branches: [ master, main ]
push:
branches: [ master, main, release/** ]
branches: [ master, main ]
jobs:
build-and-test:
-17
View File
@@ -1,17 +0,0 @@
name: Optimize images
on:
pull_request:
branches: [ master, main, release/** ]
paths:
- "**/*.png"
push:
branches: [ master, main, release/** ]
paths:
- "**/*.png"
jobs:
optimize-images:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/optimize-images.yml@master
secrets: inherit
+13 -14
View File
@@ -1,24 +1,23 @@
// Add your dependencies here
dependencies {
implementation('com.github.GTNewHorizons:NotEnoughItems:2.8.93-GTNH:dev')
implementation('com.github.GTNewHorizons:NotEnoughItems:2.8.37-GTNH:dev')
shadowImplementation('au.com.bytecode:opencsv:2.4')
compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.52.463:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:GT5-Unofficial:5.09.52.111:dev") { transitive = false }
runtimeOnlyNonPublishable("com.github.GTNewHorizons:WAILAPlugins:0.7.2:dev") {
runtimeOnly("com.github.GTNewHorizons:WAILAPlugins:0.7.0:dev") {
exclude group: 'com.github.GTNewHorizons', module: 'waila'
}
runtimeOnlyNonPublishable("com.github.GTNewHorizons:EnderCore:0.5.12:dev")
runtimeOnlyNonPublishable("com.github.GTNewHorizons:BuildCraft:7.1.57:dev")
runtimeOnlyNonPublishable(deobfCurse("cofh-lib-220333:2388748"))
runtimeOnlyNonPublishable(deobfCurse("extrautils-225561:2264383"))
runtimeOnlyNonPublishable("com.github.GTNewHorizons:OpenBlocks:1.12.12-GTNH:dev")
runtimeOnlyNonPublishable("com.github.GTNewHorizons:Railcraft:9.17.26:dev")
runtimeOnlyNonPublishable(deobfCurse('thermal-foundation-222880:2388753'))
runtimeOnlyNonPublishable(deobfCurse('thermal-expansion-69163:2388759'))
runtimeOnlyNonPublishable(deobfCurse('thermal-dynamics-227443:2388756'))
implementation(deobfCurse('cofh-core-69162:2388751'))
api("com.github.GTNewHorizons:GTNHLib:0.11.37:dev")
runtimeOnly("com.github.GTNewHorizons:EnderCore:0.5.0:dev")
runtimeOnly("com.github.GTNewHorizons:BuildCraft:7.1.45:dev")
runtimeOnly("curse.maven:cofh-lib-220333:2388748")
runtimeOnly("curse.maven:extrautils-225561:2264383")
runtimeOnly("com.github.GTNewHorizons:OpenBlocks:1.12.3-GTNH:dev")
runtimeOnly("com.github.GTNewHorizons:Railcraft:9.17.6:dev")
runtimeOnly('curse.maven:thermal-foundation-222880:2388753')
runtimeOnly('curse.maven:thermal-expansion-69163:2388759')
runtimeOnly('curse.maven:thermal-dynamics-227443:2388756')
implementation('curse.maven:cofh-core-69162:2388751')
}
+3 -30
View File
@@ -39,33 +39,9 @@ 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 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 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 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.
@@ -233,6 +209,3 @@ 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
@@ -1,12 +0,0 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/c2dd35c9d0aaf0ba6ad0791320f99dfc/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/e5810bd7fd1f8a586644409d395a7e55/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7b3c4877c0749019e6805bb61e421497/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/8e1d9ee5d0f13e442218f6884a306da1/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-9.4.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Vendored
+5 -2
View File
@@ -1,7 +1,7 @@
#!/bin/sh
#
# Copyright © 2015 the original authors.
# Copyright © 2015-2021 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.
@@ -57,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -114,6 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -171,6 +172,7 @@ 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" )
@@ -210,6 +212,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
Vendored
+2 -1
View File
@@ -70,10 +70,11 @@ goto fail
:execute
@rem Setup the command line
set CLASSPATH=
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -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 '2.0.24'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.48'
}
+1 -2
View File
@@ -40,8 +40,7 @@ import mcp.mobius.waila.utils.ModIdentification;
name = "Waila",
version = Tags.GRADLETOKEN_VERSION,
dependencies = "after:NotEnoughItems@[1.0.4.0,)",
acceptableRemoteVersions = "*",
guiFactory = "mcp.mobius.waila.client.WailaGuiFactory")
acceptableRemoteVersions = "*")
public class Waila {
// The instance of your mod that Forge uses.
@@ -1,8 +1,5 @@
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;
@@ -22,6 +19,7 @@ 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 {
@@ -62,7 +60,12 @@ 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", formatNumber(liquidAmount), formatFluid(capacity)));
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(liquidAmount),
NumberFormatter.format(capacity),
ConfigHandler.instance().fluidUnit));
return currenttip;
}
@@ -1,8 +1,5 @@
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;
@@ -17,6 +14,8 @@ 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 {
@@ -44,7 +43,12 @@ 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", formatNumber(amount), formatFluid(tanks[0].capacity)));
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(amount),
NumberFormatter.format(tanks[0].capacity),
ConfigHandler.instance().fluidUnit));
return currenttip;
}
@@ -1,8 +1,5 @@
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;
@@ -18,7 +15,9 @@ 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 {
@@ -60,7 +59,12 @@ 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", formatNumber(amount), formatFluid(tanks[0].capacity)));
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(amount),
NumberFormatter.format(tanks[0].capacity),
ConfigHandler.instance().fluidUnit));
return currenttip;
}
@@ -1,8 +1,5 @@
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;
@@ -18,7 +15,9 @@ 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 {
@@ -57,7 +56,12 @@ public class TankFluidHandler implements IWailaDataProvider {
FluidStack fluid = tank.getFluid();
int amount = fluid == null ? 0 : fluid.amount;
currenttip.add(String.format("%s / %s", formatNumber(amount), formatFluid(tank.getCapacity())));
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(amount),
NumberFormatter.format(tank.getCapacity()),
ConfigHandler.instance().fluidUnit));
return currenttip;
}
@@ -1,6 +1,5 @@
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;
@@ -81,8 +80,7 @@ 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"
: formatNumber(this.getAmount(amount)) + " " + this.getAmountType(amount);
String sAmount = amount == 0 ? "All" : this.getAmount(amount) + " " + this.getAmountType(amount);
String selection = (String) StevesCartsModule.GetSelectionName
.invoke(StevesCartsModule.CargoItemSelection.cast(itemSelection.get(target)));
@@ -1,6 +1,5 @@
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;
@@ -78,14 +77,13 @@ public class HUDLiquidManager implements IWailaDataProvider {
fluidAmount = tag.getCompoundTag("Fluid" + i).getInteger("Amount");
}
String fluidString = fluidAmount == 0 ? "<Empty>"
: String.format("%s of %s", formatFluid(fluidAmount), fluidName);
String fluidString = fluidAmount == 0 ? "<Empty>" : String.format("%s mB of %s", 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" : formatFluid(this.getMaxAmountBuckets(amount));
String sAmount = amount == 0 ? "All" : this.getMaxAmountBuckets(amount) + " mB";
currenttip.add(
String.format(
@@ -1,6 +1,5 @@
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;
@@ -48,7 +47,7 @@ public class HUDMinecartModular implements IWailaEntityProvider {
return currenttip;
}
Item ItemCartModule;
Item ItemCartModule = null;
try {
ItemCartModule = (Item) StevesCartsModule.ItemCartModule.get(null);
} catch (Exception e) {
@@ -77,11 +76,12 @@ public class HUDMinecartModular implements IWailaEntityProvider {
currenttip.add(
new ItemStack(ItemCartModule, 1, metas[i]).getDisplayName() + TAB
+ ALIGNRIGHT
+ GRAY
+ " [ "
+ WHITE
+ formatNumber(amount)
+ " of "
+ amount
+ GRAY
+ " mB of "
+ WHITE
+ fluid
+ GRAY
+ " ]");
@@ -1,8 +1,5 @@
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;
@@ -18,7 +15,9 @@ 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.
@@ -72,7 +71,12 @@ public class FluiductFluidHandler implements IWailaDataProvider {
return currenttip;
}
currenttip.add(String.format("%s / %s", formatNumber(amount), formatFluid(capacity)));
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(amount),
NumberFormatter.format(capacity),
ConfigHandler.instance().fluidUnit));
return currenttip;
}
@@ -1,7 +1,5 @@
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;
@@ -38,11 +36,11 @@ public class HUDHandlerEnergyCell implements IWailaDataProvider {
currenttip.add(
String.format(
"%s/%s : %s / %s RF/t",
"%s/%s : %d / %d RF/t",
LangUtil.translateG("hud.msg.in"),
LangUtil.translateG("hud.msg.out"),
formatNumber(energyReceive),
formatNumber(energySend)));
energyReceive,
energySend));
return currenttip;
}
@@ -1,7 +1,6 @@
package mcp.mobius.waila.addons.thermalexpansion;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.text.NumberFormat;
import java.util.List;
import net.minecraft.entity.player.EntityPlayerMP;
@@ -49,7 +48,11 @@ public class HUDHandlerIEnergyHandler implements IWailaDataProvider {
"RFEnergyStorage");
} else {
taggedTips.add(
String.format("%s / %s RF", formatNumber(energy), formatNumber(maxEnergy)),
// TODO: Use NumberFormatter from #54
String.format(
"%s / %s RF",
NumberFormat.getInstance().format(energy),
NumberFormat.getInstance().format(maxEnergy)),
"RFEnergyStorage");
}
}
@@ -11,7 +11,6 @@ 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 {
@@ -34,9 +33,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("%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"));
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"));
switch (accessor.getNBTInteger(accessor.getNBTData(), "Item.Mode")) {
case 0:
@@ -1,8 +1,5 @@
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;
@@ -15,7 +12,9 @@ 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 {
@@ -66,7 +65,12 @@ 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", formatNumber(amount), formatFluid(capacity)));
currenttip.add(
String.format(
"%s / %s %s",
NumberFormatter.format(amount),
NumberFormatter.format(capacity),
ConfigHandler.instance().fluidUnit));
} catch (Exception e) {
WailaExceptionHandler.handleErr(e, tileEntity.getClass().getName(), currenttip);
@@ -2,29 +2,21 @@ package mcp.mobius.waila.addons.vanillamc;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraft.world.World;
import cpw.mods.fml.common.registry.GameData;
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import mcp.mobius.waila.api.IWailaDataProvider;
import mcp.mobius.waila.api.impl.ModuleRegistrar;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderBar;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderProgressBar;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderStack;
import mcp.mobius.waila.utils.ColorUtils;
import mcp.mobius.waila.api.SpecialChars;
public class HUDHandlerFurnace implements IWailaDataProvider {
static Block furanace = Blocks.furnace;
@Override
public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) {
return null;
@@ -39,68 +31,45 @@ public class HUDHandlerFurnace implements IWailaDataProvider {
@Override
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor,
IWailaConfigHandler config) {
NBTTagCompound tag = accessor.getNBTData();
NBTTagList items = accessor.getNBTData().getTagList("Items", 10);
String itemsText = "";
ItemStack inputStack = null;
ItemStack fuelStack = null;
ItemStack outputStack = null;
int cookTime = accessor.getNBTData().getShort("CookTime");
NBTTagList tag = accessor.getNBTData().getTagList("Items", 10);
int smeltTime = tag.getInteger("Smelt");
int fuelTime = tag.getInteger("Fuel");
int maxFuelTime = tag.getInteger("MaxFuel");
double smeltProgress = (double) smeltTime / 200;
double fuelProgress = (double) fuelTime / maxFuelTime;
for (int i = 0; i < items.tagCount(); i++) {
NBTTagCompound itemTag = items.getCompoundTagAt(i);
byte slot = itemTag.getByte("Slot");
ItemStack stack = ItemStack.loadItemStackFromNBT(itemTag);
if (slot == 0) {
inputStack = stack;
} else if (slot == 1) {
fuelStack = stack;
} else if (slot == 2) {
outputStack = stack;
}
String renderStr = "";
{
ItemStack stack = ItemStack.loadItemStackFromNBT(tag.getCompoundTagAt(0));
String name = GameData.getItemRegistry().getNameForObject(stack.getItem());
renderStr += SpecialChars.getRenderString(
"waila.stack",
"1",
name,
String.valueOf(stack.stackSize),
String.valueOf(stack.getItemDamage()));
}
{
ItemStack stack = ItemStack.loadItemStackFromNBT(tag.getCompoundTagAt(1));
String name = GameData.getItemRegistry().getNameForObject(stack.getItem());
renderStr += SpecialChars.getRenderString(
"waila.stack",
"1",
name,
String.valueOf(stack.stackSize),
String.valueOf(stack.getItemDamage()));
}
if (fuelProgress > 0) {
String fuelBar = TTRenderBar.create(
String.format("Fuel %ds / %ds", (maxFuelTime - fuelTime) / 20, maxFuelTime / 20),
ColorUtils.fuelFurnaceBarTop.getColor(),
ColorUtils.fuelFurnaceBarBottom.getColor(),
1.0 - fuelProgress);
currenttip.add(fuelBar);
renderStr += SpecialChars.getRenderString("waila.progress", String.valueOf(cookTime), String.valueOf(200));
{
ItemStack stack = ItemStack.loadItemStackFromNBT(tag.getCompoundTagAt(2));
String name = GameData.getItemRegistry().getNameForObject(stack.getItem());
renderStr += SpecialChars.getRenderString(
"waila.stack",
"1",
name,
String.valueOf(stack.stackSize),
String.valueOf(stack.getItemDamage()));
}
if (smeltProgress > 0) {
String cookBar = TTRenderBar.create(
String.format("Smelt %ds / %ds", smeltTime / 20, 200 / 20),
ColorUtils.progressBarTop.getColor(),
ColorUtils.progressBarBottom.getColor(),
smeltProgress);
currenttip.add(cookBar);
}
if (inputStack != null) {
itemsText += TTRenderStack.create(inputStack, inputStack.stackSize);
}
if (fuelStack != null) {
itemsText += TTRenderStack.create(fuelStack, fuelStack.stackSize);
}
if (outputStack != null) {
if (inputStack != null || fuelStack != null) {
itemsText += TTRenderProgressBar.create(0, 1);
}
itemsText += TTRenderStack.create(outputStack, outputStack.stackSize);
}
currenttip.add(itemsText);
currenttip.add(renderStr);
return currenttip;
}
@@ -114,19 +83,9 @@ public class HUDHandlerFurnace implements IWailaDataProvider {
@Override
public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, int x,
int y, int z) {
if (te instanceof TileEntityFurnace furnace) {
tag.setInteger("Smelt", furnace.furnaceCookTime);
tag.setInteger("Fuel", furnace.furnaceBurnTime);
tag.setInteger("MaxFuel", furnace.currentItemBurnTime);
te.writeToNBT(tag);
}
if (te != null) te.writeToNBT(tag);
return tag;
}
public static void register() {
IWailaDataProvider provider = new HUDHandlerFurnace();
ModuleRegistrar.instance().registerBodyProvider(provider, furanace.getClass());
ModuleRegistrar.instance().registerNBTProvider(provider, furanace.getClass());
}
public static void register() {}
}
@@ -34,6 +34,8 @@ 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));
}
@@ -150,6 +152,7 @@ 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();
@@ -12,18 +12,18 @@ import mcp.mobius.waila.utils.NBTUtil;
public class DataAccessorFMP implements IWailaFMPAccessor {
public static final DataAccessorFMP instance = new DataAccessorFMP();
String id;
World world;
EntityPlayer player;
MovingObjectPosition mop;
Vec3 renderingvec = null;
TileEntity entity;
NBTTagCompound partialNBT = null;
NBTTagCompound remoteNBT = null;
long timeLastUpdate = System.currentTimeMillis();
double partialFrame;
private String id;
private World world;
private EntityPlayer player;
private MovingObjectPosition mop;
private Vec3 renderingvec;
private TileEntity tileEntity;
private NBTTagCompound partialNBT;
private double partialFrame;
private DataAccessorFMP() {}
public static DataAccessorFMP instance = new DataAccessorFMP();
public void set(World _world, EntityPlayer _player, MovingObjectPosition _mop, NBTTagCompound _partialNBT,
String id) {
@@ -35,24 +35,13 @@ public class DataAccessorFMP implements IWailaFMPAccessor {
this.world = _world;
this.player = _player;
this.mop = _mop;
this.tileEntity = world.getTileEntity(_mop.blockX, _mop.blockY, _mop.blockZ);
this.entity = world.getTileEntity(_mop.blockX, _mop.blockY, _mop.blockZ);
this.partialNBT = _partialNBT;
this.id = id;
this.renderingvec = renderVec;
this.partialFrame = partialTicks;
}
public void reset() {
id = null;
world = null;
player = null;
mop = null;
renderingvec = null;
tileEntity = null;
partialNBT = null;
partialFrame = 0.0D;
}
@Override
public World getWorld() {
return this.world;
@@ -65,7 +54,7 @@ public class DataAccessorFMP implements IWailaFMPAccessor {
@Override
public TileEntity getTileEntity() {
return this.tileEntity;
return this.entity;
}
@Override
@@ -80,9 +69,12 @@ public class DataAccessorFMP implements IWailaFMPAccessor {
@Override
public NBTTagCompound getFullNBTData() {
if (this.tileEntity == null) return null;
if (this.entity == null) return null;
if (this.isTagCorrect(this.remoteNBT)) return this.remoteNBT;
NBTTagCompound tag = new NBTTagCompound();
this.tileEntity.writeToNBT(tag);
this.entity.writeToNBT(tag);
return tag;
}
@@ -106,4 +98,20 @@ public class DataAccessorFMP implements IWailaFMPAccessor {
return this.id;
}
private boolean isTagCorrect(NBTTagCompound tag) {
if (tag == null) {
this.timeLastUpdate = System.currentTimeMillis() - 250;
return false;
}
int x = tag.getInteger("x");
int y = tag.getInteger("y");
int z = tag.getInteger("z");
if (x == this.mop.blockX && y == this.mop.blockY && z == this.mop.blockZ) return true;
else {
this.timeLastUpdate = System.currentTimeMillis() - 250;
return false;
}
}
}
@@ -1,6 +1,10 @@
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;
@@ -17,7 +21,6 @@ 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.TTRenderBar;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderFluidBar;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderHealth;
import mcp.mobius.waila.overlay.tooltiprenderers.TTRenderProgressBar;
@@ -25,6 +28,7 @@ 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 {
@@ -56,7 +60,6 @@ public class ProxyClient extends ProxyServer {
ModuleRegistrar.instance().registerTooltipRenderer("waila.health", new TTRenderHealth());
ModuleRegistrar.instance().registerTooltipRenderer("waila.stack", new TTRenderStack());
ModuleRegistrar.instance().registerTooltipRenderer("waila.bar", new TTRenderBar());
ModuleRegistrar.instance().registerTooltipRenderer("waila.progress", new TTRenderProgressBar());
ModuleRegistrar.instance().registerTooltipRenderer("waila.fluid", new TTRenderFluidBar());
ModuleRegistrar.instance().registerTooltipRenderer("waila.rfenergy", new TTRenderRFBar());
@@ -64,6 +67,9 @@ public class ProxyClient extends ProxyServer {
ModuleRegistrar.instance().registerTooltipRenderer("waila.tcaspect", new TTRenderAspectString());
MinecraftForge.EVENT_BUS.register(new WorldUnloadEventHandler());
((IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager())
.registerReloadListener(new NumberFormatterReloadListener());
}
@Override
@@ -82,4 +88,12 @@ public class ProxyClient extends ProxyServer {
}
}
}
private static class NumberFormatterReloadListener implements IResourceManagerReloadListener {
@Override
public void onResourceManagerReload(IResourceManager resourceManager) {
NumberFormatter.onResourcesReload();
}
}
}
@@ -1,30 +0,0 @@
package mcp.mobius.waila.client;
import java.util.Set;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import cpw.mods.fml.client.IModGuiFactory;
import mcp.mobius.waila.gui.screens.config.ScreenConfig;
public class WailaGuiFactory implements IModGuiFactory {
@Override
public void initialize(Minecraft minecraftInstance) {}
@Override
public Class<? extends GuiScreen> mainConfigGuiClass() {
return ScreenConfig.class;
}
@Override
public Set<RuntimeOptionCategoryElement> runtimeGuiCategories() {
return null;
}
@Override
public RuntimeOptionGuiHandler getHandlerFor(RuntimeOptionCategoryElement element) {
return null;
}
}
@@ -10,20 +10,17 @@ public class LabelFixedFont extends WidgetBase {
protected String text = "";
protected int color;
protected boolean shadow;
public LabelFixedFont(IWidget parent, String text) {
super(parent);
this.setText(text);
this.color = 0xFFFFFF;
this.shadow = false;
}
public LabelFixedFont(IWidget parent, String text, int color) {
super(parent);
this.setText(text);
this.color = color;
this.shadow = false;
}
@Override
@@ -42,10 +39,6 @@ public class LabelFixedFont extends WidgetBase {
this.color = color;
}
public void setShadow(boolean shadow) {
this.shadow = shadow;
}
private void updateGeometry() {
if (this.geom == null) this.geom = new WidgetGeometry(0, 0, 50, 50, CType.ABSXY, CType.ABSXY);
@@ -63,8 +56,7 @@ public class LabelFixedFont extends WidgetBase {
@Override
public void draw(Point pos) {
this.saveGLState();
if (this.shadow) this.mc.fontRenderer.drawStringWithShadow(this.text, pos.getX(), pos.getY(), this.color);
else this.mc.fontRenderer.drawString(this.text, pos.getX(), pos.getY(), this.color);
this.mc.fontRenderer.drawString(this.text, pos.getX(), pos.getY(), this.color);
this.loadGLState();
}
}
@@ -15,17 +15,8 @@ import mcp.mobius.waila.gui.widgets.WidgetBase;
public abstract class ButtonBase extends WidgetBase {
protected static final int BUTTON_TEX_U = 0;
protected static final int BUTTON_TEX_V_BASE = 66;
protected static final int BUTTON_TEX_V_STEP = 20;
protected static final int BUTTON_TEX_W = 200;
protected static final int BUTTON_TEX_H = 20;
protected static final int BUTTON_BORDER = 2;
protected static final int COLOR_TEXT = 0xffffff;
protected static final int COLOR_TEXT_HOVER = 0xffffa0;
protected boolean mouseOver = false;
protected static final ResourceLocation widgetsTexture = new ResourceLocation("textures/gui/widgets.png");
protected static ResourceLocation widgetsTexture = new ResourceLocation("textures/gui/widgets.png");
public ButtonBase(IWidget parent) {
super(parent);
@@ -34,14 +25,10 @@ public abstract class ButtonBase extends WidgetBase {
@Override
public void draw() {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
int textColor = this.mouseOver ? COLOR_TEXT_HOVER : COLOR_TEXT;
for (IWidget widget : this.widgets.values()) {
if (!(widget instanceof LabelFixedFont)) continue;
LabelFixedFont label = (LabelFixedFont) widget;
label.setShadow(true);
label.setColor(textColor);
}
for (IWidget widget : this.widgets.values())
if (widget instanceof LabelFixedFont) if (this.mouseOver) ((LabelFixedFont) widget).setColor(0xffffa0);
else((LabelFixedFont) widget).setColor(0xffffff);
super.draw();
}
@@ -53,108 +40,20 @@ public abstract class ButtonBase extends WidgetBase {
if (this.mouseOver) texOffset = 1;
this.drawVanillaButton(texOffset);
this.mc.getTextureManager().bindTexture(widgetsTexture);
UIHelper.drawTexture(
this.getPos().getX(),
this.getPos().getY(),
this.getSize().getX(),
this.getSize().getY(),
0,
66 + texOffset * 20,
200,
20);
this.loadGLState();
}
protected void drawVanillaButton(int texOffset) {
int x = this.getPos().getX();
int y = this.getPos().getY();
int width = this.getSize().getX();
int height = this.getSize().getY();
int v = BUTTON_TEX_V_BASE + texOffset * BUTTON_TEX_V_STEP;
this.mc.getTextureManager().bindTexture(widgetsTexture);
if (width <= 0 || height <= 0) return;
int borderX = Math.min(BUTTON_BORDER, width / 2);
int borderY = Math.min(BUTTON_BORDER, height / 2);
int midW = width - borderX * 2;
int midH = height - borderY * 2;
int srcMidW = BUTTON_TEX_W - BUTTON_BORDER * 2;
int srcMidH = BUTTON_TEX_H - BUTTON_BORDER * 2;
// Corners
UIHelper.drawTexture(x, y, borderX, borderY, BUTTON_TEX_U, v, BUTTON_BORDER, BUTTON_BORDER);
UIHelper.drawTexture(
x + width - borderX,
y,
borderX,
borderY,
BUTTON_TEX_W - BUTTON_BORDER,
v,
BUTTON_BORDER,
BUTTON_BORDER);
UIHelper.drawTexture(
x,
y + height - borderY,
borderX,
borderY,
BUTTON_TEX_U,
v + BUTTON_TEX_H - BUTTON_BORDER,
BUTTON_BORDER,
BUTTON_BORDER);
UIHelper.drawTexture(
x + width - borderX,
y + height - borderY,
borderX,
borderY,
BUTTON_TEX_W - BUTTON_BORDER,
v + BUTTON_TEX_H - BUTTON_BORDER,
BUTTON_BORDER,
BUTTON_BORDER);
if (midW > 0) {
// Top + bottom edges
UIHelper.drawTexture(x + borderX, y, midW, borderY, BUTTON_BORDER, v, srcMidW, BUTTON_BORDER);
UIHelper.drawTexture(
x + borderX,
y + height - borderY,
midW,
borderY,
BUTTON_BORDER,
v + BUTTON_TEX_H - BUTTON_BORDER,
srcMidW,
BUTTON_BORDER);
}
if (midH > 0) {
// Left + right edges
UIHelper.drawTexture(
x,
y + borderY,
borderX,
midH,
BUTTON_TEX_U,
v + BUTTON_BORDER,
BUTTON_BORDER,
srcMidH);
UIHelper.drawTexture(
x + width - borderX,
y + borderY,
borderX,
midH,
BUTTON_TEX_W - BUTTON_BORDER,
v + BUTTON_BORDER,
BUTTON_BORDER,
srcMidH);
}
if (midW > 0 && midH > 0) {
// Center
UIHelper.drawTexture(
x + borderX,
y + borderY,
midW,
midH,
BUTTON_BORDER,
v + BUTTON_BORDER,
srcMidW,
srcMidH);
}
}
@Override
public void onMouseEnter(MouseEvent event) {
mouseOver = true;
@@ -4,6 +4,7 @@ import org.lwjgl.util.Point;
import mcp.mobius.waila.api.impl.ConfigHandler;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.IWidget;
public class ButtonBooleanConfig extends ButtonBoolean {
@@ -46,7 +47,17 @@ public class ButtonBooleanConfig extends ButtonBoolean {
if (!ConfigHandler.instance().forcedConfigs.containsKey(this.configKey)) super.draw(pos);
else {
this.saveGLState();
this.drawVanillaButton(-1);
int texOffset = -1;
this.mc.getTextureManager().bindTexture(widgetsTexture);
UIHelper.drawTexture(
this.getPos().getX(),
this.getPos().getY(),
this.getSize().getX(),
this.getSize().getY(),
0,
66 + texOffset * 20,
200,
20);
this.loadGLState();
}
}
@@ -5,6 +5,7 @@ import org.lwjgl.util.Point;
import mcp.mobius.waila.Waila;
import mcp.mobius.waila.api.impl.ConfigHandler;
import mcp.mobius.waila.gui.events.MouseEvent;
import mcp.mobius.waila.gui.helpers.UIHelper;
import mcp.mobius.waila.gui.interfaces.IWidget;
public class ButtonBooleanConfigRemote extends ButtonBooleanConfig {
@@ -40,7 +41,17 @@ public class ButtonBooleanConfigRemote extends ButtonBooleanConfig {
super.draw(pos);
else {
this.saveGLState();
this.drawVanillaButton(-1);
int texOffset = -1;
this.mc.getTextureManager().bindTexture(widgetsTexture);
UIHelper.drawTexture(
this.getPos().getX(),
this.getPos().getY(),
this.getSize().getX(),
this.getSize().getY(),
0,
66 + texOffset * 20,
200,
20);
this.loadGLState();
}
}
@@ -35,13 +35,9 @@ public class DecoratorFMP implements IWailaBlockDecorator {
accessor.getRenderingPosition(),
accessor.getPartialFrame());
for (List<IWailaFMPDecorator> providersList : ModuleRegistrar.instance().getFMPDecorators(id)
.values()) {
for (IWailaFMPDecorator provider : providersList) {
for (List<IWailaFMPDecorator> providersList : ModuleRegistrar.instance().getFMPDecorators(id).values())
for (IWailaFMPDecorator provider : providersList)
provider.decorateBlock(itemStack, DataAccessorFMP.instance, config);
}
}
DataAccessorFMP.instance.reset();
}
}
}
@@ -41,11 +41,9 @@ public class HUDHandlerFMP implements IWailaDataProvider {
for (List<IWailaFMPProvider> providersList : ModuleRegistrar.instance().getHeadFMPProviders(id)
.values()) {
for (IWailaFMPProvider provider : providersList) {
for (IWailaFMPProvider provider : providersList)
currenttip = provider.getWailaHead(itemStack, currenttip, DataAccessorFMP.instance, config);
}
}
DataAccessorFMP.instance.reset();
}
}
@@ -66,11 +64,9 @@ public class HUDHandlerFMP implements IWailaDataProvider {
for (List<IWailaFMPProvider> providersList : ModuleRegistrar.instance().getBodyFMPProviders(id)
.values()) {
for (IWailaFMPProvider provider : providersList) {
for (IWailaFMPProvider provider : providersList)
currenttip = provider.getWailaBody(itemStack, currenttip, DataAccessorFMP.instance, config);
}
}
DataAccessorFMP.instance.reset();
}
}
@@ -91,11 +87,9 @@ public class HUDHandlerFMP implements IWailaDataProvider {
for (List<IWailaFMPProvider> providersList : ModuleRegistrar.instance().getTailFMPProviders(id)
.values()) {
for (IWailaFMPProvider provider : providersList) {
for (IWailaFMPProvider provider : providersList)
currenttip = provider.getWailaTail(itemStack, currenttip, DataAccessorFMP.instance, config);
}
}
DataAccessorFMP.instance.reset();
}
}
@@ -90,20 +90,20 @@ public enum WailaPacketHandler {
}
public void writeNBT(ByteBuf target, NBTTagCompound tag) throws IOException {
if (tag == null) target.writeInt(-1);
if (tag == null) target.writeShort(-1);
else {
byte[] abyte = CompressedStreamTools.compress(tag);
target.writeInt(abyte.length);
target.writeShort((short) abyte.length);
target.writeBytes(abyte);
}
}
public NBTTagCompound readNBT(ByteBuf dat) throws IOException {
int val = dat.readInt();
short short1 = dat.readShort();
if (val < 0) return null;
if (short1 < 0) return null;
else {
byte[] abyte = new byte[val];
byte[] abyte = new byte[short1];
dat.readBytes(abyte);
return CompressedStreamTools.func_152457_a(abyte, NBTSizeTracker.field_152451_a);
}
@@ -179,23 +179,4 @@ public class DisplayUtil {
DisplayUtil.drawTexturedModalRect(x, y, icon.u, icon.v, sx, sy, icon.su, icon.sv);
}
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 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);
}
}
@@ -15,16 +15,14 @@ public class OverlayRenderer {
private static boolean hasDepthTest;
private static int boundTexIndex;
public static boolean isOverlayVisible() {
final Minecraft mc = Minecraft.getMinecraft();
return (mc.currentScreen == null && mc.theWorld != null
public static void renderOverlay(Tooltip tooltip) {
Minecraft mc = Minecraft.getMinecraft();
if (!(mc.currentScreen == null && mc.theWorld != null
&& Minecraft.isGuiEnabled()
&& !mc.gameSettings.keyBindPlayerList.getIsKeyPressed()
&& ConfigHandler.instance().showTooltip());
}
public static void renderOverlay(Tooltip tooltip) {
if (!isOverlayVisible() || RayTracing.instance().getTarget() == null) return;
&& ConfigHandler.instance().showTooltip()
&& RayTracing.instance().getTarget() != null))
return;
if (RayTracing.instance().getTarget().typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK
&& RayTracing.instance().getTargetStack() != null) {
@@ -35,9 +35,13 @@ public class WailaTickHandler {
@SubscribeEvent
public void tickClient(TickEvent.ClientTickEvent event) {
if (event.phase == TickEvent.Phase.START) return;
if (!OverlayRenderer.isOverlayVisible()) {
Minecraft mc = Minecraft.getMinecraft();
World world = mc.theWorld;
EntityPlayer player = mc.thePlayer;
if (world == null || player == null) {
this.tooltip = null;
RayTracing.instance().clear();
return;
@@ -45,9 +49,6 @@ 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,107 +0,0 @@
package mcp.mobius.waila.overlay.tooltiprenderers;
import java.awt.Dimension;
import net.minecraft.client.gui.Gui;
import mcp.mobius.waila.api.IWailaCommonAccessor;
import mcp.mobius.waila.api.IWailaVariableWidthTooltipRenderer;
import mcp.mobius.waila.api.SpecialChars;
import mcp.mobius.waila.overlay.DisplayUtil;
public class TTRenderBar implements IWailaVariableWidthTooltipRenderer {
private int maxStringW;
private static final int HEIGHT = 12;
@Override
public Dimension getSize(String[] params, IWailaCommonAccessor accessor) {
String text = params[0];
int displayWidth = DisplayUtil.getDisplayWidth(text);
return new Dimension(displayWidth + 4, HEIGHT);
}
@Override
public void draw(String[] params, IWailaCommonAccessor accessor) {
String text = params[0];
int topColor = 0xFFFFEE55;
int bottomColor = 0xFFFFA500;
int fillWidth = maxStringW - 2;
if (params.length > 2) {
try {
topColor = Integer.parseInt(params[1]);
bottomColor = Integer.parseInt(params[2]);
} catch (NumberFormatException ignored) {}
}
if (params.length > 3) {
try {
double ratio = Double.parseDouble(params[3]);
ratio = Math.max(0.0, Math.min(1.0, ratio));
fillWidth = (int) ((maxStringW - 2) * ratio);
} catch (NumberFormatException ignored) {}
}
drawVerticalGradient(maxStringW - 1, 0xFF2A2A2A, 0xFF111111);
if (fillWidth > 0) {
drawVerticalGradient(1 + fillWidth, topColor, bottomColor);
}
DisplayUtil.drawThickBeveledBox(0, 0, maxStringW, HEIGHT, 1, 0xFF505050, 0xFF505050, -1);
DisplayUtil.drawString(text, 2, 2, 0xFFFFFFFF, true);
}
@Override
public void setMaxLineWidth(int width) {
maxStringW = width;
}
@Override
public int getMaxLineWidth() {
return maxStringW;
}
private void drawVerticalGradient(int x2, int topColor, int bottomColor) {
int h = 11;
if (x2 <= 1) {
return;
}
for (int i = 0; i < h; i++) {
float ratio = (float) i / (float) h;
int color = blendColors(topColor, bottomColor, ratio);
Gui.drawRect(1, i, x2, i + 1, color);
}
}
private int blendColors(int c1, int c2, float ratio) {
int a1 = (c1 >> 24 & 0xFF), r1 = (c1 >> 16 & 0xFF), g1 = (c1 >> 8 & 0xFF), b1 = (c1 & 0xFF);
int a2 = (c2 >> 24 & 0xFF), r2 = (c2 >> 16 & 0xFF), g2 = (c2 >> 8 & 0xFF), b2 = (c2 & 0xFF);
int a = (int) (a1 + (a2 - a1) * ratio);
int r = (int) (r1 + (r2 - r1) * ratio);
int g = (int) (g1 + (g2 - g1) * ratio);
int b = (int) (b1 + (b2 - b1) * ratio);
return (a << 24) | (r << 16) | (g << 8) | b;
}
public static String create(String text, int topColor, int bottomColor, double progress) {
return SpecialChars.getRenderString(
"waila.bar",
text,
String.valueOf(topColor),
String.valueOf(bottomColor),
String.valueOf(progress));
}
public static String create(String text, int color, double progress) {
return create(text, color, color, progress);
}
}
@@ -1,8 +1,5 @@
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;
@@ -12,18 +9,22 @@ 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.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
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.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 {
@@ -35,52 +36,48 @@ public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
public TTRenderFluidBar() {
if (LoadedMods.GT5U) {
bindColor = (fluidName) -> {
FluidStack tFStack = FluidUtils.getWildcardFluidStack(fluidName, 1000);
if (tFStack == null) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
return;
FluidStack aCheck = FluidUtils.getWildcardFluidStack(fluidName, 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);
}
Fluid tFluid = tFStack.getFluid();
if (tFluid == null) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
return;
}
// duplicate code to prevent extra stack allocations
int tColor = tFluid.getColor();
float r = ((tColor >>> 16) & 0xFF) / (float) 0xFF;
float g = ((tColor >>> 8) & 0xFF) / (float) 0xFF;
float b = (tColor & 0xFF) / (float) 0xFF;
GL11.glColor4f(r, g, b, 1.0F);
};
} else {
bindColor = (fluidName) -> {
Fluid tFluid = FluidRegistry.getFluid(fluidName);
if (tFluid == null) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
return;
}
// duplicate code to prevent extra stack allocations
int tColor = tFluid.getColor();
float r = ((tColor >>> 16) & 0xFF) / (float) 0xFF;
float g = ((tColor >>> 8) & 0xFF) / (float) 0xFF;
float b = (tColor & 0xFF) / (float) 0xFF;
GL11.glColor4f(r, g, b, 1.0F);
};
bindColor = (fluidName) -> GL11.glColor4f(1F, 1F, 1F, 1F);
}
}
@Override
public Dimension getSize(String[] params, IWailaCommonAccessor accessor) {
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));
String barText;
if (!(params[0].equals("EMPTYFLUID") && params[1].equals("EMPTYFLUID"))) {
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(",");
}
barText = String
.format("%s / %s %s %s%s", params[2], params[3], ConfigHandler.instance().fluidUnit, params[1], sb);
} else {
int commaCount = (int) (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(",");
}
barText = String.format(
"%s / %s %s%s",
LangUtil.translateG("hud.msg.empty"),
params[3],
ConfigHandler.instance().fluidUnit,
sb);
}
return new Dimension(displayWidth + 4, height);
return new Dimension(DisplayUtil.getDisplayWidth(barText) + 4, height);
}
public static final ResourceLocation gradient = new ResourceLocation("waila", "textures/gradient.png");
@@ -103,13 +100,13 @@ public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
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 / Math.max(capacity, amount)));
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) DisplayUtil.drawRect(
if (i > 0) drawRect(
tessellator,
1 + (j * height),
0,
@@ -128,45 +125,67 @@ public class TTRenderFluidBar implements IWailaVariableWidthTooltipRenderer {
GL11.glColor4f(1F, 1F, 1F, 0.70F);
mc.getTextureManager().bindTexture(gradient);
tessellator.startDrawingQuads();
DisplayUtil.drawRect(tessellator, 1, 0, 0, maxStringW - 2, height - 1, 0, 0, 1, 1);
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);
}
DisplayUtil.drawThickBeveledBox(0, 0, maxStringW, height, 1, 0xFF505050, 0xFF505050, -1);
drawThickBeveledBox(0, 0, maxStringW, height, 1, 0xFF505050, 0xFF505050, -1);
DisplayUtil.drawString(
buildDisplayText(amount, capacity, localizedName, isEmpty),
2,
2,
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);
if (!isEmpty) {
DisplayUtil.drawString(
String.format(
"%s / %s %s %s",
NumberFormatter.format((int) amount),
NumberFormatter.format((int) capacity),
ConfigHandler.instance().fluidUnit,
localizedName),
2,
2,
0xFFFFFFFF,
true);
} else {
DisplayUtil.drawString(
String.format(
"%s / %s %s",
LangUtil.translateG("hud.msg.empty"),
NumberFormatter.format((int) capacity),
ConfigHandler.instance().fluidUnit),
2,
2,
0xFFDDDDDD,
true);
}
}
public static void drawRectFromIcon(Tessellator tessellator, int x, int y, double z, IIcon icon, int width,
int height) {
DisplayUtil.drawRect(
tessellator,
x,
y,
z,
width,
height,
icon.getMinU(),
icon.getMinV(),
icon.getMaxU(),
icon.getMaxV());
drawRect(tessellator, x, y, z, width, height, icon.getMinU(), icon.getMinV(), icon.getMaxU(), icon.getMaxV());
}
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 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;
maxStringW = width + 2;
}
@Override
@@ -7,7 +7,6 @@ import net.minecraft.util.ResourceLocation;
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 TTRenderProgressBar implements IWailaTooltipRenderer {
@@ -34,8 +33,4 @@ public class TTRenderProgressBar implements IWailaTooltipRenderer {
}
public static String create(int currentValue, int maxValue) {
return SpecialChars.getRenderString("waila.progress", String.valueOf(currentValue), String.valueOf(maxValue));
}
}
@@ -1,10 +1,11 @@
package mcp.mobius.waila.overlay.tooltiprenderers;
import static com.gtnewhorizon.gtnhlib.util.numberformatting.NumberFormatUtil.formatNumber;
import java.awt.Dimension;
import java.text.NumberFormat;
import java.util.function.Function;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.ResourceLocation;
@@ -18,14 +19,28 @@ public class TTRenderRFBar implements IWailaVariableWidthTooltipRenderer {
int maxStringW;
private final Function<Integer, String> formatNumber;
private static final NumberFormat energyFormat = NumberFormat.getInstance();
private static final int height = 12;
private static final int width = 2;
static {
energyFormat.setGroupingUsed(true);
}
public TTRenderRFBar() {
formatNumber = energyFormat::format;
}
@Override
public Dimension getSize(String[] params, IWailaCommonAccessor accessor) {
int commaCount = (int) (Math.floor((params[0].length() - 1) / 3D) + Math.floor((params[1].length() - 1) / 3D));
StringBuilder sb = new StringBuilder(commaCount);
for (int i = 0; i < commaCount; i++) {
sb.append(",");
}
return new Dimension(
DisplayUtil.getDisplayWidth(buildDisplayText(Integer.parseInt(params[0]), Integer.parseInt(params[1])))
+ 4,
DisplayUtil.getDisplayWidth(String.format("%s / %s RF%s", params[0], params[1], sb)) + 4,
height);
}
@@ -46,13 +61,13 @@ public class TTRenderRFBar implements IWailaVariableWidthTooltipRenderer {
// Draw dark (uncharged) background for whole bar first
for (int i = 0; i < (maxStringW - 2); i += width) {
DisplayUtil.drawRect(tessellator, 1 + i, 0, 0, width, height, 0.0, 0.0, 0.5, 1.0);
drawRect(tessellator, 1 + i, 0, 0, width, height, 0.0, 0.0, 0.5, 1.0);
}
double i = (double) (maxStringW - 2) * ((double) amount / Math.max(capacity, amount));
double i = (double) (maxStringW - 2) * amount / capacity;
int drawnRects = 0;
for (; i > width; i -= width) {
DisplayUtil.drawRect(tessellator, 1 + (drawnRects * width), 0, 0, width, height, 0.5, 0.0, 1.0, 1.0);
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
@@ -60,21 +75,31 @@ public class TTRenderRFBar implements IWailaVariableWidthTooltipRenderer {
tessellator.draw();
// Border
DisplayUtil.drawThickBeveledBox(0, 0, maxStringW, height, 1, 0xFF505050, 0xFF505050, -1);
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();
DisplayUtil.drawRect(tessellator, 1, 1, 0, maxStringW - 2, height - 2, 0, 0, 1, 1);
drawRect(tessellator, 1, 1, 0, maxStringW - 2, height - 2, 0, 0, 1, 1);
tessellator.draw();
DisplayUtil.drawString(buildDisplayText(amount, capacity), 2, 2, 0xFFFFFFFF, true);
DisplayUtil.drawString(
String.format("%s / %s RF", formatNumber.apply(amount), formatNumber.apply(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,
@@ -85,9 +110,20 @@ public class TTRenderRFBar implements IWailaVariableWidthTooltipRenderer {
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;
maxStringW = width + 2;
}
@Override
@@ -7,21 +7,15 @@ 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) {
boolean small = Boolean.parseBoolean(params.length > 4 ? params[4] : "false");
return small ? new Dimension(10, 8) : new Dimension(16, 16);
return new Dimension(16, 16);
}
@Override
@@ -30,51 +24,14 @@ 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();
if (small) {
GL11.glPushMatrix();
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
GL11.glScaled(scale, scale, 1.0f);
DisplayUtil.renderStack(0, -1, stack);
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
GL11.glPopMatrix();
} else {
DisplayUtil.renderStack(0, 0, stack);
}
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);
}
public static String create(ItemStack itemStack) {
return create(itemStack, false);
}
public static String create(ItemStack itemStack, int amount) {
return create(itemStack, amount, false);
}
}
@@ -1,17 +0,0 @@
package mcp.mobius.waila.utils;
import com.gtnewhorizon.gtnhlib.color.ColorResource;
public class ColorUtils {
private static final ColorResource.Factory color = new ColorResource.Factory("waila");
public static final ColorResource
// spotless:off
fuelFurnaceBarTop = color.argb("fuelFurnaceBarTop", "0xFFFF8800"),
fuelFurnaceBarBottom = color.argb("fuelFurnaceBarBottom", "0xFFFFCC00"),
progressBarTop = color.argb("progressBarTop", "0xFFFF0000"),
progressBarBottom = color.argb("progressBarBottom", "0xFF8B0000");
// spotless:on
}
@@ -0,0 +1,34 @@
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());
}
}
@@ -92,7 +92,7 @@ hud.msg.on=On
hud.msg.state=State
hud.msg.delay=Delay
hud.msg.comparator=Comparator
hud.msg.substractor=Subtractor
hud.msg.substractor=Substractor
hud.msg.record=Record
hud.msg.offers=Offers
@@ -155,4 +155,4 @@ option.general.showhp=Show entities health
option.general.showcrop=Show crop growth
option.thaumcraft.aspects=Show aspects
nei.options.keys.showenchant=Show enchanting values
nei.options.keys.showenchant=Show enchanting values
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 B

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 B

After

Width:  |  Height:  |  Size: 606 B