求助,java 文件如何编译
想要自己写个技能mod,好像不能支持 java 文件,安装好JDK之后尝试编译一直出错,不知要怎么处理,求指点。本帖最后由 夜游神 于 2022-2-28 16:52 编辑
package com.fs.starfarer.api.impl.campaign.skills;
import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.characters.CharacterStatsSkillEffect;
import com.fs.starfarer.api.characters.DescriptionSkillEffect;
import com.fs.starfarer.api.characters.LevelBasedEffect;
import com.fs.starfarer.api.characters.MutableCharacterStatsAPI;
import com.fs.starfarer.api.util.Misc;
import java.awt.Color;
public class OfficerManagement {
public static float NUM_OFFICERS_BONUS = 2.0F;
public static float CP_BONUS = 2.0F;
public static class Level0 implements DescriptionSkillEffect {
public String getString() {
int baseOfficers = (int)Global.getSector().getPlayerStats().getOfficerNumber().getBaseValue();
return "" + baseOfficers + ".";
}
public Color[] getHighlightColors() {
Color h = Misc.getDarkHighlightColor();
return new Color[] { h };
}
public String[] getHighlights() {
int i = (int)Global.getSector().getPlayerStats().getOfficerNumber().getBaseValue();
return new String[] { i };
}
public Color getTextColor() {
return null;
}
}
public static class Level1 implements CharacterStatsSkillEffect {
public void apply(MutableCharacterStatsAPI stats, String id, float level) {
stats.getOfficerNumber().modifyFlat(id, OfficerManagement.NUM_OFFICERS_BONUS);
}
public void unapply(MutableCharacterStatsAPI stats, String id) {
stats.getOfficerNumber().unmodify(id);
}
public String getEffectDescription(float level) {
return "+" + (int)OfficerManagement.NUM_OFFICERS_BONUS + " ;
}
public String getEffectPerLevelDescription() {
return null;
}
public LevelBasedEffect.ScopeDescription getScopeDescription() {
return LevelBasedEffect.ScopeDescription.NONE;
}
}
public static class Level1B implements CharacterStatsSkillEffect {
public void apply(MutableCharacterStatsAPI stats, String id, float level) {
stats.getCommandPoints().modifyFlat(id, OfficerManagement.CP_BONUS);
}
public void unapply(MutableCharacterStatsAPI stats, String id) {
stats.getCommandPoints().unmodify(id);
}
public String getEffectDescription(float level) {
return "+" + (int)OfficerManagement.CP_BONUS + " ;
}
public String getEffectPerLevelDescription() {
return null;
}
public LevelBasedEffect.ScopeDescription getScopeDescription() {
return LevelBasedEffect.ScopeDescription.FLEET;
}
}
}
本帖最后由 厉害啊 于 2022-2-28 18:52 编辑
要编译建议参考这个教程:https://fractalsoftworks.com/forum/index.php?topic=10057.0,一步到位
本帖最后由 夜游神 于 2022-2-28 19:00 编辑
厉害啊 发表于 2022-2-28 18:50
要编译建议参考这个教程:https://fractalsoftworks.com/forum/index.php?topic=10057.0,一步到位
...
感谢指导,以前版本做的MOD正常,但现在版本用以前的方法不行,加载就出错
10338 ERROR com.fs.starfarer.combat.CombatMain- java.lang.RuntimeException: Error loading
java.lang.RuntimeException: Error loading
at com.fs.starfarer.loading.scripts.ScriptStore$3.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: data.characters.skills.oms2$Level1
at org.codehaus.janino.JavaSourceClassLoader.findClass(JavaSourceClassLoader.java:179)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
从游戏jar内部导出的java文件也是出错,
船插mod可以正常使用java文件,就是技能mod会出错。
说来,你这个报错是找不到一个叫 oms2 的类里的 叫 Level1 的子类
但是你的代码的类名是 OfficerManagement 欸 钟离云初 发表于 2022-2-28 21:25
说来,你这个报错是找不到一个叫 oms2 的类里的 叫 Level1 的子类
但是你的代码的类名是 OfficerManagement ...
OfficerManagement.java是从starfarer.api.jar 导出的文件,oms2.java 是修改的,都试过不能加载。 夜游神 发表于 2022-2-28 21:33
OfficerManagement.java是从starfarer.api.jar 导出的文件,oms2.java 是修改的,都试过不能加载。 ...
我不太懂这个游戏是怎么操作的哈
不过从java语言来说的话,你如果编译之后有一个oms2$Level1.class的文件,然后将其放到正确的包的位置不应该有问题才是 钟离云初 发表于 2022-2-28 22:17
我不太懂这个游戏是怎么操作的哈
不过从java语言来说的话,你如果编译之后有一个oms2$Level1.class的文件 ...
明白,只是没有学过JAVA不会编译,再研究其他方法吧,多谢。 OK,留个记号,忘了再来学习 现版本可以直接用.java文件而非.class文件的,顶天是别人看你代码篡改你代码更方便点
只要你不想把这个发出来或者不在乎就可以随便
前两天我就想改技能来着,java直接用就行了
虽然最后放弃了,不过是因为要写的其他东西比较烦,我又没有一定改的理由 Soul_liu 发表于 2022-4-21 23:35
现版本可以直接用.java文件而非.class文件的,顶天是别人看你代码篡改你代码更方便点
只要你不想把这个发出 ...
怎么不编译直接用java文件啊?
页:
[1]