Skip to content

Commit 21d5d54

Browse files
committed
- fixes to stat preview
1 parent 392e4bc commit 21d5d54

File tree

5 files changed

+32
-36
lines changed

5 files changed

+32
-36
lines changed

Truly Modular 2.0.mov

46.1 MB
Binary file not shown.

common/src/main/java/smartin/miapi/client/gui/crafting/statdisplay/SinglePropertyStatDisplay.java

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,17 @@
22

33
import net.fabricmc.api.EnvType;
44
import net.fabricmc.api.Environment;
5-
import net.minecraft.ChatFormatting;
65
import net.minecraft.Util;
7-
import net.minecraft.client.Minecraft;
8-
import net.minecraft.client.gui.GuiGraphics;
96
import net.minecraft.network.chat.Component;
107
import net.minecraft.resources.ResourceLocation;
118
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
129
import net.minecraft.world.item.ItemStack;
1310
import smartin.miapi.Miapi;
14-
import smartin.miapi.client.gui.ParentHandledScreen;
1511
import smartin.miapi.modules.properties.util.DoubleOperationResolvable;
1612
import smartin.miapi.modules.properties.util.DoubleProperty;
1713

1814
import java.text.DecimalFormat;
1915
import java.text.DecimalFormatSymbols;
20-
import java.util.ArrayList;
21-
import java.util.List;
2216
import java.util.Locale;
2317
import java.util.function.BiFunction;
2418

@@ -46,37 +40,12 @@ public double getValue(ItemStack stack) {
4640
return property.getValue(stack).orElse(0.0);
4741
}
4842

49-
//@Override
50-
public void renderHover2(GuiGraphics drawContext, int mouseX, int mouseY, float delta) {
51-
List<Component> list = new ArrayList(getHoverLines(drawContext, mouseX, mouseY, delta));
52-
if (this.isMouseOver(mouseX, mouseY)) {
53-
if (ParentHandledScreen.hasShiftDown()) {
54-
property.getData(compareTo == null ? original : compareTo).ifPresent(resolvable -> {
55-
resolvable.operations.forEach(operation -> {
56-
if (operation.solve() != 0) {
57-
list.add(Component.literal(stringForOperation(operation)).withStyle(ChatFormatting.GRAY));
58-
if (ParentHandledScreen.hasAltDown()) {
59-
list.add(Component.literal(" " + operation.value).withStyle(ChatFormatting.DARK_GRAY));
60-
}
61-
}
62-
});
63-
});
64-
list.add(Component.translatable("miapi.ui.stat_detail.shift_alt").withStyle(ChatFormatting.DARK_GRAY));
65-
} else {
66-
list.add(Component.translatable("miapi.ui.stat_detail.shift").withStyle(ChatFormatting.DARK_GRAY));
67-
}
68-
}
69-
drawContext.renderComponentTooltip(
70-
Minecraft.getInstance().font,
71-
list, mouseX, mouseY);
72-
}
73-
7443
public DoubleOperationResolvable getResolvable(ItemStack stack) {
7544
return property.getData(stack).orElse(null);
7645
}
7746

