Closed Micalhl closed 3 weeks ago
终于被发现了
终于被发现了
?
终于被发现了
?
我:
发现问题->LookLook源码->确定问题->摆烂
行动力 0.o%
终于被发现了
?
发现问题->LookLook源码->确定问题->摆烂
行动力 0.o%
尊重他人劳动,请勿发表令人不适的言论。
尊重他人劳动,请勿发表令人不适的言论。
好的~
可能存在一种特殊情况下的问题:(未实践,纯推理)
推演流程: 在RemapTranslation在Paper1.20.5+启用时 NMSProxy代理的类恰好存在类net.minecraft.server.v1*.的类 (低版本包名类) 恰好符合此if条件,然后走MinecraftVersion.spigotMapping.classMapSpigotS2F
此时是classMapSpigotS2F 根据此字段描述
// <Spigot.SimpleName, Spigot.FullName> val classMapSpigotS2F = HashMap<String, String>()
注意到,映射末端是 Spigot.FullName,
而此时运行环境为Paper1.20.5+,使用的是MojangDeobf
那么,是否会存在:Paper1.20.5+时,会找不到Spigot.FullName的类
昨天改这个模块前,正常使用 nmsProxy,发现 1.16 和 1.17 无法共存,所以没有考虑这个问题,这是另外一个问题。
----- 原始邮件 -----
@.***>
@.***>等3人
主题:Re: [TabooLib/taboolib] [6.2.0][dev] 1.21 Fix nmsProxy (PR #444)
日期:2024年08月18日 10:55:14
可能存在一种特殊情况下的问题: RemapTranslation.kt#L55 推演流程: 在RemapTranslation在Paper1.20.5+启用时 NMSProxy代理的类恰好存在类net.minecraft.server.v1_20_R3.*的类 符合此if条件,然后就会将其走MinecraftVersion.spigotMapping.classMapSpigotS2F 此时是classMapSpigotS2F 根据此字段描述
// <Spigot.SimpleName, Spigot.FullName> val classMapSpigotS2F = HashMap<String, String>() 注意到,映射末端是 Spigot.FullName,
而此时运行环境为Paper1.20.5+,使用的是MojangDeobf 那么,是否会存在:Paper1.20.5+时,会找不到Spigot.FullName的类 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>
可能存在一种特殊情况下的问题:(未实践,纯推理)
推演流程: 在RemapTranslation在Paper1.20.5+启用时 NMSProxy代理的类恰好存在类net.minecraft.server.v1____.*的类 (低版本包名类) 恰好符合此if条件,然后走MinecraftVersion.spigotMapping.classMapSpigotS2F
此时是classMapSpigotS2F 根据此字段描述
// <Spigot.SimpleName, Spigot.FullName> val classMapSpigotS2F = HashMap<String, String>()
注意到,映射末端是 Spigot.FullName,
而此时运行环境为Paper1.20.5+,使用的是MojangDeobf
那么,是否会存在:Paper1.20.5+时,会找不到Spigot.FullName的类
在最新的提交 (da1c338) 里我已经尝试规避这个问题,感谢指出。
有个问题,为什么要删掉这个东西?不通过这个东西转译描述符的话,后面 RemapHelper.checkParameterType 判断描述符就有问题,因为有 getClass 操作。 如果这个判断描述符不转译的话,就会出现我之前说的 1.16 和 1.17 无法共存的问题。简单来说就是当 NMSProxy 中即有 1.16 的 NMS 代码,又有 1.17(Universal)的代码时,转译就会出现 java.lang.ClassNotFoundException: net.minecraft.server.v1_16_R3.XXXXXX。
对于 TabooLib 内的类, 使用 RemapTranslationTabooLib 进行 Spigot Deobf -> Mojang Obf -> Mojang Deobf 转换。
而插件内的类,已经由 Paper 进行转译了,所以不应该再使用 RemapTranslation (现在为 RemapTranslationLegacy) 进行转译, 应该只需要使用该 RemapTranslation 移除包名中的跨版本信息 (诸如 v1_20_R3) , 而无需对字段名、方法名进行任何操作。