Add initial implementation of SPMega mod with banking UI and API integration
Java CI / build (push) Successful in 5m38s

Signed-off-by: Dmitrii <computer@yawaflua.tech>

Took 2 hours 53 minutes
This commit is contained in:
Dmitrii `yawaflua` Shimanskii
2026-04-02 03:14:26 +03:00
committed by Dmitrii
commit 6c8c4065df
36 changed files with 2535 additions and 0 deletions
+50
View File
@@ -0,0 +1,50 @@
# SPMega
Клиентский мод Fabric с банковым UI, интеграцией с API `spworlds.ru` и локальным SQLite-кэшем.
## Что реализовано
- Открытие меню по `P` и через кнопку `SPMega` в меню `Esc`
- Экран `Карты`:
- список карт из локальной БД
- удаление карты
- обновление данных карты через API
- добавление карты из конфига (`token.cardId` + `token.cardToken`)
- Экран `Оплата`:
- перевод по номеру карты
- при вводе ника: загрузка карт игрока из API и выбор карты получателя
- выполнение транзакции через API
- Локальная БД `config/spmega.db`:
- `cards` (id, token, number, name, balance, owner_uuid)
- `transfer_history` (локальная история переводов)
- Автообновление балансов при входе на сервер
## Ключевые файлы
- `src/main/java/git/yawaflua/tech/spmega/api/SPWorldsApiClient.java`
- `src/client/java/git/yawaflua/tech/spmega/client/ui/service/BankUiService.java`
- `src/client/java/git/yawaflua/tech/spmega/client/ui/service/BankDatabase.java`
- `src/client/java/git/yawaflua/tech/spmega/client/ui/PaymentScreen.java`
- `src/client/java/git/yawaflua/tech/spmega/client/ui/CardScreen.java`
## Конфиг
Файл: `config/spmega.properties`
- `api.domain=https://spworlds.ru`
- `token.cardId=<UUID карты>`
- `token.cardToken=<токен карты>`
При добавлении новой карты через UI выполняется проверка владельца через `GET /api/public/accounts/me`.
Если UUID не совпадает с UUID игрока, показывается сообщение:
`Вы не владелец карты. Часть функций может быть ограничена.`
## Проверка сборки (PowerShell)
```powershell
$javaHome = 'C:/Users/yawaflua/AppData/Roaming/PrismLauncher/java/java-runtime-delta/'
$env:JAVA_HOME = $javaHome
$env:Path = "$($env:JAVA_HOME)bin;$env:Path"
Set-Location 'C:\Users\yawaflua\IdeaProjects\untitled'
.\gradlew.bat classes
```