|
|
发表于 2026-8-7 21:35:05
|
显示全部楼层
闪退报错了,把日志给ai看了,大佬看看闪退原因
远行星号 / Starsector 闪退报告
发给作者:远视驱动公司 FarsightDrive
================================================================================
基本信息
================================================================================
模组:FarsightDrive(远视驱动)
模组版本:0.4.2.6-ver4
游戏版本:0.98a(模组声明)
相关文件:data/hullmods/FSD_HarmonicFluxWheel.java 第 86 行
复现方式:在货物/改装栏中将鼠标悬停到「谐和通量轮 / FSD_HarmonicFluxWheel」物品上查看 tooltip 时闪退
================================================================================
问题摘要
================================================================================
ClassCastException: String cannot be cast to Float
原因:addPostDescriptionSection() 里调用 tooltip.beginTable() 时,
列参数只传了表头字符串,缺少列宽(Float)。
beginTable 的可变参数要求「列宽(Float), 表头(String)」成对出现,
当前写法会把第一个 String 当成 Float 去强转,导致崩溃。
有问题的代码(约第 86 行):
--------------------------------------------------------------------------------
tooltip.beginTable(Color.GRAY, Color.BLACK, Color.BLACK, 20f,
"幅能水平", "每100点幅能的业力消耗", "返还速率");
--------------------------------------------------------------------------------
建议写法(示例,列宽可按 UI 再调):
--------------------------------------------------------------------------------
tooltip.beginTable(Color.GRAY, Color.BLACK, Color.BLACK, 20f,
width * 0.35f, "幅能水平",
width * 0.35f, "每100点幅能的业力消耗",
width * 0.30f, "返还速率");
--------------------------------------------------------------------------------
================================================================================
完整崩溃堆栈(来自 starsector.log 末尾)
================================================================================
19283370 [Thread-2] ERROR com.fs.starfarer.combat.CombatMain - java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Float (java.lang.String and java.lang.Float are in module java.base of loader 'bootstrap')
java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Float (java.lang.String and java.lang.Float are in module java.base of loader 'bootstrap')
at com.fs.starfarer.ui.impl.StandardTooltipV2Expandable.beginTable(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.impl.StandardTooltipV2Expandable.beginTable(Unknown Source) ~[starfarer_obf.jar:?]
at data.hullmods.FSD_HarmonicFluxWheel.addPostDescriptionSection(FSD_HarmonicFluxWheel.java:86) ~[?:?]
at com.fs.starfarer.api.campaign.impl.items.ModSpecItemPlugin.createTooltip(ModSpecItemPlugin.java:217) ~[starfarer.api.jar:?]
at com.fs.starfarer.campaign.ui.trade.CargoDataGridView$1.createImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.impl.StandardTooltipV2Expandable.create(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.impl.StandardTooltipV2Expandable.beforeShown(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.showTooltip(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.O0Oo.ÓÒ0000(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.O0Oo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.dispatchEventsToChildren(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.campaign.ui.trade.CargoDataGridView.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.g$Oo.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.dispatchEventsToChildren(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.g.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.dispatchEventsToChildren(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.campaign.ui.G.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.dispatchEventsToChildren(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.dispatchEventsToChildren(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.class.I.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.dispatchEventsToChildren(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.oo0O.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.newui._.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.dispatchEventsToChildren(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.oo0O.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.newui.o0Oo.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.dispatchEventsToChildren(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.oo0O.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.newui.L.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.dispatchEventsToChildren(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.oo0O.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.newui.o0Oo.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.dispatchEventsToChildren(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.interfacenew.processInputImpl(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.ui.OOOo.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.campaign.CampaignState.processInput(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.starfarer.BaseGameState.traverse(Unknown Source) ~[starfarer_obf.jar:?]
at com.fs.state.AppDriver.begin(Unknown Source) ~[fs.common_obf.jar:?]
at com.fs.starfarer.combat.CombatMain.main(Unknown Source) [starfarer_obf.jar:?]
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source) [starfarer_obf.jar:?]
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source) [starfarer_obf.jar:?]
at java.base/java.lang.Thread.run(Thread.java:1516) [?:?]
================================================================================
相关源码片段(FSD_HarmonicFluxWheel.java addPostDescriptionSection)
================================================================================
tooltip.addPara("幅能水平与业力消耗和返还速率关系:", pad);
tooltip.beginTable(Color.GRAY, Color.BLACK, Color.BLACK, 20f, "幅能水平", "每100点幅能的业力消耗", "返还速率");
tooltip.addRow(highlight, "幅能水平<33%", "2%", "300点/秒");
tooltip.addRow(highlight, "33%<=幅能水平<67%", "1%", "200点/秒");
tooltip.addRow(highlight, "幅能水平>=67%", "0.5%", "100点/秒");
tooltip.addTable("", 0, pad);
|
|