EasyVip

EasyVip

一个用于Minecraft 1.21.1 NeoForge的现代服务端VIP管理模组,支持可配置的等级、激活密钥、奖励包、限时VIP、审计日志、WebStore履行,以及可选的LuckPerms/FTB Ranks集成。

EasyVIP

EasyVIP 是一个适用于运行 NeoForge 的 Minecraft 服务器的现代且高度可配置的服务端 VIP 管理模组。

创建临时或永久的 VIP 等级、生成激活密钥、发放可配置的激活礼包、执行命令、管理奖励包、集成您的 WebStore,并对每次激活保持完全控制。

EasyVIP 专为需要可靠 VIP 系统的服务器所有者设计,无需依赖 RCON 或在每次购买后手动执行命令。


主要特性

可配置的 VIP 等级

根据服务器需求创建任意数量的 VIP 等级。

每个 VIP 都可以拥有自己独立的:

  • 显示名称
  • 颜色
  • 优先级
  • 默认时长
  • 激活模式
  • 叠加行为
  • 激活命令
  • 到期命令
  • 激活消息
  • 到期消息
  • 激活物品礼包

VIP 可以是临时的或永久的,玩家可以同时拥有多个 VIP 等级。

根据您的配置,EasyVIP 可以自动选择最高优先级的 VIP,或允许玩家自行选择其激活的等级。


安全的激活密钥

管理员可以为 VIP 和奖励包生成唯一密钥。

密钥支持:

  • 可配置的前缀和长度
  • 自定义字符集
  • 有限或无限次使用
  • 绑定玩家的密钥
  • 激活前可选确认
  • 命令冷却时间
  • 维度限制
  • 管理检查与删除
  • 实体激活物品

示例:

/easyvip use EVIP-ABC123

也可使用可选的别名:

/activate <key>
/usekey <key>
/vip <key>

当启用确认功能时,玩家必须确认激活后密钥才会被消耗:

/easyvip confirm

实体密钥物品

EasyVIP 可以将配置好的 Minecraft 物品转换为实体激活密钥。

默认情况下,模组使用绊线钩,但可以在配置中更改物品。

实体密钥使用受保护的 EasyVIP 标记和存储在物品自定义数据中的密钥代码,防止普通的重命名物品被接受为有效密钥。

管理员可以使用以下命令给予实体密钥:

/easyvip admin giveitemkey <player> <code>

激活礼包

每个 VIP 等级都可以拥有自己的激活礼包。

礼包支持:

  • 原版物品
  • 模组物品
  • 自定义数量
  • 附魔
  • 基于百分比的奖励几率
  • 通过 SNBT 存储的复杂物品
  • 稀有物品全服公告

示例:

[[items]]
item = "minecraft:diamond"
amount = 16

[[items]] item = "minecraft:diamond_pickaxe" amount = 1 chance = 100

[items.enchants] efficiency = 10 fortune = 5 unbreaking = 10

[[items]] item = "minecraft:elytra" amount = 1 chance = 25

您也可以直接从游戏内物品栏构建 VIP 激活礼包:

/easyvip savevipactivation <tier>

EasyVIP 将自动生成相应的配置文件。


奖励包与变体

除了 VIP 等级之外,EasyVIP 还支持可配置的奖励包。

奖励包可以包含:

  • 物品
  • 服务器命令
  • 随机奖励
  • 多个可选择的变体
  • 玩家特定的待定选择
  • 可配置的选择过期时间

玩家可以使用以下命令选择待定的奖励包变体:

/easyvip variant choose <package> <variant>

管理员也可以直接发放奖励包:

/easyvip admin givepackage <player> <package_id>

随机奖励池

为命令、消息、宝可梦、物品、宝箱、称号或任何其他服务器奖励创建可复用的随机池。

奖励池支持简单值和加权值。

示例:

[pools.shiny_pokemon]
values = [
    "Pikachu",
    "Bulbasaur",
    "Charmander",
    "Squirtle"
]

[pools.rare_pokemon]

[[pools.rare_pokemon.weighted]] value = "Lucario" weight = 50

[[pools.rare_pokemon.weighted]] value = "Garchomp" weight = 25

奖励池可以在激活命令中使用:

[vips.masterball.commands]
activate = [
    "$pokemon = %random(shiny_pokemon)%",
    "givepokemon %player% $pokemon shiny",
    "broadcast %player% received a shiny $pokemon!"
]

这使得 EasyVIP 能够与 Cobblemon 命令、经济模组、宝箱系统、权限、称号系统以及其他服务端工具集成。


LuckPerms 和 FTB Ranks 集成

EasyVIP 提供与以下内容的可选兼容性:

  • LuckPerms
  • FTB Ranks

