• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
CombatProtectPlugin —— 战斗防丢物插件

原创 开源 工具 CombatProtectPlugin —— 战斗防丢物插件 1.0.0

请登录后获取
版权类型
原创
插件中文名称
战斗防丢物
插件英文名称
CombatProtectPlugin
原帖地址
#
支持的核心(服务端)
  1. Spigot
  2. Paper
  3. Purpur
语言支持
多语言
前置组件
适配版本(Java)
  1. 最新版本
  2. 1.21
  3. 1.20
================================================================
⚔️ CombatProtectPlugin —— 战斗防丢物插件 ⚔️
================================================================
1787535297185.webp

🛡️ 在玩家战斗时,保护手中物品不被误丢;战斗结束 5 秒后自动解除保护。

📦 版本: 1.0.0
🖥️ 兼容: Paper 1.20.1 ~ 1.21.4
✍️ 作者: yzmtcd


================================================================
🤔 为什么需要这个插件
================================================================

PvP 和 PvE 服务器里,玩家在激烈战斗中误按 Q 键丢掉手中武器或
珍稀物品的情况屡见不鲜。一旦物品落地,往往被怪物踢飞、被岩浆
吞没,或者被对手顺手捡走。玩家事后追悔莫及,管理员也频繁收到
申诉。

CombatProtectPlugin 从源头解决这个问题:战斗状态下锁定 Q 键
丢弃,但不影响背包内的正常整理操作。


================================================================
⭐ 核心功能 ⭐
================================================================

🗡️ [1] 战斗状态检测
----------------------------------------------------------------

插件监听 EntityDamageByEntityEvent 事件,覆盖以下战斗场景:

⚔️ 玩家用近战武器攻击怪物
🤺 玩家攻击其他玩家(PvP)
👹 玩家被怪物攻击
🏹 弓箭、三叉戟等投射物命中目标

只要玩家作为攻击者或受害者参与以上任何一种伤害事件,即进入
战斗状态。


🚫 [2] 智能丢弃拦截
----------------------------------------------------------------

进入战斗状态后:

❌ 按 Q 键丢弃主手/副手物品
=> 拦截,动作栏提示"战斗中无法丢弃手中的物品!"

✅ 打开背包(E 键)从背包格子拖拽物品到外界丢弃
=> 允许,这是正常的背包整理操作

✅ 打开箱子、工作台等容器时操作
=> 不受影响

判断逻辑基于检测玩家光标上是否有物品(getItemOnCursor()),
能准确区分"手中丢弃"与"背包内拖拽"两种行为。


⏱️ [3] 战斗计时与状态延续
----------------------------------------------------------------

⏰ 进入战斗后开始计时,默认 5 秒倒计时
🔄 如果在 5 秒内再次发生战斗行为,计时器刷新,战斗状态持续
🔒 连续战斗场景下,状态不会中途断开
✅ 直到 5 秒内无任何战斗发生,才正式解除保护


📺 [4] 屏幕提示
----------------------------------------------------------------

战斗进行中,动作栏实时显示倒计时:

[MD] ⚔ 战斗状态 | 剩余 3 秒 [/MD]

战斗结束时,屏幕中央以 Title 大字提示:

[MD] ✔ 战斗结束 你可以安全地丢弃物品了 [/MD]


🌐 [5] 全部文本可自定义
----------------------------------------------------------------

所有提示文字均存放在语言文件中,服务器管理员可直接编辑,无需
修改代码或重新编译:

🇨🇳 lang/zh_CN.yml 简体中文(默认)
🇬🇧 lang/en_US.yml English

支持自定义语言文件:在 lang/ 目录下新建 xx_YY.yml,然后在
config.yml 中切换即可。


================================================================
📥 安装方法
================================================================

1️⃣ 将 CombatProtectPlugin-1.0.0.jar 放入服务器的
plugins/ 文件夹

2️⃣ 启动(或重启)服务器

3️⃣ 插件自动生成配置文件和语言文件:
📄 plugins/CombatProtectPlugin/config.yml
📄 plugins/CombatProtectPlugin/lang/zh_CN.yml
📄 plugins/CombatProtectPlugin/lang/en_US.yml

4️⃣ 根据需要修改配置后,执行 /combatprotect reload 热重载


================================================================
📋 配置文件说明
================================================================

📄 config.yml 内容如下:

