贡献指南
欢迎为OPanel项目贡献你的代码!
前置知识
在开始贡献代码之前,请你先了解如何通过fork和Pull Request贡献代码和提交更改
项目结构
opanel
├── frontend/
│ ├── app
│ ├── components
│ └── ...
├── core
├── fabric-...
├── forge-...
├── neoforge-...
├── spigot-...
├── folia-...
└── ...frontend文件夹存放前端页面源码,前端使用Next.js和Shadcn UI进行构建。core文件夹是整个项目的核心,包括一系列核心逻辑和功能,如Web服务器和后端API。- 以
fabric-开头的文件夹是不同Minecraft版本的Fabric模组实现。 - 以
forge-开头的文件夹是不同Minecraft版本的Forge模组实现。 - 以
neoforge-开头的文件夹是不同Minecraft版本的Neoforge模组实现。 - 以
spigot-开头的文件夹是不同Minecraft版本的Bukkit插件实现。 - 以
folia-开头的文件夹是不同Minecraft版本的Folia插件实现。
在插件 / 模组初始化后,程序会在指定端口(默认为3000)启动一个Web服务器,该服务器包括前端和后端API。
在开发环境下,前端页面被部署在3001端口下,然后它会直接连接一个硬编码的后端API网址http://localhost:3000(参见frontend/lib/api.ts)。因此,在开发和调试前端页面时,你的后端Web服务器,也就是插件 / 模组所配置的端口应该设置为3000。
准备工作
在开始之前,你需要安装VSCode和Intellij IDEA。下面的指南将假定你使用的是这两款代码编辑器。
然后,你还需要安装Node.js和jdk。
准备好开发环境后,即可在Github创建本仓库的fork,创建fork时应注意取消勾选"Copy the main branch only",以便后续将代码提交至dev分支。
接着,通过下面的命令clone仓库:
git clone -b dev https://github.com/<your-username>/opanel.git安装依赖
在clone完仓库后,需要下载所有依赖才能正确运行源码。
Gradle 依赖
使用Intellij IDEA打开项目,IDEA会自动启动一个同步任务来下载依赖。
在任务结束后,你可以打开右侧边栏中的Gradle图标来查看可以执行的Gradle任务。如果你能在菜单中找到如
fabric/runServer之类的任务,就证明你的Gradle依赖已经正确安装好了。
Node.js 依赖
- 进入
frontend文件夹
cd frontend- 执行下面的命令来下载依赖
npm install开发
服务端功能 / 后端API
Fabric
执行Gradle菜单中相应Minecraft版本的Fabric任务fabric/runServer。在服务器完全启动后,后端API和生产环境下的前端页面将被部署在3000端口上。
INFO
通常情况下,我们不会使用这里生产环境下的前端页面来开发和调试前端。
Forge / Neoforge / Bukkit
提前准备一个Forge / Neoforge / Bukkit的服务端用于测试,然后按照下面的指南来构建一个jar包,接着将要调试的jar包放进对应的mods或plugins文件夹。在重启服务器(Forge / Neoforge服务端)或执行/reload指令(Bukkit系服务端)后,最新的更改将会应用到你的测试服务器上。
适配新版本
参见适配指南。
前端
在frontend文件夹下执行命令
npm run dev然后生产环境下的前端页面将被部署到3001端口下,接着就可以开始使用浏览器打开http://localhost:3001来调试前端。
构建源码
- 构建前端页面
在frontend文件夹下执行命令
npm run build这一步会自动将打包好的前端页面复制到/core/src/main/resources/web路径下,以备插件 / 模组的构建。
- 构建服务端插件 / 模组
在项目根目录下执行命令
.\gradlew clean build最终构建好的jar包将出现在/build/libs文件夹下。
提交代码
由于本仓库的开发分支不是主分支,因此在push代码时应手动注明dev分支。
git push origin dev若想将你的代码合并到OPanel官方仓库,可以通过Pull Request进行提交。