掉落分配、竞拍与经验共享
GTDungeonTeam 的掉落系统不依赖副本插件。只要玩家有队伍,就可以按配置接管拾取事件。GTMobDrops 只是额外兼容入口,不是唯一来源。
队伍掉落分配
yaml
loot:
enabled: true
mode: random
require-team-toggle: true
require-active-run: false
same-world-only: true
include-picker: true
announce: true流程:
- 玩家拾取地上掉落物。
- 插件检查玩家是否有队伍。
- 检查全局掉落分配是否启用。
- 检查队伍自己的掉落分配开关。
- 检查是否需要正在副本中。
- 检查黑名单。
- 如果物品命中竞拍规则,进入竞拍池。
- 否则按
mode分给队伍成员。
分配模式
| 模式 | 说明 |
|---|---|
random | 从候选队员中随机一个 |
round_robin | 队伍内轮流分配 |
leader | 优先给队长 |
picker | 给拾取者 |
off | 不接管掉落 |
候选队员受这两个字段影响:
yaml
same-world-only: true
include-picker: truesame-world-only: true 时,只分给同世界在线队员。include-picker: false 时,拾取者不参与本次分配。
队伍开关
yaml
loot:
require-team-toggle: true开启后,队长还要打开队伍自己的开关:
text
/gdt team loot on或在队伍界面点击“掉落物分配”按钮。
如果想所有队伍默认都生效:
yaml
team:
default-random-distribution: true
loot:
require-team-toggle: false不要求副本运行
yaml
loot:
require-active-run: false这表示普通组队也能分配掉落。
如果只想副本内生效:
yaml
loot:
require-active-run: true掉落黑名单
yaml
loot:
blacklist:
materials:
- BARRIER
lore-keywords:
- "绑定"
- "限定"匹配黑名单的物品不接管,仍按原版拾取。
materials 写材料名。lore-keywords 会去掉颜色后做包含匹配。
分配消息和动作
yaml
loot:
announce: true
message: "&a<receiver> 获得队伍分配物品 &f<item_name> &7x<amount>"
actions:
distributed: []可用变量:
text
<team>
<team_id>
<team_name>
<picker>
<picker_uuid>
<receiver>
<receiver_uuid>
<item_name>
<item_type>
<amount>
<loot_mode>示例:记录日志。
yaml
loot:
actions:
distributed:
- "[console] say <receiver> 获得 <item_name> x<amount>"GTMobDrops 兼容
yaml
compatibility:
gtmobdrops:
enabled: true
party-distributor:
enabled: true
priority: 100
mode: damage_top
require-active-run: false| 字段 | 作用 |
|---|---|
enabled | 是否启用 GTMobDrops 兼容 |
party-distributor.enabled | 是否注册队伍分配桥 |
priority | 分配优先级 |
mode | 兼容分配策略 |
require-active-run | 是否要求副本运行中 |
mode 常用:
text
random
round_robin
killer
damage_top没有安装 GTMobDrops 时,插件自己的拾取分配仍然可用。
掉落竞拍
竞拍适合稀有装备、材料、箱子、坐骑碎片。命中规则的物品不会直接分配,而是进入队伍竞拍池。副本结束后逐件拍卖。
yaml
loot:
auction:
enabled: true
require-active-run: true
duration-seconds: 20
reset-seconds-on-bid: 12
start-price: 100
min-increment: 10
tax-rate: 0.08| 字段 | 作用 |
|---|---|
enabled | 是否启用竞拍 |
require-active-run | 是否只收集副本运行中的物品 |
duration-seconds | 每件物品默认竞拍秒数 |
reset-seconds-on-bid | 有人加价后倒计时刷新秒数 |
start-price | 默认起拍价 |
min-increment | 默认最低加价 |
tax-rate | 系统手续费,0.08 表示 8% |
无人出价时,物品由系统回收。
有人出价时,胜者获得物品,金额扣掉手续费后,全队在线成员均分。
竞拍规则
yaml
loot:
auction:
rules:
rare:
currency: money
duration-seconds: 20
reset-seconds-on-bid: 12
start-price: 100
min-increment: 10
tax-rate: 0.08
include:
names:
- "传说"
lore-keywords:
- "史诗"
- "可竞拍"
nbt-keywords:
- "Auctionable"
materials:
- DIAMOND_SWORD命中任意一类即可进入竞拍。
| 匹配项 | 说明 |
|---|---|
names | 匹配物品显示名,去颜色后包含判断 |
lore-keywords | 匹配 Lore,去颜色后包含判断 |
nbt-keywords | 匹配物品序列化文本,适合特殊标记 |
materials | 匹配原版材料名 |
每条规则可以单独设置货币、起拍价、最低加价、手续费和时间。
多货币
默认金币:
yaml
loot:
auction:
currencies:
money:
name: "金币"
balance: ""
format: "<amount>金币"
take-actions: []
give-actions: []balance 为空时,优先走 GTCore 经济接口,再走 Vault。
点券示例:
yaml
loot:
auction:
currencies:
points:
name: "点券"
balance: "%playerpoints_points%"
format: "<amount>点券"
take-actions:
- "[console] points take <player> <amount>"
give-actions:
- "[console] points give <player> <amount>"| 字段 | 作用 |
|---|---|
balance | 出价前读取余额,支持 PAPI 和公式 |
take-actions | 胜者扣款动作 |
give-actions | 给队员发分红动作 |
format | 显示格式 |
不同物品用不同货币:
yaml
rules:
vip_box:
currency: points
start-price: 50
min-increment: 5
include:
names:
- "会员宝箱"竞拍变量
消息和动作可用:
text
<auction_id>
<auction_rule>
<team>
<team_id>
<picker>
<picker_uuid>
<bidder>
<bidder_uuid>
<bid_amount>
<bid_amount_raw>
<highest_bid>
<highest_bid_raw>
<item_name>
<item_type>
<item_amount>
<start_price>
<start_price_raw>
<min_increment>
<min_increment_raw>
<next_min_bid>
<next_min_bid_raw>
<currency>
<currency_name>
<auction_left_seconds>
<auction_reset_seconds>
<tax_rate>
<tax_amount>
<share_amount>
<share_members>竞拍界面常用:
text
<auction_active>
<auction_item>
<auction_amount>
<auction_highest_bid>
<auction_bidder>
<auction_left_seconds>
<auction_next_min_bid>
<auction_currency_name>竞拍命令
text
/gdt auction info
/gdt auction open
/gdt bid <金额>客户端 UI 可直接做输入框;原版 GUI 环境可以走聊天栏输入。
经验共享
yaml
exp-share:
enabled: true
require-active-run: false
same-world-only: false
include-earner: false
announce: true
message: "&a<receiver> 获得队伍经验共享 &f<exp>"
proportions:
default: 0
2: 5
3: 10
4: 15含义:
- 队伍 2 人时,队友获得本次经验的 5%。
- 队伍 3 人时,队友获得本次经验的 10%。
- 队伍 4 人时,队友获得本次经验的 15%。
include-earner: false 时,获得经验的人不拿自己的共享经验。
可用变量:
text
<earner>
<earner_uuid>
<receiver>
<receiver_uuid>
<exp>