投票管道

投票管道

Hytale投票奖励插件——支持多个服务器列表网站,兼容Webhook和Votifier。可视化奖励构建器,自动发放奖励,无需开放端口。

生活质量

VotePipe - Hytale 统一投票奖励系统

唯一一个通过统一管道同时处理 Webhook 和 Votifier 网站的 Hytale 投票插件。 使用单个插件连接所有 7 个主流服务器列表网站——无需开放端口,无需为每个协议额外设置,无需同时管理多个投票插件。

  • 同一插件支持 Webhook + Votifier —— 原生支持 V1 RSA、V2 HMAC 和 HTTPS Webhook
  • 无需端口转发 —— 仅出站连接保障服务器安全
  • 可视化奖励构建器 —— 通过网页仪表盘配置奖励,无需编写代码
  • 提供免费套餐 —— 几分钟内即可开始使用,无需承诺

支持的提供商

所有提供商的数据都汇入同一个奖励系统——无需额外插件。

Webhook 提供商

提供商 接收的数据
Hytale-Servers.pro Hytale 用户名、投票 ID、服务器标识
HytaleCharts Discord ID 和用户名、服务器统计
Hylist.io 用户名、服务器 ID、总票数

投票通过 HTTPS 到达。您从仪表盘获取一个 Webhook URL 和密钥——将其粘贴到投票网站设置中。

Votifier 提供商

提供商 支持的协议版本
HytaleLobby V1 (RSA) + V2 (HMAC)
HytaleServer.xyz V1 (RSA) + V2 (HMAC)
HytaleOnlineServers V1 (RSA) + V2 (HMAC)
ServeurHytale.fr V1 (RSA) + V2 (HMAC)

投票通过 TCP 使用 Votifier 协议到达。VotePipe 会自动生成您的 RSA 密钥和 HMAC 令牌——只需将仪表盘中的连接信息复制到投票网站即可。必要时支持一键密钥轮换。


快速开始

  1. 下载 VotePipe.jar 并将其放入服务器的 plugins/ 文件夹
  2. 启动服务器 —— 默认配置文件会自动生成
  3. app.votepipe.com 创建一个账户 并添加您的服务器
  4. 从仪表盘的“设置 > 插件”中复制您的插件令牌
  5. 在游戏中设置令牌,使用 /votepipe token vpt_your_token 或编辑 plugins/votepipe/config.json
  6. 在仪表盘中添加提供商 —— 您将获得 Webhook URL 或 Votifier 连接信息,用于粘贴到每个投票网站

投票将在数秒内开始流动。您的服务器仅发起出站请求——无需开放端口,无需防火墙规则。失败的投递将自动重试。


工作模式

自动模式

在仪表盘中配置所有内容。无需代码。

  1. 在仪表盘中进入“设置 > 奖励”
  2. 将“插件模式”设置为 自动
  3. 使用可视化构建器创建奖励配置
  4. 插件自动处理执行、重试和领取跟踪

开发者模式

