package net.minecraft.util; import com.mojang.datafixers.util.Pair; import com.mojang.serialization.DataResult; import com.mojang.serialization.DynamicOps; import com.mojang.serialization.ListBuilder; import com.mojang.serialization.MapLike; import com.mojang.serialization.RecordBuilder; import com.mojang.serialization.RecordBuilder.AbstractUniversalBuilder; import java.nio.ByteBuffer; import java.util.List; import java.util.Map; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.stream.IntStream; import java.util.stream.LongStream; import java.util.stream.Stream; public class NullOps implements DynamicOps { public static final NullOps INSTANCE = new NullOps(); private NullOps() { } public U convertTo(DynamicOps ops, Unit unit) { return ops.empty(); } public Unit empty() { return Unit.INSTANCE; } public Unit emptyMap() { return Unit.INSTANCE; } public Unit emptyList() { return Unit.INSTANCE; } public Unit createNumeric(Number value) { return Unit.INSTANCE; } public Unit createByte(byte value) { return Unit.INSTANCE; } public Unit createShort(short value) { return Unit.INSTANCE; } public Unit createInt(int value) { return Unit.INSTANCE; } public Unit createLong(long value) { return Unit.INSTANCE; } public Unit createFloat(float value) { return Unit.INSTANCE; } public Unit createDouble(double value) { return Unit.INSTANCE; } public Unit createBoolean(boolean value) { return Unit.INSTANCE; } public Unit createString(String value) { return Unit.INSTANCE; } public DataResult getNumberValue(Unit input) { return DataResult.error(() -> "Not a number"); } public DataResult getBooleanValue(Unit input) { return DataResult.error(() -> "Not a boolean"); } public DataResult getStringValue(Unit input) { return DataResult.error(() -> "Not a string"); } public DataResult mergeToList(Unit list, Unit value) { return DataResult.success(Unit.INSTANCE); } public DataResult mergeToList(Unit list, List values) { return DataResult.success(Unit.INSTANCE); } public DataResult mergeToMap(Unit map, Unit key, Unit value) { return DataResult.success(Unit.INSTANCE); } public DataResult mergeToMap(Unit map, Map values) { return DataResult.success(Unit.INSTANCE); } public DataResult mergeToMap(Unit map, MapLike values) { return DataResult.success(Unit.INSTANCE); } public DataResult>> getMapValues(Unit input) { return DataResult.error(() -> "Not a map"); } public DataResult>> getMapEntries(Unit input) { return DataResult.error(() -> "Not a map"); } public DataResult> getMap(Unit input) { return DataResult.error(() -> "Not a map"); } public DataResult> getStream(Unit input) { return DataResult.error(() -> "Not a list"); } public DataResult>> getList(Unit input) { return DataResult.error(() -> "Not a list"); } public DataResult getByteBuffer(Unit input) { return DataResult.error(() -> "Not a byte list"); } public DataResult getIntStream(Unit input) { return DataResult.error(() -> "Not an int list"); } public DataResult getLongStream(Unit input) { return DataResult.error(() -> "Not a long list"); } public Unit createMap(Stream> map) { return Unit.INSTANCE; } public Unit createMap(Map map) { return Unit.INSTANCE; } public Unit createList(Stream input) { return Unit.INSTANCE; } public Unit createByteList(ByteBuffer input) { return Unit.INSTANCE; } public Unit createIntList(IntStream input) { return Unit.INSTANCE; } public Unit createLongList(LongStream input) { return Unit.INSTANCE; } public Unit remove(Unit input, String key) { return input; } @Override public RecordBuilder mapBuilder() { return new NullOps.NullMapBuilder(this); } @Override public ListBuilder listBuilder() { return new NullOps.NullListBuilder(this); } public String toString() { return "Null"; } static final class NullListBuilder extends AbstractListBuilder { public NullListBuilder(DynamicOps dynamicOps) { super(dynamicOps); } protected Unit initBuilder() { return Unit.INSTANCE; } protected Unit append(Unit unit, Unit unit2) { return unit; } protected DataResult build(Unit unit, Unit unit2) { return DataResult.success(unit); } } static final class NullMapBuilder extends AbstractUniversalBuilder { public NullMapBuilder(DynamicOps ops) { super(ops); } protected Unit initBuilder() { return Unit.INSTANCE; } protected Unit append(Unit unit, Unit unit2, Unit unit3) { return unit3; } protected DataResult build(Unit unit, Unit unit2) { return DataResult.success(unit2); } } }