ServerVariables | 玩家的自定义数据和变量

ServerVariables | 玩家的自定义数据和变量

[服务器端] 此模组允许您为服务器和玩家创建自己的变量,这意味着您可以完全控制设置哪些数值

实用

ServerVariables

基于 Ajneb97 的 Minecraft ServerVariables 插件

简介

这是一个 Hytale 模组,允许在 MySQL 中存储和管理玩家变量,并具有可配置的验证和限制功能。

作者: DonKolia 版本: 1.0.0

功能特性

  • ✅ 在 MySQL 中持久化存储变量
  • ✅ 支持数据类型的验证系统(INTEGER、DOUBLE、TEXT)
  • ✅ 可配置的限制(最小值/最大值、最大字符数)
  • ✅ 自动处理超出范围的值
  • ✅ 为其他插件提供公共 API
  • ✅ 通过 YAML 文件进行配置
  • ✅ 完整的命令系统,支持静默模式
  • ✅ 自动推导初始值

安装方法

  1. ServerVariables.jar 放入 Hytale 服务器的 mods/ 文件夹中
  2. 启动服务器以自动生成配置文件
  3. 编辑 plugins/DonKolia_ServerVariables/config.json,填入你的 MySQL 凭据
  4. plugins/DonKolia_ServerVariables/variables/ 目录下配置你的变量
  5. 重启服务器或使用 /svar reload 命令

配置

config.json

config.json 文件会自动生成在 plugins/DonKolia_ServerVariables/ 目录下:

{
  "databaseHost": "localhost",
  "databasePort": 3306,
  "databaseName": "hytale_vars",
  "databaseUser": "root",
  "databasePassword": "password"
}

数据库

插件会自动创建 server_variables 表:

CREATE TABLE server_variables (
    uuid VARCHAR(36) NOT NULL,
    player_name VARCHAR(16),
    var_key VARCHAR(64) NOT NULL,
    var_value TEXT,
    PRIMARY KEY (uuid, var_key)
);

字段说明:

  • uuid - 玩家的 UUID
  • player_name - 玩家名称(方便查询)
  • var_key - 变量名称
  • var_value - 存储的值

变量配置

变量定义在 plugins/DonKolia_ServerVariables/variables/ 目录下的 YAML 文件中。

示例文件

首次启动时,会创建两个示例文件:

variables_numerales.yml

variables:
  oro:
    value_type: INTEGER
    limitations:
      max_value: 999999
      min_value: 0
      manage_out_of_range: true

  nivel:
    value_type: INTEGER
    limitations:
      max_value: 100
      min_value: 1
      manage_out_of_range: true

  experiencia:
    value_type: INTEGER
    limitations:
      max_value: 1000000
      min_value: 0
      manage_out_of_range: true

  puntos-habilidad:
    value_type: INTEGER
    limitations:
      max_value: 500
      min_value: 0
      manage_out_of_range: true

  reputacion:
    value_type: DOUBLE
    limitations:
      max_value: 100.0
      min_value: -100.0
      manage_out_of_range: true

variables_tipo_texto.yml

variables:
  rango:
    value_type: TEXT
    limitations:
      max_characters: 20

  titulo:
    value_type: TEXT
    limitations:
      max_characters: 30

  clan:
    value_type: TEXT
    limitations:
      max_characters: 16

  prefijo:
    value_type: TEXT
    limitations:
      max_characters: 10

  sufijo:
    value_type: TEXT
    limitations:
      max_characters: 10

变量结构

variables:
  variable-name:
    value_type: INTEGER|DOUBLE|TEXT
    limitations:
      # 对于 INTEGER 和 DOUBLE 类型:
      max_value: 100
      min_value: 0
      manage_out_of_range: true

      # 对于 TEXT 类型:
      max_characters: 50

值类型

value_type

  • INTEGER - 整数(例如:1、100、-5)
  • DOUBLE - 小数(例如:1.5、99.99、-10.25)
  • TEXT - 自由文本

限制选项

对于数值型变量(INTEGER/DOUBLE):

  • max_value - 允许的最大值
  • min_value - 允许的最小值(同时也是初始值)
  • manage_out_of_range - 如果设置为 true,会自动将超出范围的值调整为最接近的限制值

对于文本型变量(TEXT):

  • max_characters - 允许的最大字符数

初始值

初始值是自动推导得出的:

  • INTEGER/DOUBLE:取 min_value 的值
  • TEXT:空字符串 ""

重载变量

在创建或修改 YAML 文件后:

/svar reload

命令

所有命令都使用 /svar <子命令> <参数> 的格式。

/svar set <变量名> <值> <玩家名> [silent:true]

设置变量的值。

验证规则:

  • 变量必须在 YAML 文件中定义
  • 值必须与变量的类型匹配
  • 会应用已配置的限制

示例:

/svar set oro 1000 DonKolia
/svar set nivel 5 DonKolia
/svar set rango "Guerrero" DonKolia
/svar set reputacion 75.5 DonKolia silent:true

/svar get <变量名> <玩家名>

获取变量的值。

行为:

  • 如果数据库中没有该变量,则返回初始值
  • 验证变量是否已在 YAML 中定义

示例:

/svar get oro DonKolia
/svar get nivel DonKolia

/svar add <变量名> <值> <玩家名> [silent:true]

向数值型变量(INTEGER 或 DOUBLE)增加值。

验证规则:

  • 仅适用于 INTEGER 或 DOUBLE 类型的变量
  • 增加值后会应用限制

示例:

/svar add oro 100 DonKolia
/svar add reputacion 5.5 DonKolia silent:true

/svar reduce <变量名> <值> <玩家名> [silent:true]

减少数值型变量(INTEGER 或 DOUBLE)的值。

验证规则:

  • 仅适用于 INTEGER 或 DOUBLE 类型的变量
  • 减少值后会应用限制

示例:

/svar reduce oro 50 DonKolia
/svar reduce reputacion 10.0 DonKolia silent:true

/svar reset <变量名> <玩家名> [silent:true]

将变量重置为初始值。

行为:

  • INTEGER/DOUBLE:重置为 min_value
  • TEXT:重置为空字符串

示例:

/svar reset oro DonKolia
/svar reset nivel DonKolia silent:true

/svar reload

重新加载插件配置和 YAML 变量。

示例:

/svar reload

silent:true 参数

在命令末尾添加 silent:true 可以抑制确认消息。

示例:

/svar set oro 1000 DonKolia silent:true

限制管理

manage_out_of_range: true

启用后,超出范围的值会被自动调整:

oro:
  value_type: INTEGER
  limitations:
    max_value: 1000
    min_value: 0
    manage_out_of_range: true

示例:

  • /svar set oro 1500 DonKolia → 保存为 1000
  • /svar set oro -50 DonKolia → 保存为 0

manage_out_of_range: false

禁用后,操作会被拒绝:

nivel:
  value_type: INTEGER
  limitations:
    max_value: 100
    min_value: 1
    manage_out_of_range: false

示例:

  • /svar set nivel 150 DonKolia → 错误:"值 150 超过了最大值 100"

常见错误信息

"变量 'X' 未在配置文件中定义" 该变量在任何 YAML 文件中都不存在。请先创建它。

"变量 'X' 的值类型无效。应为:INTEGER" 提供的值与变量的类型不匹配。

"值 X 超过了最大值 Y" 该值超过了允许的最大值,并且 manage_out_of_range 设置为 false

"文本超过了最大长度 X 个字符" 文本对于 TEXT 变量来说太长了。

许可

由 DonKolia 为 Hytale 创建