集成通过可配置且经过安全验证的服务器命令执行。

这使得可以:

  • 激活 VIP 时添加权限组
  • VIP 到期时移除权限组
  • 分配称号
  • 执行来自其他服务端模组的命令
  • 创建完全自定义的激活工作流程

使用 EasyVIP 不强制要求安装 LuckPerms 或 FTB Ranks。


WebStore 集成

EasyVIP 支持通过安全的 HTTPS 轮询进行外部 WebStore 订单履行。

模组可以:

  • 检索待处理的购买
  • 安全地领取购买
  • 发放对应的 VIP 密钥
  • 确认成功发放
  • 重试临时失败
  • 支持多个 Minecraft 服务器
  • 同步玩家身份和在线状态
  • 使用服务器特定的标识符和密钥前缀

履行流程不需要 RCON,也不会在 Minecraft 服务器内部暴露 HTTP 监听器。

这使得 EasyVIP 适用于与自定义网站和基于 Rails 的 WebStore 集成。


自动过期

EasyVIP 会定期检查活动的 VIP 并自动处理已过期的订阅。

过期检查在以下时机进行:

  • 服务器启动时
  • 玩家登录时
  • 通过自动调度器
  • 配置重载后

当 VIP 过期时,EasyVIP 可以:

  • 移除活动的等级
  • 选择另一个可用的等级
  • 执行到期命令
  • 移除权限组
  • 显示可配置的消息
  • 在审计日志中记录操作

管理审计日志

重要的管理操作会记录在 EasyVIP 审计系统中。

管理员可以使用以下命令查看审计历史:

/easyvip admin audit

也可以选择页面:

/easyvip admin audit <page>

审计系统帮助服务器所有者调查密钥生成、VIP 变更、奖励包发放以及其他管理操作。


安全的持久化

EasyVIP 使用 JSON 文件存储其核心数据,具有:

  • 原子写入
  • 自动备份
  • 面向恢复的持久化
  • 密钥、VIP 和待定选择的独立存储

WebStore 履行系统也可以使用本地 SQL 存储,以实现可靠的处理和发放控制。


配置与本地化

EasyVIP 使用存储在以下目录中的可读 TOML 配置文件:

config/easyvip/

主要文件包括:

common.toml
messages.toml
tiers.toml
pools.toml
activation_items/

模组目前支持:

  • 英语 (en-us)
  • 巴西葡萄牙语 (pt-br)

消息支持 Minecraft 颜色代码和占位符,可以使用以下任一格式:

{player}
%player%

配置可以在不重启服务器的情况下重新加载:

/easyvip reload

您也可以在使用前验证配置文件:

/easyvip config validate

主要玩家命令

/easyvip use <key>
/easyvip confirm
/easyvip info
/easyvip info <player>
/easyvip time
/easyvip select <tier>
/easyvip variant choose <package> <variant>
/easyvip variant pending
/viptime
/activate <key>
/usekey <key>
/vip <key>

主要管理员命令

/easyvip admin addvip <player> <tier> <duration>
/easyvip admin removevip <player> <tier>
/easyvip admin generate vip <tier> <duration>
/easyvip admin generate reward <package>
/easyvip admin givepackage <player> <package>
/easyvip admin giveitemkey <player> <key>
/easyvip createvip <id> <display_name> [color]
/easyvip savevipactivation <tier>
/easyvip key list
/easyvip key info <code>
/easyvip key delete <code>
/easyvip package list
/easyvip package info <id>
/easyvip active set <player> <tier>
/easyvip admin audit
/easyvip reload
/easyvip config validate

需求

  • Minecraft 1.21.1
  • NeoForge 21.1.226 或更新版本
  • Java 21

EasyVIP 目前适用于 NeoForge。

项目结构中存在 Fabric 模块用于未来开发,但目前不支持 Fabric。


安装

  1. 为 Minecraft 1.21.1 安装兼容的 NeoForge 服务器。
  2. 将 EasyVIP .jar 文件放入服务器的 mods 文件夹中。
  3. 启动服务器一次。
  4. 打开 config/easyvip/ 目录。
  5. 配置您的 VIP 等级、消息、激活礼包和奖励。
  6. 运行 /easyvip config validate 命令。
  7. 使用 /easyvip reload 命令重新加载配置。

源代码与支持

源代码:

https://github.com/pedro-dalben/EasyVip

问题和错误报告:

https://github.com/pedro-dalben/EasyVip/issues

报告问题时,请包含:

  • EasyVIP 版本
  • Minecraft 版本
  • NeoForge 版本
  • 相关的配置文件
  • 服务器日志
  • 重现问题的步骤

许可证

保留所有权利。