package com.hypixel.hytale.builtin.hytalegenerator.assets.vectorproviders;
import com.hypixel.hytale.builtin.hytalegenerator.vectorproviders.CacheVectorProvider;
import com.hypixel.hytale.builtin.hytalegenerator.vectorproviders.ConstantVectorProvider;
import com.hypixel.hytale.builtin.hytalegenerator.vectorproviders.VectorProvider;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.math.vector.Vector3d;
import javax.annotation.Nonnull;
public class CacheVectorProviderAsset extends VectorProviderAsset {
public static final BuilderCodec<CacheVectorProviderAsset> CODEC;
private VectorProviderAsset vectorProviderAsset = new ConstantVectorProviderAsset();
private CacheVectorProviderAsset() {
}
public CacheVectorProviderAsset(@Nonnull VectorProviderAsset vectorProviderAsset) {
this.vectorProviderAsset = vectorProviderAsset;
}
public VectorProvider build(@Nonnull VectorProviderAsset.Argument argument) {
if (this.isSkipped()) {
return new ConstantVectorProvider(new Vector3d());
} else {
VectorProvider vectorProvider = this.vectorProviderAsset.build(argument);
return new CacheVectorProvider(vectorProvider, argument.workerIndexer.getWorkerCount());
}
}
static {
CODEC = ((BuilderCodec.Builder)BuilderCodec.builder(CacheVectorProviderAsset.class, CacheVectorProviderAsset::new, ABSTRACT_CODEC).append(new KeyedCodec("VectorProvider", VectorProviderAsset.CODEC, true), (asset, value) -> asset.vectorProviderAsset = value, (value) -> value.vectorProviderAsset).add()).build();
}
}