// 
// Decompiled by Procyon v0.6.0
// 

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;
    @Nonnull
    protected final T t;
    protected final String original;
    protected final String seed;
    protected final int hash;
    
    public SeedString(final String original, @Nonnull final T t) {
        this(original, original, t);
    }
    
    public SeedString(final String original, final String seed, @Nonnull final T t) {
        this.original = original;
        this.seed = seed;
        this.t = Objects.requireNonNull(t, "SeedResource must not be null. Use SeedString#DEFAULT");
        this.hash = this.seed.hashCode() * 114512143;
    }
    
    @Nonnull
    public SeedString<T> append(final String suffix) {
        return new SeedString<T>(this.original, this.seed + suffix, this.t);
    }
    
    @Nonnull
    public SeedString<T> appendToOriginal(final String suffix) {
        return new SeedString<T>(this.original, this.original + suffix, this.t);
    }
    
    @Nonnull
    public SeedString<T> alternateOriginal(final String suffix) {
        final String altOriginal = this.original + suffix;
        final String altSeed = altOriginal + this.seed.substring(this.original.length());
        return new SeedString<T>(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;
    }
    
    static {
        DEFAULT_RESOURCE = new SeedResource() {};
    }
}
