CommandMineRewards

CommandMineRewards - 挖矿奖励

当玩家破坏特定方块时执行命令。
Bukkit / Spigot 作者 Datatags 支持版本 1.8 - 1.19
服务器使用量
22
服务玩家数
256
下载量
6,861
插件详细介绍

当玩家破坏方块时,如果被破坏的方块位于配置文件中定义的列表中,插件将遍历每个奖励。奖励的触发机制是:如果随机数落在某个百分比范围内,则执行一系列命令。

核心特性

  • 无限奖励:从 1.2 版本起,你可以在配置中定义任意数量的奖励,并随意命名。你还可以定义多个奖励组,从而拥有多个方块触发列表。
  • 全局倍率:倍率(整数或小数)会乘以每个奖励的触发几率。例如,如果配置中奖励几率为 25%,倍率为 3,则实际几率为 75%。默认倍率为 1(即不影响几率)。
  • 重要提示:请勿将倍率设为 0 来禁用奖励,这会使所有奖励的触发几率变为 0%。要禁用倍率效果,只需将其设为 1。
  • 玩家名占位符:在任何待执行的命令中,%player% 会被替换为破坏方块的玩家名。
  • 游戏内配置:大多数配置选项都可以在游戏内修改,无需编辑配置文件!你可以选择命令方式或 GUI 方式。

快速入门指南

使用 GUI 配置

  • 在游戏中执行 /cmr gui 打开 CMR 配置菜单。你可以在此查看每个奖励“组”以及一些全局设置(如全局奖励几率修改器和世界限制)。
  • 点击一个现有的奖励“组”,或点击绿宝石块创建新组。同一组内的奖励共享一个可触发它们的方块列表,也可以共享其他设置(如世界限制)。
  • 点击草方块来修改触发奖励的方块列表。点击你物品栏中的方块可将其加入列表,点击列表中的方块可将其删除。完成后点击返回。
  • 点击一个现有的“奖励”(命令列表),或点击绿宝石块创建新奖励。每个奖励都有一系列触发时执行的命令,并有一个特定的触发几率。
- 在此菜单中,左击现有命令可在其后添加新命令,右击命令可将其从列表中删除。命令总是按顺序触发。使用 `%player%` 来指代触发奖励的玩家。

完成配置后,请务必删除示例奖励(如果不需要)。

重要命令

  • /cmr:显示插件信息。
  • /cmr help:显示 /cmr 命令的子命令列表。
  • /cmr reload:重新加载倍率、触发奖励的方块列表、奖励本身及其属性(触发几率和触发时执行的命令)。
  • /cmr gui [玩家名]:打开 CMR 配置 GUI。如果指定了玩家名,你可以附加到他们的编辑会话,在 GUI 中拥有与他们相同的权限,并可以替他们点击操作。
  • /cmr debug:启用调试模式和调试日志。控制台将输出大量 CMR 工作时的信息,有助于故障排除。调试日志位于 <服务器根目录>/plugins/CommandMineRewards/debug.log。服务器重启后调试模式会自动关闭。

