第 3 课:安全卫士 (Anti-Griefing Tools) —— 守护你的世界
课程时长:120 分钟
技术栈:IntelliJ IDEA + Spigot API 1.21.1 + AI 助手
核心目标:深入理解事件拦截机制(Cancellation),掌握“权限豁免”逻辑,构建一个初级的反破坏(Anti-Grief)系统。
一、 任务背景 (Mission Background)
作为服务器的主人,你最担心的就是辛辛苦苦盖的房子被 TNT 炸毁,或者被岩浆淹没。今天,你将化身**“网络安全官”**,编写一套自动化防御程序,识别并阻止那些破坏行为,同时保留管理员的特殊权力。
二、 学习路线图 (Technical Map)
-
编程技能:事件取消 (setCancelled)、权限判断 (hasPermission)、列表/数组基础(用于关键词过滤)。
-
工程思维:“黑名单”逻辑——默认允许,特定禁止;异常处理——如果破坏者是 OP 怎么办?
-
AI 素养:利用 AI 快速查询上百种事件类型,学习“负面条件判断”的逻辑描述。
三、 核心项目:物理防御屏障 (Sprint 1: 45 min)
1. 阻止爆炸与流体破坏
我们需要拦截物理层面的破坏事件。
推荐 Prompt(提示词):
“我正在开发 Spigot 1.21.1 插件。请帮我写一个监听器类:
阻止 TNT 爆炸破坏地形(但可以保留爆炸声和烟雾)。
阻止岩浆(Lava)和水(Water)流动扩散,防止淹没建筑。
当爆炸被阻止时,向附近的管理员发送一条警告信息。”
2. 代码解析:拦截的奥秘
-
关键代码:event.setCancelled(true);
-
Vibe Check:AI 可能会用到 EntityExplodeEvent(爆炸)和 BlockFromToEvent(流体)。
请问 AI:如果我想让 TNT 能炸飞怪兽但不能炸坏方块,应该修改哪一行?(提示:event.blockList().clear())。
四、 多任务挑战:文明社区与特权 (Sprint 2: 45 min)
防御不仅在物理层面,还在社交和管理层面。
五、 工程思维:性能与优先级 (Engineering Logic: 15 min)
思考题: 如果服务器有 100 个人同时在聊天,你的插件每秒要检查 1000 个词汇,服务器会卡吗?
-
性能考量:为什么聊天过滤要用 AsyncChatEvent(异步)?
-
优先级管理:如果另一个插件也想管理爆炸,谁先说了算?
-
AI 任务:向 AI 提问:“什么是 @EventHandler(priority = EventPriority.HIGHEST)?我应该在什么时候使用它?”
-
六、 安全演习与 Debug (Testing: 15 min)
-
实弹演习:拿出一颗 TNT 并在出生点引爆。地面坏了吗?你收到警告了吗?
-
权限穿透:把自己降级为玩家(/deop),测试能否在公屏发送敏感词。
-
AI 纠错:如果岩浆在桶里倒不出来(放不下方块),说明你的流体拦截太严格了。请问 AI:“如何区分‘自然流动’和‘玩家放置方块’?”
七、 自学习与探究 (Self-Learning)
拓展思考:
-
方块保护:你能利用 AI 写出“防止玩家在出生点周围 10 格内放火”的代码吗?
-
自动禁言:如果一个玩家连续发送 3 次敏感词,能否自动执行指令 /mute?
八、 成果交付 (Deliverables)
-
演示:在岩浆喷发和 TNT 阵中大楼岿然不动的神奇景象。
-
配置清单:展示你的敏感词列表(黑名单)。
-
Prompt 笔记:记录你是如何让 AI 区分“方块爆炸”和“方块掉落”的。
九、 老师的 Vibe Tips (结语)
“真正的‘安全卫士’不是死板的禁止,而是聪明的判断。今天你学会了 setCancelled,这就是你对游戏规则的最终否决权。利用 AI 去探索更多 Event,你会发现自己不仅是这个世界的守护者,更是规则的制定者。”