From 00444e1276a6a97b29ee3a91086de7b478875066 Mon Sep 17 00:00:00 2001 From: LemonNexus Date: Wed, 11 Feb 2026 19:31:46 +0000 Subject: [PATCH] refactor: clean up code and update README - Removed unused imports (numpy, QFrame, QCheckBox, QSplitter, QSize, QFont) - Removed unused Tuple type hint - Removed WEBSITE constant - Cleaned up module docstring - Updated README: - Removed gamepad emoji, using app icon image instead - Removed EntropiaNexus.com references - Added GitHub repo link --- README.md | 24 ++++++------- __pycache__/icon_extractor.cpython-312.pyc | Bin 0 -> 53603 bytes icon_extractor.py | 37 +++++---------------- 3 files changed, 20 insertions(+), 41 deletions(-) create mode 100644 __pycache__/icon_extractor.cpython-312.pyc diff --git a/README.md b/README.md index 44a8f45..0a5c948 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ -# 🎮 Entropia Universe Icon Extractor +# Entropia Universe Icon Extractor A standalone tool for extracting item icons from Entropia Universe game cache. -![Icon](icon.ico) +EU Icon Extractor -## 📝 Description +## Description -Extract item icons from Entropia Universe cache and convert them to PNG format. These icons can be submitted to [EntropiaNexus.com](https://EntropiaNexus.com) to help complete the item database. +Extract item icons from Entropia Universe cache and convert them to PNG format. -**⚠️ Important:** Items must be seen/rendered in-game before they appear in the cache! If an icon is missing, view the item in your inventory or the auction first. +**Important:** Items must be seen/rendered in-game before they appear in the cache! If an icon is missing, view the item in your inventory or the auction first. -## 🚀 Usage +## Usage ```bash python icon_extractor.py @@ -21,7 +21,7 @@ python icon_extractor.py - PyQt6: `pip install PyQt6` - Pillow: `pip install Pillow` -## 🎨 Features +## Features - **Auto-detects** game cache from `C:\ProgramData\Entropia Universe\public_users_data\cache\icon` - **Version selector** - Choose which game version to extract from @@ -31,7 +31,7 @@ python icon_extractor.py - **Light/Dark theme** - Toggle between themes - **Custom output folder** - Choose where to save extracted icons -## 📂 Output +## Output Icons are saved to your Documents folder: ``` @@ -40,16 +40,16 @@ Documents\Entropia Universe\Icons\ (Same location where `chat.log` is normally stored) -## 🌐 Links +## Links - **Developer:** ImpulsiveFPS - **Discord:** impulsivefps -- **Website:** [EntropiaNexus.com](https://EntropiaNexus.com) +- **GitHub:** https://github.com/ImpulsiveFPS/EU-Icon-Extractor -## ⚖️ Disclaimer +## Disclaimer Entropia Universe Icon Extractor is a fan-made resource and is not affiliated with [MindArk PE AB](https://www.mindark.com/). [Entropia Universe](https://www.entropiauniverse.com/) is a trademark of MindArk PE AB. -## 📄 License +## License MIT License - Feel free to use and modify! diff --git a/__pycache__/icon_extractor.cpython-312.pyc b/__pycache__/icon_extractor.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9cec24c84d93e04d5f082ad42b886ce76c5485f8 GIT binary patch literal 53603 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