XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEServerManager

【Java】我的世界XFE服务器管理器

公开
关注 0 Fork 0 Star 0
UTF-8
package com.xfestudio.xfeservermanager.core.trigger;

import java.time.Instant;
import java.util.Objects;
import java.util.UUID;

/** Durable value for one declared trigger variable and one resolved storage key. */
public record TriggerVariableState(
        UUID triggerId,
        String variableName,
        String storage,
        String storageKey,
        String valueType,
        String valueJson,
        Instant expiresAt,
        long revision,
        Instant updatedAt) {
    public TriggerVariableState {
        Objects.requireNonNull(triggerId, "triggerId");
        variableName = required(variableName, "variableName");
        storage = required(storage, "storage");
        storageKey = required(storageKey, "storageKey");
        valueType = required(valueType, "valueType");
        valueJson = required(valueJson, "valueJson");
        if (revision < 0) throw new IllegalArgumentException("revision must not be negative");
        Objects.requireNonNull(updatedAt, "updatedAt");
    }

    public boolean expiredAt(Instant instant) {
        return expiresAt != null && !expiresAt.isAfter(instant);
    }

    private static String required(String value, String field) {
        if (value == null || value.isBlank()) throw new IllegalArgumentException(field + " is required");
        return value.strip();
    }
}