minecraft-src/net/minecraft/world/level/storage/ValueInputContextHelper.java
2025-09-18 12:27:44 +00:00

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;
}
}