配置命令

  • /cmr multiplier [倍率值]:读取或更新倍率值。倍率可以是整数或小数。
  • /cmr block add <奖励组名> [方块]:向触发列表中添加方块。可以指定方块名称,或手持方块执行命令。
  • /cmr block remove <奖励组名> [方块]:以同样方式从列表中移除方块。
  • /cmr block list <奖励组名>:以清晰格式列出奖励组中所有触发方块。请确保列表中没有重复方块,否则插件可能行为异常。
  • /cmr reward add <奖励组名> [奖励名]:创建新奖励。如果未指定奖励名,则创建新的奖励组。
  • /cmr reward remove <奖励组名> [奖励名]:删除奖励或奖励组。注意:未指定奖励名时将删除整个奖励组。
  • /cmr reward list [奖励组名]:列出所有已定义的奖励组。如果指定了奖励组名,则列出该组内的所有奖励。
  • /cmr command add <奖励组名> <奖励名> <命令>:向指定奖励添加命令。命令可包含参数空格和 %player% 占位符。
  • /cmr command insert <奖励组名> <奖励名> <插入位置> <命令>:在指定位置插入命令,该位置之后的命令 ID 会顺延。
  • /cmr command replace <奖励组名> <奖励名> <索引> <命令>:替换指定索引处的命令。
  • /cmr command remove <奖励组名> <奖励名> <命令ID>:从奖励中移除命令。可以使用命令 ID 或精确的命令内容(区分大小写)。
  • /cmr command list <奖励组名> <奖励名>:显示奖励的所有命令及其 ID。
  • /cmr world add [世界名] [奖励组名]:将世界添加到奖励组的允许世界列表中。若未指定奖励组,则添加到全局列表。若未指定世界名,则使用当前所在世界。
  • /cmr world remove [世界名] [奖励组名]:从列表中移除世界。
  • /cmr world list [奖励组名]:列出允许的世界。
  • /cmr region add <区域名> [奖励组名]:类似 /cmr world add,但针对 WorldGuard 区域。
  • /cmr region remove <区域名> [奖励组名]:类似 /cmr world remove,但针对区域。
  • /cmr region list [奖励组名]:列出允许的区域。
  • /cmr reward chance <奖励组名> <奖励名> [几率值]:修改或查看奖励的触发几率。

权限节点

基础权限

  • cmr.use.<奖励组名>.<奖励名>:允许玩家接收指定奖励组中特定奖励。
  • cmr.use.*:允许玩家接收配置中定义的所有奖励。
  • cmr.reload:允许用户重载 CMR 配置。
  • cmr.debug:允许用户启用 CMR 调试模式。
  • cmr.gui:允许用户为自己打开新的 CMR GUI 会话。
  • cmr.gui.assist:允许用户附加到其他玩家的 GUI 会话。

配置权限

以下权限默认仅 OP 可用

  • cmr.block:允许查看方块列表。
  • cmr.block.modify:允许使用 /cmr block add/cmr block remove 添加/移除方块。
  • cmr.reward:允许查看奖励名称列表。
  • cmr.reward.modify:允许使用 /cmr reward add/cmr reward remove/cmr reward chance 添加/删除/修改奖励。
  • cmr.command:允许查看奖励触发时执行的命令。
  • cmr.command.modify:允许添加、插入和删除奖励中的命令。
  • cmr.multiplier:允许查看当前倍率值。
  • cmr.multiplier.modify:允许修改倍率设置。
  • cmr.world:允许查看世界列表(包括奖励组和全局)。
  • cmr.world.modify:允许修改世界列表。
  • cmr.region:允许查看区域列表。
  • cmr.region.modify:允许修改区域列表。
  • cmr.silktouchpolicy:允许查看精准采集策略。
  • cmr.silktouchpolicy.modify:允许修改精准采集策略。

配置详解

config.yml 主要选项

  • globalAllowedWorlds:字符串列表。所有奖励生效的世界列表。默认为 ["*"](所有世界)。
  • globalAllowedRegions:字符串列表。类似 globalAllowedWorlds,但针对 WorldGuard 区域。
  • globalSilkTouch:字符串。可选 REQUIREDIGNOREDDISALLOWED。全局精准采集策略,默认为 IGNORED
  • removeInvalidValues:布尔值。启动时是否自动删除方块列表中的无效方块。默认为 false
  • survivalOnly:布尔值。是否仅允许生存模式玩家获得奖励。默认为 true
  • validateWorldsAndRegions:布尔值。是否在使用相关命令时验证世界和区域是否存在。默认为 true
  • verbosity:数字 (0, 1, 2)。控制台信息详细程度。0=仅错误,1=错误及执行的命令,2=全部详细信息。默认为 1。
  • autopickupCompat:布尔值。是否启用与自动拾取插件的兼容模式。除非必要,否则应保持 false。默认为 false
  • randomizeRewardOrder:布尔值。是否随机化奖励的评估顺序,以避免偏向列表中的第一个奖励。默认为 false
  • mcMMOHookEnabled:布尔值。是否启用 mcMMO 挂钩,仅对非玩家放置的方块发放奖励(需要安装 mcMMO)。默认为 false
  • multiplier:数字。奖励几率倍率,与游戏内命令功能相同。默认为 1。

rewards.yml 奖励组结构示例

