找回密码
 初始化身份识别芯片
查看: 187|回复: 4

关于如何用直接用控制台添加、删除星球

[复制链接]

驱逐技师

发表于 6 天前 | 显示全部楼层 |阅读模式
老是找不到距离核心星区近一些的星系做殖民地,又不想殖民地分的太开,就研究了一下怎么手搓殖民地星球,论坛里可以找到最基本的添加星球命令,但复杂一点的情况就找不到了。


研究了下把方法分享给大家。

最简单的添加星球,这个也是论坛里找到的

runcode import com.fs.starfarer.api.util.Misc; String planetName = "星球名字";  
float planetOrbitDays = 180;   // 公转周期,就是绕着太阳多久转一圈,这个单位是天
float planetSize = 150;   //星球大小,普通星球就100到150就够了。
Vector2f playerCoords = $playerFleet.getLocation();
float angleCCW = Misc.getAngleInDegreesStrict(playerCoords);
StarSystemAPI sys = (StarSystemAPI)$playerFleet.getContainingLocation();
PlanetAPI star = sys.getStar();
float orbitRadius = Misc.getDistance(star.getLocation(), playerCoords);
PlanetAPI planet = sys.addPlanet(planetName, star, planetName, "terran", angleCCW, planetSize, orbitRadius, planetOrbitDays );//terran是星球类型,论坛里很容易找到
下面的内容是添加星球特征的,论坛里也很容易找到,就不多说了。

MarketAPI market = sys.getEntityById(planetName).getMarket();
market.addCondition("organics_plentiful");
market.addCondition("farmland_bountiful");
market.addCondition("ore_ultrarich");
market.addCondition("rare_ore_ultrarich");
market.addCondition("volatiles_plentiful");
market.addCondition("habitable");
market.addCondition("mild_climate");



再举一个例子,添加一个气态行星

runcode import com.fs.starfarer.api.util.Misc;
String planetName = "星球名字";           // 修改为你想要的名字
float planetOrbitDays = 180;             // 公转周期
float planetSize = 280;                  // 气态巨行星视觉较大,建议 250–350
Vector2f playerCoords = $playerFleet.getLocation();
float angleCCW = Misc.getAngleInDegreesStrict(playerCoords);
StarSystemAPI sys = (StarSystemAPI)$playerFleet.getContainingLocation();
PlanetAPI star = sys.getStar();
float orbitRadius = Misc.getDistance(star.getLocation(), playerCoords);
PlanetAPI planet = sys.addPlanet(planetName, star, planetName, "gas_giant", angleCCW, planetSize, orbitRadius, planetOrbitDays);   // gas_giant为星球类型
MarketAPI market = sys.getEntityById(planetName).getMarket();
// 气态巨行星通常富含挥发物,添加此条件
market.addCondition("volatiles_plentiful");




现在出现一个情况如果你想添加一个卫星给这个气态行星该怎么做?


runcode import com.fs.starfarer.api.util.Misc;
String moonName = "卫星";//
String giantName = "气态行星";//注意,这里的名字如果是你生成的,那就是那个你输入的,如果是原生星球,你需要通过list planet命令去看一下,因为显示出来的那个名字好像不管用,得用那个星球的一个标识符,类似“system_22b3:planet_1”这样的
StarSystemAPI sys = (StarSystemAPI)$playerFleet.getContainingLocation();
Object giantObj = sys.getEntityById(giantName);
PlanetAPI gasGiant = (PlanetAPI) giantObj;

// 设定卫星参数
float moonSize = 100;
float moonOrbitRadius = 450; //这个是卫星和气态行星的距离
float moonOrbitDays = 90;
float moonAngle = 0;
String moonType = "cryovolcanic";这个是这个卫星的星球类型

// 添加卫星
PlanetAPI moon = sys.addPlanet(moonName, gasGiant, moonName, moonType, moonAngle, moonSize, moonOrbitRadius, moonOrbitDays);
MarketAPI moonMarket = sys.getEntityById(moonName).getMarket();
moonMarket.addCondition("volatiles_plentiful");
moonMarket.addCondition("cold");



我不小心把一个星球和原生星球放在一个轨道上了,公转还不一样,最后会重叠,干脆研究了下怎么把那个星球删了
删除一个星球

runcode import com.fs.starfarer.api.util.Misc;
String planetName = "system_22b3:planet_1";//这是要删除星球的名字,可以通过list planet命令查看
StarSystemAPI sys = (StarSystemAPI)$playerFleet.getContainingLocation();
SectorEntityToken entity = sys.getEntityById(planetName);
PlanetAPI planet = (PlanetAPI) entity;
sys.removeEntity(planet);


战列舰长

发表于 昨天 22:47 | 显示全部楼层
这个别人发的

战列舰长

发表于 昨天 22:47 | 显示全部楼层
runcode StarSystemAPI system = (StarSystemAPI)Global.getSector().getPlayerFleet().getContainingLocation();
system.addAsteroidBelt( system.getCenter(), 80, 3000, 200, 400, 460 );

点评

第一个最好加两个0,千位数以下看不到影子  详情 回复 发表于 3 小时前

战列舰长

发表于 昨天 22:47 | 显示全部楼层
第一个数字室小行星数量,第二个是环带的半径,第三个是小行星带的宽度,第四个是最小环绕周期,第五个是最大环绕周期

战列舰长

发表于 3 小时前 | 显示全部楼层
浪子君 发表于 2026-3-28 22:47
runcode StarSystemAPI system = (StarSystemAPI)Global.getSector().getPlayerFleet().getContainingLocat ...

第一个最好加两个0,千位数以下看不到影子

本版积分规则

Archiver|手机版|小黑屋|远行星号中文论坛

GMT+8, 2026-3-29 04:19

Powered by Discuz! X3.5

© 2001-2077 Tencent Cloud | Durian Software Studio

快速回复 返回顶部 返回列表