LayeredCarta.java
package com.hypixel.hytale.builtin.hytalegenerator.framework.cartas;
import com.hypixel.hytale.builtin.hytalegenerator.framework.interfaces.functions.TriCarta;
import com.hypixel.hytale.builtin.hytalegenerator.threadindexer.WorkerIndexer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import javax.annotation.Nonnull;
public class LayeredCarta<R> extends TriCarta<R> {
@Nonnull
private final List<TriCarta<R>> layers;
@Nonnull
private final List<R> allValues;
@Nonnull
private final R defaultValue;
public LayeredCarta(@Nonnull R defaultValue) {
Objects.requireNonNull(defaultValue);
this.layers = new ArrayList(1);
this.allValues = new ArrayList(1);
this.defaultValue = defaultValue;
this.allValues.add(defaultValue);
}
public R apply {
.defaultValue;
(TriCarta<R> layer : .layers) {
layer.apply(x, y, z, id);
(value != ) {
result = value;
}
}
result;
}
List<R> {
Collections.unmodifiableList(.allValues);
}
LayeredCarta<R> {
Objects.requireNonNull(layer);
.layers.add(layer);
.allValues.addAll(layer.allPossibleValues());
;
}
String {
String.valueOf(.layers);
+ var10000 + + String.valueOf(.allValues) + + String.valueOf(.defaultValue) + ;
}
}