3.8 KiB
Earnings Center Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Build an emulator-owned earnings/rewards hub for the new "Guadagni" UI, with server-side reward definitions and claim protection.
Architecture: Add a focused earnings package under com.eu.habbo.habbohotel.earnings, wire three incoming handlers and two outgoing composers, and persist claims in a dedicated table with a unique period key. Keep reward definitions config-driven so UI/renderer work can progress independently.
Tech Stack: Java 21, Maven, MariaDB SQL updates, existing Arcturus packet manager/composer patterns, JUnit tests.
Task 1: Map Existing Patterns
Files:
-
Read:
Emulator/src/main/java/com/eu/habbo/messages/PacketManager.java -
Read:
Emulator/src/main/java/com/eu/habbo/messages/PacketNames.java -
Read:
Emulator/src/main/java/com/eu/habbo/habbohotel/users/Habbo.java -
Read:
Emulator/src/main/java/com/eu/habbo/messages/outgoing/MessageComposer.java -
Inspect packet registration and composer header lookup.
-
Inspect currency grant methods on
Habbo. -
Inspect emulator setting access APIs.
-
Choose the smallest implementation that matches existing style.
Task 2: Add Earnings Domain
Files:
-
Create:
Emulator/src/main/java/com/eu/habbo/habbohotel/earnings/EarningsCategory.java -
Create:
Emulator/src/main/java/com/eu/habbo/habbohotel/earnings/EarningsReward.java -
Create:
Emulator/src/main/java/com/eu/habbo/habbohotel/earnings/EarningsEntry.java -
Create:
Emulator/src/main/java/com/eu/habbo/habbohotel/earnings/EarningsClaimResult.java -
Create:
Emulator/src/main/java/com/eu/habbo/habbohotel/earnings/EarningsCenterManager.java -
Define allowlisted categories and client keys.
-
Load enabled flags, cooldowns, and reward values from configuration.
-
Build row state for a user.
-
Implement single claim and claim-all.
-
Grant credits/pixels/points through existing
HabboAPIs.
Task 3: Add Persistence
Files:
-
Create:
Database Updates/012_earnings_center.sql -
Create
users_earnings_claims. -
Add unique key on
user_id,category,period_key. -
Keep the migration additive and safe for existing databases.
Task 4: Add Packet Bridge
Files:
-
Create:
Emulator/src/main/java/com/eu/habbo/messages/incoming/earnings/RequestEarningsCenterEvent.java -
Create:
Emulator/src/main/java/com/eu/habbo/messages/incoming/earnings/ClaimEarningsRewardEvent.java -
Create:
Emulator/src/main/java/com/eu/habbo/messages/incoming/earnings/ClaimAllEarningsRewardsEvent.java -
Create:
Emulator/src/main/java/com/eu/habbo/messages/outgoing/earnings/EarningsCenterComposer.java -
Create:
Emulator/src/main/java/com/eu/habbo/messages/outgoing/earnings/EarningsClaimResultComposer.java -
Modify: packet registration/mapping files discovered in Task 1.
-
Incoming handlers parse only category keys.
-
Outgoing composers serialize rows and claim results.
-
Packet names are documented for renderer alignment.
Task 5: Test and Build
Files:
-
Create:
Emulator/src/test/java/com/eu/habbo/habbohotel/earnings/EarningsCenterManagerTest.java -
Test disabled feature behavior.
-
Test unknown category rejection.
-
Test single claim success.
-
Test duplicate claim rejection.
-
Test claim-all partial success.
-
Run focused tests.
-
Run
mvn clean package.
Task 6: Commit and PR
Files:
-
Commit all source, test, SQL, spec, and plan files.
-
Commit spec and plan.
-
Commit implementation.
-
Push
feat/earnings-centertosimoleo89/Arcturus-Morningstar-Extended. -
Open ready-for-review PR to
duckietm/Arcturus-Morningstar-Extended:dev.