开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[JE服务端] BuildContest-建筑比赛单队单服解决方案的插件实现

 发表于 2024-9-16 12:08:42|显示全部楼层|阅读模式 IP:陕西省
插件发布
中文名:建筑比赛velocity插件
外语名:-
支持版本:1.17.x 1.18.x 1.19.x 1.20.x 1.21.x 
适用服务端:Velocity 
插件属性:本体插件 
插件类型:管理 
前置插件:无前置
来源:原创
原帖地址:https://modrinth.com/plugin/buildcontest
下载地址:https://modrinth.com/plugin/buildcontest
最后更新:2024-09-15
本帖最后由 Hanamizu 于 2024-9-22 06:07 编辑

BuildContest 插件

BuildContest 是一个 Velocity 插件,解决建筑比赛单队单服配置繁琐的问题。插件通过 Docker-compose 启动子服务器,并将玩家传送到对应的子服务器进行竞赛。团队的配置和子服务器的信息都会持久化保存。

功能简介

- **自动创建子服**:通过调用 HTTP 接口,实现基于 Docker Compose 创建队伍服务器,并注册到 Velocity。
- **玩家自动传送**:玩家进入服务器时自动传送到其所属的子服务器。
- **权限控制**:通过 Bearer Token 进行 HTTP 请求的鉴权。
- **防止重复参赛**:添加队伍时,若玩家已存在于其他队伍,则不能再加入其他队伍。

安装步

1. **准备环境**
    - 需要安装 Velocity 代理服务器。
    - 确保已安装 Docker 和 Docker Compose,且配置正确。

2. **制作一个 Minecraft 比赛服务端镜像(子服)**
    - 推荐使用小扳手作为服务端
    - 端口配置为25565,需保证此端可以正常通过代理端访问,例如配置forwarding-mode等。
    - 配置 Dockerfile,用于构建镜像。
    - 打包镜像,如:`docker build -t minecraft-contest:latest .`
    - 创建docker-compose.yml文件,用于启动子服务器。

3. **配置插件**
    - 将插件 jar 文件放入 `plugins/` 目录中。
    - 启动 Velocity 服务器一次以生成配置文件,然后停止服务器进行配置。

4. **配置文件**
    - 在 `plugins/BuilderContest/` 目录下修改 `config.yml` 文件,配置端口等信息。
    - 将 `docker-compose-default.yml` 放置在插件目录下,用于作为启动子服务器的模板。

5. **启动服务器**
    - 启动服务器,获取 `config.yml` 中生成的 `bearer-token`。

配置文件说明

config.yml
  1. ktor:
  2.   http-port: 8080 # HTTP 服务端口。
  3.   port-start: 30000 # 子服务器端口起始值。
  4.   bearer-token: # Bearer Token,初次使用,请不要配置此项(留空)。
  5.   allow-host: "*" # 允许的 Host 地址。
复制代码


docker-compose-default.yml示例
- 请使用`#SERVER_NAME_PLACEHOLDE`来作为docker容器名称的占位符
- 使用`#SERVER_PORT_PLACEHOLDER`来作为端口的占位符
  1. version: '3.8'
  2. services:
  3.   minecraft_server:
  4.     image: minecraft-contest:latest
  5.     container_name: "#SERVER_NAME_PLACEHOLDER"
  6.     ports:
  7.       - #SERVER_PORT_PLACEHOLDER:25565
  8.     volumes:
  9.       # 将本地地图目录挂载到容器内指定的路径
  10.       - ./worlds/#SERVER_NAME_PLACEHOLDER/world:/app/world
  11.     environment:
  12.       EULA: "TRUE"
  13.     restart: unless-stopped
复制代码

使用说明

HTTP 接口

- 插件启动后,将会启动一个 HTTP 服务,默认端口为 `8080`。
- 主要接口:
    - **添加团队**:`POST /team/add`,需要 Bearer Token 鉴权,传入 `teamId`、`teamName` 和 `members` 字段。

示例请求

  1. curl --location --request POST 'http://localhost:8080/team/add' \
  2. --header 'Content-Type: application/json' \
  3. --header 'Authorization: Bearer sSCj4piDoEfV2zIo_C8lD7S4ul0YlVOyBr2BkKpdsTI(请从config.yml中获取)' \
  4. --data-raw '{
  5.     "teamId": "team_1",
  6.     "teamName": "队伍1",
  7.     "members": ["Hanamizu_", "user1"]
  8. }'
复制代码


评分

参与人数 1铁粒 +10贡献 +1收起理由
 Pudd*** + 10 + 1好用!!!

查看全部评分

苦力怕论坛,感谢有您~
 发表于 2024-9-16 12:16:53 来自手机|显示全部楼层 IP:广西
感谢分享
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-9-17 16:27:35 来自手机|显示全部楼层 IP:广西
hydcffdxnjkj
苦力怕论坛,感谢有您~
回复支持

使用道具举报

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供云服务 | GMT+8, 2024-10-27 16:23

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号