PROBLEM: UI text like 'Position Skills window Wounding' and
'Scan Current Page Serendipity' was being parsed as skills.
FIXES:
1. Enhanced is_valid_skill_text() filtering:
- Added more UI patterns: 'Position Skills', 'Scan Current Page',
'Select Area', 'Drag over', 'Navigate pages'
- Added combined patterns: 'Combat Wounding', 'Scan Serendipity',
'Position Wounding', etc.
- Added action word detection: Click, Scan, Position, Select,
Navigate, Start, Save, Clear - any line with these is UI text
- Reduced max words from 10 to 7 for skill names
2. Added validation in _parse_skills_from_text():
- After extracting skill name, validates with is_valid_skill_text()
- Logs filtered names for debugging
- Only adds to results if validation passes
USER ACTION NEEDED:
- Pull latest code: git pull origin main
- Select Area button should appear in UI
- Drag to select your Skills window area
- Scan will only read from that area
This should eliminate UI text from scan results.
|
||
|---|---|---|
| .github/workflows | ||
| assets | ||
| benchmarks | ||
| core | ||
| data/plugins | ||
| docs | ||
| plugins | ||
| tests | ||
| .gitignore | ||
| BUG_FIX_REPORT.md | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| FEATURE_IMPLEMENTATION_SUMMARY.md | ||
| README.md | ||
| RELEASE_NOTES_v2.1.0.md | ||
| SECURITY_AUDIT_REPORT.md | ||
| SECURITY_FIXES_APPLIED.md | ||
| code_review_report.py | ||
| pytest.ini | ||
| requirements.txt | ||
| test_bugs.py | ||
README.md
EU-Utility 🎮
A versatile Entropia Universe utility suite with a modular plugin system
EU-Utility is a powerful overlay utility designed specifically for Entropia Universe players. It provides quick access to calculators, trackers, search tools, and integrations without leaving the game.
✨ Features
- 🎮 Global Hotkey Overlay - Quick access with customizable keyboard shortcuts
- 🔌 Modular Plugin System - 25+ built-in plugins, create your own
- 🔍 Universal Search - Search Entropia Nexus for items, mobs, locations instantly
- 🧮 Smart Calculators - DPP, crafting, enhancer calculations
- 📊 Comprehensive Trackers - Loot, skills, missions, codex, globals, and more
- 🎵 Media Integration - Spotify control without alt-tabbing
- 📷 OCR Game Scanner - Read in-game text directly
- 📈 Real-time Data - Live market data via Nexus API
📋 Table of Contents
🚀 Installation
Prerequisites
- Python 3.11 or higher
- Windows 10/11 (full support) or Linux (limited support)
- Entropia Universe (optional, for game integration features)
Step 1: Download
git clone https://github.com/ImpulsiveFPS/EU-Utility.git
cd EU-Utility
Step 2: Install Dependencies
pip install -r requirements.txt
Step 3: Launch
python -m core.main
💡 Tip: The floating icon will appear on your screen. Double-click it to open the main overlay.
📷 OCR Requirements (Optional)
For Game Reader and Skill Scanner plugins that use OCR (text recognition), you need to install one of these OCR engines:
Option 1: EasyOCR (Recommended - Auto-installs)
pip install easyocr
EasyOCR downloads models automatically on first use. No additional setup needed.
Option 2: Tesseract (Alternative)
- Download Tesseract installer: https://github.com/UB-Mannheim/tesseract/wiki
- Install to
C:\Program Files\Tesseract-OCR\ - Add to PATH or install Python wrapper:
pip install pytesseract
Option 3: PaddleOCR (Advanced)
pip install paddleocr
ℹ️ Note: If no OCR engine is installed, the Game Reader plugin will show "OCR not available" but the rest of EU-Utility will work fine.
🏁 Quick Start
First Launch
- Start EU-Utility - Run
python -m core.main - Floating Icon Appears - A small icon appears on your screen
- Double-click to open the main overlay
- Use hotkeys for instant access (see below)
The Floating Icon
The floating icon is your quick access point to EU-Utility:
| Action | Result |
|---|---|
| Double-click | Toggle main overlay |
| Right-click | Context menu |
| Drag | Move to preferred position |
Main Overlay
The overlay is a semi-transparent window that stays on top:
- 📑 Plugin tabs on the left - Switch between plugins
- 📋 Plugin content in the center - The active plugin's interface
- ⚡ Quick actions at the bottom - Common shortcuts
⌨️ Hotkeys
Global hotkeys work even when EU-Utility is hidden:
| Hotkey | Action | Plugin |
|---|---|---|
Ctrl + Shift + U |
Toggle main overlay | Global |
Ctrl + Shift + H |
Hide all overlays | Global |
Ctrl + Shift + F |
Universal Search | Search |
Ctrl + Shift + N |
Nexus Search | Search |
Ctrl + Shift + C |
Calculator | Utility |
Ctrl + Shift + D |
DPP Calculator | Calculator |
Ctrl + Shift + E |
Enhancer Calc | Calculator |
Ctrl + Shift + B |
Crafting Calc | Calculator |
Ctrl + Shift + L |
Loot Tracker | Tracker |
Ctrl + Shift + S |
Skill Scanner | Tracker |
Ctrl + Shift + X |
Codex Tracker | Tracker |
Ctrl + Shift + R |
Game Reader (OCR) | Scanner |
Ctrl + Shift + M |
Spotify Controller | Media |
Ctrl + Shift + Home |
Dashboard | Overview |
Ctrl + Shift + , |
Settings | Configuration |
📝 Customize hotkeys in Settings → Hotkeys
🔌 Plugins
EU-Utility comes with 25 built-in plugins organized by category:
🏠 Dashboard & Utility
| Plugin | Description | Hotkey |
|---|---|---|
| Dashboard | Customizable start page with avatar stats | Ctrl+Shift+Home |
| Calculator | Standard calculator | Ctrl+Shift+C |
| Settings | Configure EU-Utility preferences | Ctrl+Shift+, |
| Plugin Store | Community plugin marketplace | - |
🔍 Search & Information
| Plugin | Description | Hotkey |
|---|---|---|
| Universal Search | Search all Nexus entities (items, mobs, locations) | Ctrl+Shift+F |
| Nexus Search | Search items and market data | Ctrl+Shift+N |
| TP Runner | Teleporter locations and route planner | - |
🧮 Calculators
| Plugin | Description | Hotkey |
|---|---|---|
| DPP Calculator | Damage Per PEC and weapon efficiency | Ctrl+Shift+D |
| Crafting Calc | Blueprint calculator with success rates | Ctrl+Shift+B |
| Enhancer Calc | Enhancer break rates and costs | Ctrl+Shift+E |
📊 Trackers
| Plugin | Description | Hotkey |
|---|---|---|
| Loot Tracker | Track hunting loot with ROI analysis | Ctrl+Shift+L |
| Skill Scanner | OCR-based skill tracking | Ctrl+Shift+S |
| Codex Tracker | Creature challenge progress | Ctrl+Shift+X |
| Mission Tracker | Mission and objective tracking | - |
| Global Tracker | Track globals, HOFs, and ATHs | - |
| Mining Helper | Mining claims and hotspot tracking | - |
| Auction Tracker | Price and markup tracking | - |
| Inventory Manager | TT value and item management | - |
| Profession Scanner | Profession rank tracking | - |
🎮 Game Integration
| Plugin | Description | Hotkey |
|---|---|---|
| Game Reader | OCR for in-game menus and text | Ctrl+Shift+R |
| Chat Logger | Log, search, and filter chat | - |
| Event Bus Example | Demonstrates event system | - |
🎵 External Integration
| Plugin | Description | Hotkey |
|---|---|---|
| Spotify Controller | Control Spotify playback | Ctrl+Shift+M |
📚 Documentation
Comprehensive documentation is available in the docs/ folder:
| Document | Description |
|---|---|
| User Manual | Complete user guide |
| Plugin Development Guide | Create custom plugins |
| API Reference | Core services API |
| Troubleshooting | Common issues & solutions |
| Nexus API Reference | Nexus integration |
| Security Hardening | Security best practices |
| Plugin Development | Quick-start guide |
| Nexus Usage Examples | API usage samples |
| Nexus Linktree | Nexus resource links |
| Task Service | Background tasks |
🔧 Plugin Development
Create your own plugins to extend EU-Utility:
from plugins.base_plugin import BasePlugin
from PyQt6.QtWidgets import QWidget, QVBoxLayout, QLabel
class MyPlugin(BasePlugin):
"""My first EU-Utility plugin."""
name = "My Plugin"
version = "1.0.0"
author = "Your Name"
description = "What my plugin does"
hotkey = "ctrl+shift+y"
def initialize(self):
self.log_info("My Plugin initialized!")
def get_ui(self):
widget = QWidget()
layout = QVBoxLayout(widget)
layout.addWidget(QLabel("Hello from My Plugin!"))
return widget
See Plugin Development Guide for complete documentation.
🤝 Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Quick Start for Contributors
# Fork and clone
git clone https://github.com/YOUR_USERNAME/EU-Utility.git
cd EU-Utility
# Create branch
git checkout -b feature/my-feature
# Make changes and test
python -m pytest
# Commit and push
git commit -m "Add my feature"
git push origin feature/my-feature
# Open Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Entropia Nexus - For the comprehensive API and game data
- MindArk - Creators of Entropia Universe
- Community Contributors - Plugin developers and testers
📞 Support
- Documentation: Check the
docs/folder - Issues: Open a GitHub issue
- Discussions: Join our community Discord
Made with ❤️ by ImpulsiveFPS + Entropia Nexus
EU-Utility is an unofficial tool and is not affiliated with MindArk PE AB.
