{"id":28239201,"url":"https://github.com/quackster/minerva","last_synced_at":"2025-09-11T09:36:35.426Z","repository":{"id":116595991,"uuid":"586857606","full_name":"Quackster/Minerva","owner":"Quackster","description":"Imager for Habbo Hotel versions in Shockwave and Flash written in C# .NET 8. Also supports badge imaging.","archived":false,"fork":false,"pushed_at":"2025-09-02T03:44:08.000Z","size":10608,"stargazers_count":17,"open_issues_count":0,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-02T05:35:30.165Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Quackster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-09T11:54:51.000Z","updated_at":"2025-09-02T03:43:35.000Z","dependencies_parsed_at":"2025-09-02T05:38:06.049Z","dependency_job_id":null,"html_url":"https://github.com/Quackster/Minerva","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Quackster/Minerva","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quackster%2FMinerva","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quackster%2FMinerva/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quackster%2FMinerva/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quackster%2FMinerva/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Quackster","download_url":"https://codeload.github.com/Quackster/Minerva/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quackster%2FMinerva/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274609465,"owners_count":25316621,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-19T02:11:52.953Z","updated_at":"2025-09-11T09:36:35.398Z","avatar_url":"https://github.com/Quackster.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Minerva\n\n## Table of Contents\n\n1. [Overview](#overview)\n2. [Download](#download)\n3. [Setup](#setup)\n   - [Prerequisites](#prerequisites)\n   - [Initial Setup](#initial-setup)\n   - [Group Badges In-Client Setup](#group-badges-in-client-setup)\n4. [API Endpoints](#api-endpoints)\n   - [Habbo Figure Conversion API](#habbo-figure-conversion-api)\n5. [Customization](#customization)\n   - [Adding Custom Clothes](#adding-custom-clothes)\n6. [Integration](#integration)\n   - [Using with Other Languages](#using-with-other-languages)\n7. [Development](#development)\n   - [Cloning the Repository](#cloning-the-repository)\n\n---\n\n## Overview\n\nImager for Habbo Hotel releases Shockwave and Flash. It uses the two projects (Badger, and Avatara) as libraries combined into one, to make the web server.\n\nIt supports rendering both figures/avatars and group badges, and now supports pre-v18 figure codes to render.\n\nWhen used, the following endpoints will be available:\n\n- `/habbo-imaging/avatarimage`\n- `/habbo-imaging/badge/{badge-code}.gif` (This is for the client **only** due to the way Shockwave handles transparency)\n- `/habbo-imaging/badge-fill/{badge-code}.gif`\n\n## Download\n\nThe latest builds for Linux and Windows are found on the [latest](https://github.com/Quackster/Minerva/releases/tag/latest) tag.\n\n| OS | Download |\n|---|---|\n| Linux (64-bit) | [Minerva-linux-x64.zip](https://github.com/Quackster/Minerva/releases/download/latest/Minerva-linux-x64.zip) |\n| Windows (64-bit) | [Minerva-win-x64.zip](https://github.com/Quackster/Minerva/releases/download/latest/Minerva-win-x64.zip) |\n\nThis project is using both [Avatara](https://github.com/Quackster/Avatara) and [Badger](https://github.com/Quackster/Badger) as dependencies.\n\n## Setup\n\n### Prerequisites\n\nTo run Minerva, you need to install .NET 8 [runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) for your operating system.\n\n### Initial Setup\n\nOnce downloaded, you may execute `./Minerva` (Linux) or `Minerva.exe` (Windows).\n\nAs soon as it starts, it will extract all the SWFS in `/figuredata/` and build the XML and image files, all this will be located in `/xml/` and `/images/` inside `/figuredata/`.\n\nOnce that's done, you should see the following console output:\n\n```\nLoading flash assets...\n9762 flash assets loaded\nLoading figure data...\n301 figure sets loaded\n11 figure set types loaded\n3 figure palettes loaded\ninfo: Microsoft.Hosting.Lifetime[14]\n      Now listening on: http://localhost:5000\ninfo: Microsoft.Hosting.Lifetime[14]\n      Now listening on: https://localhost:5001\ninfo: Microsoft.Hosting.Lifetime[0]\n      Application started. Press Ctrl+C to shut down.\ninfo: Microsoft.Hosting.Lifetime[0]\n      Hosting environment: Production\ninfo: Microsoft.Hosting.Lifetime[0]\n      Content root path...\n```\n\nThe following path should give the expected output:\n\n```\nhttp://localhost:5000/habbo-imaging/avatarimage?figure=hd-180-1.hr-100-61.ch-210-66.lg-270-82.sh-290-80\u0026size=b\u0026direction=4\u0026head_direction=4\u0026crr=0\u0026gesture=sml\u0026frame=1\n```\n\n![image](https://user-images.githubusercontent.com/1328523/212457834-67011df8-db85-41da-ad71-129bd1fadd33.png)\n\nBy default the port it listens on will be 5000 but this can be changed to 8080 (or any other port for your liking) with the command line arguments `--urls=http://*:8080/`\n\n### Group Badges In-Client Setup\n\nMinerva has a special path to use for the Shockwave client, ensure that \"badge-fill\" is being used.\n\nIn `external_texts.txt` (yes, the client reads from this file...)\n\nMake sure the line is (with port 5000 being changed to what you are using):\n\n```\ngroup_logo_url_template=http://localhost:5000/habbo-imaging/badge-fill/%imagerdata%.gif\n```\n\n**Note:** if you are using Havana with the latest version (at minimum, released 14th January 2023), then set as line below:\n\n```\ngroup_logo_url_template=http://localhost/habbo-imaging/badge-fill/%imagerdata%.gif\n```\n\nGroup badges should now work in-game.\n\n![image](https://user-images.githubusercontent.com/1328523/212458081-6f3d390b-48de-4401-bb56-8beab3250269.png)\n\n## API Endpoints\n\n### Habbo Figure Conversion API\n\nConvert old Habbo figure codes to the new format.\n\n**Endpoint:** `GET /habbo-imaging/avatarimage/convert?figure=YOUR_OLD_FIGURE_CODE`\n\n**Example:**\n\n**Request:**\n```\nGET /habbo-imaging/avatarimage/convert?figure=1000118001270012900121001\n```\n\n**Response:**\n```json\n{\n  \"figure\": \"hr-100-1150.hd-180-1026.ch-210-1284.lg-270-1223.sh-290-1247.ha-0-1150\"\n}\n```\n\n## Customization\n\n### Adding Custom Clothes\n\n1. Adding more clothes is easy, ensure `/xml/` and `/images/` are either empty or don't exist in `/figuredata/`\n\n2. Put the SWFs that have these clothes inside `/figuredata/compiled/`\n\n3. Update `figuredata.xml` with the one that has the new clothes inside of it\n\nRun Minerva and it should be supported.\n\n## Integration\n\n### Using with Other Languages\n\nYou can proxy it.\n\n**Example in PHP:**\n\n```php\n\u003c?php\n\theader ('Content-Type: image/png');\n\techo file_get_contents(\"http://127.0.0.1:8090/?\" . $_SERVER['QUERY_STRING']);\n?\u003e\n```\n\n**Example with Nginx:**\n\n```nginx\nlocation /imaging/ {\n        proxy_pass http://127.0.0.1:8090;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n}\n```\n\n## Development\n\n### Cloning the Repository\n\n```bash\n$ git clone --recursive https://github.com/Quackster/Minerva\n```\n\n**or**\n\n```bash\n$ git clone https://github.com/Quackster/Minerva\n$ git submodule update --init --recursive\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquackster%2Fminerva","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquackster%2Fminerva","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquackster%2Fminerva/lists"}