From 43361b2023f6daa661095f21db51c8b6645fd424 Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Sun, 2 Nov 2025 00:24:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=90=88=E6=88=90=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E5=AD=97=E8=8A=82=E6=95=B0=E4=BD=BF=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/gui/CraftConfirmScreenMixin.java | 26 +++++++++++++++++++ .../util/NumberFormatUtil.java | 18 +++++++++---- .../resources/extendedae_plus.mixins.json | 1 + 3 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/extendedae_plus/mixin/ae2/client/gui/CraftConfirmScreenMixin.java diff --git a/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/CraftConfirmScreenMixin.java b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/CraftConfirmScreenMixin.java new file mode 100644 index 0000000..44fd7c8 --- /dev/null +++ b/src/main/java/com/extendedae_plus/mixin/ae2/client/gui/CraftConfirmScreenMixin.java @@ -0,0 +1,26 @@ +// 文件路径: src/main/java/yourmod/mixin/CraftConfirmScreenMixin.java +package com.extendedae_plus.mixin.ae2.client.gui; + +import appeng.client.gui.me.crafting.CraftConfirmScreen; +import com.extendedae_plus.util.NumberFormatUtil; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import java.text.NumberFormat; + +@Mixin(value = CraftConfirmScreen.class, remap = false) +public class CraftConfirmScreenMixin { + + @Redirect( + method = "updateBeforeRender", + at = @At( + value = "INVOKE", + target = "Ljava/text/NumberFormat;format(J)Ljava/lang/String;", + ordinal = 0 + ) + ) + private String useCustomFormat(NumberFormat instance, long number) { + return NumberFormatUtil.formatNumber(number); + } +} \ No newline at end of file diff --git a/src/main/java/com/extendedae_plus/util/NumberFormatUtil.java b/src/main/java/com/extendedae_plus/util/NumberFormatUtil.java index b98d30d..044ddfe 100644 --- a/src/main/java/com/extendedae_plus/util/NumberFormatUtil.java +++ b/src/main/java/com/extendedae_plus/util/NumberFormatUtil.java @@ -18,16 +18,24 @@ public class NumberFormatUtil { return String.valueOf(number); } - String[] preFixes = new String[]{"k", "M", "G", "T", "P", "E", "Z", "Y"}; + String[] suffixes = {"k", "M", "G", "T", "P", "E", "Z", "Y"}; double value = number; - String level = ""; + int index = 0; - for (int offset = 0; value >= 1000.0 && offset < preFixes.length; ++offset) { + while (value >= 1000.0 && index < suffixes.length) { value /= 1000.0; - level = preFixes[offset]; + index++; } - return formatDecimal(value, level); + String formatted; + if (Math.abs(value - Math.round(value)) < 0.001) { + formatted = String.valueOf(Math.round(value)); + } else { + DecimalFormat df = new DecimalFormat("0.00"); + formatted = df.format(value); + } + + return formatted + suffixes[index - 1]; } /** diff --git a/src/main/resources/extendedae_plus.mixins.json b/src/main/resources/extendedae_plus.mixins.json index d3d0ab5..19d339a 100644 --- a/src/main/resources/extendedae_plus.mixins.json +++ b/src/main/resources/extendedae_plus.mixins.json @@ -11,6 +11,7 @@ "ae2.accessor.PatternAccessTermScreenAccessor", "ae2.accessor.PatternAccessTermScreenSlotsRowAccessor", "ae2.client.gui.AEBaseScreenMixin", + "ae2.client.gui.CraftConfirmScreenMixin", "ae2.client.gui.InterfaceScreenMixin", "ae2.client.gui.PatternEncodingTermScreenMixin", "ae2.client.gui.SlotGridLayoutMixin",