first commit
This commit is contained in:
@@ -0,0 +1,472 @@
|
||||
settings:
|
||||
debug: false
|
||||
|
||||
payment:
|
||||
poll-seconds: 30
|
||||
invoice-expire-minutes: 30
|
||||
confirmations-required: 2
|
||||
max-pending-per-player: 1
|
||||
allow-cancel: true
|
||||
auto-close-paid-invoice-seconds: 5
|
||||
mark-expired-on-open: true
|
||||
strict-exact-amount-match: true
|
||||
allow-late-match-if-unclaimed: true
|
||||
late-match-grace-minutes: 120
|
||||
|
||||
pricing:
|
||||
mode: "LIVE_USD"
|
||||
live-rate-provider: "COINGECKO"
|
||||
cache-seconds: 60
|
||||
fallback-to-base-sats: true
|
||||
round-up-to-sat: true
|
||||
coingecko-url: "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd"
|
||||
|
||||
micro-amount:
|
||||
mode: "RANDOM_RANGE"
|
||||
min-extra-sats: 1
|
||||
max-extra-sats: 200
|
||||
sequential-start-sats: 1
|
||||
sequential-reset-when-server-restarts: false
|
||||
avoid-duplicate-active-amounts: true
|
||||
max-generation-attempts: 500
|
||||
|
||||
storage:
|
||||
type: "SQLITE"
|
||||
sqlite-file: "dirtcryptostore.db"
|
||||
prune-enabled: true
|
||||
prune-after-days: 30
|
||||
prune-statuses:
|
||||
- "FULFILLED"
|
||||
- "EXPIRED"
|
||||
- "CANCELLED"
|
||||
|
||||
qr:
|
||||
enabled: true
|
||||
map-title: "&8Crypto QR"
|
||||
include-bitcoin-uri-in-lore: true
|
||||
include-wallet-address-in-lore: true
|
||||
include-expiry-in-lore: true
|
||||
include-confirmations-in-lore: true
|
||||
show-qr-item-in-payment-gui: true
|
||||
fallback-material-if-map-fails: "PAPER"
|
||||
|
||||
blockchain:
|
||||
watcher-mode: "API"
|
||||
provider: "BLOCKCHAIN_INFO"
|
||||
request-timeout-seconds: 10
|
||||
user-agent: "DirtCryptoStore/1.0.0"
|
||||
wallet-cache-seconds: 20
|
||||
tx-cache-seconds: 20
|
||||
|
||||
commands:
|
||||
dispatch-as-console: true
|
||||
stop-on-command-failure: false
|
||||
log-dispatch: true
|
||||
|
||||
hooks:
|
||||
use-placeholderapi-if-present: false
|
||||
use-luckperms-context-if-present: false
|
||||
|
||||
wallets:
|
||||
default:
|
||||
enabled: true
|
||||
display-name: "&6Bitcoin Wallet"
|
||||
coin: "BTC"
|
||||
address: "PUT_YOUR_CAKE_WALLET_BTC_ADDRESS_HERE"
|
||||
explorer-type: "BTC"
|
||||
min-confirmations: 2
|
||||
allow-products: ["tip_jar", "gold_dust", "dirt_rich"]
|
||||
|
||||
messages:
|
||||
prefix: "&8[&6DirtCryptoStore&8] "
|
||||
|
||||
no-permission: "&cYou do not have permission."
|
||||
player-only: "&cOnly players can use this command."
|
||||
reloaded: "&aDirtCryptoStore reloaded."
|
||||
opening-store: "&aOpening crypto store..."
|
||||
admin-reload-usage: "&eUse: /cryptostore reload"
|
||||
|
||||
already-has-pending: "&cYou already have a pending payment."
|
||||
no-pending-payment: "&cYou do not have a pending payment."
|
||||
invoice-created: "&aInvoice created for &f%product%&a."
|
||||
invoice-expired: "&cThis payment request expired."
|
||||
invoice-cancelled: "&eYour pending payment was cancelled."
|
||||
invoice-paid-already: "&eThis invoice is already paid."
|
||||
invoice-view-only: "&eThis invoice can no longer be changed."
|
||||
pricing-unavailable: "&cLive BTC pricing is currently unavailable. Please try again in a moment."
|
||||
|
||||
payment-detected: "&aPayment detected for &f%product%&a. Waiting for confirmations..."
|
||||
payment-confirmed: "&aYour crypto payment for &f%product% &ahas been confirmed."
|
||||
payment-fulfilled: "&aYour purchase has been delivered."
|
||||
payment-under-review: "&cThis payment requires staff review."
|
||||
payment-not-found-yet: "&7No matching payment detected yet."
|
||||
payment-status-waiting: "&eStatus: WAITING"
|
||||
payment-status-detected: "&aStatus: DETECTED"
|
||||
payment-status-confirming: "&6Status: CONFIRMING"
|
||||
payment-status-paid: "&aStatus: PAID"
|
||||
payment-status-expired: "&cStatus: EXPIRED"
|
||||
payment-status-cancelled: "&cStatus: CANCELLED"
|
||||
|
||||
qr-expiry-line: "&7Expires in: &f%time%"
|
||||
confirm-line: "&7Required confirmations: &f%confirmations%"
|
||||
wallet-line: "&7Wallet: &f%wallet%"
|
||||
wallet-address-line: "&7Address: &f%address%"
|
||||
amount-line: "&7Amount: &f%amount%"
|
||||
amount-sats-line: "&7Amount (sats): &f%amount_sats%"
|
||||
product-line: "&7Product: &f%product%"
|
||||
txid-line: "&7TXID: &f%txid%"
|
||||
|
||||
gui-cancel-button: "&cCancel Payment"
|
||||
gui-back-button: "&eBack"
|
||||
gui-close-button: "&cClose"
|
||||
gui-refresh-button: "&bRefresh"
|
||||
gui-confirmed-button: "&aPaid"
|
||||
gui-expired-button: "&cExpired"
|
||||
gui-pending-button: "&ePending"
|
||||
|
||||
sounds:
|
||||
enabled: true
|
||||
|
||||
store-open:
|
||||
sound: "BLOCK_ENDER_CHEST_OPEN"
|
||||
volume: 1.0
|
||||
pitch: 1.0
|
||||
|
||||
click:
|
||||
sound: "UI_BUTTON_CLICK"
|
||||
volume: 1.0
|
||||
pitch: 1.0
|
||||
|
||||
invoice-created:
|
||||
sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
|
||||
volume: 1.0
|
||||
pitch: 1.2
|
||||
|
||||
payment-detected:
|
||||
sound: "BLOCK_NOTE_BLOCK_PLING"
|
||||
volume: 1.0
|
||||
pitch: 1.5
|
||||
|
||||
payment-confirmed:
|
||||
sound: "ENTITY_PLAYER_LEVELUP"
|
||||
volume: 1.0
|
||||
pitch: 1.0
|
||||
|
||||
cancelled:
|
||||
sound: "ENTITY_VILLAGER_NO"
|
||||
volume: 1.0
|
||||
pitch: 1.0
|
||||
|
||||
expired:
|
||||
sound: "BLOCK_ANVIL_LAND"
|
||||
volume: 0.7
|
||||
pitch: 1.0
|
||||
|
||||
effects:
|
||||
enabled: true
|
||||
|
||||
store-open:
|
||||
enabled: false
|
||||
type: "VILLAGER_HAPPY"
|
||||
count: 10
|
||||
offset-x: 0.3
|
||||
offset-y: 0.6
|
||||
offset-z: 0.3
|
||||
extra: 0.0
|
||||
|
||||
invoice-created:
|
||||
enabled: true
|
||||
type: "TOTEM_OF_UNDYING"
|
||||
count: 12
|
||||
offset-x: 0.4
|
||||
offset-y: 0.8
|
||||
offset-z: 0.4
|
||||
extra: 0.0
|
||||
|
||||
payment-detected:
|
||||
enabled: true
|
||||
type: "COMPOSTER"
|
||||
count: 8
|
||||
offset-x: 0.3
|
||||
offset-y: 1.0
|
||||
offset-z: 0.3
|
||||
extra: 0.0
|
||||
|
||||
payment-confirmed:
|
||||
enabled: true
|
||||
type: "FIREWORK"
|
||||
count: 20
|
||||
offset-x: 0.5
|
||||
offset-y: 1.0
|
||||
offset-z: 0.5
|
||||
extra: 0.0
|
||||
|
||||
cancelled:
|
||||
enabled: false
|
||||
type: "SMOKE"
|
||||
count: 8
|
||||
offset-x: 0.2
|
||||
offset-y: 0.4
|
||||
offset-z: 0.2
|
||||
extra: 0.0
|
||||
|
||||
expired:
|
||||
enabled: false
|
||||
type: "SMOKE"
|
||||
count: 8
|
||||
offset-x: 0.2
|
||||
offset-y: 0.4
|
||||
offset-z: 0.2
|
||||
extra: 0.0
|
||||
|
||||
titles:
|
||||
enabled: true
|
||||
|
||||
invoice-created:
|
||||
title: "&6Crypto Invoice"
|
||||
subtitle: "&7Scan the QR and pay the exact amount"
|
||||
fade-in: 10
|
||||
stay: 50
|
||||
fade-out: 10
|
||||
|
||||
payment-detected:
|
||||
title: "&aPayment Detected"
|
||||
subtitle: "&7Waiting for confirmations"
|
||||
fade-in: 10
|
||||
stay: 40
|
||||
fade-out: 10
|
||||
|
||||
payment-confirmed:
|
||||
title: "&aPayment Confirmed"
|
||||
subtitle: "&fYour purchase has been delivered"
|
||||
fade-in: 10
|
||||
stay: 60
|
||||
fade-out: 10
|
||||
|
||||
cancelled:
|
||||
title: "&cPayment Cancelled"
|
||||
subtitle: "&7Your pending invoice was cancelled"
|
||||
fade-in: 10
|
||||
stay: 40
|
||||
fade-out: 10
|
||||
|
||||
gui:
|
||||
use-custom-model-data: false
|
||||
|
||||
store:
|
||||
title: "&8Crypto Store"
|
||||
size: 27
|
||||
open-sound: true
|
||||
|
||||
items:
|
||||
filler:
|
||||
enabled: true
|
||||
material: "GRAY_STAINED_GLASS_PANE"
|
||||
name: " "
|
||||
lore: []
|
||||
slots:
|
||||
- 0
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- 6
|
||||
- 7
|
||||
- 8
|
||||
- 9
|
||||
- 17
|
||||
- 18
|
||||
- 19
|
||||
- 20
|
||||
- 21
|
||||
- 22
|
||||
- 23
|
||||
- 24
|
||||
- 25
|
||||
- 26
|
||||
|
||||
close:
|
||||
enabled: true
|
||||
material: "BARRIER"
|
||||
name: "&cClose"
|
||||
lore:
|
||||
- "&7Close the store."
|
||||
slot: 26
|
||||
|
||||
refresh:
|
||||
enabled: true
|
||||
material: "SUNFLOWER"
|
||||
name: "&eRefresh"
|
||||
lore:
|
||||
- "&7Refresh the store view."
|
||||
slot: 18
|
||||
|
||||
info:
|
||||
enabled: true
|
||||
material: "BOOK"
|
||||
name: "&6How Crypto Payments Work"
|
||||
lore:
|
||||
- "&7Click a product to create a payment invoice."
|
||||
- "&7You must send the exact amount shown."
|
||||
- "&7Your QR expires after &f30 minutes&7."
|
||||
- "&7You can cancel your payment from the payment menu."
|
||||
slot: 22
|
||||
|
||||
payment:
|
||||
title: "&8Crypto Payment"
|
||||
size: 27
|
||||
|
||||
items:
|
||||
filler:
|
||||
enabled: true
|
||||
material: "BLACK_STAINED_GLASS_PANE"
|
||||
name: " "
|
||||
lore: []
|
||||
slots:
|
||||
- 0
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
- 5
|
||||
- 6
|
||||
- 7
|
||||
- 8
|
||||
- 9
|
||||
- 17
|
||||
- 18
|
||||
- 20
|
||||
- 24
|
||||
- 25
|
||||
- 26
|
||||
|
||||
product:
|
||||
enabled: true
|
||||
material: "CHEST"
|
||||
name: "&6Purchase Details"
|
||||
lore:
|
||||
- "&7Product: &f%product%"
|
||||
- "&7Price: &f%amount%"
|
||||
- "&7Wallet: &f%wallet%"
|
||||
- "&7Address: &f%address%"
|
||||
- "&7Status: &f%status%"
|
||||
- "&7Expires in: &f%time%"
|
||||
slot: 11
|
||||
|
||||
qr:
|
||||
enabled: true
|
||||
material: "FILLED_MAP"
|
||||
name: "&aScan QR To Pay"
|
||||
lore:
|
||||
- "&7Scan this QR with your wallet app."
|
||||
- "&7"
|
||||
- "&7Amount: &f%amount%"
|
||||
- "&7Address: &f%address%"
|
||||
- "&7"
|
||||
- "&7If your wallet does not scan maps well,"
|
||||
- "&7use the URI manually:"
|
||||
- "&f%bitcoin_uri%"
|
||||
slot: 13
|
||||
|
||||
status:
|
||||
enabled: true
|
||||
material: "CLOCK"
|
||||
name: "&ePayment Status"
|
||||
lore:
|
||||
- "&7Current: &f%status%"
|
||||
- "&7TXID: &f%txid%"
|
||||
- "&7Confirmations: &f%current_confirmations%/%confirmations%"
|
||||
- "&7Expires in: &f%time%"
|
||||
slot: 15
|
||||
|
||||
back:
|
||||
enabled: true
|
||||
material: "ARROW"
|
||||
name: "&eBack"
|
||||
lore:
|
||||
- "&7Return to the store."
|
||||
slot: 18
|
||||
|
||||
cancel:
|
||||
enabled: true
|
||||
material: "BARRIER"
|
||||
name: "&cCancel Payment"
|
||||
lore:
|
||||
- "&7Cancel this pending payment."
|
||||
slot: 22
|
||||
|
||||
refresh:
|
||||
enabled: true
|
||||
material: "SUNFLOWER"
|
||||
name: "&bRefresh Status"
|
||||
lore:
|
||||
- "&7Refresh this payment screen."
|
||||
slot: 26
|
||||
|
||||
products:
|
||||
tip_jar:
|
||||
enabled: true
|
||||
display-name: "&aTip Jar"
|
||||
material: "EMERALD"
|
||||
custom-model-data: 0
|
||||
glow: true
|
||||
slot: 11
|
||||
wallet: "default"
|
||||
price-usd: 3.49
|
||||
base-sats: 15000
|
||||
permission-required: ""
|
||||
purchasable-once: false
|
||||
commands:
|
||||
- "lp user %player% parent add tipjar"
|
||||
lore:
|
||||
- "&7Buy the &aTip Jar &7rank with crypto."
|
||||
- "&7Normal store price: &c$4.99"
|
||||
- "&7Crypto store price: &a$3.49"
|
||||
- "&7Wallet: &f%wallet%"
|
||||
- "&7Approx base amount: &f%amount%"
|
||||
- "&7Click to generate a live-priced invoice."
|
||||
|
||||
gold_dust:
|
||||
enabled: true
|
||||
display-name: "&bGold Dust"
|
||||
material: "GOLD_INGOT"
|
||||
custom-model-data: 0
|
||||
glow: true
|
||||
slot: 13
|
||||
wallet: "default"
|
||||
price-usd: 6.99
|
||||
base-sats: 27000
|
||||
permission-required: ""
|
||||
purchasable-once: false
|
||||
commands:
|
||||
- "lp user %player% parent add golddust"
|
||||
lore:
|
||||
- "&7Buy the &bGold Dust &7rank with crypto."
|
||||
- "&7Normal store price: &c$9.99"
|
||||
- "&7Crypto store price: &a$6.99"
|
||||
- "&7Wallet: &f%wallet%"
|
||||
- "&7Approx base amount: &f%amount%"
|
||||
- "&7Click to generate a live-priced invoice."
|
||||
|
||||
dirt_rich:
|
||||
enabled: true
|
||||
display-name: "&6Dirt Rich"
|
||||
material: "DIAMOND"
|
||||
custom-model-data: 0
|
||||
glow: false
|
||||
slot: 15
|
||||
wallet: "default"
|
||||
price-usd: 13.99
|
||||
base-sats: 9750
|
||||
permission-required: ""
|
||||
purchasable-once: false
|
||||
commands:
|
||||
- "lp user %player% parent add dirtrich"
|
||||
lore:
|
||||
- "&7Buy the &6Dirt Rich &7rank with crypto."
|
||||
- "&7Normal store price: &c$19.99"
|
||||
- "&7Crypto store price: &a$13.99"
|
||||
- "&7Wallet: &f%wallet%"
|
||||
- "&7Approx base amount: &f%amount%"
|
||||
- "&7Click to generate a live-priced invoice."
|
||||
@@ -0,0 +1,25 @@
|
||||
name: DirtCryptoStore
|
||||
version: 1.0.0
|
||||
main: com.bitnix.dirtcryptostore.DirtCryptoStorePlugin
|
||||
api-version: '1.21'
|
||||
description: Crypto GUI shop plugin for Paper
|
||||
author: bitnix
|
||||
|
||||
commands:
|
||||
cryptostore:
|
||||
description: Open the crypto store
|
||||
usage: /cryptostore [reload|status|review|forceconfirm|cancelinvoice]
|
||||
aliases: [cstore]
|
||||
|
||||
permissions:
|
||||
dirtcryptostore.use:
|
||||
description: Allows use of the crypto store
|
||||
default: true
|
||||
|
||||
dirtcryptostore.admin:
|
||||
description: Admin access to reload and manage the crypto store
|
||||
default: op
|
||||
|
||||
dirtcryptostore.bypass:
|
||||
description: Bypass restrictions if used later
|
||||
default: op
|
||||
Reference in New Issue
Block a user