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