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

XFEServerManager

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

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

import com.xfestudio.xfeservermanager.api.util.ApiChecks;
import java.util.Arrays;
import java.util.Map;
import java.util.Objects;

/** Neutral state handed to codecs. Platform-specific data may be carried as opaque bytes. */
public record WorldStateView(
        WorldStateKind kind,
        String resourceId,
        Map<String, String> properties,
        byte[] opaqueData
) {
    public WorldStateView {
        Objects.requireNonNull(kind, "kind");
        resourceId = ApiChecks.lowerIdentifier(resourceId, "resourceId");
        properties = ApiChecks.immutableMap(properties, "properties");
        opaqueData = Arrays.copyOf(opaqueData, opaqueData.length);
    }

    @Override
    public byte[] opaqueData() {
        return Arrays.copyOf(opaqueData, opaqueData.length);
    }

    @Override
    public boolean equals(Object other) {
        if (this == other) {
            return true;
        }
        if (!(other instanceof WorldStateView that)) {
            return false;
        }
        return kind == that.kind
                && resourceId.equals(that.resourceId)
                && properties.equals(that.properties)
                && Arrays.equals(opaqueData, that.opaqueData);
    }

    @Override
    public int hashCode() {
        int result = Objects.hash(kind, resourceId, properties);
        return 31 * result + Arrays.hashCode(opaqueData);
    }
}