资源图标

原创 闭源 还在赤IA自托管的史?来试试ias3!自动上传cloudflare! V1.1

请登录后获取
版权类型
原创
插件中文名称
IA自动上传S3
插件英文名称
ias3
原帖地址
#
支持的核心(服务端)
  1. Spigot
  2. Paper
  3. Purpur
  4. PufferFish
  5. 其他核心
语言支持
中文(简体)
适配版本(Java)
  1. 1.21
  2. 1.20
  3. 1.19
  4. 1.18
  5. 1.17
你是否每次更新 ItemsAdder 后都要手动 FTP 上传 `resourcepack.zip` 到云端?还在为了资源包分发单独开一个 Web 服务器?

**ias3** 彻底解决这个痛点 —— 在你执行 `/iazip` 生成资源包后,插件**自动检测文件变化**,**自动上传到 Cloudflare R2**(或任何 S3 兼容存储)。

## 核心特性

- `/iazip` 执行后 **自动检测** 文件变化并上传
- 支持 **Cloudflare R2**、AWS S3、MinIO 等所有 S3 兼容存储
- **去抖动机制**,一次 `/iazip` 只触发一次上传,不会重复
- 启动时自动上传已有资源包
- 异步执行,**不阻塞主线程**,不会造成服务器卡顿
- 热重载配置,`/ias3 reload` 无需重启
- 无外部依赖,纯手写 AWS V4 签名,不使用 AWS SDK
- JAR 仅 **15 KB**

## 适用场景

- 使用 ItemsAdder 插件,需要将资源包分发到公网
- 想用 Cloudflare R2 的免费 CDN 带宽加速玩家下载
- 厌倦了每次手动 FTP / SCP 上传资源包
- 需要自动化 CI/CD 流程的服务器运维

## 支持平台

| 平台 | 兼容 |
|---|---|
| Paper / Purpur / Pufferfish | 完全支持 |
| Spigot | 完全支持 |
| Minecraft 版本 | 1.17 - 1.21.x |
| Java 版本 | 17+ |

> 不支持 Fabric / Forge(模组端)和 BungeeCord / Velocity(代理端)

## 安装方法

1. 下载 `ias3-1.0-SNAPSHOT.jar`,放入服务器的 `plugins/` 目录
2. 重启服务器或执行 `/reload`
3. 编辑 `plugins/ias3/config.yml` 填入 R2 凭据(配置说明见下方)
4. 执行 `/ias3 reload` 使配置生效

**前置插件:** ItemsAdder(软依赖,无 ItemsAdder 时插件不工作但不影响服务器运行)

## 配置教程

### 第一步:获取 Cloudflare R2 凭据

1. 打开 [Cloudflare Dashboard](https://dash.cloudflare.com) → 左侧菜单 **R2**
2. 点击右上角 **"管理 R2 API 令牌"** → **"创建 API 令牌"**
3. 令牌名称随意,权限选 **"对象读取和写入"**
4. 创建后立即复制 **"为 S3 客户端使用以下凭据"** 中的两项:
- Access Key ID
- Secret Access Key
5. 同时复制 **Endpoint**:`https://<account_id>.r2.cloudflarestorage.com`

### 第二步:修改 config.yml

将以上信息填入 `plugins/ias3/config.yml`:

```yaml
s3:
endpoint: "https://你的account_id.r2.cloudflarestorage.com"
access-key: "你的Access Key ID"
secret-key: "你的Secret Access Key"
bucket: "你的桶名"
region: "auto" # 重要:R2 必须用 auto/weur/eeur/wnam/enam/apac
object-key: "resourcepack.zip"

resource-pack:
path: "plugins/ItemsAdder/output/resourcepack.zip"

auto-upload:
on-startup: true
watch-changes: true
upload-delay: 3
```

### R2 区域码对照

| 值 | 含义 |
|---|---|
| `auto` | 自动选择(推荐) |
| `weur` | 西欧 |
| `eeur` | 东欧 |
| `wnam` | 北美西部 |
| `enam` | 北美东部 |
| `apac` | 亚太 |

**和 R2 控制台中显示的管辖权地保持一致即可。**

### 第三步:热重载配置

在游戏内或控制台执行:
```
/ias3 reload
```

看到 `配置已重载` 即生效。

## 命令与权限

| 命令 | 描述 | 权限 |
|---|---|---|
| `/ias3 upload` | 手动上传资源包 | `ias3.admin` |
| `/ias3 reload` | 重载配置文件 | `ias3.admin` |

默认所有 OP 拥有 `ias3.admin` 权限。

## 工作流程

```
玩家执行 /iazip
│
▼
ItemsAdder 生成 resourcepack.zip
│
▼
ias3 检测到文件变化(WatchService)
│
▼
延迟 3 秒(去抖动 + 防文件未写完)
│
▼
计算文件 SHA256,AWS V4 签名
│
▼
HTTP PUT 上传到 R2
│
▼
控制台输出公开 URL
```

上传成功后,将 URL 填入 `server.properties`:
```properties
resource-pack=https://你的account_id.r2.cloudflarestorage.com/你的桶名/resourcepack.zip
```

## 上传到 AWS S3

插件同样支持标准 AWS S3,只需修改配置:

```yaml
s3:
endpoint: "https://s3.us-east-1.amazonaws.com"
region: "us-east-1" # 注意:S3 用标准 AWS region
```

任何 S3 兼容的存储(MinIO / 腾讯云 COS / 阿里云 OSS)都可以,只要支持 AWS V4 签名。

## 常见问题

**Q: 上传提示 401 Unauthorized?**

A: R2 令牌可能刚创建还未生效,等 2-3 分钟再试。如果持续 401,去 R2 控制台重新创建一个令牌。

**Q: 上传提示 403 SignatureDoesNotMatch?**

A: `region` 配置错误。R2 不能用 `us-east-1`,必须用 `auto` / `weur` 等 R2 专用值。

**Q: 执行 `/iazip` 后没有自动上传?**

A: 检查 `config.yml` 中:
- `auto-upload.watch-changes` 是否为 `true`
- `resource-pack.path` 路径是否和 ItemsAdder 输出路径一致

**Q: 上传走代理怎么办?**

A: 在服务器启动参数中添加 `-Dhttp.proxyHost=代理IP -Dhttp.proxyPort=代理端口`
作者
左泄
价格
500.00金粒
下载
2
查看
308
首次发布
最后更新

评分

0.00 星 0 次评分

最新更新

  1. 1.1

    更新sha上传不匹配
后退
顶部 底部