本帖最后由 abRoy 于 2025-1-12 18:37 编辑
; A: _5 e! o9 F" C* ^5 ~ n, j E4 ?
从mtr4.0.0B8就一直困扰我到现在的问题终于解决了,分享一下防止其他和我相同问题的人踩坑* _: L+ X; A) T$ ^
. |5 a: T6 s8 [; R: R _0 b9 w+ E$ a6 o
原mc(1.20.1)在3.2.2版本的mtr下运行一切正常。升级到4.0.0B13后概率出现部分车站/线路的铁轨,站台门不可见的情况,但是又有一些车站是完全正常的。所有的列车都不可见。
7 \$ E' R! }- j. Y
- ~3 u: [4 V9 Q m" D K: {1 J/ }4 a& M, T+ e# d
↑这里应该有张图片但是我不知道插入成功没有 看不到2 a$ M v. X1 h- o) F
! a0 B( {: S5 a
" F7 L; ~, ?$ l% M+ X
原本以为是mtr的问题但是等了很久都没有修复,遂自己看一下日志,发现以下报错频繁出现
! o4 T$ B( F Y$ Q+ {- [121��2025 16:54:18.818] [Render thread/ERROR] [MinecraftMappings/]: " t6 e' }6 u$ t' y! I$ w
- 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)
& N" V; f1 ~0 v3 F% I - at me.jellysquid.mods.sodium.client.render.vertex.VertexBufferWriter.of(VertexBufferWriter.java:8) ~[%5B�%5D%20rubidium-0.6.5.jar%23246!/:?]4 m U( A4 L/ H! F5 h# j9 h
- at net.minecraft.client.model.geom.ModelPart.m_104290_(ModelPart.java:563) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]4 H, O* j# U1 B; q1 U- L
- at net.minecraft.client.model.geom.ModelPart.m_104306_(ModelPart.java:124) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]7 ~2 {# a" x8 a5 i4 `/ [
- at net.minecraft.client.model.geom.ModelPart.m_104301_(ModelPart.java:109) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
3 e6 l; {& ?% |% T, K6 G: w9 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!/:?]
6 b" o) X( F2 o) T# g - at org.mtr.mapping.mapper.OptimizedModel.lambda$fromMaterialGroups$0(OptimizedModel.java:47) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
' Z+ @ s' t& \$ n4 V - at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
7 c- W, K+ i0 U& S6 D - at org.mtr.mapping.mapper.OptimizedModel.lambda$fromMaterialGroups$1(OptimizedModel.java:47) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
$ t, w, L4 {. X$ m - at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
% u3 \- U5 t/ T0 G* T - at org.mtr.mapping.mapper.OptimizedModel.fromMaterialGroups(OptimizedModel.java:45) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
0 G* E2 S, {" Q) @$ A - at org.mtr.mod.resource.OptimizedModelWrapper.fromMaterialGroups(OptimizedModelWrapper.java:20) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
7 r- k5 Z; N5 L$ F) l6 w1 r9 }1 E- L - at org.mtr.mod.resource.ModelPropertiesPart.writeCache(ModelPropertiesPart.java:135) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
4 y( L3 `. q( r4 s3 b( b' k - at org.mtr.mod.render.DynamicVehicleModel.lambda$new$3(DynamicVehicleModel.java:68) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?] G+ i/ I3 T5 D" G0 [7 V0 Y0 C# s
- 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!/:?]/ K! @+ n- z$ {2 N
- at org.mtr.mod.resource.ModelProperties.iterateParts(ModelProperties.java:135) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
% s- L1 g. O/ F+ k4 U - at org.mtr.mod.render.DynamicVehicleModel.<init>(DynamicVehicleModel.java:68) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
6 L: O$ i. N. K( v2 F1 T1 r0 \$ d - at org.mtr.mod.resource.VehicleModel.createModel(VehicleModel.java:121) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
+ s; o4 m3 F" J L, R# g0 W: O - at org.mtr.mod.resource.VehicleModel.lambda$new$0(VehicleModel.java:30) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
# w h; s; A3 S3 S+ v# v# d8 V4 J - at org.mtr.mod.resource.CachedResource.getData(CachedResource.java:31) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
3 L1 g1 M6 ^- |! O& {3 F - 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% G- n1 Z6 H, N
- 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!/:?]- c9 D2 o5 Z2 J& ]+ _- I6 Y0 N
- at org.mtr.mod.resource.VehicleResource.forEachNonNull(VehicleResource.java:502) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]8 Z2 J# Y5 a+ x& x& G
- at org.mtr.mod.resource.VehicleResource.lambda$cachedVehicleResourceInitializer$15(VehicleResource.java:390) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
+ @2 E, f8 F6 `8 R1 R4 k9 O - at org.mtr.mod.resource.CachedResource.getData(CachedResource.java:31) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
$ n; `# a' J/ ]8 q1 \: R - at org.mtr.mod.resource.VehicleResource.queueBogie(VehicleResource.java:206) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
- H8 ?% g3 h8 c: T; A" Z% Z4 x( U# g - at org.mtr.mod.render.RenderVehicles.lambda$render$3(RenderVehicles.java:81) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]# w# e+ e& l" _3 C- {* ?
- at org.mtr.mod.render.RenderVehicleHelper.renderModel(RenderVehicleHelper.java:92) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
) J x+ m) G& x5 R( N - at org.mtr.mod.render.RenderVehicles.lambda$render$6(RenderVehicles.java:81) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]1 d, M. S, x- u9 L/ ?4 x0 C) C% S' M
- at org.mtr.mod.render.RenderVehicles.iterateWithIndex(RenderVehicles.java:330) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]0 {1 V: _9 F* _6 u3 a
- at org.mtr.mod.render.RenderVehicles.lambda$render$12(RenderVehicles.java:78) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]; [! }# |5 z) R% ~) @3 F
- at org.mtr.mod.client.CustomResourceLoader.getVehicleById(CustomResourceLoader.java:161) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
- [5 n$ t% P& V! N6 w, ~ l - at org.mtr.mod.render.RenderVehicles.lambda$render$13(RenderVehicles.java:72) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]- { h4 r4 _. @- {& Z
- at org.mtr.mod.render.RenderVehicles.iterateWithIndex(RenderVehicles.java:330) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
* w: X, w N$ N6 n9 u - at org.mtr.mod.render.RenderVehicles.lambda$render$14(RenderVehicles.java:53) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]/ [' ^3 ~8 [. H! C
- at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
# u/ F9 H3 j2 E5 O. p' y8 Y - at org.mtr.mod.render.RenderVehicles.render(RenderVehicles.java:42) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]0 T% ^4 K- Y0 k8 o
- at org.mtr.mod.render.MainRenderer.render(MainRenderer.java:102) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
' n8 Z) G+ n. I& r, u1 y4 m% [ - at org.mtr.mod.render.MainRenderer.render(MainRenderer.java:60) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]) o9 e: q( E6 ]* E$ X1 l2 B
- at org.mtr.mod.render.MainRenderer.render(MainRenderer.java:26) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
1 b5 `, d4 N9 L Y2 C% ?5 U - at org.mtr.mapping.mapper.EntityRenderer.lambda$render$0(EntityRenderer.java:21) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
" _6 n1 O3 n* k T; @5 ]2 G - at org.mtr.mapping.mapper.GraphicsHolder.createInstanceSafe(GraphicsHolder.java:50) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]3 {; b& e9 ?7 T0 j8 @
- at org.mtr.mapping.mapper.GraphicsHolder.createInstanceSafe(GraphicsHolder.java:40) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
1 ?& A; x( W$ N7 H) L' k9 D - at org.mtr.mapping.mapper.EntityRenderer.render(EntityRenderer.java:21) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]& \, v: v7 F( Z) S: k
- at org.mtr.mapping.mapper.EntityRenderer.m_7392_(EntityRenderer.java:11) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]$ s3 j/ [3 ^' T) D
- at net.minecraft.client.renderer.entity.EntityRenderDispatcher.m_114384_(EntityRenderDispatcher.java:140) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]3 v! [2 d; |7 X! ~
- at net.minecraft.client.renderer.LevelRenderer.m_109517_(LevelRenderer.java:1440) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]7 K5 e2 b& C) E1 |5 |
- at net.minecraft.client.renderer.LevelRenderer.invokeRenderEntity(LevelRenderer.java) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
* G5 b$ y0 u5 \- e7 ^ - at net.coderbot.iris.pipeline.ShadowRenderer.renderEntities(ShadowRenderer.java:606) ~[oculus-mc1.20-1.6.4.jar%23288!/:?]
+ \ ^: v% ^- e" k% U - at net.coderbot.iris.pipeline.ShadowRenderer.renderShadows(ShadowRenderer.java:483) ~[oculus-mc1.20-1.6.4.jar%23288!/:?]
6 J9 y3 I- @+ d/ k - at net.coderbot.iris.pipeline.newshader.NewWorldRenderingPipeline.renderShadows(NewWorldRenderingPipeline.java:1033) ~[oculus-mc1.20-1.6.4.jar%23288!/:?]) w1 @5 C9 }- a, W) b6 h
- at net.minecraft.client.renderer.LevelRenderer.handler$zob000$iris$renderTerrainShadows(LevelRenderer.java:11680) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]$ a4 v4 e7 b5 }. D% {# k
- at net.minecraft.client.renderer.LevelRenderer.m_109599_(LevelRenderer.java:1155) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
$ d* E7 h! H& P) x* c( d1 [ - at net.minecraft.client.renderer.GameRenderer.m_109089_(GameRenderer.java:1126) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]) `6 R& [; Q2 W0 H
- at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:909) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
3 K/ J; {' c( b' l5 p( y - at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1146) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]% X, f2 B: T. c7 T
- at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
% Y- y) ]. n" ~0 E9 T+ g. c% E - at net.minecraft.client.main.Main.main(Main.java:218) ~[Harvista%201.24.jar:?]* ?9 |% M0 [/ m* U
- at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
" l# f x- g" K4 ]+ w4 ^ - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]( l! U ^; z6 V9 ]. i3 E/ A# [
- at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
- d9 I4 z% k/ S9 s& T. x - at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
- t; ^4 K! j& l - at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.1.30.jar:?]/ ]: U* X! m2 a3 G
- at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.1.30.jar:?]
+ r6 v2 K; I1 [/ L$ x/ @0 { - at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.1.30.jar:?]
# v2 Q4 @' @/ _2 P - at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?]0 q- L- z( ?( ]+ Z; w8 @
- at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?]
" \% ~$ }7 t- x, [ - at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?]
* c8 {1 [0 z$ I! w$ |7 V, K - at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?]
) Q6 M0 J1 s B# @4 @. }( P - at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?]" ]" i* U' |! L; U% p( S2 v
- at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?]+ d2 j9 f' ?2 S) t& C: I/ D
- at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?]
/ O1 @9 E) Q1 g% t% ]2 i - at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?]8 J3 Q+ G& W, ?
- at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
o* U4 O+ A3 [) o- \( |: ~ - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
1 R" a v: j/ u" V - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
5 F: w a& |! ~: C( a- B - at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]. \3 C: y4 r! A- z0 S( f1 }
- at oolloo.jlw.Wrapper.invokeMain(Wrapper.java:112) ~[?:?]. C7 _. h$ A+ I! y* [/ O, L. U0 ?
- at oolloo.jlw.Wrapper.main(Wrapper.java:105) ~[?:?]
复制代码 简单说就是MTR尝试将一个 CapturingVertexConsumer 对象强制转换为Rubidium的类 VertexBufferWriter,但这两个类不兼容。
6 d- _) }1 V% _8 K. a3 ?+ a2 }3 T: N" U' w/ T) K
Rubidium和oculus这两个模组是整合包原有的,支持性能优化和光影的模组。但是Rubidium自 2023 年12月起已经停止更新,不再维护。
8 v& G3 y) l& D% w5 l7 v2 M经过研究,我将 Rubidium 替换为 Embeddium 。Embeddium是 Rubidium 的非官方分支,仍在活跃维护中,并包含更多兼容性补丁和新功能。" `( u- d& D3 A( @$ E& G) ~
当 Embeddium 配合 oculus使用时,所有功能都可以正常运行,且日志中未出现任何报错。& O3 _" F% t! A& J* J" }
, `7 a! K, W& {; r8 D2 h
此问题也已提交至mtr的GitHub(https://github.com/Minecraft-Tra ... Railway/issues/1028) ,考虑到Rubidium已经停止维护,mtr是否可以主动兼容Rubidium?3 v; [' ?; f" N4 R' z
|