Fractal Softworks Forum

Please login or register.

Login with username, password and session length

Author Topic: error making custom planets in custom systems  (Read 841 times)

AnInterestingUsername

  • Ensign
  • *
  • Posts: 2
    • View Profile
error making custom planets in custom systems
« on: June 29, 2020, 08:43:50 AM »

Hello, I am new to modding star sector and java. so the problem may be obvious and I am just being stupid. I made a custom planet with the id "ai_planet" and added it by editing my save and it worked, then I made a star system using following this tutorial: https://starsector.fandom.com/wiki/Star_System_Tutorial and it worked, then I tried to add the planet to it and it crashed when trying to start a new game. Here is the log any help appreciated:
Code
java.lang.RuntimeException: Spec of class [com.fs.starfarer.api.impl.campaign.procgen.PlanetGenDataSpec] with id [ai_planet] not found
at com.fs.starfarer.loading.SpecStore.o00000(Unknown Source)
at com.fs.starfarer.settings.StarfarerSettings$1.getSpec(Unknown Source)
at com.fs.starfarer.api.impl.campaign.procgen.PlanetConditionGenerator.getGroupPicker(PlanetConditionGenerator.java:169)
at com.fs.starfarer.api.impl.campaign.procgen.PlanetConditionGenerator.generateConditionsForPlanet(PlanetConditionGenerator.java:116)
at com.fs.starfarer.api.impl.campaign.procgen.PlanetConditionGenerator.generateConditionsForPlanet(PlanetConditionGenerator.java:52)
at com.fs.starfarer.api.util.Misc.generatePlanetConditions(Misc.java:2190)
at com.fs.starfarer.campaign.StarSystem.autogenerateHyperspaceJumpPoints(Unknown Source)
at com.fs.starfarer.campaign.StarSystem.autogenerateHyperspaceJumpPoints(Unknown Source)
at data.scripts.ColonyStarPlugin.onNewGame(ColonyStarPlugin.java:56)
at com.fs.starfarer.campaign.save.CampaignGameManager.super(Unknown Source)
at com.fs.starfarer.title.TitleScreenState.dialogDismissed(Unknown Source)
at com.fs.starfarer.ui.N.dismiss(Unknown Source)
at com.fs.starfarer.ui.impl.K.dismiss(Unknown Source)
at com.fs.starfarer.campaign.save.if.actionPerformed(Unknown Source)
at com.fs.starfarer.ui.newnew.buttonPressed(Unknown Source)
at com.fs.starfarer.ui.I.?00000(Unknown Source)
at com.fs.starfarer.ui.I.processInput(Unknown Source)
at com.fs.starfarer.ui.O0Oo.o00000(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)d
and here is my code:
Code
package data.scripts;

import java.awt.Color;
import java.util.List;

import com.fs.starfarer.api.BaseModPlugin;
import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.campaign.JumpPointAPI;
import com.fs.starfarer.api.campaign.LocationAPI;
import com.fs.starfarer.api.campaign.OrbitAPI;
import com.fs.starfarer.api.campaign.PlanetAPI;
import com.fs.starfarer.api.campaign.SectorAPI;
import com.fs.starfarer.api.campaign.SectorEntityToken;
import com.fs.starfarer.api.campaign.StarSystemAPI;
import com.fs.starfarer.api.impl.campaign.ids.Entities;
import com.fs.starfarer.api.impl.campaign.ids.Factions;
import com.fs.starfarer.api.impl.campaign.ids.Industries;
import com.fs.starfarer.api.impl.campaign.ids.Submarkets;
import com.fs.starfarer.api.impl.campaign.ids.Conditions;
import com.fs.starfarer.api.impl.campaign.ids.StarTypes;
import com.fs.starfarer.api.impl.campaign.ids.Terrain;
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.StarSystemGenerator.StarSystemType;
import com.fs.starfarer.api.impl.campaign.terrain.MagneticFieldTerrainPlugin.MagneticFieldParams;
import com.fs.starfarer.api.util.Misc;

import com.fs.starfarer.api.impl.campaign.procgen.StarAge;
import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator;

import com.fs.starfarer.api.campaign.econ.MarketAPI;
import com.fs.starfarer.api.campaign.econ.MarketAPI.SurveyLevel;
import com.fs.starfarer.api.impl.campaign.ids.Conditions;

public class ColonyStarPlugin extends BaseModPlugin {
    @Override
    public void onNewGame() {
SectorAPI sector = Global.getSector();
StarSystemAPI system = sector.createStarSystem("Laputa");

PlanetAPI star = system.initStar(
"laputa",
"star_orange",
700,
-7500,
-4500,
500);

PlanetAPI elisium = system.addPlanet("elysium", star, "Elisium", "ai_planet", 240, 110, 3500, 75);

MarketAPI elisium_market = Global.getFactory().createMarket("elisium_market", elisium.getName(), 0);
elisium_market.setPlanetConditionMarketOnly(true);
elisium_market.setPrimaryEntity(elisium);
elisium.setMarket(elisium_market);

system.autogenerateHyperspaceJumpPoints(true, true);
    }
}
« Last Edit: June 29, 2020, 08:50:59 AM by AnInterestingUsername »
Logged

Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 24127
    • View Profile
Re: error making custom planets in custom systems
« Reply #1 on: June 29, 2020, 12:49:02 PM »

Hi! Just very briefly - you also need to add a row for this planet to data/campaign/procgen/planet_gen_data.csv

That way the game will know what sorts of conditions to add to the planet.

Alternatively, I think you can call:
autogenerateHyperspaceJumpPoints(true, true, false);

So that it doesn't generate planetary conditions.
Logged

Morrokain

  • Admiral
  • *****
  • Posts: 2143
  • Megalith Dreadnought - Archean Order
    • View Profile
Re: error making custom planets in custom systems
« Reply #2 on: June 29, 2020, 12:49:49 PM »

In the first part you said you added a planet to your save with the id "ai_planet"

 - yet your code to generate the planet uses the id: elysium and puts the planet type as: ai_planet

So if your save file is looking for the wrong id that is likely what is causing the issue.

Also note, ai_planet is not a planet type defined in the stock planet_gen_data.csv so unless you have added it yourself in your mod that is definitely your issue. If you have, then it might be the above problem.

Anyway, hope that helps and good luck!  :)

*Edit* Alex beat me haha
Logged

AnInterestingUsername

  • Ensign
  • *
  • Posts: 2
    • View Profile
Re: error making custom planets in custom systems
« Reply #3 on: June 29, 2020, 01:35:14 PM »

Thank you for the quick response, that fixed it. Thanks! I look forward to looking deeper into modding.
Logged