78-
public static String stringForOperation(DoubleOperationResolvable.Operation resolvable) {
79-
String number = "" + resolvable.solve();
47+
public static String stringForOperation(DecimalFormat format, DoubleOperationResolvable.Operation resolvable) {
48+
String number = "" + format.format(resolvable.solve());
8049
String operation = getStringName(resolvable.attributeOperation);
8150
if (operation.equals("+") && number.startsWith("-")) {
8251
return number + " " + resolvable.instance.getModuleName().getString();
@@ -103,6 +72,7 @@ public static class Builder {
10372
public String translationKey = "";
10473
public Object[] descriptionArgs = new Object[]{};
10574
public DecimalFormat modifierFormat;
75+
public DecimalFormat hoverFormat;
10676
public double min = 0;
10777
public double max = 100;
10878
public boolean inverse = false;
@@ -169,6 +139,13 @@ public Builder setFormat(String format) {
169139
return this;
170140
}
171141

142+
public Builder setHoverFormat(String format) {
143+
hoverFormat = Util.make(new DecimalFormat(format), (decimalFormat) -> {
144+
decimalFormat.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.ROOT));
145+
});
146+
return this;
147+
}
148+
172149
public SinglePropertyStatDisplay build() {
173150
// Validate the required fields
174151
if (name == null) {
@@ -185,6 +162,10 @@ public SinglePropertyStatDisplay build() {
185162
display.modifierFormat = modifierFormat;
186163
display.inverse = inverse;
187164
display.condition = condition;
165+
if (hoverFormat == null) {
166+
hoverFormat = modifierFormat;
167+
}
168+
display.hoverFormat = hoverFormat;
188169
return display;
189170
}
190171
}

common/src/main/java/smartin/miapi/client/gui/crafting/statdisplay/SingleStatDisplayDouble.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public abstract class SingleStatDisplayDouble extends InteractAbleWidget impleme
4141
public double maxValue = 100;
4242
public double minValue = 0;
4343
public DecimalFormat modifierFormat;
44+
public DecimalFormat hoverFormat;
4445
public StatListWidget.TextGetter text;
4546
public StatListWidget.TextGetter hover;
4647
public Component postfix = Component.nullToEmpty("");
@@ -196,13 +197,20 @@ public DoubleOperationResolvable getResolvable(ItemStack stack) {
196197
return null;
197198
}
198199

200+
public DecimalFormat getHoverFormat() {
201+
if (hoverFormat == null) {
202+
return modifierFormat;
203+
}
204+
return hoverFormat;
205+
}
206+
199207
public List<Component> getLinesForDouble(@Nullable DoubleOperationResolvable resolvable) {
200208
List<Component> list = new ArrayList();
201209
if (ParentHandledScreen.hasShiftDown()) {
202210
if (resolvable != null) {
203211
resolvable.operations.forEach(operation1 -> {
204212
if (operation1.solve() != 0) {
205-
list.add(Component.literal(SinglePropertyStatDisplay.stringForOperation(operation1)).withStyle(ChatFormatting.GRAY));
213+
list.add(Component.literal(SinglePropertyStatDisplay.stringForOperation(getHoverFormat(), operation1)).withStyle(ChatFormatting.GRAY));
206214
if (ParentHandledScreen.hasAltDown()) {
207215
operation1.source.ifPresent(list::add);
208216
list.add(Component.literal(" " + operation1.value).withStyle(ChatFormatting.DARK_GRAY));

common/src/main/java/smartin/miapi/client/gui/crafting/statdisplay/StatListWidget.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ public static void onReload() {
188188
.builder(DurabilityProperty.property)
189189
.setMax(2000)
190190
.setFormat("##")
191+
.setHoverFormat("##.##")
191192
.setCondition((old, current) -> old.isDamageableItem() &&
192193
current.isDamageableItem())
193194
.setTranslationKey(DurabilityProperty.KEY).build());

common/src/main/java/smartin/miapi/modules/properties/attributes/AttributeProperty.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,16 @@ public class AttributeProperty extends CodecProperty<Map<ResourceLocation, Map<A
8484
}
8585
doubleOperation.attributeOperation = operation;
8686

87-
DoubleOperationResolvable resolvable = new DoubleOperationResolvable(List.of(doubleOperation));
8887
map.computeIfAbsent(id, i -> new LinkedHashMap<>())
8988
.computeIfAbsent(targetOperation, t -> new LinkedHashMap<>())
90-
.computeIfAbsent(Either.left(equipmentSlotGroup), e -> resolvable);
89+
.compute(Either.left(equipmentSlotGroup), (e, resolvable1) -> {
90+
if (resolvable1 == null) {
91+
return new DoubleOperationResolvable(List.of(doubleOperation));
92+
}
93+
List<DoubleOperationResolvable.Operation> operations = new ArrayList<>(resolvable1.operations);
94+
operations.add(doubleOperation);
95+
return new DoubleOperationResolvable(operations);
96+
});
9197
});
9298
return map;
9399
}, map -> List.of()));

0 commit comments

Comments
 (0)