hytale-server/com/hypixel/hytale/procedurallib/json/SeedString.java

57 lines
1.5 KiB
Java

package com.hypixel.hytale.procedurallib.json;
import io.sentry.util.Objects;
import javax.annotation.Nonnull;
public class SeedString<T extends SeedResource> {
public static final SeedResource DEFAULT_RESOURCE = new SeedResource() {};
@Nonnull
protected final T t;
protected final String original;
protected final String seed;
protected final int hash;
public SeedString(String original, @Nonnull T t) {
this(original, original, t);
}
public SeedString(String original, String seed, @Nonnull T t) {
this.original = original;
this.seed = seed;
this.t = (T)Objects.requireNonNull(t, "SeedResource must not be null. Use SeedString#DEFAULT");
this.hash = this.seed.hashCode() * 114512143;
}
@Nonnull
public SeedString<T> append(String suffix) {
return new SeedString<>(this.original, this.seed + suffix, this.t);
}
@Nonnull
public SeedString<T> appendToOriginal(String suffix) {
return new SeedString<>(this.original, this.original + suffix, this.t);
}
@Nonnull
public SeedString<T> alternateOriginal(String suffix) {
String altOriginal = this.original + suffix;
String altSeed = altOriginal + this.seed.substring(this.original.length());
return new SeedString<>(altOriginal, altSeed, this.t);
}
@Nonnull
public T get() {
return this.t;
}
@Override
public int hashCode() {
return this.hash;
}
@Override
public String toString() {
return this.seed;
}
}