使用自定义代码实现完全控制。注册一个 VoteReceivedEvent 的处理器,并实现您自己的奖励逻辑。

  1. 在仪表盘中,将“插件模式”设置为 开发者
  2. 注册一个事件处理器(参见下方的 插件 API
  3. 调用 event.success()event.fail(reason) 来报告投递状态

奖励类型

类型 描述 免费版 Pro+
基础奖励 每次投票给予
连续投票奖励 连续投票天数奖励(3、7、14、30天) -
幸运投票 具有可配置层次的随机几率奖励 -
里程碑奖励 达到投票数量阈值时的奖励(10、50、100、500票) -

可用动作

动作是奖励的构建块。您可以在每个奖励配置中自由组合它们。

动作 描述 适用套餐
指令 执行服务器指令(支持 {player} 变量替换) 所有
广播 向所有在线玩家发送消息 所有
玩家消息 向投票者发送私密消息 所有
音效 为投票者播放音效 所有
物品 将物品放入投票者的背包 所有
标题 在屏幕上显示标题/副标题 Pro+
UI 通知 显示游戏内通知弹窗 Pro+

动作中可用的变量:

变量 描述
{player} 玩家用户名
{service} 提供商名称
{vote_count} 玩家的总投票数
{streak} 当前连续投票天数
{provider_server_url} 提供商的服务器/投票页面 URL

文本格式化标签:

标签 效果
<#RRGGBB> 设置十六进制颜色
<BOLD> 粗体文本
<ITALIC> 斜体文本
<MONO> 等宽文本
<RESET> 重置格式

示例:

<#FFD700><BOLD>{player}<RESET> 在 <#00BFFF>{service}<RESET> 上投票了!

配置

配置文件位置:plugins/votepipe/config.json

{
  "token": "vpt_your_token_here",
  "api_base_url": "https://api.votepipe.com/v1",
  "poll_interval_ms": 5000,
  "claim_timeout_ms": 5000,
  "enabled": true,
  "debug": false
}
设置项 默认值 描述
token 必填 来自仪表盘的插件令牌(设置 > 插件)
api_base_url https://api.votepipe.com/v1 API 端点地址
poll_interval_ms 5000 检查新投票的频率(最小 5000 毫秒)
claim_timeout_ms 5000 开发者模式奖励处理器的超时时间
enabled true 启用或禁用插件
debug false 启用详细日志以进行故障排除

指令

指令 描述
/votepipe 显示可用指令列表
/votepipe status 显示连接状态、令牌信息和投票统计
/votepipe reload 从磁盘重新加载配置
/votepipe token <token> 在无需重启服务器的情况下设置插件令牌

插件 API

对于需要完全控制的开发者,VotePipe 同时提供了事件系统和静态 API。

开发者模式事件处理器

import com.mythlane.votepipe.event.VoteReceivedEvent;

public class MyPlugin extends JavaPlugin {
    @Override
    public void setup() {
        getEventRegistry().register(VoteReceivedEvent.class, event -> {
            Player player = server.getPlayer(event.getVoterName());

            if (player != null && player.isOnline()) {
                player.getInventory().add(new ItemStack(Items.DIAMOND, 5));
                player.sendMessage("感谢您在 " + event.getProviderName() + " 上投票!");
                event.success();
            } else {
                event.fail("玩家离线");
            }
        });
    }
}

事件字段:

字段 类型 描述
voteId String 投票 ID(UUID)
voterName String 玩家用户名
provider String 提供商键值
providerName String 提供商显示名称
receivedAt Instant 投票时间戳

静态 API

将 VotePipe 添加为仅编译依赖:

dependencies {
    compileOnly("com.mythlane:votepipe:1.0.1")
}
import com.mythlane.votepipe.api.VotePipe;

// 检查连接状态
boolean connected = VotePipe.isConnected();

// 获取排行榜
VotePipe.getLeaderboard().thenAccept(leaderboard -> {
    for (LeaderboardEntry entry : leaderboard.getEntries()) {
        System.out.println(entry.getRank() + ". " + entry.getPlayerName());
    }
});

// 使用选项获取排行榜
VotePipe.getLeaderboard(new LeaderboardOptions()
    .period(Period.WEEKLY)
    .limit(20)
    .provider("hytalecharts")
);

// 触发手动轮询
VotePipe.triggerPoll();

从 Votifier / NuVotifier 迁移

VotePipe 现在原生支持 Votifier 协议(包括 V1 RSA 和 V2 HMAC),使迁移比以往更简单。您无需更改投票网站发送投票的方式——VotePipe 可以直接接收它们。

迁移步骤

  1. 安装 VotePipe,同时保留您现有的 Votifier 插件

    • 下载 VotePipe.jar 并将其放入您的 plugins/ 文件夹
    • 通过 /votepipe token <token> 设置您的插件令牌
  2. 在 VotePipe 仪表盘中 将您的投票网站添加为 Votifier 提供商

    • VotePipe 会为每个提供商自动生成 RSA 密钥和 HMAC 令牌
    • 将生成的主机、端口和公钥复制到每个投票网站的 Votifier 设置中
    • 对于兼容 V2 的网站,还需复制 HMAC 令牌
  3. 配置奖励

    • 自动模式: 在仪表盘的可视化构建器中设置奖励配置
    • 开发者模式: 将您现有的奖励逻辑移植为使用 VoteReceivedEvent
  4. 在投票通过 VotePipe 正常流转后,移除旧插件

    • plugins/ 中删除 Votifier/NuVotifier
    • 清理旧的配置文件

有哪些变化

迁移前 (Votifier) 迁移后 (VotePipe)
需要开放服务器 8192 端口 无需入站连接
投票直接发送到您的服务器 投票发送到 VotePipe 云端,插件轮询获取
服务器离线时无重试 自动重试直至投递成功
无分析功能 完整仪表盘,包含投票历史、连续天数、排行榜
仅配置文件 可视化奖励构建器 + 配置文件
无 Discord 通知 内置 Discord 通知

套餐对比

功能 免费版 Pro 版 Network 版
自动奖励
奖励配置数 3 5 无限制
每个配置的动作数 5 10 无限制
连续奖励层级 - 5 无限制
幸运投票层级 - 3 无限制
里程碑奖励 - 5 无限制

系统要求

  • Hytale 服务器
  • Java 25 或更高版本
  • VotePipe 账户(免费注册

插件 API 调用(轮询、领取、排行榜)不计入您的速率限制。


支持


许可证

MIT 许可证