# DirtCryptoStore

DirtCryptoStore is a Paper 1.21.x crypto shop plugin.

## Features

- GUI crypto store
- Live BTC/USD pricing
- Unique BTC invoice amounts per player
- QR map generation
- QR placed in player off-hand
- SQLite storage
- Expired invoice pruning
- Auto payment watching
- Admin review tools

## Requirements

- Paper 1.21.x
- Java 21
- Maven 3.8.7+

## Build

mvn clean package

Jar:
target/DirtCryptoStore.jar

## Install

1. Put the jar in your server plugins folder
2. Start the server
3. Edit plugins/DirtCryptoStore/config.yml
4. Restart the server or use /cryptostore reload

## Player Commands

/cryptostore
Opens the store GUI

/cryptostore status
Shows the player’s pending invoice status

## Admin Commands

/cryptostore reload
Reloads plugin config and watcher

/cryptostore review
Shows invoices marked UNDER_REVIEW

/cryptostore forceconfirm <invoiceId>
Manually fulfills an invoice

/cryptostore cancelinvoice <invoiceId>
Cancels an invoice

## Permissions

dirtcryptostore.use
Default: true

dirtcryptostore.admin
Default: op

dirtcryptostore.bypass
Reserved for future use

## Payment Flow

1. Player runs /cryptostore
2. Player clicks a product
3. Plugin converts USD price to BTC
4. Plugin adds a unique sat offset
5. Invoice is created
6. QR map is placed in off-hand
7. Player pays exact BTC amount
8. Plugin watches blockchain
9. After confirmations, commands run

## Storage

SQLite database file:
plugins/DirtCryptoStore/dirtcryptostore.db

## Pruning

Old invoices can be pruned with config options:
- prune-enabled
- prune-after-days
- prune-statuses

## Notes

- BTC-focused
- Live pricing uses CoinGecko
- Payment watching uses blockchain.info
- Large public deployments should later add provider fallback and audit logging
