Faction Relationships – A Starsector mod that shows a list of factions and their relationship with the player on the main navigation screen.
- Mod ID:
factionrelationships - Game Version:
0.98a-RC8 - Mod Plugin:
com.factionrelationships.FactionRelationshipsPlugin - Dependencies: LazyLib and LunaLib (required at runtime and for compilation).
- JDK 17 – Starsector 0.98a uses Java 17. Install JDK 17 and run
javac -version. - Starsector – JARs are taken from your game install (the folder that contains
starsector-core). - LunaLib and LazyLib – Install both mods in your Starsector
modsfolder. The compile script looks formods/LunaLib/jars/LunaLib.jarandmods/LazyLib/jars/LazyLib.jarby default. If your mod folders use versioned names (e.g.LunaLib-2.0.5,LazyLib-3.0.0), setLUNALIBandLAZYLIBincompile.local.batto point at those JARs (see Developer config below). Required for compilation and at runtime.
To avoid editing compile.bat and to keep your local paths out of the repo:
- Copy
FactionRelationships/compile.local.example.battoFactionRelationships/compile.local.bat. - Edit
compile.local.batand setGAME_DIRto your Starsector install directory. - If LunaLib or LazyLib use versioned folder names (e.g.
LunaLib-2.0.5), setLUNALIBandLAZYLIBto the full paths to their JARs so the build can find them.
compile.local.bat is gitignored; only the example file is committed. The main compile.bat loads it automatically when present.
FactionRelationships/
├── mod_info.json
├── FactionRelationships.version # Version Checker metadata (optional; copied into dist)
├── config/
│ └── faction_relationships_config.json # deprecated; settings via LunaLib (see data/config)
├── data/
│ └── config/
│ └── LunaSettings.csv # LunaLib settings (max factions, text size, overlay keybind)
├── src/
│ └── com/factionrelationships/
│ ├── FactionRelationshipsPlugin.java
│ ├── FactionRelationshipsUIRenderer.java
│ ├── FactionRelationshipsCampaignInputListener.java
│ ├── FactionRelationshipsKeybindScript.java # stub for save compatibility
│ ├── FactionRelationshipChangeListener.java
│ ├── RelationshipChangeStore.java
│ └── SystemFactionRelationshipsIntel.java
├── compile.local.example.bat # copy to compile.local.bat (gitignored) to set GAME_DIR
└── COMPILATION.md
Output: written to dist/ at the repo root (gitignored). The build produces dist/FactionRelationships-<version>/ (folder) and dist/FactionRelationships-<version>.zip, where <version> comes from mod_info.json. Each package contains classes/, jars/FactionRelationships.jar, config/, and data/. In-game settings and keybind are configured via Mod Settings (F2 in campaign) under this mod's section.
From the repo root, run the build script:
FactionRelationships\compile.batOr manually (set LUNALIB and LAZYLIB if using versioned mod folders):
set GAME_DIR=YOUR_STARSECTOR_PATH
set LUNALIB=%GAME_DIR%\mods\LunaLib\jars\LunaLib.jar
set LAZYLIB=%GAME_DIR%\mods\LazyLib\jars\LazyLib.jar
set CORE=%GAME_DIR%\starsector-core
set VERSION=1.3.0
javac -encoding UTF-8 -cp "%CORE%\starfarer.api.jar;%CORE%\starfarer_obf.jar;%CORE%\json.jar;%CORE%\log4j-1.2.9.jar;%CORE%\lwjgl.jar;%CORE%\lwjgl_util.jar;%LAZYLIB%;%LUNALIB%" -d FactionRelationships-%VERSION%\classes FactionRelationships\src\com\factionrelationships\FactionRelationshipsPlugin.java FactionRelationships\src\com\factionrelationships\FactionRelationshipsUIRenderer.java FactionRelationships\src\com\factionrelationships\FactionRelationshipsCampaignInputListener.java FactionRelationships\src\com\factionrelationships\FactionRelationshipsKeybindScript.java FactionRelationships\src\com\factionrelationships\FactionRelationshipChangeListener.java FactionRelationships\src\com\factionrelationships\RelationshipChangeStore.java FactionRelationships\src\com\factionrelationships\SystemFactionRelationshipsIntel.java
jar cvf FactionRelationships-%VERSION%\jars\FactionRelationships.jar -C FactionRelationships-%VERSION%\classes .Set GAME_DIR (and optionally LUNALIB, LAZYLIB) before running (e.g. via compile.local.bat as above, or in the batch session).
-
The build script copies
mod_info.jsonand config into the versioned package folder underdist/(e.g.dist/FactionRelationships-1.0.0/). -
Copy that folder into your game
modsfolder, then rename toFactionRelationshipsfor the game to load it, or use the zip:xcopy /E /I dist\FactionRelationships-1.0.0 "YOUR_STARSECTOR_PATH\mods\FactionRelationships\"Or extract
dist/FactionRelationships-1.0.0.zipintomodsand rename the extracted folder toFactionRelationships. -
Final layout in your game
modsfolder:mods\FactionRelationships\ ├── mod_info.json ├── FactionRelationships.version ├── config\ │ └── faction_relationships_config.json ├── data\ │ └── config\ │ └── LunaSettings.csv └── jars\ └── FactionRelationships.jarConfigure max factions, text size, overlay keybind (toggle or hold), hostile-only filter, show-only-factions-in-current-system (and hyperspace fallback), relationship-change display, auto-show overlay on change, and optional auto-hide overlay after N seconds in Mod Settings (F2 in campaign).
- Game directory: Set
GAME_DIRincompile.local.bat(recommended) or incompile.bat/ manual commands. Optionally setLUNALIBandLAZYLIBincompile.local.batif you use versioned LunaLib/LazyLib folders. - Source:
FactionRelationships/src/com/factionrelationships/ - Output:
dist/FactionRelationships-<version>/anddist/FactionRelationships-<version>.zip(version frommod_info.json); JAR atjars/FactionRelationships.jarinside the package. Thedist/folder is gitignored.