Skip to content

Commit beeec5d

Browse files
committed
log tool material origin if solving tier failed
1 parent 0943468 commit beeec5d

File tree

4 files changed

+21
-12
lines changed

4 files changed

+21
-12
lines changed

src/main/java/mcp/mobius/waila/service/ApiService.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,11 @@ public <T> IInstanceRegistry<T> createInstanceRegistry(boolean reversed) {
152152

153153
@Override
154154
public List<ToolMaterial> getTiers() {
155-
return MixinService.TOOL_MATERIALS.stream()
155+
return MixinService.TOOL_MATERIALS.keySet().stream()
156156
.filter(it -> {
157157
//noinspection ConstantValue
158158
if (it.incorrectBlocksForDrops() == null) {
159-
LOG.warn("Found tier of class [{}] with null inverse tag, skipping", it.getClass().getName());
159+
LOG.warn("Found tier created on class [{}] with null inverse tag, skipping", MixinService.TOOL_MATERIALS.get(it).getName());
160160
return false;
161161
}
162162
return true;
@@ -191,12 +191,15 @@ public List<ToolMaterial> getTiers() {
191191
The comparison is based on the assumption that lower tier's incorrect block tag contains all entries from higher tier's tag.
192192
This was fine for Vanilla, but might be not match modded behavior.
193193
Please open an issue at {}
194-
Tag [{}] contains:
194+
Tag [{}] created on class [{}] contains:
195195
\t[{}]
196-
Tag [{}] contains:
196+
Tag [{}] created on class [{}] contains:
197197
\t[{}]
198198
""",
199-
tag1.location(), tag2.location(), Waila.ISSUE_URL, tag1.location(), blocks1str, tag2.location(), blocks2str);
199+
tag1.location(), tag2.location(),
200+
Waila.ISSUE_URL,
201+
tag1.location(), MixinService.TOOL_MATERIALS.get(tier1).getName(), blocks1str,
202+
tag2.location(), MixinService.TOOL_MATERIALS.get(tier2).getName(), blocks2str);
200203
return 0;
201204
}).toList();
202205
}

src/main/java/mcp/mobius/waila/service/MixinService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package mcp.mobius.waila.service;
22

3-
import java.util.LinkedHashSet;
4-
import java.util.Set;
3+
import java.util.LinkedHashMap;
4+
import java.util.Map;
55

66
import mcp.mobius.waila.WailaClient;
77
import mcp.mobius.waila.config.JsonConfig;
@@ -13,7 +13,7 @@
1313

1414
public class MixinService implements IMixinService {
1515

16-
public static final Set<ToolMaterial> TOOL_MATERIALS = new LinkedHashSet<>();
16+
public static final Map<ToolMaterial, Class<?>> TOOL_MATERIALS = new LinkedHashMap<>();
1717

1818
@Override
1919
public void attachRegistryFilter(RegistryAccess registryAccess) {
@@ -26,8 +26,8 @@ public void onServerLogin() {
2626
}
2727

2828
@Override
29-
public void addToolMaterialInstance(ToolMaterial material) {
30-
TOOL_MATERIALS.add(material);
29+
public void addToolMaterialInstance(ToolMaterial material, Class<?> caller) {
30+
TOOL_MATERIALS.put(material, caller);
3131
}
3232

3333
@Override

src/mixin/java/mcp/mobius/waila/mixed/IMixinService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public interface IMixinService {
1212

1313
void onServerLogin();
1414

15-
void addToolMaterialInstance(ToolMaterial material);
15+
void addToolMaterialInstance(ToolMaterial material, Class<?> caller);
1616

1717
void onLanguageReloaded();
1818

src/mixin/java/mcp/mobius/waila/mixin/ToolMaterialMixin.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,23 @@
22

33
import mcp.mobius.waila.mixed.IMixinService;
44
import net.minecraft.world.item.ToolMaterial;
5+
import org.jspecify.annotations.Nullable;
56
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.Unique;
68
import org.spongepowered.asm.mixin.injection.At;
79
import org.spongepowered.asm.mixin.injection.Inject;
810
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
911

1012
@Mixin(ToolMaterial.class)
1113
public class ToolMaterialMixin {
1214

15+
@Unique
16+
private static @Nullable StackWalker wthit_stackWalker;
17+
1318
@Inject(method = "<init>", at = @At("TAIL"))
1419
private void wthit_init(CallbackInfo ci) {
15-
IMixinService.INSTANCE.addToolMaterialInstance((ToolMaterial) (Object) this);
20+
if (wthit_stackWalker == null) wthit_stackWalker = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
21+
IMixinService.INSTANCE.addToolMaterialInstance((ToolMaterial) (Object) this, wthit_stackWalker.getCallerClass());
1622
}
1723

1824
}

0 commit comments

Comments
 (0)