|
Mod Bug汇报
已解决
|
游戏版本: |
0.95.1 |
Mod中文名: |
|
Mod版本: |
|
游戏日志:
无
|
复现步骤:
|
本帖最后由 sifang 于 2023-8-11 00:23 编辑
我自己在学习如何添加星系,但是不知道为何星系始终无法生成,mod文件已付送
代码:
package data.scripts;
import com.fs.starfarer.api.BaseModPlugin;
import com.fs.starfarer.api.Global;
import data.scripts.world.PTCS_WorldGenerate;
import exerelin.campaign.SectorManager;
// =====================================================================================================================
// >> START
/**
* 定义PTCS_ModPlugin类,继承BaseModPlugin类。
* 该类是Mod程序的执行入口。
* Mod程序的执行入口最好继承BaseModPlugin类,而不必接入ModPlugin接口。因为BaseModPlugin类已接入ModPlugin接口,只要继承该类,就无需将
* ModPlugin接口中的所有抽象方法都实现一遍,按需选用即可。
*/
public class PTCS_ModPlugin extends BaseModPlugin {
/**
* 重写父类的onNewGame()方法。
* 该方法会在创建新游戏时调用,这是在星域中添加内容的首选方法。
*/
@Override
public void onNewGame() {
// 检查是否启用势力争霸
boolean haveNexerelin = Global.getSettings().getModManager().isModEnabled("nexerelin");
// 当未启用势力争霸,或启用势力争霸但未开启随机星域时
if (!haveNexerelin || SectorManager.getManager().isCorvusMode()) {
// 使用默认构造方法创建一个UCSE_WorldGenerate对象,并执行该对象的generate()方法
new PTCS_WorldGenerate().generate(Global.getSector());
}
// 当启用势力争霸且开启随机星域时,什么都不做
}
}
// >> END
// =============================
package data.scripts.world;
import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.campaign.SectorAPI;
import com.fs.starfarer.api.campaign.SectorGeneratorPlugin;
import data.scripts.world.systems.PTCS_Aorura;
// =====================================================================================================================
// >> START
/**
* 定义PTCS_WorldGenerate类,接入SectorGeneratorPlugin接口。
* 该类进行各星系的总体生成设定。
* SectorGeneratorPlugin接口中只有一条抽象方法(generate()方法),实现即可。
*/
public class PTCS_WorldGenerate implements SectorGeneratorPlugin {
/**
* 实现接口的generate()方法。
*/
@Override
public void generate(SectorAPI sector) {
// 使用默认构造方法创建一个PTCS_Aorura对象,并执行该对象的generate()方法
new PTCS_Aorura().generate(sector);
// 当所有值为false时,不生成任何星系
}
}
// >> END
// ================================
package data.scripts.world.systems;
import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.campaign.*;
import com.fs.starfarer.api.campaign.econ.MarketAPI;
import com.fs.starfarer.api.fleet.FleetMemberType;
import com.fs.starfarer.api.impl.campaign.ids.Conditions;
import com.fs.starfarer.api.impl.campaign.ids.Submarkets;
import com.fs.starfarer.api.impl.campaign.ids.Terrain;
import com.fs.starfarer.api.impl.campaign.procgen.NebulaEditor;
import com.fs.starfarer.api.impl.campaign.procgen.StarAge;
import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator;
import com.fs.starfarer.api.impl.campaign.procgen.themes.SalvageSpecialAssigner;
import com.fs.starfarer.api.impl.campaign.terrain.HyperspaceTerrainPlugin;
import com.fs.starfarer.api.impl.campaign.terrain.MagneticFieldTerrainPlugin.MagneticFieldParams;
import com.fs.starfarer.api.util.Misc;
import java.awt.*;
import static com.fs.starfarer.api.impl.campaign.terrain.DebrisFieldTerrainPlugin.DebrisFieldParams;
import static com.fs.starfarer.api.impl.campaign.terrain.DebrisFieldTerrainPlugin.DebrisFieldSource;
// =====================================================================================================================
// >> START
/**
* 定义Aorura类。
* 该类进行恒星系生成的具体设定。若想生成星系,需要先将该类实例化为对象,再由对象执行其中的generate()方法。
*/
public class PTCS_Aorura {
/**
* 定义generate()方法。
* 该方法进行Aorura生成的具体设定。
*/
public void generate(SectorAPI sector) {
// 添加星系
StarSystemAPI system = sector.createStarSystem("PTCS_Aorura");
// 设置星系位置
system.getLocation().set(400F, -19500F);
// 通过本地文件导入星系背景图
system.setBackgroundTextureFilename("graphics/PTCS/backgrounds/backgrounds_Aorura.jpg");
/*
* [恒星]
* 添加一个恒星。参数列表:ID,星球类型,半径,日冕大小。
* 星球类型定义在data/config/planets.json中。
*/
PlanetAPI Aorura_star = system.initStar("Aorura_star", "star_yellow", 600F, 300F);
//星系全局光照颜色
system.setLightColor(new Color(255, 252, 222));
/*
* [Aorura I]
* 添加一个行星。参数列表:ID,圆心,显示名称,星球类型,初始角坐标,星球大小,轨道半径,公转周期。
* 星球类型定义在data/config/planets.json中。
*/
PlanetAPI Aorura_I = system.addPlanet("Aorura_1", Aorura_star, "Aorura_star", "barren", 90, 140, 1600, 156);
// 设置调用的描述文本的ID。描述文本定义在data/strings/descriptions中
Aorura_I.setCustomDescriptionId("Aorura_I");
// 在行星上添加一个market,该market与殖民地无关,仅用于设置星球修正
MarketAPI Aorura_I_market = Global.getFactory().createMarket("Aorura_I_market", Aorura_I.getName(), 0);
Aorura_I_market.setPlanetConditionMarketOnly(true);
// 设置修正列表
Aorura_I_market.addCondition(Conditions.VERY_HOT); // 添加修正:异常炎热(+50)
Aorura_I_market.addCondition(Conditions.THIN_ATMOSPHERE); // 添加修正:稀薄大气(+25)
Aorura_I_market.addCondition(Conditions.ORE_RICH); // 添加修正:矿石+2
Aorura_I_market.addCondition(Conditions.RARE_ORE_RICH); // 添加修正:稀有矿石+2
// 将market的位置设置在行星上,并告知行星其拥有一个market
Aorura_I_market.setPrimaryEntity(Aorura_I);
Aorura_I.setMarket(Aorura_I_market);
/*
* [内部跳跃点]
* 添加一个跳跃点。参数列表:ID,显示名称。
*/
JumpPointAPI inside_jumpPoint = Global.getFactory().createJumpPoint("Aorura_jump", "Aorura 内环跳跃点");
// 设置轨道。参数列表:圆心,初始角坐标,轨道半径,公转周期
inside_jumpPoint.setCircularOrbit(system.getEntityById("Aorura_star"), 140, 2600, 526);
// 设置关联星球(超空间中该跳跃点打开后显示在其中的星球,仅为视觉效果)
inside_jumpPoint.setRelatedPlanet(Aorura_I);
// 设置视觉效果
inside_jumpPoint.setStandardWormholeToHyperspaceVisual();
// 添加该跳跃点实体
system.addEntity(inside_jumpPoint);
}
}
|
|