夜游神 发表于 2022-2-28 16:47:40

求助,java 文件如何编译

想要自己写个技能mod,好像不能支持 java 文件,安装好JDK之后尝试编译一直出错,不知要怎么处理,求指点。

夜游神 发表于 2022-2-28 16:48:22

本帖最后由 夜游神 于 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:50:35

本帖最后由 厉害啊 于 2022-2-28 18:52 编辑


要编译建议参考这个教程:https://fractalsoftworks.com/forum/index.php?topic=10057.0,一步到位

夜游神 发表于 2022-2-28 18:56:27

本帖最后由 夜游神 于 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会出错。

钟离云初 发表于 2022-2-28 21:25:39

说来,你这个报错是找不到一个叫 oms2 的类里的 叫 Level1 的子类
但是你的代码的类名是 OfficerManagement 欸

夜游神 发表于 2022-2-28 21:33:08

钟离云初 发表于 2022-2-28 21:25
说来,你这个报错是找不到一个叫 oms2 的类里的 叫 Level1 的子类
但是你的代码的类名是 OfficerManagement ...

OfficerManagement.java是从starfarer.api.jar 导出的文件,oms2.java 是修改的,都试过不能加载。

钟离云初 发表于 2022-2-28 22:17:47

夜游神 发表于 2022-2-28 21:33
OfficerManagement.java是从starfarer.api.jar 导出的文件,oms2.java 是修改的,都试过不能加载。 ...

我不太懂这个游戏是怎么操作的哈
不过从java语言来说的话,你如果编译之后有一个oms2$Level1.class的文件,然后将其放到正确的包的位置不应该有问题才是

夜游神 发表于 2022-2-28 22:44:44

钟离云初 发表于 2022-2-28 22:17
我不太懂这个游戏是怎么操作的哈
不过从java语言来说的话,你如果编译之后有一个oms2$Level1.class的文件 ...

明白,只是没有学过JAVA不会编译,再研究其他方法吧,多谢。

aleph0 发表于 2022-4-21 23:16:06

OK,留个记号,忘了再来学习

Soul_liu 发表于 2022-4-21 23:35:45

现版本可以直接用.java文件而非.class文件的,顶天是别人看你代码篡改你代码更方便点
只要你不想把这个发出来或者不在乎就可以随便
前两天我就想改技能来着,java直接用就行了
虽然最后放弃了,不过是因为要写的其他东西比较烦,我又没有一定改的理由

Deino 发表于 2022-7-1 03:58:19

Soul_liu 发表于 2022-4-21 23:35
现版本可以直接用.java文件而非.class文件的,顶天是别人看你代码篡改你代码更方便点
只要你不想把这个发出 ...

怎么不编译直接用java文件啊?
页: [1]
查看完整版本: 求助,java 文件如何编译