xfl03 / MCCustomSkinLoader

Customize Skin, Cape and Elytra in Minecraft 1.8-1.21
GNU General Public License v3.0
506 stars 34 forks source link

关于1.15头颅卡顿 #79

Closed 1a2s3d4f1 closed 3 years ago

1a2s3d4f1 commented 4 years ago

1.15似乎改了头颅的皮肤加载机制,如果自定义头颅不是正版玩家id,那么会在加载时报错卡顿(fps掉为1)与这种卡相比,tnt就是个弱鸡), 就像这种志(原版测试同样的):

[14:58:06] [main/WARN]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@2ef2cacd[id=d58e3022-d97e-3b7c-827e-c74c99a3f9b1,name=Huesd,properties={},legacy=false]
com.mojang.authlib.exceptions.AuthenticationException: The client has sent too many requests within a certain amount of time
    at Not Enough Crashes deobfuscated stack trace.(1.15.2+build.2) ~[?:?]
    at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:79) ~[authlib-1.5.25.jar:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180) ~[authlib-1.5.25.jar:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:173) ~[authlib-1.5.25.jar:?]
    at net.minecraft.block.entity.SkullBlockEntity.loadProperties(SkullBlockEntity:132) ~[?:?]
    at net.minecraft.block.entity.SkullBlockEntity.loadOwnerProperties(SkullBlockEntity:108) ~[?:?]
    at net.minecraft.block.entity.SkullBlockEntity.setOwnerAndType(SkullBlockEntity:104) ~[?:?]
    at net.minecraft.block.entity.SkullBlockEntity.fromTag(SkullBlockEntity:57) ~[?:?]
    at net.minecraft.client.network.ClientPlayNetworkHandler.onBlockEntityUpdate(ClientPlayNetworkHandler:1193) ~[?:?]
    at net.minecraft.client.network.packet.BlockEntityUpdateS2CPacket.apply(BlockEntityUpdateS2CPacket:55) ~[?:?]
    at net.minecraft.client.network.packet.BlockEntityUpdateS2CPacket.apply(BlockEntityUpdateS2CPacket:11) ~[?:?]
    at net.minecraft.network.NetworkThreadUtils.method_11072(NetworkThreadUtils:21) ~[?:?]
    at net.minecraft.class_2600$$Lambda$6189/0000000000000000.run(Unknown Source) ~[?:?]
    at net.minecraft.util.thread.ThreadExecutor.executeTask(ThreadExecutor:144) ~[?:?]
    at net.minecraft.util.thread.ReentrantThreadExecutor.executeTask(ReentrantThreadExecutor:23) ~[?:?]
    at net.minecraft.util.thread.ThreadExecutor.runTask(ThreadExecutor:118) ~[?:?]
    at net.minecraft.util.thread.ThreadExecutor.runTasks(ThreadExecutor:103) ~[?:?]
    at net.minecraft.client.MinecraftClient.render(MinecraftClient:956) ~[?:?]
    at net.minecraft.client.MinecraftClient.run(MinecraftClient:5085) ~[?:?]
    at net.minecraft.client.main.Main.main(Main:204) [intermediary-1.15.2.jar:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:193) [fabric-loader-0.7.5+build.178.jar:?]
    at net.fabricmc.loader.launch.knot.Knot.init(Knot.java:138) [fabric-loader-0.7.5+build.178.jar:?]
    at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:26) [fabric-loader-0.7.5+build.178.jar:?]

原版照样有这个问题 mod/数据包/插件不知道自动填入获取皮肤地址,获取了uuid和用户名就直接获取头颅,如果玩家不是正版,那么就要卡了

ZekerZhayard commented 4 years ago

这似乎是原版Minecraft 1.7.6就有的问题,卡是因为获取头颅皮肤的过程从Server Thread移到了Render Thread上

补充在Forge开发环境下的调用堆栈 (mcp_snapshot-20200203-1.15.1)

[Render thread/WARN] [com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService/]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@5c96d290[id=0489e922-3947-3a85-a108-0083605ad304,name=Zeker_Zhayard,properties={},legacy=false]
com.mojang.authlib.exceptions.AuthenticationException: The client has sent too many requests within a certain amount of time
    at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:79) ~[authlib-1.5.25.jar:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180) ~[authlib-1.5.25.jar:?]
    at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:173) ~[authlib-1.5.25.jar:?]
    at net.minecraft.tileentity.SkullTileEntity.updateGameProfile(SkullTileEntity.java:124) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.tileentity.SkullTileEntity.updatePlayerProfile(SkullTileEntity.java:109) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.tileentity.SkullTileEntity.setPlayerProfile(SkullTileEntity.java:105) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.tileentity.SkullTileEntity.read(SkullTileEntity.java:52) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.client.network.play.ClientPlayNetHandler.handleUpdateTileEntity(ClientPlayNetHandler.java:1216) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.network.play.server.SUpdateTileEntityPacket.processPacket(SUpdateTileEntityPacket.java:45) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.network.play.server.SUpdateTileEntityPacket.processPacket(SUpdateTileEntityPacket.java:12) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.network.PacketThreadUtil.lambda$checkThreadAndEnqueue$0(PacketThreadUtil.java:19) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.util.concurrent.ThreadTaskExecutor.run(ThreadTaskExecutor.java:140) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.util.concurrent.RecursiveEventLoop.run(RecursiveEventLoop.java:22) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.util.concurrent.ThreadTaskExecutor.driveOne(ThreadTaskExecutor.java:110) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.util.concurrent.ThreadTaskExecutor.drainTasks(ThreadTaskExecutor.java:97) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:930) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:554) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at net.minecraft.client.main.Main.main(Main.java:177) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_241]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_241]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_241]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_241]
    at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:55) ~[forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-5.0.0-milestone.4.jar:?]
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-5.0.0-milestone.4.jar:?]
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-5.0.0-milestone.4.jar:?]
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:81) [modlauncher-5.0.0-milestone.4.jar:?]
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:65) [modlauncher-5.0.0-milestone.4.jar:?]
    at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:102) [forge-1.15.2-31.0.16_mapped_snapshot_20200203-1.15.1-recomp.jar:?]
xfl03 commented 4 years ago

请在生成头颅时正确填入用户皮肤地址,请减少使用仅包含用户名的头颅

1a2s3d4f1 commented 4 years ago

请在生成头颅时正确填入用户皮肤地址,请减少使用仅包含用户名的头颅

mod、/数据包掉玩家头卡的怎么改

头颅获取单独2个线程,获取失败也是卡头颅线程而不是渲染线程

xfl03 commented 4 years ago

头颅获取一直是单独线程,但获取过多会导致“判断-创建获取线程”这个行为卡顿

xfl03 commented 4 years ago

已确认是 Minecraft 1.15 原版的问题,在主线程尝试补全头颅材质,这个补全其实是没必要的。 https://bugs.mojang.com/browse/MC-65587