package com.xfestudio.xfeservermanager.api.world;
import com.xfestudio.xfeservermanager.api.util.ApiChecks;
import java.time.Instant;
import java.util.Objects;
import java.util.UUID;
/** One immutable entry in the world event journal. */
public record WorldChangeRecord(
UUID eventId,
Instant timestamp,
long tick,
String dimensionId,
int x,
int y,
int z,
WorldChangeKind kind,
String resourceId,
String actorId,
String cause,
WorldStatePayload beforeState,
WorldStatePayload afterState,
String transactionId,
String modFingerprint,
boolean restorable
) {
public WorldChangeRecord {
Objects.requireNonNull(eventId, "eventId");
Objects.requireNonNull(timestamp, "timestamp");
if (tick < 0) {
throw new IllegalArgumentException("tick must be non-negative");
}
dimensionId = ApiChecks.lowerIdentifier(dimensionId, "dimensionId");
Objects.requireNonNull(kind, "kind");
resourceId = resourceId == null ? "" : resourceId.toLowerCase(java.util.Locale.ROOT);
actorId = actorId == null ? "" : actorId;
cause = ApiChecks.notBlank(cause, "cause");
transactionId = ApiChecks.notBlank(transactionId, "transactionId");
modFingerprint = modFingerprint == null ? "" : modFingerprint;
if (restorable && beforeState == null && afterState == null) {
throw new IllegalArgumentException("restorable records require at least one captured state");
}
}
}
package com.xfestudio.xfeservermanager.api.world;
import com.xfestudio.xfeservermanager.api.util.ApiChecks;
import java.time.Instant;
import java.util.Objects;
import java.util.UUID;
/** One immutable entry in the world event journal. */
public record WorldChangeRecord(
UUID eventId,
Instant timestamp,
long tick,
String dimensionId,
int x,
int y,
int z,
WorldChangeKind kind,
String resourceId,
String actorId,
String cause,
WorldStatePayload beforeState,
WorldStatePayload afterState,
String transactionId,
String modFingerprint,
boolean restorable
) {
public WorldChangeRecord {
Objects.requireNonNull(eventId, "eventId");
Objects.requireNonNull(timestamp, "timestamp");
if (tick < 0) {
throw new IllegalArgumentException("tick must be non-negative");
}
dimensionId = ApiChecks.lowerIdentifier(dimensionId, "dimensionId");
Objects.requireNonNull(kind, "kind");
resourceId = resourceId == null ? "" : resourceId.toLowerCase(java.util.Locale.ROOT);
actorId = actorId == null ? "" : actorId;
cause = ApiChecks.notBlank(cause, "cause");
transactionId = ApiChecks.notBlank(transactionId, "transactionId");
modFingerprint = modFingerprint == null ? "" : modFingerprint;
if (restorable && beforeState == null && afterState == null) {
throw new IllegalArgumentException("restorable records require at least one captured state");
}
}
}