[MD] ```yaml # 战斗结束后需要等待的秒数(无战斗行为后才解除战斗状态) combat-timeout: 5 # 语言设置(zh_CN / en_US / 自定义) language: zh_CN # 战斗状态显示方式(actionbar / none) display-mode: actionbar # 战斗结束时是否使用 Title 大字显示 show-combat-end-title: true ``` [/MD]

📄 lang/zh_CN.yml 可自由修改所有文本,内容如下:

[MD] ```yaml combat-status: "&c⚔ 战斗中!请勿丢弃物品!" combat-ended-title: "&a✔ 战斗结束" combat-ended-subtitle:"&7你可以安全地丢弃物品了" drop-denied: "&c⚠ 战斗中无法丢弃手中的物品!" combat-actionbar: "&c⚔ 战斗状态 &7| &f剩余 &e{time}&f 秒" ``` [/MD]

💡 说明:&c &a &7 &f 等是 Minecraft 颜色代码,对应:
🔴 &c = 红色 🟢 &a = 绿色 ⚪ &7 = 灰色 ⬜ &f = 白色
🟡 &e = 黄色 修改时保留这些代码即可改变游戏内文字颜色。


================================================================
🎮 命令与权限
================================================================

[MD] | 命令 | 权限 | 说明 | |------|------|------| | `/combatprotect reload` | `combatprotect.reload`(OP 默认拥有) | 热重载配置和语言文件 | | `/cp reload` | 同上 | 简写别名 | | `/combatp reload` | 同上 | 简写别名 | [/MD]


================================================================
🔄 版本兼容
================================================================

[MD] | 项目 | 说明 | |------|------| | 服务端 | Paper 1.20.1 ~ 1.21.4(兼容 Spigot 派生服务端) | | API 版本 | `api-version: '1.21'` | | Java | 17 及以上(1.21.4 服务端需 Java 21) | [/MD]

🔧 插件使用 Adventure API 的 Component 处理消息显示,使用长期稳定
的事件 API(PlayerDropItemEvent、EntityDamageByEntityEvent),
确保在 1.20.1 到 1.21.4 之间无需修改即可运行。主要在 1.21.4
服务器上测试验证。


================================================================
⚠️ 已知行为
================================================================

💀 玩家死亡时,Paper 1.20.2+ 会额外触发 PlayerDropItemEvent,
插件已做安全处理,不会影响死亡掉落逻辑

🚪 战斗状态下退出服务器,战斗状态自动清除,不影响下次登录

📌 插件不处理玩家死亡后的物品掉落,仅拦截主动丢弃行为


================================================================
📝 更新日志
================================================================

🎉 v1.0.0
----------------------------------------------------------------

✅ 首个正式版本
🗡️ 实现战斗状态检测(近战、投射物、PvP、PvE)
🚫 实现智能丢弃拦截(允许背包内拖拽,拦截 Q 键丢弃)
⏱️ 实现战斗计时器(5 秒续期机制)
📺 实现动作栏倒计时显示与 Title 战斗结束提示
🌐 支持中英双语,语言文件可自由修改
🔧 兼容 Paper 1.20.1 ~ 1.21.4


================================================================
📦 文件清单
================================================================

本压缩包包含以下文件:

📦 CombatProtectPlugin-1.0.0.jar 编译后的插件(放入 plugins/)
📄 CombatProtectPlugin-MineBBS.txt 本说明文档
📁 source/ 完整源码目录

📂 源码目录结构:

[MD] ``` source/ ├── pom.xml Maven 构建配置 ├── README.md 源码说明 └── src/main/ ├── java/com/combatprotect/ │ ├── CombatProtectPlugin.java 插件主类 │ ├── CombatManager.java 战斗状态管理器 │ ├── language/ │ │ └── LanguageManager.java 多语言文件管理器 │ └── listeners/ │ └── CombatListener.java 战斗事件监听器 └── resources/ ├── plugin.yml 插件描述文件 ├── config.yml 默认配置文件 └── lang/ ├── zh_CN.yml 简体中文语言文件 └── en_US.yml 英文语言文件 ``` [/MD]

================================================================
作者
yzmt cd
价格
10.00金粒
下载
1
查看
51
首次发布
最后更新

评分

0.00 星 0 次评分

yzmt cd 的其他资源

后退
顶部 底部