FireworkPolymer
我可以用ServerVariables做什么?
这个插件可以让你为服务器和玩家创建他们自己的变量,这意味着你可以完全控制你设置的值。变量可以通过命令控制,你也可以通过 /svar get 命令或者PlaceholderAPI来获取相关变量。

一些使用自创变量可以做到的事:
独创经济系统,可以创建多种货币一个有开关状态的传送门自定义玩家点数系统当玩家犯错的时候设置一定数量的处罚生命条数系统,当玩家死亡的时候减少一条命(配合ConditionalEvents)



特点:
创建玩家变量创建全局(服务器)变量变量种类:文本(TEXT)、整数(INTEGER)、双浮点小数(DOUBLE)为变量设置可以取到的值(设置为其他值时不通过)为可能取到的值返回不同的文本变量初始(预设)值设置/获取/增加/减少/重置特定变量的命令配置简单易上手支持PlaceholderAPI显示变量开发者API支持1.8+MySQL储存


教程:
Config.yml(去除提示消息,汉化版在附件)
config:
  # 自动储存变量的时间(分钟).
  data_save_time: 5
  # 使用MYSQL数据库储存你的!玩家!变量来让数据在不同服之间同步
  mysql_database:
    enabled: false
    host: localhost
    port: 3306
    username: root
    password: root
    database: servervariables

# 可供翻译的文本.
messages:

# 在这个部分你可以创建你自己的变量.
# 除非特别说明所有选项均必填.
variables:
  # 变量名.
  lobby_portal_status:
    # 变量种类. 可以为PLAYER或GLOBAL.
    # GLOBAL: 整个服务器通用的变量.
    # PLAYER: 为玩家专门设置的变量.
    variable_type: GLOBAL

    # 变量种类. 可为TEXT, INTEGER 或 DOUBLE.
    # TEXT: 这个种类可以输入任何内容.
    # INTEGER: 只支持整数.
    # DOUBLE: 支持小数.
    # 如果想用添加/减少变量值的命令,变量种类必须为
    # INTEGER 或 DOUBLE.
    value_type: TEXT

    # 变量的预设值(不进行设置的时候的默认值).
    initial_value: "off"

    # [这部分可选]
    # 变量可以为哪些值. 除了下面定义的值外不能设置其他值
    # 格式: ;(可选)
    # "展示名" 部分是可选的,它会定义变量的显示内容
    # 也就是作为PlaceholderAPI变量被解析出来的内容.
    # 一般来说可为值是一个单词, 如果你需要表示一个连续的句子
    # 你可以用这样的格式: "this_is_the_first_value"
    possible_values:
     - "off;&c&l传送门已关闭"
     - "on;&a&l传送门已开启"
#例子
player_influence:
   variable_type: PLAYER
   value_type: INTEGER
   initial_value: 0复制代码配合ConditionalEvents
你可以在ConditionalEvents中检测变量变化,以此来执行你想要的动作,例如:
Events:
  event:
    type: custom
    custom_event_data:
      event: svar.ajneb97.api.VariableChangeEvent
      player_variable: getPlayer()
      variables_to_capture:
     - '%variable_type%;getVariable().getVariableType()'
      - '%variable_name%;getVariable().getName()'
      - '%new_value%;getNewValue()'
    conditions:
   - "%variable_name% == player_gems"
    - "%new_value%
    actions:
      default: []复制代码PlaceholderAPI变量
%servervariables_globalvalue_% (返回一个全局变量的值)
%servervariables_value_% (返回一个玩家变量的值)
%servervariables_globaldisplay_% (返回一个全局变量的展示名)
%servervariables_display_% (返回一个玩家变量的展示名)

命令
(玩家参数只有在变量种类为玩家时才需要填,你可以在命令末尾添加silent:true来让命令不返回提示消息)
- /svar set (可选) (可选)silent:true (设置变量值)
- /svar get (可选) (可选)silent:true (获取变量值)
- /svar add (可选) (可选)silent:true (增加一个变量的值,只有变量种类为 INTEGER 或 DOUBLE 才可用)
- /svar reduce (可选) (可选)silent:true (减少一个变量的值,只有变量种类为 INTEGER 或 DOUBLE 才可用)
- /svar reset (可选) (可选)silent:true (重置一个变量的值)
- /svar reload (重载配置文件)
(命令别名: /servervariables)

权限
servervariables.admin,可访问所有命令

限制
不能设置带空格的值,比如 /svar set myvariable "new result of the variable" ,如果你想让变量返回这种结果,你需要为变量设置展示名

API
你可以通过ServerVariablesAPI类访问API
//方法
String result = ServerVariablesAPI.getServerVariableValue(String variableName);
String result = ServerVariablesAPI.getPlayerVariableValue(String playerName,String variableName);
ServerVariablesPlayer player = ServerVariablesAPI.getPlayerByName(String playerName);
ServerVariablesPlayer player = ServerVariablesAPI.getPlayerByUUID(String uuid);

// 事件

// 当变量改变时触发.
@EventHandler
public void onVariableChange(VariableChangeEvent event){
  Player player = event.getPlayer();
  Variable variable = event.getVariable();
  String newValue = event.getNewValue();
}复制代码