奖励组名:
  blocks:
    - 方块1
    - 方块2
  allowedWorlds:
    - world
    - world_nether
  allowedRegions:
    - 区域1
  silkTouch: DISALLOWED
  rewardLimit: 1
  rewards:
    奖励A:
      chance: 5
      commands:
        - eco give %player% 200
        - broadcast %player% 收到了奖励!
    奖励B:
      chance: 20
      commands:
        - give %player% diamond 1
        - !msg %player% &a干得漂亮!

字段说明

  • blocks:字符串列表。触发奖励的方块列表。例如,"wheat:true" 检测完全成熟的作物,"wheat:false" 检测未成熟的,仅 "wheat" 则检测所有生长阶段。
  • allowedWorlds:字符串列表。该组奖励生效的世界列表。设为 ["*"] 允许所有世界。若未设置或为空,则回退到 globalAllowedWorlds
  • allowedRegions:字符串列表。类似 allowedWorlds,但针对 WorldGuard 区域。
  • silkTouch:字符串。可选 REQUIREDIGNOREDDISALLOWED。若未设置,回退到 globalSilkTouch
  • rewardLimit:数字。单次破坏方块可获得的奖励数量上限。这会影响奖励的实际触发几率。
  • rewards:该组下的奖励列表。每个奖励包含:
  • chance:数字。奖励触发百分比 (1-100)。
  • commands:字符串列表。触发时执行的命令,可使用 %player% 占位符。
  • silkTouch:(可选)字符串。覆盖奖励组的精准采集策略。

特殊命令

你可以在命令列表中使用以下特殊命令

  • !msg <消息>
  • !title <标题> <副标题> [<淡入时间> <停留时间> <淡出时间>]
  • !sound <音效> [音量] [音高]

更多信息请使用 /cmr help special 查看。

常见问题与解答

Q:自动拾取插件导致 CMR 失效!

  • 确保已在 config.yml 中启用 autoPickupCompat
  • 如果问题依旧,将 verbosity 设为 2,重载插件并破坏方块,然后查看控制台输出。
  • 如果显示事件被取消,可能是自动拾取插件不兼容。已知某些插件与 CMR 兼容。
  • 如果仍无法解决,请联系开发者。

Q:CMR 不工作!

  • 执行 /cmr debug 并破坏方块。控制台应显示有用的错误信息。
  • 如果无法解决,请联系开发者,并提供控制台输出、config.ymlrewards.yml 文件。

Q:如何寻求帮助或报告问题?

  • 通过私信联系开发者。
  • 前往 GitHub 仓库的讨论区。
  • 提交 GitHub Issue。
  • 加入 CMR Discord 服务器。
  • 请注意:请勿在评论中发布错误或问题,开发者无法在那里提供帮助。

Q:CMR 包含统计功能吗?

  • 是的,CMR 包含 metrics(统计),用于了解使用情况。你可以在 <服务器根目录>/plugins/bStats/config.yml 中禁用它。

Q:寻求帮助时需要提供哪些信息?

  • 请提供你的 CMR config.ymlrewards.yml 文件,以及调试模式下的日志。使用 /cmr debug 启用调试模式,在游戏中复现问题几次,然后发送相关文件和 debug.log

Q:CMR 支持 1.12.2 及以下版本吗?

  • 近期 CMR 版本均针对 MC 1.13 或更高版本编译。大部分功能在旧版本上仍可工作,CMR 通常具有良好的向后兼容性。
  • 从 CMR 7.1 开始,不再需要 CMRLegacyWG,所有功能均通过反射处理。
  • 注意:GUI 功能在旧版本上无法使用,原因包括 1.12.2 到 1.13 的更改以及 PersistentDataContainer 在 1.14 之前不可用。
  • 如果你希望在旧版本上获得 GUI 支持,请在讨论区提出,并确保你至少运行 CMR 7.0 并启用统计,以便开发者了解使用情况。

开发与反馈

测试支持版本
1.8 1.12 1.19
版本分布
基本信息
插件名称 CommandMineRewards
作者 Datatags
平台 Bukkit / Spigot
支持版本 1.8 - 1.19
点赞数 3
最近版本
7.2.1 20
7.1.1 1