Systematic Sphere/Box Survey Plugin for Elite Dangerous via ED Market Connector.
Version: 3.0.7
Date: 2025-12-25
License: MIT
- Multi-API Support: EDSM, Spansh, EDGIS, EDDiscovery DB, manual JSON import
- Intelligent Routing: Prefers shortest jumps, considers jump range
- Progress Tracking: Complete tracking of visited systems with persistence
- Theme Adaptation: Automatically adapts to ED Market Connector theme
- Return to Start: Navigation back to starting system after completion
- Clipboard Integration: Automatic copying of next target
- Duplicate Prevention: Robust dual-ID system (ID64 + Name)
- Elite Dangerous
- ED Market Connector (EDMC)
- Python 3.7+ (usually installed with EDMC)
- Requests library (for API access)
Windows:
C:\Users\[YOUR_NAME]\AppData\Local\EDMarketConnector\plugins\SHBOXSEARCH\
Linux/Mac:
~/.local/share/EDMarketConnector/plugins/SHBOXSEARCH/
Copy the following files to the SHBOXSEARCH folder:
load.py(main plugin)- Optional:
neareststars.json(local system database) - Optional:
combine_jsons.py(utility script for multiple JSON files)
- Close EDMC completely
- Restart EDMC
- Log should show: "loading plugin SHBOXSEARCH"
- Fly to your starting system in Elite Dangerous
- In EDMC: Click "Detect" button
- Set radius (default: 50 ly)
- Click "Start" button
- Next target appears in UI
- With Auto-Copy enabled: System name is already in clipboard
- In Elite: Open Galaxy Map → Paste → Jump to target
- After FSD jump: Plugin updates automatically
- Perform scan → Next target is loaded
- On completion: Plugin automatically returns to starting system
- Manual: Click "Stop" button
- Pause: Survey status is saved, can resume on next start
- Enable plugin: Activate/deactivate plugin
- Debug logging: Detailed logs for troubleshooting
- Default radius (ly): Default search radius (1-200 ly)
- Max jump range (ly): Maximum jump range of your ship
Preferred data source:
auto(recommended): Automatic selection of best available sourcelocal_json: Use only local JSON fileedd: Use EDDiscovery databaseedsm: Use only EDSM API
Local JSON file: Path to local system database (e.g., neareststars.json)
- Auto-copy next target to clipboard: Automatically copy next target
- Prefer shortest jumps from current position: Prioritize shortest jumps
The plugin supports three JSON formats:
neareststars.json(EDDiscovery)galacticmapping.json(Galactic Mapping)gecmapping.json(GEC Mapping)
- Copy all JSON files to the plugin folder
- In
combine_jsons.py, adjust thePLUGIN_DIRpath - Run script:
python combine_jsons.py - Creates combined
neareststars.jsonwith backup
Example neareststars.json format:
{
"System": {
"Name": "Combined Database",
"X": 0.0,
"Y": 0.0,
"Z": 0.0
},
"Nearest": [
{
"Name": "Sol",
"X": 0.0,
"Y": 0.0,
"Z": 0.0
},
{
"Name": "Alpha Centauri",
"X": 3.03,
"Y": -0.09,
"Z": 3.15
}
]
}The plugin automatically selects the best available API:
-
Local JSON (highest priority when configured)
- Instant response
- Available offline
- Limited to imported systems
-
EDDiscovery DB
- Very comprehensive database
- Local access
- Requires EDDiscovery installation
-
EDGIS
- Best coverage for remote regions
- Fast API
- Publicly available
-
EDSM
- Reliable and established
- Good coverage of known regions
- With cube-tiling fallback
-
Spansh
- Alternative API
- Good data quality
The UI displays:
- Current System: Current system
- Next Target: Next system to visit
- Distance: Distance to target
- Progress: Visited/Remaining systems
- Survey Info: Starting system and radius
Progress is saved in survey_state.json and survives EDMC restarts.
Symptom: No SHBOXSEARCH entries in log
Solution:
- Check folder name: Must be
SHBOXSEARCH - Check file name: Must be
load.py - Delete
__pycache__folder if exists - Restart EDMC
Symptom: "Current: Unknown" in UI
Solution:
- Perform a hyperspace jump in Elite
- Click "Detect" button
- Enable debug logging and check log
- Check journal files (should contain Location/FSDJump events)
Symptom: "No systems found" when starting
Solutions:
-
API Issues:
- Check internet connection
- Fly to inhabited system (e.g., Sol, Shinrarta Dezhra)
- Increase radius
-
Local JSON:
- Does file exist and is valid JSON?
- Is path correct in Settings?
- Check format (see above)
-
EDDiscovery DB:
- Is EDDiscovery installed?
- Is database current?
Symptom: Error when opening Settings
Solution:
- Delete
__pycache__ - Ensure version 3.0.7 is installed
- Completely restart EDMC
Symptom: Plugin looks different from EDMC
Solution:
- EDMC Settings → Appearance
- Switch theme (e.g., Default → Dark → Default)
- Plugin should adapt
- Use Local JSON: Much faster than API queries
- EDDiscovery DB: Good balance between speed and coverage
- Limit radius: 50-100 ly for optimal performance
- Increase radius: More chances to find systems
- Prefer EDSM: Best coverage for fringe/outer regions
- Combine multiple sources: Local JSON + API
- Enable "Prefer shortest jumps": Better coverage
- Set max jump range correctly: Prevents unreachable targets
- Avoid neutron highway: Plugin doesn't optimize for boosts
- Large radii (>200 ly): EDSM cube-tiling can become slow
- Unknown systems: API databases don't contain all systems
- Carrier jumps: Treated like normal jumps
- Multi-commander: Separate state per commander
- EDMC Settings → EDMC_SphereSurvey
- Enable "Debug logging"
- Restart EDMC
Windows:
%TEMP%\EDMarketConnector.log
Linux/Mac:
~/.local/share/EDMarketConnector/EDMarketConnector.log
# Plugin loaded
loading plugin SHBOXSEARCH
Plugin started v3.0.7
# System detected
Location update: [System name] @ (x, y, z)
Current system from monitor: [System name]
# Survey started
Survey started: X systems from [Source]
Next target: [System name] (X.XX ly)
# System visited
Marking visited: [System name]
Progress: X/Y visited, Z pending
SHBOXSEARCH/
├── load.py # Main plugin (EDMC entry point)
├── combine_jsons.py # JSON combiner (optional)
├── neareststars.json # Local database (optional)
├── survey_state.json # Progress (auto-created)
└── README.md # This file
plugin_start3(): Plugin initializationplugin_app(): UI creationjournal_entry(): Journal event processingdashboard_entry(): Dashboard updatesplugin_prefs(): Settings UI
Add new data source:
class MyCustomSource(SystemDataSource):
def is_available(self) -> bool:
# Check availability
return True
def get_systems_near(self, x, y, z, radius, system_name=None):
# Query systems
return [SystemNode(...), ...]
def get_name(self) -> str:
return "My Custom Source"
def get_priority(self) -> int:
return 50 # Lower = higher priority- Multi-API support with intelligent prioritization
- Robust progress tracking (dual-ID system)
- Complete theme support
- Intelligent routing (shortest jumps)
- Return-to-start feature
- Clipboard integration with retry
- Comprehensive error handling
- Thread-safe implementation
- 1.4.1: Basic functionality, limited APIs
- 1.0.0: Initial version
When reporting issues, please provide:
- EDMC Version: EDMC → Help → About
- Plugin Version: In log or Settings
- Operating System: Windows/Linux/Mac
- Error Description: What happens, what should happen
- Log Excerpt: With debug logging enabled
- Configuration: Settings screenshot
- Elite Dangerous Community
- EDMC GitHub: https://github.com/EDCD/EDMarketConnector
- EDSM: https://www.edsm.net
MIT License © 2025
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- Elite Dangerous: © Frontier Developments
- EDMC: ED Market Connector Development Team
- EDSM: Elite Dangerous Star Map
- Spansh: Spansh Tools
- EDGIS: Elite Dangerous Galactic Information System
- EDDiscovery: EDDiscovery Development Team
Fly safe, Commander! o7