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

原创 开源 娱乐 JMFirstResponders v2.0.2

完成注册/登录后下载
版权类型
原创
插件中文名称
第一响应人
插件英文名称
JMFirstResponders
原帖地址
https://github.com/jingmi0v0/JMFirstResponders
支持的核心(服务端)
  1. Spigot
  2. Paper
  3. Leaves
语言支持
中文(简体)
适配版本(Java)
  1. 最新版本
[MD] # JMFirstResponders > 一款面向 Minecraft Paper 1.21.4 服务器的全方位角色扮演(RP)插件。 此页面为基础展示,详情请到[URL='https://github.com/jingmi0v0/JMFirstResponders']github[/URL]查看 > > 作者:[jingmi0v0] --- ## 目录 - [简介](#简介) - [功能总览](#功能总览) - [安装](#安装) - [依赖](#依赖) - [快速开始](#快速开始) - [命令一览](#命令一览) - [占位符一览](#占位符一览) - [权限一览](#权限一览) - [配置体系](#配置体系) - [存储系统](#存储系统) - [模块状态](#模块状态) - [构建](#构建) - [项目结构](#项目结构) --- ## 简介 **JMFirstResponders** 是一个功能完备的 Minecraft RP 插件,目前以 **PD(警察部门)** 模块为核心,同时包含枪械系统、濒死系统和多后端存储架构。插件参考 LAPD/NYPD 体系设计,提供了完整的职级晋升、绩效考评、通缉追捕、调度通信和月度工资发放等机制。 模块代号: | 缩写 | 全称 | 状态 | |------|------|------| | **PD** | Police Department(警察部门) | ✅ **已实现** | | **GUN** | 枪械系统 | ✅ **已实现** | | **Dying** | 濒死系统 | ✅ **已实现**(需 EMS 配合) | | **EMS** | Emergency Medical Service(医疗部门) | ❌ **暂未实现** | | **FD** | Fire Department(消防部门) | ❌ **暂未实现** | --- ## 功能总览 ### 🚔 PD(警察部门) 完整的警察职级模拟系统,采用 8 级 NYPD 职级体系。包含职级晋升、绩效考评、月度工资发放、通缉追捕、支援代码调度、三部门通信、警笛、补给、逮捕/拘留/罚款/警告/搜身等完整执法流程。 📖 **详见 [`READ/README_PD.md`](READ/README_PD.md)** ### 🔫 枪械系统 基于钓鱼竿 + 雪球发射机制的枪械系统: - 5 种枪械:泰瑟枪、Glock_17、MP5、AR-15、HK416 - 独立的伤害值、弹夹容量、备弹管理、特殊效果(减速/凋零等) - 动作栏实时显示弹药状态 - 自动换弹逻辑 - 射击音效与粒子效果 ### 🚑 EMS(医疗部门)—请查看github 📖 **详见 [`READ/README_EMS.md`](READ/README_EMS.md)** ### 🚒 FD(消防部门)请查看github 📖 **详见 [`READ/README_FD.md`](READ/README_FD.md)** ### 💀 濒死系统 - 生命归零后进入濒死状态(锁血 1 点、游泳姿态、禁止移动) - 可配置倒计时(默认 10 分钟) - 濒死时限制命令执行(白名单/黑名单模式) - 濒死警员自动触发 CODE 99 紧急调度 - **注意**:需要 EMS 模块配合使用 ### 💾 存储系统 支持三种存储后端,通过策略模式路由: | 类型 | 说明 | 适用场景 | |------|------|----------| | **YAML** | 本地文件存储(默认) | 单服小型服务器 | | **SQLite** | 嵌入式数据库 | 单服中型服务器 | | **MySQL** | 远程数据库 | 多服共享数据/大型服务器 | --- ## 安装 ### 前置条件 1. **Paper 1.21.4** 服务端(或兼容的衍生端) 2. **Java 21** 运行环境 ### 步骤 1. 从 Release 下载 `JMFirstResponders-1.1.0.jar` 2. 将 jar 放入服务端的 `plugins/` 目录 3. 安装 [Vault](https://www.spigotmc.org/resources/vault.34315/) 插件和一个经济插件(如 EssentialsX、CMI) 4. 安装 [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) 插件(软依赖) 5. 重启服务端 6. 编辑 `plugins/JMFirstResponders/config.yml` 进行基础配置 7. 编辑 `plugins/JMFirstResponders/configs/config_PD.yml` 配置 PD 模块参数 8. 使用 `/jmfirstresponders reload` 重载配置 --- ## 依赖 | 依赖 | 版本 | 类型 | 用途 | |------|------|------|------| | [Paper API](https://papermc.io/) | 1.21.4-R0.1-SNAPSHOT | 必要 | Minecraft 服务端 API | | [VaultAPI](https://github.com/MilkBowl/VaultAPI) | 1.7 | 必要 | 经济系统(罚款/工资发放) | | [PlaceholderAPI](https://placeholderapi.com/) | 2.11.6 | 可选 | 占位符扩展(`%rp_*%`) | > Vault 和配套的经济插件是**必须安装**的,否则 PD 模块的罚款和工资功能无法正常工作。 --- ## 快速开始 > PD 模块的详细命令、权限和配置请参阅 [`READ/README_PD.md`](READ/README_PD.md)。 ### 1. 使用枪械 ```minecraft /rpgun <枪械名称> ``` --- ## 命令一览 PD 相关的所有命令(`/pd`、`/code`、`/wanted`、`/rpcar`)及支援代码表详见 [`READ/README_PD.md`](READ/README_PD.md)。 | 命令 | 描述 | |------|------| | `/911 [pd\|ems\|fd]` | 紧急呼叫(打开 GUI) | | `/deth` | 濒死时放弃医疗帮助 | | `/rpgun <枪械名>` | 创建枪械(仅 OP) | | `/jmfirstresponders reload` | 重载插件配置 | --- ## 占位符一览 安装 PlaceholderAPI 后可使用以下占位符: | 占位符 | 描述 | |--------|------| | `%city_p_deth_time%` | 濒死剩余时间(分钟) | | `%rp_Occupation%` | 完整职业显示(格式见 config.yml) | | `%MiniMessage_rp_Occupation%` | MiniMessage 格式的职业显示 | PD 模块占位符(`%RP_name%`、`%rp_pd_level%`、`%rp_pd_rank_name%`、`%rp_pd_performance%`、`%rp_pd_on_duty%`、`%rp_wanted_reward%` 等)详见 [`READ/README_PD.md`](READ/README_PD.md)。 --- ## 权限一览 ### PD 权限 所有 `RP_PD.*` 权限节点及按职级分配的 RBAC 配置详见 [`READ/README_PD.md`](READ/README_PD.md)。 ### 其他权限 | 权限节点 | 描述 | |----------|------| | `RP_car.create` | 创建服务车辆 | | `rpgun.create` | 创建枪械(仅 OP) | --- ## 配置体系 ### 主配置 `config.yml` 位于 `plugins/JMFirstResponders/config.yml`,包含: - **lang** — 语言选择(`zh_cn` / `en_us`) - **world** — 启用的世界列表 - **fine** — 公资金账户名称和初始资金 - **storage** — 存储类型(YAML / SQLITE / MYSQL)及 MySQL 连接参数 - **Dying** — 濒死系统开关、倒计时、命令控制 - **Gun** — 枪械列表、伤害、弹夹容量、特殊效果 - **rp_Occupation** — 职业占位符显示格式 ### PD 配置 PD 模块的 `configs/config_PD.yml`、`premission/premission_PD.yml` 及 GUI 配置详见 [`READ/README_PD.md`](READ/README_PD.md)。 ### EMS / FD 配置 EMS 和 FD 模块暂未实现,相应配置文件及 GUI 均为空,详情见 [`READ/README_EMS.md`](READ/README_EMS.md) 和 [`READ/README_FD.md`](READ/README_FD.md)。 --- ## 存储系统 插件支持三种存储后端,通过 `config.yml` 的 `storage.type` 切换: ### YAML(默认) 无需额外配置,数据存储在 `plugins/JMFirstResponders/data/` 目录下。 ### SQLite 数据存储在 `plugins/JMFirstResponders/data/JMFirstResponders.db`。 ### MySQL 需要配置 `config.yml` 中的 MySQL 连接参数: ```yaml storage: type: MYSQL mysql: host: localhost port: 3306 database: jmfirstresponders username: root password: "" ``` --- --- ## 构建 ### 前置条件 - JDK 21+ - Maven 3.8+ ### 构建步骤 ```bash # 克隆仓库 git clone https://github.com/jingmi0v0/JMFirstResponders.git cd JMFirstResponders # 编译打包 mvn clean package # 输出在 target/JMFirstResponders-1.1.0.jar ``` --- ## 📊 数据统计 (bStats) 本插件使用 [bStats](https://bstats.org) 进行匿名使用统计,帮助作者了解插件使用情况。 [![服务器使用人数](https://bstats.org/signatures/bukkit/FirstResponders.svg)](https://bstats.org/plugin/bukkit/FirstResponders/33152) **统计内容:** | 项目 | 说明 | 查看方式 | |------|------|---------| | 服务器数量 | 有多少服务器正在使用本插件 | 上图徽章(自动更新) | | PD 警员数 | 所有服务器在线的 PD 警员总数 | 面板自定义图表 `pd_players` | | EMS 玩家数 | 所有服务器在线的 EMS 玩家总数 | 面板自定义图表 `ems_players` | | FD 玩家数 | 所有服务器在线的 FD 玩家总数 | 面板自定义图表 `fd_players` | 📈 查看全部统计图表:<https://bstats.org/plugin/bukkit/FirstResponders/33152> ## 项目结构 ``` JMFirstResponders/ ├── pom.xml # Maven 构建配置 ├── README.md # 本文件 ├── READ/ │ ├── README_PD.md # PD 模块详细文档 │ ├── README_EMS.md # EMS 模块文档(暂未实现) │ └── README_FD.md # FD 模块文档(暂未实现) ├── src/ │ ├── main/ │ │ ├── java/me/jingmi/mc/KY/jMCityProtector/ │ │ │ ├── JMFirstResponders.java # 主入口(JavaPlugin) │ │ │ ├── PD/ # 警察部门模块 (~30个文件) │ │ │ │ ├── PDPapiExpansion.java # PlaceholderAPI扩展 │ │ │ │ ├── MiniMessageExpansion.java │ │ │ │ ├── command/ # 7个命令类 │ │ │ │ │ ├── PDCommand.java # /pd 主命令 │ │ │ │ │ ├── PDTabCompleter.java # /pd Tab补全 │ │ │ │ │ ├── CodeCommand.java # /code 支援代码 │ │ │ │ │ ├── CodeTabCompleter.java # /code Tab补全 │ │ │ │ │ ├── Command911.java # /911 紧急呼叫 │ │ │ │ │ ├── DethCommand.java # /deth 放弃救治 │ │ │ │ │ ├── JMFirstRespondersCommand.java # 管理命令 │ │ │ │ │ ├── RPCarCommand.java # /rpcar 服务车辆 │ │ │ │ │ └── WantedCommand.java # /wanted 通缉榜 │ │ │ │ ├── gui/ │ │ │ │ │ └── GUIManager.java # GUI管理 │ │ │ │ ├── listener/ # 5个事件监听器 │ │ │ │ │ ├── PDListener.java │ │ │ │ │ ├── ActivityListener.java │ │ │ │ │ ├── ArrestListener.java │ │ │ │ │ ├── CallListener.java │ │ │ │ │ └── VehicleRideListener.java │ │ │ │ ├── manager/ # 10个子管理器 │ │ │ │ │ ├── PDManager.java # 核心外观类 │ │ │ │ │ ├── WantedManager.java # 通缉系统 │ │ │ │ │ ├── PerformanceManager.java # 绩效系统 │ │ │ │ │ ├── SirenManager.java # 警笛系统 │ │ │ │ │ ├── RadioManager.java # 通信频道 │ │ │ │ │ ├── SupplyManager.java # 补给系统 │ │ │ │ │ ├── BonusManager.java # 工资发放 │ │ │ │ │ ├── CodeManager.java # 支援代码 │ │ │ │ │ ├── DispatchManager.java # 调度系统 │ │ │ │ │ └── VehicleManager.java # 车辆标记 │ │ │ │ └── model/ │ │ │ │ └── PDPlayerData.java # 警员数据 │ │ │ ├── GUN/ # 枪械系统 │ │ │ │ ├── GunManager.java │ │ │ │ ├── command/RPGunCommand.java │ │ │ │ └── listener/GunListener.java │ │ │ └── publicRP/ # 公共RP基础设施 │ │ │ ├── DyingManager.java # 濒死系统 │ │ │ ├── MessageUtil.java # 消息工具 │ │ │ ├── manager/Call911Manager.java # 911呼叫流程 │ │ │ ├── model/ │ │ │ │ ├── DispatchEvent.java # 调度事件 │ │ │ │ ├── PoliceStation.java # 警局区域 │ │ │ │ └── WantedEntry.java # 通缉令 │ │ │ └── storage/ # 存储系统 │ │ │ ├── DataStorage.java # 存储接口 │ │ │ ├── StorageManager.java # 存储路由 │ │ │ ├── YamlStorage.java # YAML实现 │ │ │ ├── SQLiteStorage.java # SQLite实现 │ │ │ └── MySQLStorage.java # MySQL实现 │ │ └── resources/ │ │ ├── plugin.yml # 插件描述 │ │ ├── config.yml # 主配置 │ │ ├── configs/ │ │ │ ├── config_PD.yml # PD配置 │ │ │ ├── config_EMS.yml # EMS配置(空) │ │ │ └── config_FD.yml # FD配置(空) │ │ ├── GUI/ │ │ │ ├── PD.yml # PD菜单GUI │ │ │ ├── 911.yml # 911呼叫GUI │ │ │ ├── EMS.yml # EMS菜单GUI(空) │ │ │ ├── FD.yml # FD菜单GUI(空) │ │ │ ├── wanted.yml # 通缉榜GUI │ │ │ └── code/ │ │ │ ├── PD.yml # PD代码GUI │ │ │ ├── EMS.yml # EMS代码GUI(空) │ │ │ └── FD.yml # FD代码GUI(空) │ │ └── premission/ │ │ └── premission_PD.yml # PD权限配置 ``` --- ## 技术架构 | 设计模式 | 应用位置 | |----------|----------| | **外观模式** | `PDManager` 作为所有子管理器的统一入口 | | **策略模式** | `StorageManager` 根据配置路由到 YAML/SQLite/MySQL | | **命令模式** | `CodeManager.executeCode()` switch 分发 | | **观察者模式** | Bukkit 事件监听器体系 | | **委托模式** | `PDManager` 方法委托给子管理器 | --- ## 开源协议: MIT [/MD]
作者
etjm
下载
1
查看
63
首次发布
最后更新

评分

0.00 星 0 次评分

最新更新

  1. 手铐重构

    ## [2.0.2] — 手铐机制重构 + 执法状态持久化 ### 🔗 手铐机制(重构) - **命令式戴铐**:`/pd handcuff <玩家>` 给目标戴上手铐(替代右键戴铐) -...
后退
顶部 底部