本帖最后由 abRoy 于 2025-1-12 18:37 编辑 5 o6 k# i4 |) E' ` U' Y
0 [. }$ w- P1 ]1 c( @从mtr4.0.0B8就一直困扰我到现在的问题终于解决了,分享一下防止其他和我相同问题的人踩坑
3 ^; ~- l8 `( U- }( ^2 |# S
) |! j" s( r7 U5 u" f
& n$ l9 W0 q- o/ l+ p) W# B8 r原mc(1.20.1)在3.2.2版本的mtr下运行一切正常。升级到4.0.0B13后概率出现部分车站/线路的铁轨,站台门不可见的情况,但是又有一些车站是完全正常的。所有的列车都不可见。9 B4 a8 ^* R- F% ^" A
/ Q" t* Q) v U# w* @; f
. D- T/ a( {/ \# x↑这里应该有张图片但是我不知道插入成功没有 看不到" V) e. h* B. N, e
* N" R/ e& J/ @, o' t- W8 c8 f2 L4 W6 F3 m+ v
原本以为是mtr的问题但是等了很久都没有修复,遂自己看一下日志,发现以下报错频繁出现
. u* y* D" M; B* }. V1 H! D- [121��2025 16:54:18.818] [Render thread/ERROR] [MinecraftMappings/]:
3 P1 N0 @1 X h. o: V9 d0 i/ R - 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)
8 h, A9 B+ C8 J& I. Z2 l - at me.jellysquid.mods.sodium.client.render.vertex.VertexBufferWriter.of(VertexBufferWriter.java:8) ~[%5B�%5D%20rubidium-0.6.5.jar%23246!/:?]
3 S+ W9 ]1 k% A7 t: T7 y0 m - at net.minecraft.client.model.geom.ModelPart.m_104290_(ModelPart.java:563) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]3 e. g7 f* y, s( M9 `
- at net.minecraft.client.model.geom.ModelPart.m_104306_(ModelPart.java:124) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
5 Z3 K2 |3 I, `8 I - at net.minecraft.client.model.geom.ModelPart.m_104301_(ModelPart.java:109) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]! \& P9 a! j Q
- 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!/:?]
/ [* j) l: A- O2 W - 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% V( P5 D3 R1 J: W
- at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]( V3 x/ S& h: ~4 w i+ y. T
- at org.mtr.mapping.mapper.OptimizedModel.lambda$fromMaterialGroups$1(OptimizedModel.java:47) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]$ x' O2 u0 X1 t. ^6 j: n) \3 o
- at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?]
1 z! D2 N8 U, q- B% ~ - at org.mtr.mapping.mapper.OptimizedModel.fromMaterialGroups(OptimizedModel.java:45) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
( q1 i+ A. T% R' a& l - at org.mtr.mod.resource.OptimizedModelWrapper.fromMaterialGroups(OptimizedModelWrapper.java:20) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]- ]% `, S) N* E6 R
- at org.mtr.mod.resource.ModelPropertiesPart.writeCache(ModelPropertiesPart.java:135) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]6 {) [6 [: i3 z" o! z! [- O6 o
- at org.mtr.mod.render.DynamicVehicleModel.lambda$new$3(DynamicVehicleModel.java:68) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?] \8 n% L" b9 \ @) _3 e8 j" 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!/:?]
. J( I" A/ c# j6 D2 ~ - at org.mtr.mod.resource.ModelProperties.iterateParts(ModelProperties.java:135) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
$ T. `! M3 h Y2 O9 B6 O - at org.mtr.mod.render.DynamicVehicleModel.<init>(DynamicVehicleModel.java:68) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]# Z$ |' \3 }0 u' u6 j# d
- at org.mtr.mod.resource.VehicleModel.createModel(VehicleModel.java:121) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
( c' a; @. _" h' W - at org.mtr.mod.resource.VehicleModel.lambda$new$0(VehicleModel.java:30) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]5 b; b8 J6 z4 s7 y# R
- at org.mtr.mod.resource.CachedResource.getData(CachedResource.java:31) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
) {4 }: z7 g& U# K. q - at org.mtr.mod.resource.VehicleResource.lambda$forEachNonNull$20(VehicleResource.java:503) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
" k) G# d4 t& t& L* g" c/ @' t - 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!/:?]/ f* K9 Z z9 P$ {
- at org.mtr.mod.resource.VehicleResource.forEachNonNull(VehicleResource.java:502) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
1 G! r, ?, p+ l2 b; Y - at org.mtr.mod.resource.VehicleResource.lambda$cachedVehicleResourceInitializer$15(VehicleResource.java:390) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]7 u7 s: J3 M( o' B
- at org.mtr.mod.resource.CachedResource.getData(CachedResource.java:31) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]9 Y- R$ W# Y5 i- Z3 |/ y' j
- at org.mtr.mod.resource.VehicleResource.queueBogie(VehicleResource.java:206) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]/ @" y m8 M Z
- at org.mtr.mod.render.RenderVehicles.lambda$render$3(RenderVehicles.java:81) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]- M4 K1 J% K' r6 A& ]
- at org.mtr.mod.render.RenderVehicleHelper.renderModel(RenderVehicleHelper.java:92) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
6 M8 b$ Z; U x' {' W9 j - at org.mtr.mod.render.RenderVehicles.lambda$render$6(RenderVehicles.java:81) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
3 h/ `0 }4 L: e; J6 ?) t - at org.mtr.mod.render.RenderVehicles.iterateWithIndex(RenderVehicles.java:330) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
* _$ |- s( S6 F4 r( H9 X- u; Z - at org.mtr.mod.render.RenderVehicles.lambda$render$12(RenderVehicles.java:78) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
- `6 T' |8 i/ {6 f - at org.mtr.mod.client.CustomResourceLoader.getVehicleById(CustomResourceLoader.java:161) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]' H* Q3 B- T1 |+ c, M) I0 s# P7 P% F
- at org.mtr.mod.render.RenderVehicles.lambda$render$13(RenderVehicles.java:72) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]3 S* O y) S( K8 `
- at org.mtr.mod.render.RenderVehicles.iterateWithIndex(RenderVehicles.java:330) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
: `' |+ K) @6 n" \7 s# [: x, B - at org.mtr.mod.render.RenderVehicles.lambda$render$14(RenderVehicles.java:53) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?], k2 j( G" _% C
- at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]( Z: j2 \2 E% E
- at org.mtr.mod.render.RenderVehicles.render(RenderVehicles.java:42) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
" O6 C( f ?& ]$ _# h - at org.mtr.mod.render.MainRenderer.render(MainRenderer.java:102) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
) y3 ~' [, y1 N9 r6 P - at org.mtr.mod.render.MainRenderer.render(MainRenderer.java:60) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]9 P# N& S+ P5 b
- at org.mtr.mod.render.MainRenderer.render(MainRenderer.java:26) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]) [* X9 H7 x& P6 L3 A% Z) p
- at org.mtr.mapping.mapper.EntityRenderer.lambda$render$0(EntityRenderer.java:21) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
: ^* H1 B8 @- W; w - at org.mtr.mapping.mapper.GraphicsHolder.createInstanceSafe(GraphicsHolder.java:50) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
4 i0 ]) N- F4 [) n% ^2 u' {8 e C - at org.mtr.mapping.mapper.GraphicsHolder.createInstanceSafe(GraphicsHolder.java:40) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
6 z1 E) }1 a. d2 t4 m3 M1 ] - at org.mtr.mapping.mapper.EntityRenderer.render(EntityRenderer.java:21) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]
5 `( P% h/ g; C* Y4 z$ b - at org.mtr.mapping.mapper.EntityRenderer.m_7392_(EntityRenderer.java:11) ~[MTR-forge-4.0.0-beta.13+1.20.1.jar%23287!/:?]' @. S6 q C$ B3 @; u
- at net.minecraft.client.renderer.entity.EntityRenderDispatcher.m_114384_(EntityRenderDispatcher.java:140) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]& S& q" w: L ~1 B+ h9 ]- m
- at net.minecraft.client.renderer.LevelRenderer.m_109517_(LevelRenderer.java:1440) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]6 \2 f) J4 W7 v( Q4 t1 R6 v7 H6 L; w
- at net.minecraft.client.renderer.LevelRenderer.invokeRenderEntity(LevelRenderer.java) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]; E7 q2 e- x+ t% K6 V+ t0 ~! ?
- at net.coderbot.iris.pipeline.ShadowRenderer.renderEntities(ShadowRenderer.java:606) ~[oculus-mc1.20-1.6.4.jar%23288!/:?]
. D: V5 P1 _# B9 u/ [ - at net.coderbot.iris.pipeline.ShadowRenderer.renderShadows(ShadowRenderer.java:483) ~[oculus-mc1.20-1.6.4.jar%23288!/:?]
5 t9 C8 p5 p/ {& m* V/ F4 Y3 r - at net.coderbot.iris.pipeline.newshader.NewWorldRenderingPipeline.renderShadows(NewWorldRenderingPipeline.java:1033) ~[oculus-mc1.20-1.6.4.jar%23288!/:?]
. ~" v9 y/ d6 m' h9 x2 M - at net.minecraft.client.renderer.LevelRenderer.handler$zob000$iris$renderTerrainShadows(LevelRenderer.java:11680) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
' c1 }2 R8 ]$ k - at net.minecraft.client.renderer.LevelRenderer.m_109599_(LevelRenderer.java:1155) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]% {0 d9 |% m# e( `
- at net.minecraft.client.renderer.GameRenderer.m_109089_(GameRenderer.java:1126) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
0 s/ p; C) R' g r& T, B" { ] - at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:909) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]7 \6 I! A- [4 P2 b4 ^
- at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1146) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]
+ }5 p$ H, u( ]8 O, c - at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23300!/:?]% ?# q' R; V! g. j
- at net.minecraft.client.main.Main.main(Main.java:218) ~[Harvista%201.24.jar:?] S) ?* u% D# [/ d3 c9 m3 ]
- at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
2 `6 R; P0 ?" L7 g - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
9 S! r1 A3 V L( w: b: A4 C - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]5 T" h; ~9 Q. a" N7 K0 u( X
- at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
$ c$ u( `/ v7 g3 }; R" G - at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.1.30.jar:?] J) B2 e) x1 F; `
- at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.1.30.jar:?]
7 Q1 h7 C3 B2 f" l4 R& C - at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.1.30.jar:?]* ^4 n. V/ ], l5 b4 Z i
- at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?]# e% c! u( t$ S4 X) [
- at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?]& R5 \3 d! A. [' {/ u/ o& J* D' j
- at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?]
7 {( C% H, ~) o* X% c1 f/ k9 B, b7 L3 ~ - at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?]
# m- b% P6 B s3 X+ N& F - at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?]
5 s1 Z9 {; Z* K% R; b - at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?]
9 Q9 F4 Q3 }( k - at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?]
# G9 R7 O: `( X - at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?]
" l7 m9 I7 G2 e9 D& Q - at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]' { I8 w) q: H
- at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
& r. F+ O! b5 \ - at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
1 j9 b8 N& ^ Y2 j4 } F# z7 @% H - at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]* Y, _+ h- E U1 ?! U$ @
- at oolloo.jlw.Wrapper.invokeMain(Wrapper.java:112) ~[?:?] p% D+ t/ `% T# T! d2 \3 B0 v
- at oolloo.jlw.Wrapper.main(Wrapper.java:105) ~[?:?]
复制代码 简单说就是MTR尝试将一个 CapturingVertexConsumer 对象强制转换为Rubidium的类 VertexBufferWriter,但这两个类不兼容。, C7 M4 p7 n2 `- r6 T9 U- z
* t! t' |- z M2 o) u
Rubidium和oculus这两个模组是整合包原有的,支持性能优化和光影的模组。但是Rubidium自 2023 年12月起已经停止更新,不再维护。$ z! W. c+ P+ T- ~9 @1 R
经过研究,我将 Rubidium 替换为 Embeddium 。Embeddium是 Rubidium 的非官方分支,仍在活跃维护中,并包含更多兼容性补丁和新功能。
/ Z' K9 D+ w; A) `* `& C* Q% E- \当 Embeddium 配合 oculus使用时,所有功能都可以正常运行,且日志中未出现任何报错。/ k) p2 L+ Y9 u0 [6 z& l
# `& r# N3 q/ g. V. X
此问题也已提交至mtr的GitHub(https://github.com/Minecraft-Tra ... Railway/issues/1028) ,考虑到Rubidium已经停止维护,mtr是否可以主动兼容Rubidium?
4 J* u2 e3 n; c |