玩家悬赏
悬赏模板放在:
plugins/GTCommission/bounties/服主只需要开放允许玩家发布的模板。玩家不能绕过模板自定义任务类型、最高接取人数、奖励档位或可用经济。
基础模板
bounties:
monster_hunt:
enabled: true
name: "&c怪物讨伐悬赏"
description:
- "&7发布后由其他玩家接取并完成。"
type: KILL_ENTITY
target-mode: INPUT
target-suggestions: [ZOMBIE, SKELETON, CREEPER, SPIDER]
objective-amount: 30
icon: IRON_SWORD
expire-hours: 24
max-hunters: 10
escrow: MONEY
reward-options: [1000, 5000, 10000]
custom-reward:
enabled: true
minimum: 100
maximum: 1000000
step: 100
allow-multiple-choice: true
default-multiple: true
deposit-options: [0, 100, 500, 1000]
share-options: [1, 2, 3]
tip-options: [500, 1000, 5000]
economies: [money, points]| 字段 | 说明 |
|---|---|
enabled | 是否允许发布该模板 |
name、description | 发布界面的名称和说明,支持 PAPI |
type | 悬赏任务类型,与普通任务类型一致 |
target-mode | 发布时如何选择目标 |
target | FIXED 模式的固定目标 |
target-suggestions | INPUT 模式提供的目标建议 |
objective-amount | 完成一份悬赏所需进度 |
icon | 悬赏图标 |
expire-hours | 发布后多少小时过期 |
max-hunters | 最多同时接取人数 |
escrow | 奖励托管方式 |
reward-options | 玩家可选的单份奖励档位 |
custom-reward.enabled | 是否允许发布者输入自定义奖励 |
custom-reward.minimum | 自定义奖励最小值 |
custom-reward.maximum | 自定义奖励最大值 |
custom-reward.step | 自定义奖励递增单位 |
allow-multiple-choice | 发布者能否选择多人同时接取 |
default-multiple | 默认是否允许多人同时接取 |
deposit-options | 每名接取者可选押金档位 |
share-options | 可发布的悬赏份数 |
tip-options | 后续可追加的每份小费档位 |
economies | 本模板允许使用的经济 ID |
目标选择方式
| 模式 | 用途 |
|---|---|
FIXED | 使用模板里的 target,玩家不能修改 |
PLAYER | 从在线玩家 GUI 中选择目标 |
INPUT | 玩家输入目标,GUI 显示 target-suggestions 作为提示 |
HELD_ITEM | 使用发布者当前主手物品作为目标 |
ITEMS | 打开背包选择 GUI,可选择多种物品并分别设置数量 |
目标选择界面会使用 messages.yml -> display.targets 的中文名称。玩家输入“僵尸”时,插件会在模板的 target-suggestions 中找到对应的 ZOMBIE,实际记录和进度匹配仍使用 ZOMBIE。
物资征集示例:
bounties:
material_request:
enabled: true
name: "&6物资征集悬赏"
type: SUBMIT_ITEM
target-mode: ITEMS
objective-amount: 64
icon: CHEST
expire-hours: 48
max-hunters: 10
escrow: MONEY
reward-options: [1000, 5000, 10000]
custom-reward:
enabled: true
minimum: 100
maximum: 1000000
step: 100
allow-multiple-choice: true
default-multiple: true
deposit-options: [0, 100, 500]
share-options: [1, 2, 3]
tip-options: [500, 1000, 5000]
economies: [money, points]发布者在物品选择界面左键背包物品后输入数量,可以连续添加多种物品。右键已选中的同类物品可从清单移除。记录的是完整物品数据,不只比较材质,因此带名称、Lore、NBT 的物品不会被普通同材质物品代替。
奖励托管
MONEY 表示从发布者选择的经济账户中扣除奖励。Vault 经济直接调用接口,PlayerPoints、DreamPoints 调用各自接口,自定义经济按配置好的查询变量和增减命令处理。
escrow: MONEY
reward-options: [1000, 5000, 10000]
economies: [money, points]发布界面会同时显示 reward-options 的快捷档位和“自定义奖励数量”按钮。自定义输入必须位于 minimum 到 maximum 之间,并以 minimum 为起点按 step 递增。例如最小值为 100、步长为 100 时,可填写 100、200、300,不能填写 250。
ITEM_HAND 表示把发布者主手物品作为奖励托管:
escrow: ITEM_HAND物品奖励固定为 1 份,避免把同一件托管物品重复发给多个完成者。押金和小费仍使用模板选择的经济。
多人接取与悬赏份数
发布者可以控制同一悬赏是否允许多人同时接取:
- 允许多人:不超过
max-hunters的玩家可以同时接取。 - 单人接取:有玩家接取后,其他人不能再接取。
share-options 控制奖励份数。每名玩家只能完成其中一份:
- 1 份:第一名完成并提交的玩家获得奖励,其他接取者自动取消。
- 多份:前几名完成者依次领取,达到份数后关闭悬赏并取消剩余接取者。
这里以成功提交为准,不以先接取为准。收集物品悬赏需要玩家背包满足全部物品要求后提交;其他类型在进度达到要求时结算。
接取押金
deposit-options: [0, 100, 500, 1000]发布者选择其中一档作为每名玩家的接取押金。接取时立即扣除:
- 玩家成功完成时退还自己的押金。
- 悬赏名额全部完成后,未获奖的接取者自动取消并退还押金。
- 悬赏正常过期或被系统关闭时,按实际结算结果处理退款。
跨服使用 MySQL 或 Redis 时,奖励与退款都带有唯一结算记录。玩家换服上线后仍会收到未发放的奖励或退款,不会因为多个子服同时处理而重复到账。
追加小费
主配置:
bounty:
tip-min-unaccepted-minutes: 30悬赏发布后达到这个时间,并且仍然无人接取,发布者可以在悬赏详情中追加小费。小费按“每份”计算,追加时会一次托管剩余份数所需的总金额。
tip-options: [500, 1000, 5000]模板中的数值会显示为建议档位。发布者也可以在输入框中填写正整数。已有玩家接取后不能再追加,防止接取过程中临时改变结算金额。
玩家操作
发布悬赏:
/gtbounty publish查看大厅:
/gtbounty大厅中:
- 左键未接取的悬赏:接取。
- 左键自己已接取的物资悬赏:尝试提交物品。
- 右键悬赏:查看完整需求、奖励、押金、人数与剩余时间。
发布者管理
查看自己发布的悬赏:
/gtbounty mine也可以直接输入:
/gtmybounty“我的悬赏”会列出当前保存的开放、已完成、已过期和已取消记录。点击其中一条可以查看需求、托管奖励、完成份数、曾接取玩家、当前接取玩家和已完成玩家。开放中的悬赏会显示取消按钮。
发布流程中点击“取消发布”只会放弃当前填写内容,不会扣除奖励或手续费,聊天栏会提示已经取消。
取消已发布悬赏的规则在主配置中设置:
bounty:
cancel:
free-minutes: 30
fee:
amount: 100
economy: money
system-percent: 10| 配置 | 说明 |
|---|---|
cancel.free-minutes | 发布后多少分钟内可以免费取消,填 0 表示发布后立即开始收费 |
cancel.fee.amount | 超过免费时间后取消一次收取的固定手续费,填 0 表示不收费 |
cancel.fee.economy | 手续费使用的经济 ID,必须在 economy.currencies 中存在 |
cancel.fee.system-percent | 系统保留的手续费比例,剩余部分平均发给接取者 |
取消成功后:
- 尚未发出的托管奖励和小费全部退回发布者。
- 当前仍在接取的玩家全额退还押金,并自动取消该悬赏。
- 超过免费时间时,先从发布者指定币种账户扣除手续费。
- 手续费扣除系统抽成后,平均发给所有曾经接取过该悬赏的玩家;不能整除的零头由系统保留。
- 没有任何玩家接取过时,不产生玩家分成。
- 余额不足、经济不可用、悬赏已关闭或已经被其他子服结算时,取消失败,不会改变悬赏状态。
本地、MySQL 和 Redis 都会锁定取消结果。同一条悬赏不会在一个子服取消、另一个子服同时完成。
全局限制
bounty:
max-published-per-player: 5
max-accepted-per-player: 10
default-expire-hours: 24
allow-publisher-accept: false
refund-on-expire-percent: 100
tip-min-unaccepted-minutes: 30
cancel:
free-minutes: 30
fee:
amount: 100
economy: money
system-percent: 10| 配置 | 说明 |
|---|---|
max-published-per-player | 每名玩家最多保留多少条自己发布的悬赏 |
max-accepted-per-player | 每名玩家最多同时接取多少条悬赏 |
default-expire-hours | 模板未填写 expire-hours 时的默认时长 |
allow-publisher-accept | 发布者能否接取自己发布的悬赏 |
refund-on-expire-percent | 过期时发布者未发出奖励的退还比例 |
tip-min-unaccepted-minutes | 无人接取多久后允许追加小费 |
cancel.free-minutes | 发布后免费取消的分钟数 |
cancel.fee.amount | 超过免费时间后的固定取消手续费 |
cancel.fee.economy | 取消手续费使用的经济 ID |
cancel.fee.system-percent | 手续费由系统保留的百分比 |
正式开放前建议用两名测试玩家完整跑一次发布、接取、完成、押金退还和过期退款。
