
为MicroTiming中StackTrace的ToolTip内容进行缩减 / 提供便于查看的颜色区分
Closed this issue · 1 comments
Motivation
现在的microTiming中在$符号上悬停鼠标时,tooltip展示的stacktrace行数过多,难以容纳在屏幕中;由于折叠而难以区分行,几乎无法在游戏内轻松地阅读。因此,希望对tooltip中stacktrace的可读性进行优化。
Description
以一个stacktrace为例:
反混淆后的堆栈跟踪 (Yarn 1.21.1+build.3)
net.minecraft.world.tick.WorldTickScheduler.handler$blf000$carpet-tis-addition$endScheduleTileTickEvent(WorldTickScheduler.java:1570)
net.minecraft.world.tick.WorldTickScheduler.scheduleTick(WorldTickScheduler.java:89)
net.minecraft.world.WorldAccess.scheduleBlockTick(WorldAccess.java:54)
net.minecraft.block.DispenserBlock.neighborUpdate(DispenserBlock.java:127)
net.minecraft.block.AbstractBlock$AbstractBlockState.neighborUpdate(AbstractBlock.java:1113)
net.minecraft.world.block.NeighborUpdater.tryNeighborUpdate(NeighborUpdater.java:42)
net.minecraft.world.block.ChainRestrictedNeighborUpdater$SixWayEntry.update(ChainRestrictedNeighborUpdater.java:132)
net.minecraft.world.block.ChainRestrictedNeighborUpdater.runQueuedUpdates(ChainRestrictedNeighborUpdater.java:78)
net.minecraft.world.block.ChainRestrictedNeighborUpdater.enqueue(ChainRestrictedNeighborUpdater.java:65)
net.minecraft.world.block.ChainRestrictedNeighborUpdater.updateNeighbors(ChainRestrictedNeighborUpdater.java:47)
net.minecraft.server.world.ServerWorld.updateNeighborsAlways(ServerWorld.java:1044)
net.minecraft.server.world.ServerWorld.updateNeighbors(ServerWorld.java:1474)
net.minecraft.world.World.redirect$zeb000$carpet$updateNeighborsMaybe(World.java:2585)
net.minecraft.world.World.setBlockState(World.java:250)
net.minecraft.world.World.setBlockState(World.java:217)
net.minecraft.block.entity.CrafterBlockEntity.tickCrafting(CrafterBlockEntity.java:255)
net.minecraft.world.chunk.WorldChunk$DirectBlockEntityTickInvoker.tick(WorldChunk.java:691)
net.minecraft.world.chunk.WorldChunk$WrappedBlockEntityTickInvoker.tick(WorldChunk.java:745)
net.minecraft.world.World.tickBlockEntities(World.java:488)
net.minecraft.server.world.ServerWorld.tick(ServerWorld.java:413)
net.minecraft.server.MinecraftServer.mixinextras$bridge$method_18765$329(MinecraftServer.java)
net.minecraft.server.MinecraftServer.wrapOperation$chm000$carpet-tis-addition$yeetUpdateSuppressionCrash_implOnTickWorlds(MinecraftServer.java:7159)
net.minecraft.server.MinecraftServer.method_3813$mixinextras$wrapped$332(MinecraftServer.java:1021)
net.minecraft.server.MinecraftServer.mixinextras$bridge$method_3813$mixinextras$wrapped$332$333(MinecraftServer.java)
net.minecraft.server.MinecraftServer.wrapMethod$gmj000$yetanothercarpetaddition$preventServerCrash(MinecraftServer.java:13626)
net.minecraft.server.MinecraftServer.tickWorlds(MinecraftServer.java)
net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:912)
net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:114)
net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:697)
net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:281)
java.lang.Thread.run(Thread.java:1583)
此stacktrace 在tooltip中展示时过于难以阅读;容易超出屏幕边界。
望提出以下改进建议:
-
简化类名(省略包名)
例:net.minecraft.world.tick.WorldTickScheduler.scheduleTick
→ WorldTickScheduler.scheduleTick -
省略部分几乎无关堆栈帧(如 java.lang.Thread.run)等;
3.考虑默认只展示前 10~20 行(*一般情况下可能最相关的堆栈帧)
- 基于第3点, 在最tooltip开头或者最末尾,添加类似 copy-to-clipboard 提示信息来告知原来点这个$可以复制完整stacktrase(((
- 用颜色区分元素(类名 / 方法名 / 高亮mixin注入的内容)
更具开头stacktrace的预想中的期望的可读性优化(列):
WorldTickScheduler.endScheduleTileTickEvent (line 1570)
at WorldTickScheduler.scheduleTick (line 89)
at WorldAccess.scheduleBlockTick (line 54)
at DispenserBlock.neighborUpdate (line 127)
at AbstractBlockState.neighborUpdate (line 1113)
at NeighborUpdater.tryNeighborUpdate (line 42)
at SixWayEntry.update (line 132)
at NeighborUpdater.runQueuedUpdates (line 78)
at NeighborUpdater.enqueue (line 65)
at NeighborUpdater.updateNeighbors (line 47)
at ServerWorld.updateNeighborsAlways (line 1044)
at ServerWorld.updateNeighbors (line 1474)
at World.updateNeighborsMaybe (line 2585)
at World.setBlockState (line 250)
at World.setBlockState (line 217)
at CrafterBlockEntity.tickCrafting (line 255)
… more (click $ to copy full stacktrace)
Other information
No response