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

XFEServerManager

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

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

import com.xfestudio.xfeservermanager.api.util.ApiChecks;
import java.util.Set;

public record ItemConstraint(
        Set<String> allowedItemIds,
        Set<String> deniedItemIds,
        Set<String> allowedItemTags,
        Set<String> deniedItemTags,
        Integer maximumCount,
        Set<String> allowedDataKeys,
        Set<String> deniedDataKeys
) {
    public ItemConstraint {
        allowedItemIds = ApiChecks.immutableLowercaseSet(allowedItemIds, "allowedItemIds");
        deniedItemIds = ApiChecks.immutableLowercaseSet(deniedItemIds, "deniedItemIds");
        allowedItemTags = ApiChecks.immutableLowercaseSet(allowedItemTags, "allowedItemTags");
        deniedItemTags = ApiChecks.immutableLowercaseSet(deniedItemTags, "deniedItemTags");
        if (maximumCount != null && maximumCount < 1) {
            throw new IllegalArgumentException("maximumCount must be positive when present");
        }
        allowedDataKeys = ApiChecks.immutableLowercaseSet(allowedDataKeys, "allowedDataKeys");
        deniedDataKeys = ApiChecks.immutableLowercaseSet(deniedDataKeys, "deniedDataKeys");
    }

    public static ItemConstraint unrestricted() {
        return new ItemConstraint(Set.of(), Set.of(), Set.of(), Set.of(), null, Set.of(), Set.of());
    }
}