177 lines
3.9 KiB
Java
177 lines
3.9 KiB
Java
package net.minecraft.world.level.storage;
|
|
|
|
import com.mojang.serialization.Codec;
|
|
import com.mojang.serialization.DynamicOps;
|
|
import com.mojang.serialization.MapCodec;
|
|
import java.util.Collections;
|
|
import java.util.Iterator;
|
|
import java.util.Optional;
|
|
import java.util.stream.Stream;
|
|
import net.minecraft.core.HolderLookup;
|
|
import net.minecraft.nbt.Tag;
|
|
|
|
public class ValueInputContextHelper {
|
|
final HolderLookup.Provider lookup;
|
|
private final DynamicOps<Tag> ops;
|
|
final ValueInput.ValueInputList emptyChildList = new ValueInput.ValueInputList() {
|
|
@Override
|
|
public boolean isEmpty() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public Stream<ValueInput> stream() {
|
|
return Stream.empty();
|
|
}
|
|
|
|
public Iterator<ValueInput> iterator() {
|
|
return Collections.emptyIterator();
|
|
}
|
|
};
|
|
private final ValueInput.TypedInputList<Object> emptyTypedList = new ValueInput.TypedInputList<Object>() {
|
|
@Override
|
|
public boolean isEmpty() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public Stream<Object> stream() {
|
|
return Stream.empty();
|
|
}
|
|
|
|
public Iterator<Object> iterator() {
|
|
return Collections.emptyIterator();
|
|
}
|
|
};
|
|
private final ValueInput empty = new ValueInput() {
|
|
@Override
|
|
public <T> Optional<T> read(String key, Codec<T> codec) {
|
|
return Optional.empty();
|
|
}
|
|
|
|
@Override
|
|
public <T> Optional<T> read(MapCodec<T> codec) {
|
|
return Optional.empty();
|
|
}
|
|
|
|
@Override
|
|
public Optional<ValueInput> child(String key) {
|
|
return Optional.empty();
|
|
}
|
|
|
|
@Override
|
|
public ValueInput childOrEmpty(String key) {
|
|
return this;
|
|
}
|
|
|
|
@Override
|
|
public Optional<ValueInput.ValueInputList> childrenList(String key) {
|
|
return Optional.empty();
|
|
}
|
|
|
|
@Override
|
|
public ValueInput.ValueInputList childrenListOrEmpty(String key) {
|
|
return ValueInputContextHelper.this.emptyChildList;
|
|
}
|
|
|
|
@Override
|
|
public <T> Optional<ValueInput.TypedInputList<T>> list(String key, Codec<T> elementCodec) {
|
|
return Optional.empty();
|
|
}
|
|
|
|
@Override
|
|
public <T> ValueInput.TypedInputList<T> listOrEmpty(String key, Codec<T> elementCodec) {
|
|
return ValueInputContextHelper.this.emptyTypedList();
|
|
}
|
|
|
|
@Override
|
|
public boolean getBooleanOr(String key, boolean defaultValue) {
|
|
return defaultValue;
|
|
}
|
|
|
|
@Override
|
|
public byte getByteOr(String key, byte defaultValue) {
|
|
return defaultValue;
|
|
}
|
|
|
|
@Override
|
|
public int getShortOr(String key, short defaultValue) {
|
|
return defaultValue;
|
|
}
|
|
|
|
@Override
|
|
public Optional<Integer> getInt(String key) {
|
|
return Optional.empty();
|
|
}
|
|
|
|
@Override
|
|
public int getIntOr(String key, int defaultValue) {
|
|
return defaultValue;
|
|
}
|
|
|
|
@Override
|
|
public long getLongOr(String key, long defaultValue) {
|
|
return defaultValue;
|
|
}
|
|
|
|
@Override
|
|
public Optional<Long> getLong(String key) {
|
|
return Optional.empty();
|
|
}
|
|
|
|
@Override
|
|
public float getFloatOr(String key, float defaultValue) {
|
|
return defaultValue;
|
|
}
|
|
|
|
@Override
|
|
public double getDoubleOr(String key, double defaultValue) {
|
|
return defaultValue;
|
|
}
|
|
|
|
@Override
|
|
public Optional<String> getString(String key) {
|
|
return Optional.empty();
|
|
}
|
|
|
|
@Override
|
|
public String getStringOr(String key, String defaultValue) {
|
|
return defaultValue;
|
|
}
|
|
|
|
@Override
|
|
public HolderLookup.Provider lookup() {
|
|
return ValueInputContextHelper.this.lookup;
|
|
}
|
|
|
|
@Override
|
|
public Optional<int[]> getIntArray(String key) {
|
|
return Optional.empty();
|
|
}
|
|
};
|
|
|
|
public ValueInputContextHelper(HolderLookup.Provider lookup, DynamicOps<Tag> ops) {
|
|
this.lookup = lookup;
|
|
this.ops = lookup.createSerializationContext(ops);
|
|
}
|
|
|
|
public DynamicOps<Tag> ops() {
|
|
return this.ops;
|
|
}
|
|
|
|
public HolderLookup.Provider lookup() {
|
|
return this.lookup;
|
|
}
|
|
|
|
public ValueInput empty() {
|
|
return this.empty;
|
|
}
|
|
|
|
public ValueInput.ValueInputList emptyList() {
|
|
return this.emptyChildList;
|
|
}
|
|
|
|
public <T> ValueInput.TypedInputList<T> emptyTypedList() {
|
|
return (ValueInput.TypedInputList<T>)this.emptyTypedList;
|
|
}
|
|
}
|