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);
}
}
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);
}
}