All versions
1.0
Release
Reward 1.0last month 27
Compatibility
Minecraft: Java Edition
26.1.2
Platform
Paper
Changes
1.0 — 首个正式版本 · Initial release
中文
第一个公开版本,悬赏全流程已经跑通:发起 → 全服投票 → 目标暴露 → 追猎 → 按劳分配。
玩法
- 发起与投票:
/rd create <目标> <赏金> <人头数> <原因>,赏金从发起人账户托管扣除;全服弹出可点击公告,满 3 人同意(可配置)才正式发布 - 被悬赏者:常驻发光 + 顶部倒计时 Boss 条 + 禁止一切传送(指令 / 末影珍珠 / 紫颂果,传送门可选)+ 领地保护失效
- 追猎:
/rd tp传送到目标 40 格内的随机安全落点,冷却 90 秒;落点只在不加载新区块的前提下寻找 - 击杀统计:归因覆盖宠物、坐骑、弹射物与间接击杀(点燃 / 摔死),每次击杀全服播报进度
领地(Residence)
- 默认
hunted.residence-action: none—— 一个字节都不动玩家领地,只让"保护"在悬赏期间失效 - 可选
suspend:临时挂起保护 flag,悬赏结束 / 关服 / 下次开服原样还原(备份按 UUID 存residence-backup.yml,还原成功才删除) - 可选
delete:必须显式配置才会删,且不可恢复 - 猎人无需任何领地权限即可进出、破坏、传送(临时权限附件,悬赏结束自动回收)
结算与防赖账
- 打满人头数后私聊发起人战报:
xxx 击杀了 yyy 3 刀 | 占比 60% | 建议分配 600 金币 - 分配支持设为(覆盖重算)、
add追加、take扣减、reset清空、auto按击杀整池重算,每步回显"他现在累计多少、还剩多少没分" - 发放前必须输入文字确认(默认
确认,可配置),防误操作 - 超时自动结算:发起人拖着不分配,到点由系统自动分配并发放(默认平均分,防止他把大头塞给熟人)
- 先落盘再动钱:确认发放与取消退款都是先写终态、再操作经济,崩服不会重复发放或重复退款
经济
auto模式依次尝试 Vault → XConomy 直连 → 内置金币;可用economy.vault-provider指定经济插件- 服务器存在多个经济提供者时会列出全部候选并告警,避免"绑到了另一个经济插件"
- 后端返回码不可信时(如 XConomy 的返回码语义)以余额实际变化为准,不做乐观判断
/rd admin econ test <玩家>一键验钞(入账一笔再扣回,余额复原)
配置与数据安全
config.yml全部设置项带注释,所有玩家可见文案为 MiniMessage,可翻译成任意语言- 升级不用删配置:新增的键自动补进现有文件,保留你的值、注释与缩进;写入前做 YAML 校验,不合法就一个字都不写;配置损坏可从
config.yml.bak自动恢复 /rd reload热重载配置与文案,并把进行中的悬赏按新配置重新同步(不刷屏、不重复动领地)- 数据文件原子写入;读档失败时停止写入并另存
.corrupt,绝不用空数据覆盖
显示
- 顶部公共 Boss 条 + 被悬赏者专属倒计时条 + 猎人专属进度条
/rd hud可只对自己隐藏悬赏 Boss 条(偏好跨登录保留),关键信息改走聊天栏
指令与权限
- 主指令
/rd,别名/bounty、/悬赏;管理端/rd admin …(cancel / force / demo / kill / add|take|set / econ / hud / unglow / diag / reload / history) - 权限:
reward.use(默认所有人)、reward.tp、reward.admin(OP)、reward.bypass(OP)
安装
- 把
Reward-1.0.jar放进plugins/ - 重启服务端(Paper 没有热替换插件类加载器的接口)
- 首次启动会生成
config.yml;装 Residence / Vault 则对应功能自动启用,没装也能跑
已知限制
- 换 jar 必须重启服务端;只改配置 / 文案用
/rd reload - Boss 条与 ActionBar 不支持点击(客户端限制),"点击加入"走聊天栏按钮
hunted.void-residence-for-everyone: true会一并绕过其它保护插件(WorldGuard 等);只想对参与悬赏的人生效就设为false- 需要 Paper 26.1.2 / Java 25
English
Initial public release — the full bounty loop works end to end: post → server vote → target exposed → hunt → payout by kills.
Gameplay
/rd create <target> <reward> <kills> <reason>escrows the reward from the poster; a clickable server-wide announcement is shown and 3 approvals (configurable) are required before it goes live- Target glows permanently, gets a countdown boss bar, has all teleports blocked (commands, ender pearls, chorus fruit; portals optional) and loses land protection
/rd tpteleports hunters to a random safe spot within 40 blocks, 90s cooldown, without loading new chunks- Kill attribution covers pets, mounts, projectiles and indirect kills (fire, fall damage); every kill is announced server-wide
Residence
- Defaults to
none— your players' land is never modified; only the protection is voided while hunted suspendtemporarily suspends protection flags and restores them exactly (UUID-keyed backup, deleted only after a successful restore)deleteis opt-in and irreversible- Hunters need no Residence permissions (temporary permission attachment, revoked when the bounty ends)
Settlement & anti-stall
- The poster receives a report (
xxx killed yyy 3 times | 60% share | suggested 600) - Allocation supports set (recomputes),
add,take,reset, andauto(re-split by kill ratio), always echoing the running total and what's left - Payout requires typing a confirmation phrase
- Auto-settle on timeout if the poster stalls (even split by default)
- State is persisted before any money moves — a crash can't double-pay or double-refund
Economy
autotries Vault → XConomy (direct) → built-in balance;economy.vault-providerpins a specific provider- Multiple providers are listed with a clear warning so you don't silently bind to the wrong economy
- When a backend's return code can't be trusted, the result is judged by the actual balance change
/rd admin econ test <player>performs a live deposit/withdraw check
Config & data safety
- Every setting is commented; all player-facing text is MiniMessage and fully translatable
- Updating never requires deleting your config — new keys are merged in, keeping your values and comments; the result is YAML-validated before writing; a corrupted config is restored from
config.yml.bak /rd reloadhot-reloads settings/messages and re-syncs running bounties- Data files are written atomically; on load failure the plugin stops writing and keeps a
.corruptcopy
Display
- Public boss bar, a private countdown bar for the target, and a personal progress bar per hunter
/rd hudhides bounty boss bars for yourself only, moving key info to chat
Commands & permissions
/rdwith aliases/bounty,/悬赏; admin:/rd admin …(cancel / force / demo / kill / add|take|set / econ / hud / unglow / diag / reload / history)- Nodes:
reward.use(everyone),reward.tp,reward.admin(OP),reward.bypass(OP)
Install
- Drop
Reward-1.0.jarintoplugins/ - Restart the server (Paper has no official plugin reload)
config.ymlis generated on first start; Residence / Vault are picked up automatically if present
Known limitations
- Swapping the jar requires a restart; config/message changes only need
/rd reload - Boss bars and the action bar aren't clickable (client limitation) — "join" is a chat button
hunted.void-residence-for-everyone: truealso bypasses other protection plugins (WorldGuard, etc.)- Requires Paper 26.1.2 / Java 25
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:c53TwThu:ppp9RK6I"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:c53TwThu:ppp9RK6I"
}

