classpublicPriority 3
MaskShader
com.hypixel.hytale.builtin.hytalegenerator.framework.shaders.MaskShader
implements Shader
9
Methods
9
Public Methods
3
Fields
1
Constructors
Constructors
private
MaskShader(Predicate<T> mask, Shader<T> childShader, long seed)Methods
Public Methods (9)
public
MaskShader<T> build()@Nonnull
publicstatic
<T> MaskShader.Builder<T> builder(Class<T> dataType)@Nonnull
public
T shade(T current, long seed)@Override
public
T shade(T current, long seedA, long seedB)@Override
public
T shade(T current, long seedA, long seedB, long seedC)@Override
public
String toString()@Nonnull@Override
public
MaskShader.Builder<T> withChildShader(Shader<T> shader)@Nonnull
public
MaskShader.Builder<T> withMask(Predicate<T> mask)@Nonnull
public
MaskShader.Builder<T> withSeed(long seed)@Nonnull
Fields
Private/Package Fields (3)
private
Shader<T> childShaderprivate
Predicate<T> maskprivate
SeedGenerator seedGeneratorInheritance
Parent
Current
Interface
Child
Use mouse wheel to zoom, drag to pan. Click nodes to navigate.
Related Classes
Used By
Source Code
package com.hypixel.hytale.builtin.hytalegenerator.framework.shaders;
import com.hypixel.hytale.builtin.hytalegenerator.framework.math.SeedGenerator;
import java.util.function.Predicate;
import javax.annotation.Nonnull;
public class MaskShader<T> implements Shader<T> {
private final Shader<T> childShader;
private final Predicate<T> mask;
private SeedGenerator seedGenerator;
private MaskShader(Predicate<T> mask, Shader<T> childShader, long seed) {
this.mask = mask;
this.childShader = childShader;
this.seedGenerator = new SeedGenerator(seed);
}
@Nonnull
public static <T> MaskShader.Builder<T> builder(@Nonnull Class<T> dataType) {
return new MaskShader.Builder<>();
}
@Override
public T shade(T current, long seed) {
return !this.mask.test(current) ? current : this.childShader.shade(current, seed);
}
@Override
public T shade(T current, long seedA, long seedB) {
return this.shade(current, 0L);
}
@Override
public T shade(T current, long seedA, long seedB, long seedC) {
return this.shade(current, 0L);
}
@Nonnull
@Override
public String toString() {
return "MaskShader{childShader=" + this.childShader + ", mask=" + this.mask + ", seedGenerator=" + this.seedGenerator + "}";
}
public static class Builder<T> {
private Shader<T> childShader;
private Predicate<T> mask;
private long seed = System.nanoTime();
private Builder() {
}
@Nonnull
public MaskShader<T> build() {
if (this.childShader != null && this.mask != null) {
return new MaskShader<>(this.mask, this.childShader, this.seed);
} else {
throw new IllegalStateException("incomplete builder");
}
}
@Nonnull
public MaskShader.Builder<T> withSeed(long seed) {
this.seed = seed;
return this;
}
@Nonnull
public MaskShader.Builder<T> withMask(@Nonnull Predicate<T> mask) {
this.mask = mask;
return this;
}
@Nonnull
public MaskShader.Builder<T> withChildShader(@Nonnull Shader<T> shader) {
this.childShader = shader;
return this;
}
}
}