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

XFEServerManager

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

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

import com.xfestudio.xfeservermanager.api.util.ApiChecks;
import com.xfestudio.xfeservermanager.api.world.WorldChangeKind;
import java.time.Instant;
import java.util.Objects;
import java.util.Set;

public record WorldChangeQuery(
        Instant fromInclusive,
        Instant toExclusive,
        String actorId,
        String dimensionId,
        Integer centerX,
        Integer centerZ,
        Integer radius,
        Set<WorldChangeKind> kinds,
        String resourceId,
        int limit,
        String cursor
) {
    public WorldChangeQuery {
        Objects.requireNonNull(fromInclusive, "fromInclusive");
        Objects.requireNonNull(toExclusive, "toExclusive");
        if (!fromInclusive.isBefore(toExclusive)) {
            throw new IllegalArgumentException("fromInclusive must precede toExclusive");
        }
        actorId = actorId == null ? "" : actorId;
        dimensionId = dimensionId == null ? "" : dimensionId.toLowerCase(java.util.Locale.ROOT);
        if ((centerX == null) != (centerZ == null)) {
            throw new IllegalArgumentException("centerX and centerZ must be supplied together");
        }
        if (radius != null && (radius < 0 || centerX == null)) {
            throw new IllegalArgumentException("radius requires a center and must be non-negative");
        }
        kinds = ApiChecks.immutableSet(kinds, "kinds");
        resourceId = resourceId == null ? "" : resourceId.toLowerCase(java.util.Locale.ROOT);
        if (limit < 1 || limit > 1_000) {
            throw new IllegalArgumentException("limit must be between 1 and 1000");
        }
        cursor = cursor == null ? "" : cursor;
    }
}