first
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.
Binary file not shown.
BIN
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,154 @@
|
||||
# DirtBounties main configuration
|
||||
# Paper 1.21.x, Java 21
|
||||
#
|
||||
# Color formatting supports normal ampersand colors, hex colors like &#D4AF37,
|
||||
# and the DirtbagMC gradient style shown below.
|
||||
|
||||
server:
|
||||
brand-name: "DirtbagMC"
|
||||
brand-gradient: "A2416&lᴅA2D1B&lɪA351F&lʀA3F24&lᴛA4A2A&lʙB6B35&lᴀ&#A8873F&lɢ&#D4AF37&lᴍ&#B9C63F&lᴄ"
|
||||
debug: false
|
||||
|
||||
storage:
|
||||
# Active bounty data is saved after important mutations and on this autosave interval.
|
||||
autosave-interval: "5m"
|
||||
cleanup-expired-interval: "10m"
|
||||
save-player-ip-cache: true
|
||||
write-history-to-disk-immediately: true
|
||||
|
||||
economy:
|
||||
enabled: true
|
||||
# DirtBounties uses Bukkit ServicesManager economy registration.
|
||||
# This supports normal Vault and CMI's Vault injector.
|
||||
fail-if-missing: false
|
||||
provider-log-on-enable: true
|
||||
minimum-balance-after-withdraw: 0.0
|
||||
currency-format: "${amount}"
|
||||
fees:
|
||||
# Placement fee can be charged as extra money or deducted from the bounty value.
|
||||
placement-percent: 5.0
|
||||
placement-mode: "extra" # extra, deduct
|
||||
add-percent: 5.0
|
||||
add-mode: "extra" # extra, deduct
|
||||
claim-tax-percent: 0.0
|
||||
claim-sink-percent: 0.0
|
||||
broadcasts:
|
||||
enabled: true
|
||||
placed-threshold: 5000.0
|
||||
claimed-threshold: 5000.0
|
||||
milestone-thresholds:
|
||||
- 10000.0
|
||||
- 25000.0
|
||||
- 50000.0
|
||||
|
||||
bounties:
|
||||
min-amount: 100.0
|
||||
max-amount: 1000000.0
|
||||
stack-existing: true
|
||||
allow-self-target: false
|
||||
allow-offline-targets: true
|
||||
# If false, targets must be online or have joined before.
|
||||
# If true, Bukkit may create an OfflinePlayer profile for unknown names.
|
||||
allow-never-joined-targets: false
|
||||
allow-banned-targets: false
|
||||
allow-anonymous: true
|
||||
anonymous-requires-permission: true
|
||||
allow-reasons: true
|
||||
max-reason-length: 80
|
||||
default-reason: "No reason given."
|
||||
placement-cooldown: "30s"
|
||||
require-confirmation-gui: true
|
||||
|
||||
expiration:
|
||||
enabled: true
|
||||
default-duration: "14d"
|
||||
max-duration: "30d"
|
||||
# If true, a bounty without contributions gets removed during cleanup.
|
||||
remove-empty-bounties: true
|
||||
banned-player-action: "keep" # keep, expire
|
||||
deleted-player-action: "keep" # keep, expire
|
||||
|
||||
refunds:
|
||||
# Refund percentage is based on the active contribution value, not placement fees.
|
||||
on-admin-remove-percent: 100.0
|
||||
on-expire-percent: 50.0
|
||||
on-invalid-percent: 100.0
|
||||
refund-fees: false
|
||||
refund-offline-players: true
|
||||
minimum-refund: 0.01
|
||||
|
||||
claim-rules:
|
||||
require-permission: true
|
||||
require-pvp-kill: true
|
||||
block-environmental-deaths: true
|
||||
prevent-self-claims: true
|
||||
prevent-same-ip-claims: true
|
||||
prevent-shared-known-ip-claims: true
|
||||
allow-bypass-permission: true
|
||||
require-target-online-at-death: true
|
||||
blocked-killer-game-modes:
|
||||
- CREATIVE
|
||||
- SPECTATOR
|
||||
worlds:
|
||||
mode: "blacklist" # disabled, whitelist, blacklist
|
||||
list:
|
||||
- spawn
|
||||
- events
|
||||
combat:
|
||||
enabled: true
|
||||
window: "30s"
|
||||
min-damage: 4.0
|
||||
min-hits: 1
|
||||
min-combat-duration: "0s"
|
||||
|
||||
anti-abuse:
|
||||
enabled: true
|
||||
log-failed-claims: true
|
||||
log-same-ip-attempts: true
|
||||
killer-claim-cooldown: "2m"
|
||||
target-claim-cooldown: "2m"
|
||||
killer-target-pair-cooldown: "12h"
|
||||
same-victim-cooldown: "10m"
|
||||
pair-window: "7d"
|
||||
max-pair-claims-in-window: 2
|
||||
suspicious-history-limit: 500
|
||||
run-console-commands-on-suspicious: false
|
||||
suspicious-commands:
|
||||
- "staffmsg Suspicious bounty claim: {killer} -> {target}: {reason}"
|
||||
|
||||
history:
|
||||
enabled: true
|
||||
max-records: 2000
|
||||
max-records-per-player-command: 10
|
||||
prune-older-than: "90d"
|
||||
|
||||
gui:
|
||||
enabled: true
|
||||
open-sound: "BLOCK_BARREL_OPEN"
|
||||
click-sound: "UI_BUTTON_CLICK"
|
||||
success-sound: "ENTITY_PLAYER_LEVELUP"
|
||||
error-sound: "ENTITY_VILLAGER_NO"
|
||||
items-per-page: 28
|
||||
refresh-after-action: true
|
||||
close-on-confirm: true
|
||||
chat-input-timeout: "60s"
|
||||
|
||||
webhooks:
|
||||
enabled: false
|
||||
url: ""
|
||||
username: "DirtBounties"
|
||||
large-bounty-threshold: 25000.0
|
||||
large-claim-threshold: 25000.0
|
||||
notify-placements: true
|
||||
notify-claims: true
|
||||
notify-admin-actions: true
|
||||
timeout-seconds: 8
|
||||
|
||||
logging:
|
||||
console:
|
||||
economy-status: true
|
||||
placements: true
|
||||
claims: true
|
||||
admin-actions: true
|
||||
suspicious: true
|
||||
file-history: true
|
||||
@@ -0,0 +1,177 @@
|
||||
titles:
|
||||
main: "A2416&lDirtBounties &8| &6Active"
|
||||
top: "A2416&lDirtBounties &8| &6Top"
|
||||
detail: "A2416&lDirtBounties &8| &c{target}"
|
||||
confirm: "A2416&lDirtBounties &8| &aConfirm"
|
||||
admin-main: "A2416&lDirtBounties &8| &4Admin"
|
||||
admin-history: "A2416&lDirtBounties &8| &4History"
|
||||
admin-suspicious: "A2416&lDirtBounties &8| &4Suspicious"
|
||||
|
||||
layout:
|
||||
size: 54
|
||||
content-slots:
|
||||
- 10
|
||||
- 11
|
||||
- 12
|
||||
- 13
|
||||
- 14
|
||||
- 15
|
||||
- 16
|
||||
- 19
|
||||
- 20
|
||||
- 21
|
||||
- 22
|
||||
- 23
|
||||
- 24
|
||||
- 25
|
||||
- 28
|
||||
- 29
|
||||
- 30
|
||||
- 31
|
||||
- 32
|
||||
- 33
|
||||
- 34
|
||||
- 37
|
||||
- 38
|
||||
- 39
|
||||
- 40
|
||||
- 41
|
||||
- 42
|
||||
- 43
|
||||
previous-slot: 45
|
||||
back-slot: 46
|
||||
refresh-slot: 49
|
||||
next-slot: 53
|
||||
place-slot: 48
|
||||
top-slot: 50
|
||||
admin-slot: 52
|
||||
|
||||
items:
|
||||
filler:
|
||||
material: BLACK_STAINED_GLASS_PANE
|
||||
name: " "
|
||||
lore: []
|
||||
border:
|
||||
material: BROWN_STAINED_GLASS_PANE
|
||||
name: " "
|
||||
lore: []
|
||||
empty:
|
||||
material: BARRIER
|
||||
name: "&cNo bounties"
|
||||
lore:
|
||||
- "&7Nobody has a price on their head."
|
||||
bounty:
|
||||
material: PLAYER_HEAD
|
||||
name: "&c&l{target}"
|
||||
lore:
|
||||
- "&7Bounty: &f{amount}"
|
||||
- "&7Contributors: &f{contributors}"
|
||||
- "&7Top reason: &f{reason}"
|
||||
- "&7Expires: &f{expires}"
|
||||
- ""
|
||||
- "&eClick to view details."
|
||||
top-bounty:
|
||||
material: PLAYER_HEAD
|
||||
name: "&6#{rank} &c&l{target}"
|
||||
lore:
|
||||
- "&7Bounty: &f{amount}"
|
||||
- "&7Contributors: &f{contributors}"
|
||||
- ""
|
||||
- "&eClick to inspect."
|
||||
detail-head:
|
||||
material: PLAYER_HEAD
|
||||
name: "&c&l{target}"
|
||||
lore:
|
||||
- "&7Total bounty: &f{amount}"
|
||||
- "&7Contributors: &f{contributors}"
|
||||
- "&7Expires: &f{expires}"
|
||||
- ""
|
||||
- "&6Top reasons:"
|
||||
- "{reason_lines}"
|
||||
claim-info:
|
||||
material: BOOK
|
||||
name: "&6Claim Conditions"
|
||||
lore:
|
||||
- "&7PvP required: &f{pvp}"
|
||||
- "&7Same IP blocked: &f{same_ip}"
|
||||
- "&7World mode: &f{world_mode}"
|
||||
- "&7Combat: &f{combat}"
|
||||
- ""
|
||||
- "&8Claims are checked automatically on kill."
|
||||
place:
|
||||
material: GOLD_INGOT
|
||||
name: "&6Place Bounty"
|
||||
lore:
|
||||
- "&7Start a guided bounty placement."
|
||||
- ""
|
||||
- "&eClick to begin."
|
||||
add:
|
||||
material: ANVIL
|
||||
name: "&6Increase Bounty"
|
||||
lore:
|
||||
- "&7Add money to this target's bounty."
|
||||
- ""
|
||||
- "&eClick to continue."
|
||||
top:
|
||||
material: NETHER_STAR
|
||||
name: "&6Top Bounties"
|
||||
lore:
|
||||
- "&7Sort by highest active value."
|
||||
- ""
|
||||
- "&eClick to view."
|
||||
refresh:
|
||||
material: SUNFLOWER
|
||||
name: "&eRefresh"
|
||||
lore:
|
||||
- "&7Reload this view."
|
||||
previous:
|
||||
material: ARROW
|
||||
name: "&ePrevious Page"
|
||||
lore:
|
||||
- "&7Go back one page."
|
||||
next:
|
||||
material: ARROW
|
||||
name: "&eNext Page"
|
||||
lore:
|
||||
- "&7Go forward one page."
|
||||
back:
|
||||
material: OAK_DOOR
|
||||
name: "&eBack"
|
||||
lore:
|
||||
- "&7Return to the previous view."
|
||||
close:
|
||||
material: BARRIER
|
||||
name: "&cClose"
|
||||
lore:
|
||||
- "&7Close this menu."
|
||||
confirm:
|
||||
material: LIME_CONCRETE
|
||||
name: "&aConfirm Bounty"
|
||||
lore:
|
||||
- "&7Target: &f{target}"
|
||||
- "&7Amount: &f{amount}"
|
||||
- "&7Fee: &f{fee}"
|
||||
- "&7Total cost: &f{cost}"
|
||||
- "&7Reason: &f{reason}"
|
||||
- ""
|
||||
- "&aClick to confirm."
|
||||
cancel:
|
||||
material: RED_CONCRETE
|
||||
name: "&cCancel"
|
||||
lore:
|
||||
- "&7Return without placing this bounty."
|
||||
admin-active:
|
||||
material: CHEST
|
||||
name: "&4Active Bounties"
|
||||
lore:
|
||||
- "&7Review and inspect all active bounties."
|
||||
admin-history:
|
||||
material: WRITABLE_BOOK
|
||||
name: "&4Recent Claims and Changes"
|
||||
lore:
|
||||
- "&7Review bounty history records."
|
||||
admin-suspicious:
|
||||
material: REDSTONE_TORCH
|
||||
name: "&4Suspicious Activity"
|
||||
lore:
|
||||
- "&7Review blocked and suspicious claims."
|
||||
@@ -0,0 +1,105 @@
|
||||
prefix: "A2416&lᴅA2D1B&lɪA351F&lʀA3F24&lᴛA4A2A&lʙB6B35&lᴀ&#A8873F&lɢ&#D4AF37&lᴍ&#B9C63F&lᴄ &8» "
|
||||
no-permission: "{prefix}&cYou do not have permission to do that."
|
||||
player-only: "{prefix}&cOnly players can use that command."
|
||||
unknown-command: "{prefix}&cUnknown bounty command. Use &f/bounty help&c."
|
||||
reload-complete: "{prefix}&aDirtBounties reloaded."
|
||||
invalid-number: "{prefix}&cThat amount is not valid."
|
||||
invalid-player: "{prefix}&cCould not find that player."
|
||||
invalid-world: "{prefix}&cBounties cannot be claimed in this world."
|
||||
economy-missing: "{prefix}&cEconomy is not available. Ask staff to check Vault or CMI's Vault injector."
|
||||
not-enough-money: "{prefix}&cYou need &f{cost}&c, including fees, to place that bounty."
|
||||
cooldown: "{prefix}&cSlow down. Try again in &f{time}&c."
|
||||
reason-too-long: "{prefix}&cThat reason is too long. Maximum: &f{max}&c characters."
|
||||
target-self: "{prefix}&cYou cannot place or claim a bounty on yourself."
|
||||
target-banned: "{prefix}&cThat player cannot receive bounties while banned."
|
||||
amount-too-low: "{prefix}&cMinimum bounty amount is &f{min}&c."
|
||||
amount-too-high: "{prefix}&cMaximum bounty amount is &f{max}&c."
|
||||
amount-would-exceed-max: "{prefix}&cThat would put the bounty above the maximum of &f{max}&c."
|
||||
no-active-bounties: "{prefix}&7There are no active bounties right now."
|
||||
bounty-not-found: "{prefix}&cThere is no active bounty on &f{target}&c."
|
||||
claim-denied-format: "{prefix}&cBounty claim denied: &f{reason}"
|
||||
|
||||
help:
|
||||
- "{prefix}&6&lDirtBounties Commands"
|
||||
- "&8- &e/bounty &7Open the bounty GUI."
|
||||
- "&8- &e/bounty place <player> <amount> [reason] &7Place a bounty."
|
||||
- "&8- &e/bounty add <player> <amount> [reason] &7Increase a bounty."
|
||||
- "&8- &e/bounty list &7List active bounties."
|
||||
- "&8- &e/bounty top &7View top bounties."
|
||||
- "&8- &e/bounty view <player> &7View bounty details."
|
||||
- "&8- &e/bounty claiminfo <player> &7View claim rules."
|
||||
|
||||
admin-help:
|
||||
- "{prefix}&6&lDirtBounties Admin"
|
||||
- "&8- &e/bountyadmin reload &7Reload configs and storage."
|
||||
- "&8- &e/bountyadmin remove <player> &7Remove a bounty and refund by config."
|
||||
- "&8- &e/bountyadmin clearall confirm &7Remove every active bounty."
|
||||
- "&8- &e/bountyadmin set <player> <amount> &7Set a bounty value."
|
||||
- "&8- &e/bountyadmin expire <player> &7Expire a bounty."
|
||||
- "&8- &e/bountyadmin history <player> &7Show history."
|
||||
- "&8- &e/bountyadmin suspicious &7Show suspicious activity."
|
||||
- "&8- &e/bountyadmin gui &7Open admin GUI."
|
||||
|
||||
bounty:
|
||||
placed: "{prefix}&aPlaced a bounty of &f{amount}&a on &f{target}&a. Fee: &f{fee}&a."
|
||||
added: "{prefix}&aAdded &f{amount}&a to &f{target}&a's bounty. New total: &f{total}&a."
|
||||
broadcast-placed: "{prefix}&6{placer}&e placed a bounty of &f{amount}&e on &c{target}&e."
|
||||
broadcast-added: "{prefix}&6{placer}&e increased &c{target}&e's bounty to &f{total}&e."
|
||||
milestone: "{prefix}&c{target}&6's bounty has reached &f{total}&6."
|
||||
claimed: "{prefix}&aYou claimed &f{payout}&a from &c{target}&a's bounty."
|
||||
claim-broadcast: "{prefix}&c{killer}&6 claimed &f{payout}&6 for killing &c{target}&6."
|
||||
expired: "{prefix}&7The bounty on &f{target}&7 expired."
|
||||
removed: "{prefix}&aRemoved the bounty on &f{target}&a."
|
||||
set: "{prefix}&aSet &f{target}&a's bounty to &f{amount}&a."
|
||||
clearall-warning: "{prefix}&cUse &f/bountyadmin clearall confirm &cto remove all active bounties."
|
||||
clearall-done: "{prefix}&aRemoved &f{count}&a active bounties."
|
||||
list-line: "&8- &c{target} &7» &f{amount} &8({contributors} contributors)"
|
||||
top-line: "&6#{rank} &c{target} &7» &f{amount}"
|
||||
view:
|
||||
- "{prefix}&6&lBounty: &c{target}"
|
||||
- "&7Amount: &f{amount}"
|
||||
- "&7Contributors: &f{contributors}"
|
||||
- "&7Expires: &f{expires}"
|
||||
- "&7Reason: &f{reason}"
|
||||
claiminfo:
|
||||
- "{prefix}&6&lClaim Rules for &c{target}"
|
||||
- "&8- &7PvP kill required: &f{pvp}"
|
||||
- "&8- &7Same-IP claims blocked: &f{same_ip}"
|
||||
- "&8- &7Allowed worlds: &f{worlds}"
|
||||
- "&8- &7Combat requirement: &f{combat}"
|
||||
|
||||
claim-denied:
|
||||
no-bounty: "No active bounty exists."
|
||||
no-permission: "You do not have permission to claim bounties."
|
||||
self: "Self-claims are blocked."
|
||||
same-ip: "Same-IP bounty claims are blocked."
|
||||
shared-known-ip: "Shared known-IP bounty claims are blocked."
|
||||
world: "Claims are disabled in this world."
|
||||
gamemode: "Your game mode cannot claim bounties."
|
||||
combat: "Combat requirements were not met."
|
||||
cooldown: "A claim cooldown is active."
|
||||
pair-limit: "This killer-target pair has too many recent claims."
|
||||
target-offline: "The target must be online at death."
|
||||
|
||||
gui:
|
||||
unavailable: "{prefix}&cThe bounty GUI is disabled."
|
||||
prompt-target: "{prefix}&eType the target player's name in chat, or type &fcancel&e."
|
||||
prompt-amount: "{prefix}&eType the bounty amount for &f{target}&e, or type &fcancel&e."
|
||||
prompt-reason: "{prefix}&eType a short reason for &f{target}&e, use &f-&e for none, or type &fcancel&e."
|
||||
input-cancelled: "{prefix}&7Bounty input cancelled."
|
||||
input-expired: "{prefix}&cYour bounty input expired."
|
||||
confirm-opened: "{prefix}&7Review and confirm the bounty."
|
||||
admin-opened: "{prefix}&7Opened the admin bounty view."
|
||||
|
||||
admin:
|
||||
history-empty: "{prefix}&7No bounty history found for &f{target}&7."
|
||||
suspicious-empty: "{prefix}&7No suspicious bounty activity has been logged."
|
||||
suspicious-line: "&8- &c{time} &7{type}: &f{details}"
|
||||
history-line: "&8- &e{time} &7{type}: &f{amount} &8({note})"
|
||||
refunded: "{prefix}&aRefunded &f{amount}&a to &f{player}&a."
|
||||
action-logged: "{prefix}&7Admin action logged."
|
||||
|
||||
webhook:
|
||||
placement-title: "New bounty placed"
|
||||
claim-title: "Bounty claimed"
|
||||
admin-title: "Bounty admin action"
|
||||
@@ -0,0 +1,67 @@
|
||||
name: DirtBounties
|
||||
version: 1.0.0
|
||||
main: com.dirtbagmc.dirtbounties.DirtBountiesPlugin
|
||||
api-version: '1.21'
|
||||
author: DirtbagMC
|
||||
website: https://dirtbagmc.com
|
||||
description: Premium bounty system for Paper SMP and anarchy servers.
|
||||
softdepend:
|
||||
- Vault
|
||||
- CMI
|
||||
- PlaceholderAPI
|
||||
|
||||
commands:
|
||||
bounty:
|
||||
description: Open and manage player bounties.
|
||||
usage: /bounty help
|
||||
aliases:
|
||||
- bounties
|
||||
- dbounty
|
||||
bountyadmin:
|
||||
description: Admin controls for DirtBounties.
|
||||
usage: /bountyadmin help
|
||||
aliases:
|
||||
- dbountyadmin
|
||||
- ba
|
||||
|
||||
permissions:
|
||||
dirtbounties.use:
|
||||
description: Allows opening the bounty GUI and using basic commands.
|
||||
default: true
|
||||
dirtbounties.place:
|
||||
description: Allows placing new bounties.
|
||||
default: true
|
||||
dirtbounties.add:
|
||||
description: Allows increasing existing bounties.
|
||||
default: true
|
||||
dirtbounties.view:
|
||||
description: Allows viewing bounty details.
|
||||
default: true
|
||||
dirtbounties.top:
|
||||
description: Allows viewing top bounties.
|
||||
default: true
|
||||
dirtbounties.claim:
|
||||
description: Allows claiming bounties by killing targets.
|
||||
default: true
|
||||
dirtbounties.anonymous:
|
||||
description: Allows placing anonymous bounties when enabled.
|
||||
default: op
|
||||
dirtbounties.bypass.cooldowns:
|
||||
description: Bypasses placement and claim cooldown checks.
|
||||
default: op
|
||||
dirtbounties.bypass.claimrules:
|
||||
description: Bypasses configured claim restrictions.
|
||||
default: op
|
||||
dirtbounties.admin:
|
||||
description: Full DirtBounties administration access.
|
||||
default: op
|
||||
children:
|
||||
dirtbounties.use: true
|
||||
dirtbounties.place: true
|
||||
dirtbounties.add: true
|
||||
dirtbounties.view: true
|
||||
dirtbounties.top: true
|
||||
dirtbounties.claim: true
|
||||
dirtbounties.anonymous: true
|
||||
dirtbounties.bypass.cooldowns: true
|
||||
dirtbounties.bypass.claimrules: true
|
||||
Reference in New Issue
Block a user