QuizzerBot - 多人服务器答题插件
插件已发布:https://modrinth.com/plugin/quizzerbot
该部分通过ai润色,可直接跳转至下方看详细内容
📌 插件简介
QuizzerBot 是一款为 Minecraft Paper/Bukkit/Spigot 服务端设计的智能答题插件,支持 1.21 及以上版本(已测试 1.21-1.21.5)。插件通过随机触发答题活动,为服务器增添趣味互动元素,同时提供完善的题库管理和玩家数据统计功能。
🎯 插件亮点:独创的抢答机制+奖励顺延系统,既鼓励快速反应,又保证公平性!每日奖励限制防止滥用,是服务器活动玩法的绝佳选择!
🚀 核心功能
- 自动答题活动:随机时间间隔触发全服答题
- 抢答机制:前几名回答的玩家可获得额外奖励
- 智能题库系统:支持选择题/判断题等多种题型
- 玩家数据统计:记录答题次数、正确率等数据
- 可视化排行榜:多种排序方式的玩家排行榜
- 高度可配置:奖励、时间间隔等均可自定义
🔧 安装与配置
- 将插件放入
plugins
文件夹 - 启动服务器自动生成配置文件和数据库
- 修改
config.yml
调整参数(详见下方配置说明) - 使用
/quiz add
命令添加题目
⚙️ 技术细节
- 数据库:使用 SQLite 存储题库和玩家数据
- 计时系统:基于系统时间的精确计时,不受 TPS 影响
- 交互设计:支持点击聊天选项直接答题
- API 版本:1.21+
❓ 常见问题
Q:为什么答题活动没有触发?
A:请检查:
- 玩家数量是否达到
min_players
设置值 - 题库中是否有启用状态的问题
- 系统是否正常加载(查看启动日志)
Q:如何导入题目?
A:目前支持:
- 使用 SQLite 编辑器直接操作数据库
- 通过
/quiz add
命令逐个添加 - (未来版本将支持文件导入)
📧 联系与支持
下面为手搓简介
简单介绍
这是一个minecraft paper系服务端插件,也支持bukkit\spigot等服务端。他的api版本在1.21及以上,经过测试在1.21-1.21.5都可以使用。
插件安装后会释放配置文件和sqlite数据库。数据库内存放题库和玩家数据,请不要删除数据库.db文件。配置文件详情请参考下方配置文件。当插件安装好后开启服务器,会显示如下内容(不同版本以及配置文件不同,内容不完全一样):
[11:15:17 INFO]: [QuizzerBot] Enabling QuizzerBot v1.0-SNAPSHOT
[11:15:17 INFO]: [QuizzerBot] QuizzerBot version v1.0.1 is enabled!
[11:15:17 INFO]: [QuizzerBot] Issues: yanhy2000@foxmail.com 公测期间如有问题请反馈,正式版本发布后将删除本条信息
[11:15:17 INFO]: [QuizzerBot] 测试版信息仅出现在初始化日志与OP帮助菜单内,不影响游玩与使用
[11:15:17 INFO]: [QuizzerBot] 数据库初始化完成
[11:15:17 INFO]: [QuizzerBot] 配置项:最低玩家限制: 1
[11:15:17 INFO]: [QuizzerBot] 配置项:答题时间: 20
[11:15:17 INFO]: [QuizzerBot] 配置项:奖励指令: [say %player% won!, give %player% diamond 1, effect give %player% speed 30 1]
[11:15:17 INFO]: [QuizzerBot] 配置项:每日奖励限制: 5
[11:15:17 INFO]: [QuizzerBot] 配置项:触发间隔: [60, 70]
[11:15:17 INFO]: [QuizzerBot] 答题系统状态已重置
[11:15:17 INFO]: [QuizzerBot] 答题系统已成功启动
如没出现报错即为加载成功。如果是一个人进服测试,请确保配置文件内最低玩家限制为1,否则会因为玩家数量不足不会触发答题活动。
答题活动从开服开始计时,按配置文件内的触发间隔中随机选取一个时间倒计时,倒计时结束会检测触发条件,也就是玩家数量是否达标,然后开始触发答题活动。如题库为空则会在日志播报:
[11:26:10 WARN]: [QuizzerBot] 没有可用的题目或获取题目失败!
管理员可提供指令添加题目(目前不支持导入操作):/quiz add 问题 选项a 选项b 选项c 选项d 正确选项a
,如“/quiz add 工作台需要几个木板合成? 2 4 5 7 b”
当数据库存在题目后,倒计时结束会全服触发答题活动,后台也会出现日志:
[11:31:02 INFO]: [答题Bot] 答题时间到~
[11:31:02 INFO]:
===========问题编号: 1================
工作台需要几个木板合成?
A: 2 B: 4 C: 5 D: 7
=======================================
[11:31:02 INFO]: 答案在 10s 后揭晓,【点击选项】即可答题
>
玩家可以打开聊天框直接点击选项即可作答,或者通过指令/quiz ans [选项]
进行作答。
答题具有抢答机制,前几个答题则判定为抢答(人数可在配置文件修改)。抢答后会在全服显示:
[11:32:37 INFO]: [答题Bot] yanhy2000 抢答成功![1/3]
在抢答名额用完后,剩下的玩家为普通作答。
按照逻辑,只有抢答的玩家答对了才能获得奖励。普通答题玩家答对了没有奖励。但是如果抢答的玩家答错了,奖励会顺延给普通作答玩家。答错没有惩罚。
在答题时间结束后,会揭晓答案并公布答题数据:
[11:32:41 INFO]: [答题Bot] 答案揭晓: 【B】! 抢答正确: 1人, 普通回答正确: 0人, 共发放奖励: 1人
无论答题活动生成成功或者失败,均会在活动结束后开始计时下一场的随机时间。如答题活动正常进行完成,则在揭晓答案后才开始下一场计时。
配置文件
# 答题活动配置
quiz:
# 最小参与玩家数量
min_players: 1
# 活动触发时间范围 (秒) - 系统会在此区间随机选择开始时间
trigger_interval_sec: [20, 25]
# 答题持续时间 (秒) - 从题目公布到揭晓答案的间隔
answer_reveal_delay_sec: 10
# 获胜奖励指令 (多个指令用 | 分隔)
reward_commands:
- 'say %player% won!'
- 'give %player% diamond 1'
- 'effect give %player% speed 30 1'
# 每日奖励领取上限 (每人每天)
daily_reward_limit: 5
# 每回合奖励的玩家数量上限
player_reward_limit: 3
# 每回合抢答玩家数量上限
player_QuickAnswer_limit: 3
数据库结构
可自行将题库导入到数据库,目前插件不支持直接导入外部题库,只能管理员添加或者sql编辑器导入
题目表 (QuizzerBook)
字段名 | 数据类型 | 是否为空 | 默认值 | 说明 |
---|---|---|---|---|
id | INTEGER | NOT NULL | AUTOINCREMENT | 题目ID,主键,自增 |
quiz | TEXT | NOT NULL | - | 题目内容 |
optA | TEXT | NULL | - | 选项A内容 |
optB | TEXT | NULL | - | 选项B内容 |
optC | TEXT | NULL | - | 选项C内容 |
optD | TEXT | NULL | - | 选项D内容 |
answer | TEXT | NOT NULL | - | 正确答案(A/B/C/D) |
isEnable | BOOLEAN | NOT NULL | TRUE | 是否启用该题目 |
showCount | INTEGER | NULL | - | 题目出现次数 |
玩家数据表 (PlayerStats)
字段名 | 数据类型 | 是否为空 | 默认值 | 说明 |
---|---|---|---|---|
uuid | TEXT | NOT NULL | - | 玩家UUID,主键 |
username | TEXT | NOT NULL | - | 玩家用户名 |
total_attempts | INTEGER | NULL | 0 | 总答题次数 |
correct_answers | INTEGER | NULL | 0 | 答对次数 |
quick_answers | INTEGER | NULL | 0 | 抢答次数 |
daily_rewards | INTEGER | NULL | 0 | 每日奖励获得次数 |
last_played_date | TEXT | NULL | - | 最后答题日期(YYYY-MM-DD格式) |
指令帮助
指令未做权限节点处理,仅判断是否op来区分执行指令。后续会加上权限节点。
玩家指令
指令 | 参数 | 说明 | 权限要求 |
---|---|---|---|
/quiz ans | <答案> | 提交答题答案 (A/B/C/D) | 无 |
/quiz me | - | 查看自己的答题统计 | 无 |
/quiz top | [排序方式] | 查看排行榜 (可选排序方式: total/correct/quick/rewards/rate) | 无 |
管理员指令
指令 | 参数 | 说明 | 权限要求 |
---|---|---|---|
/quiz add | <问题> A B [C] [D] <答案> | 添加新题目 (最少2个选项) | OP |
/quiz delete | 删除指定ID的题目 | OP | |
/quiz toggle | 启用/禁用题目 | OP | |
/quiz modify | 修改题目内容 | OP | |
/quiz start | - | 开启答题系统 | OP |
/quiz startnow | - | 立即触发一次答题活动 | OP |
/quiz stop | - | 停止答题活动 | OP |
/quiz list | [show/report] [页码] | 列出所有题目 (可排序) | OP |
/quiz detail | 查看题目详情 | OP | |
/quiz reload | - | 重载插件配置 | OP |
部分指令补充说明
- /quiz start - 服务器开启后答题系统会自动开启,无需手动开启。(该指令有bug,如果通过/quiz stop禁用调度器后,通过start不一定能拉起调度器,可以尝试使用/quiz reload来恢复运行)
- /quiz add - 添加问题时,如果选项不满4个,可使用“-”表示选项为空,触发答题后会自动隐藏空选项
- /quiz startnow - 执行3秒后立即触发一次答题活动。如果答题活动已经开启则无法再次触发,同理如果触发后调度器计时结束,则因为拉起答题失败会直接进行下一轮计时。
- /quiz top/list - 执行后会出现列表数据,列表中每个元素均可点击查看,如玩家信息、题目信息等。
- /quiz modify 可修改该题目对应数据库全部字段:quiz, optA, optB, optC, optD, answer, enable, showCount