本帖最后由 abRoy 于 2025-1-12 18:37 编辑
, c- G. F2 h" o- S% |" m$ Q% F: R" x
从mtr4.0.0B8就一直困扰我到现在的问题终于解决了,分享一下防止其他和我相同问题的人踩坑- U& h# o9 d" X' p# p D
- _5 S. h f7 A3 D6 f, X/ C: s5 T+ R; f- A, }# _* c- W C! n
原mc(1.20.1)在3.2.2版本的mtr下运行一切正常。升级到4.0.0B13后概率出现部分车站/线路的铁轨,站台门不可见的情况,但是又有一些车站是完全正常的。所有的列车都不可见。# o8 i" d- ?/ f, s1 ?! k' E [
- e0 z- K, c2 {2 s5 o
7 R* x7 h, M: A7 P5 ], r1 U0 F
↑这里应该有张图片但是我不知道插入成功没有 看不到" X1 @1 b) ]8 t* o
8 I# T$ c2 V1 l/ S) Z: R( w- C) S( `# W+ V x6 c& a9 J
原本以为是mtr的问题但是等了很久都没有修复,遂自己看一下日志,发现以下报错频繁出现$ a0 j7 L8 H% s# W, {
- [121��2025 16:54:18.818] [Render thread/ERROR] [MinecraftMappings/]:
& M" o8 J- m# x. _% T. E - java.lang.ClassCastException: class org.mtr.mapping.render.vertex.CapturingVertexConsumer cannot be cast to class me.jellysquid.mods.sodium.client.render.vertex.VertexBufferWriter (org.mtr.mapping.render.vertex.CapturingVertexConsumer is in module mtr@4.0.0-beta.13 of loader 'TRANSFORMER' @62c46e53; me.jellysquid.mods.sodium.client.render.vertex.VertexBufferWriter is in module rubidium@0.6.5 of loader 'TRANSFORMER' @62c46e53) R* U" u5 T0 L, p1 r Z
- at me.jellysquid.mods.sodium.client.render.vertex.VertexBufferWriter.of(VertexBufferWriter.java:8) ~[%5B�%5D%20rubidium-0.6.5.jar%23246!/:?]' O% G/ f' O2 s3 j
- at net.minecraft.client.model.geom.ModelPart.m_104290_(ModelPart.java:563) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
, r5 `! v, B+ g0 _ - at net.minecraft.client.model.geom.ModelPart.m_104306_(ModelPart.java:124) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
+ S0 |# n0 |" i" T8 P& @ - at net.minecraft.client.model.geom.ModelPart.m_104301_(ModelPart.java:109) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
% Z% m" {, P b3 ]. F+ M! w - at org.mtr.mapping.mapper.OptimizedModel$MaterialGroup.lambda$addCube$0(OptimizedModel.java:99) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]3 J' u; y. i. c
- at org.mtr.mapping.mapper.OptimizedModel.lambda$fromMaterialGroups$0(OptimizedModel.java:47) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
- {, a& h) q, B$ [3 @' a0 t, j - at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]. ^9 O6 x: y. j4 [4 |% T z
- at org.mtr.mapping.mapper.OptimizedModel.lambda$fromMaterialGroups$1(OptimizedModel.java:47) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
. w2 u% A/ h- B( H- `* i! b - at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
7 s4 b$ a6 |, ? - at org.mtr.mapping.mapper.OptimizedModel.fromMaterialGroups(OptimizedModel.java:45) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]6 v$ \# Y4 M. m
- at org.mtr.mod.resource.OptimizedModelWrapper.fromMaterialGroups(OptimizedModelWrapper.java:20) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
) D$ W0 N6 q I7 F& F - at org.mtr.mod.resource.ModelPropertiesPart.writeCache(ModelPropertiesPart.java:135) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
4 J' I f; w8 ` - at org.mtr.mod.render.DynamicVehicleModel.lambda$new$3(DynamicVehicleModel.java:68) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
$ q( {8 W( d" F! b8 P( } - at org.mtr.libraries.it.unimi.dsi.fastutil.objects.ObjectArrayList.forEach(ObjectArrayList.java:749) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
* E" d& J& M) o0 g; d1 f - at org.mtr.mod.resource.ModelProperties.iterateParts(ModelProperties.java:135) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
1 h/ u& N" n0 c1 E( e {* S - at org.mtr.mod.render.DynamicVehicleModel.<init>(DynamicVehicleModel.java:68) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
0 d* q O! u4 v - at org.mtr.mod.resource.VehicleModel.createModel(VehicleModel.java:121) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
. i) x; U; o" g, B" @ |0 G - at org.mtr.mod.resource.VehicleModel.lambda$new$0(VehicleModel.java:30) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]# U" g* B1 d o- E
- at org.mtr.mod.resource.CachedResource.getData(CachedResource.java:31) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
. j. T7 n# U3 M( ^$ Y3 ~ - at org.mtr.mod.resource.VehicleResource.lambda$forEachNonNull$20(VehicleResource.java:503) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]6 Q- k. b+ q) ? z- s' V
- at org.mtr.libraries.it.unimi.dsi.fastutil.objects.ObjectArrayList.forEach(ObjectArrayList.java:749) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
' m7 |* `2 D* ^' |8 y - at org.mtr.mod.resource.VehicleResource.forEachNonNull(VehicleResource.java:502) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
* S! i6 C {: U: f4 Q( J - at org.mtr.mod.resource.VehicleResource.lambda$cachedVehicleResourceInitializer$15(VehicleResource.java:390) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]5 |# J0 L& P$ s; Q
- at org.mtr.mod.resource.CachedResource.getData(CachedResource.java:31) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]. k0 u, b; N0 ^/ _$ S! W
- at org.mtr.mod.resource.VehicleResource.queueBogie(VehicleResource.java:206) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]- T! i) H. D4 A- U A# j4 y; [5 q0 I
- at org.mtr.mod.render.RenderVehicles.lambda$render$3(RenderVehicles.java:81) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
' H8 c P! }! }7 a/ }1 y) t: f - at org.mtr.mod.render.RenderVehicleHelper.renderModel(RenderVehicleHelper.java:92) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
1 p3 l) `: v) f8 b - at org.mtr.mod.render.RenderVehicles.lambda$render$6(RenderVehicles.java:81) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
9 ` K: V5 ~8 _/ }! T2 s - at org.mtr.mod.render.RenderVehicles.iterateWithIndex(RenderVehicles.java:330) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]) u& B6 P) U& L: b
- at org.mtr.mod.render.RenderVehicles.lambda$render$12(RenderVehicles.java:78) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
$ B | ?8 n% R- c, Q( a: d% ` - at org.mtr.mod.client.CustomResourceLoader.getVehicleById(CustomResourceLoader.java:161) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
8 B9 l# \( C+ M' F1 d p - at org.mtr.mod.render.RenderVehicles.lambda$render$13(RenderVehicles.java:72) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
1 X6 s6 {" f# F |: Q. m - at org.mtr.mod.render.RenderVehicles.iterateWithIndex(RenderVehicles.java:330) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
# m/ I# _1 k8 w: O- J, z - at org.mtr.mod.render.RenderVehicles.lambda$render$14(RenderVehicles.java:53) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]1 {9 g5 W1 ^! S. r
- at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
: R g: z6 H$ N0 N+ r9 Q - at org.mtr.mod.render.RenderVehicles.render(RenderVehicles.java:42) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]6 t, Z. H. v) G: T5 h, G' r8 ~
- at org.mtr.mod.render.MainRenderer.render(MainRenderer.java:102) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
/ J0 K6 Z' F4 `6 t8 `0 @1 u - at org.mtr.mod.render.MainRenderer.render(MainRenderer.java:60) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
; U* k. \$ u6 z" o3 X4 e6 u. {; [# B - at org.mtr.mod.render.MainRenderer.render(MainRenderer.java:26) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
* a0 p9 j" L" C6 e( M. u* Y9 ?. K - at org.mtr.mapping.mapper.EntityRenderer.lambda$render$0(EntityRenderer.java:21) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]1 s R) S7 [9 s& Q2 e' s$ E
- at org.mtr.mapping.mapper.GraphicsHolder.createInstanceSafe(GraphicsHolder.java:50) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
0 r. {- j% u5 H7 ?1 s - at org.mtr.mapping.mapper.GraphicsHolder.createInstanceSafe(GraphicsHolder.java:40) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]1 o8 k; c. N, X: j
- at org.mtr.mapping.mapper.EntityRenderer.render(EntityRenderer.java:21) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]6 d4 O% S b# p% z
- at org.mtr.mapping.mapper.EntityRenderer.m_7392_(EntityRenderer.java:11) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]5 w6 D, ]: n% z7 C' R5 R
- at net.minecraft.client.renderer.entity.EntityRenderDispatcher.m_114384_(EntityRenderDispatcher.java:140) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]2 O4 |+ u+ \4 m! q; j# z
- at net.minecraft.client.renderer.LevelRenderer.m_109517_(LevelRenderer.java:1440) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]% q, Y( n' v/ w. Q7 S& b; w+ X
- at net.minecraft.client.renderer.LevelRenderer.invokeRenderEntity(LevelRenderer.java) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]$ A/ |8 b; E" i7 @
- at net.coderbot.iris.pipeline.ShadowRenderer.renderEntities(ShadowRenderer.java:606) ~[oculus-mc1.20-1.6.4.jar%23288!/:?]8 m$ V* h9 s8 P' I0 _
- at net.coderbot.iris.pipeline.ShadowRenderer.renderShadows(ShadowRenderer.java:483) ~[oculus-mc1.20-1.6.4.jar%23288!/:?]
2 e! a8 n) S# V. I - at net.coderbot.iris.pipeline.newshader.NewWorldRenderingPipeline.renderShadows(NewWorldRenderingPipeline.java:1033) ~[oculus-mc1.20-1.6.4.jar%23288!/:?]
& Z2 j+ M! l- m- M2 C - at net.minecraft.client.renderer.LevelRenderer.handler$zob000$iris$renderTerrainShadows(LevelRenderer.java:11680) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]3 ~/ {5 x" i% x' u- H3 k
- at net.minecraft.client.renderer.LevelRenderer.m_109599_(LevelRenderer.java:1155) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]! Q5 o* d' ?2 P9 @
- at net.minecraft.client.renderer.GameRenderer.m_109089_(GameRenderer.java:1126) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]0 c, R$ B0 _& i M/ M8 j
- at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:909) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
& w. Z6 U6 W3 ?( _. N% P! W, ?. } - at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1146) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]' A) ^9 n8 H$ \4 O }3 P
- at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
- y' B0 |$ A8 D( m( b3 h - at net.minecraft.client.main.Main.main(Main.java:218) ~[Harvista%201.24.jar:?]% Y1 M7 ?# b* q
- at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]# C# ?2 {8 ^1 q3 u
- at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]4 I6 H3 r$ c6 V2 m2 C# y
- at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]* M2 a- f! J: g6 h% W
- at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
9 g7 q- B6 u4 z0 P. O - at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.1.30.jar:?]
: x& K; R4 T2 E9 D - at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.1.30.jar:?]
0 N, [( _2 ]3 ]0 h2 t - at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.1.30.jar:?]/ u0 ~; V; w" P+ m4 N7 ]8 P# i2 M
- at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?]$ y3 e) _" s/ L+ Q
- at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?]! w8 z: g( T# n. m* }
- at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?]
) o: f9 Y+ M2 T& [# k! |* M2 C: Z - at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?]
$ _! Y5 F/ p4 V - at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?]/ b% @% Q4 O# l3 X1 K) S4 K% S
- at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?]8 I2 i4 b( Q0 g4 t- y
- at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?]
* [) w! y7 F! W$ A, _1 J* x. { - at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?]
. q, r& U) |" ~7 s D - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]: X/ J3 c& f9 s/ S X. L
- at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]. I0 F% P- e8 m3 F) S
- at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]/ k2 j. b; }; K% f
- at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]+ e% F7 g. x" }! n! P- A+ i
- at oolloo.jlw.Wrapper.invokeMain(Wrapper.java:112) ~[?:?]1 F( X* W n4 k
- at oolloo.jlw.Wrapper.main(Wrapper.java:105) ~[?:?]
复制代码 简单说就是MTR尝试将一个 CapturingVertexConsumer 对象强制转换为Rubidium的类 VertexBufferWriter,但这两个类不兼容。
; o6 s; P/ V7 s5 _: h' t' A- W* d+ O: _0 {) v6 x0 L. z5 ^
Rubidium和oculus这两个模组是整合包原有的,支持性能优化和光影的模组。但是Rubidium自 2023 年12月起已经停止更新,不再维护。
. o5 ~* Y( |; D4 M8 r经过研究,我将 Rubidium 替换为 Embeddium 。Embeddium是 Rubidium 的非官方分支,仍在活跃维护中,并包含更多兼容性补丁和新功能。
' a9 d; c% `% P0 e4 e+ U" r+ D* x当 Embeddium 配合 oculus使用时,所有功能都可以正常运行,且日志中未出现任何报错。
% v* H$ m* ]1 e& n
' ]! d# J4 X: f4 m, S1 X此问题也已提交至mtr的GitHub(https://github.com/Minecraft-Tra ... Railway/issues/1028) ,考虑到Rubidium已经停止维护,mtr是否可以主动兼容Rubidium?
+ J% ]. p2 K" _6 v) J |