first commit
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
@@ -0,0 +1,5 @@
|
||||
#Generated by Maven
|
||||
#Sat Jun 20 15:53:05 EDT 2026
|
||||
artifactId=DirtCryptoStore
|
||||
groupId=com.bitnix
|
||||
version=1.0.0
|
||||
@@ -0,0 +1,27 @@
|
||||
com/bitnix/dirtcryptostore/gui/StoreGui.class
|
||||
com/bitnix/dirtcryptostore/util/QrMapUtil.class
|
||||
com/bitnix/dirtcryptostore/util/EffectUtil.class
|
||||
com/bitnix/dirtcryptostore/util/TitleUtil.class
|
||||
com/bitnix/dirtcryptostore/model/WalletConfig.class
|
||||
com/bitnix/dirtcryptostore/command/CryptoStoreCommand.class
|
||||
com/bitnix/dirtcryptostore/manager/PricingManager.class
|
||||
com/bitnix/dirtcryptostore/util/SimpleJson.class
|
||||
com/bitnix/dirtcryptostore/util/HttpUtil.class
|
||||
com/bitnix/dirtcryptostore/model/Product.class
|
||||
com/bitnix/dirtcryptostore/gui/PaymentGui.class
|
||||
com/bitnix/dirtcryptostore/model/PendingInvoice$Status.class
|
||||
com/bitnix/dirtcryptostore/listener/StoreGuiListener.class
|
||||
com/bitnix/dirtcryptostore/storage/SQLiteStorage.class
|
||||
com/bitnix/dirtcryptostore/util/MessageUtil.class
|
||||
com/bitnix/dirtcryptostore/DirtCryptoStorePlugin.class
|
||||
com/bitnix/dirtcryptostore/manager/InvoiceManager.class
|
||||
com/bitnix/dirtcryptostore/manager/PaymentWatcher.class
|
||||
com/bitnix/dirtcryptostore/util/ColorUtil.class
|
||||
com/bitnix/dirtcryptostore/manager/QrMapManager.class
|
||||
com/bitnix/dirtcryptostore/model/BlockchainPaymentMatch.class
|
||||
com/bitnix/dirtcryptostore/manager/BlockchainApi.class
|
||||
com/bitnix/dirtcryptostore/util/TimeUtil.class
|
||||
com/bitnix/dirtcryptostore/util/QrMapUtil$ImageRenderer.class
|
||||
com/bitnix/dirtcryptostore/model/PendingInvoice.class
|
||||
com/bitnix/dirtcryptostore/manager/ConfigManager.class
|
||||
com/bitnix/dirtcryptostore/util/QrPlaceholderUtil.class
|
||||
@@ -0,0 +1,25 @@
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/DirtCryptoStorePlugin.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/command/CryptoStoreCommand.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/gui/PaymentGui.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/gui/StoreGui.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/listener/StoreGuiListener.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/manager/BlockchainApi.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/manager/ConfigManager.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/manager/InvoiceManager.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/manager/PaymentWatcher.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/manager/PricingManager.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/manager/QrMapManager.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/model/BlockchainPaymentMatch.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/model/PendingInvoice.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/model/Product.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/model/WalletConfig.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/storage/SQLiteStorage.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/util/ColorUtil.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/util/EffectUtil.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/util/HttpUtil.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/util/MessageUtil.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/util/QrMapUtil.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/util/QrPlaceholderUtil.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/util/SimpleJson.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/util/TimeUtil.java
|
||||
/home/bitnix/Desktop/DirtCryptoStore/src/main/java/com/bitnix/dirtcryptostore/util/TitleUtil.java
|
||||
Binary file not shown.
Reference in New Issue
Block a user