Class NeoForgeExtraCodecs
java.lang.Object
net.neoforged.neoforge.common.util.NeoForgeExtraCodecs
Codec
-related helper functions that are not in ExtraCodecs
, but useful to NeoForge and other mods.- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final record
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final com.mojang.serialization.Codec<Optional<WithConditions<Advancement>>>
static final com.mojang.serialization.Codec<Optional<WithConditions<Recipe<?>>>>
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> com.mojang.serialization.MapCodec<T>
aliasedFieldOf
(com.mojang.serialization.Codec<T> codec, String... names) static <A> com.mojang.serialization.Codec<A>
decodeOnly
(com.mojang.serialization.Decoder<A> decoder) Creates a codec from a decoder.static <K,
V> com.mojang.serialization.Codec<V> dispatchUnsafe
(com.mojang.serialization.Codec<K> keyCodec, String typeKey, Function<? super V, ? extends K> type, Function<? super K, ? extends com.mojang.serialization.Codec<? extends V>> codec) Version ofCodec.dispatch(String, Function, Function)
that always writes the dispatched codec inline, i.e.static <K,
V> com.mojang.serialization.Codec<V> dispatchUnsafe
(com.mojang.serialization.Codec<K> keyCodec, Function<? super V, ? extends K> type, Function<? super K, ? extends com.mojang.serialization.Codec<? extends V>> codec) Version ofCodec.dispatch(Function, Function)
that always writes the dispatched codec inline, i.e.static <A> com.mojang.serialization.Decoder<List<A>>
listDecoderWithIndexedPeek
(com.mojang.serialization.Decoder<List<A>> decoder, ObjIntConsumer<A> consumer) Creates a decoder invoking a callback for each element and the corresponding index in a list.static <A> com.mojang.serialization.Codec<List<A>>
listWithOptionalElements
(com.mojang.serialization.Codec<Optional<A>> elementCodec) Creates a codec for a list from a codec of optional elements.static <A> com.mojang.serialization.Codec<List<A>>
listWithoutEmpty
(com.mojang.serialization.Codec<List<Optional<A>>> codec) Creates a codec for a list of optional elements, that removes empty values when decoding.static <T> com.mojang.serialization.MapCodec<T>
mapWithAlternative
(com.mojang.serialization.MapCodec<T> mapCodec, com.mojang.serialization.MapCodec<? extends T> alternative) static <K,
V> com.mojang.serialization.Codec<V> partialDispatchUnsafe
(com.mojang.serialization.Codec<K> keyCodec, String typeKey, Function<? super V, ? extends com.mojang.serialization.DataResult<? extends K>> type, Function<? super K, ? extends com.mojang.serialization.DataResult<? extends com.mojang.serialization.Codec<? extends V>>> codec) Version ofCodec.partialDispatch(String, Function, Function)
that always writes the dispatched codec inline, i.e.static <T> com.mojang.serialization.Codec<Set<T>>
setOf
(com.mojang.serialization.Codec<T> codec) static <T> com.mojang.serialization.MapCodec<Set<T>>
singularOrPluralCodec
(com.mojang.serialization.Codec<T> codec, String singularName) static <T> com.mojang.serialization.MapCodec<Set<T>>
singularOrPluralCodec
(com.mojang.serialization.Codec<T> codec, String singularName, String pluralName) static <T> com.mojang.serialization.MapCodec<Set<T>>
singularOrPluralCodecNotEmpty
(com.mojang.serialization.Codec<T> codec, String singularName) static <T> com.mojang.serialization.MapCodec<Set<T>>
singularOrPluralCodecNotEmpty
(com.mojang.serialization.Codec<T> codec, String singularName, String pluralName) static <T> com.mojang.serialization.Codec<T>
withAlternative
(com.mojang.serialization.Codec<T> codec, com.mojang.serialization.Codec<T> alternative) Codec with two alternatives.
-
Field Details
-
CONDITIONAL_RECIPE_CODEC
public static final com.mojang.serialization.Codec<Optional<WithConditions<Recipe<?>>>> CONDITIONAL_RECIPE_CODEC -
CONDITIONAL_ADVANCEMENT_CODEC
public static final com.mojang.serialization.Codec<Optional<WithConditions<Advancement>>> CONDITIONAL_ADVANCEMENT_CODEC
-
-
Constructor Details
-
NeoForgeExtraCodecs
public NeoForgeExtraCodecs()
-
-
Method Details
-
aliasedFieldOf
public static <T> com.mojang.serialization.MapCodec<T> aliasedFieldOf(com.mojang.serialization.Codec<T> codec, String... names) -
mapWithAlternative
public static <T> com.mojang.serialization.MapCodec<T> mapWithAlternative(com.mojang.serialization.MapCodec<T> mapCodec, com.mojang.serialization.MapCodec<? extends T> alternative) -
singularOrPluralCodec
-
singularOrPluralCodec
-
singularOrPluralCodecNotEmpty
-
singularOrPluralCodecNotEmpty
-
setOf
public static <T> com.mojang.serialization.Codec<Set<T>> setOf(com.mojang.serialization.Codec<T> codec) -
dispatchUnsafe
public static <K,V> com.mojang.serialization.Codec<V> dispatchUnsafe(com.mojang.serialization.Codec<K> keyCodec, Function<? super V, ? extends K> type, Function<? super K, ? extends com.mojang.serialization.Codec<? extends V>> codec) Version ofCodec.dispatch(Function, Function)
that always writes the dispatched codec inline, i.e. at the same nesting level as the"type": ...
.Note: the codec produced by
.dispatch()
inlines the dispatched codec ONLY if it is aMapCodec.MapCodecCodec
. This function always inlines. -
dispatchUnsafe
public static <K,V> com.mojang.serialization.Codec<V> dispatchUnsafe(com.mojang.serialization.Codec<K> keyCodec, String typeKey, Function<? super V, ? extends K> type, Function<? super K, ? extends com.mojang.serialization.Codec<? extends V>> codec) Version ofCodec.dispatch(String, Function, Function)
that always writes the dispatched codec inline, i.e. at the same nesting level as the"type": ...
.Note: the codec produced by
.dispatch()
inlines the dispatched codec ONLY if it is aMapCodec.MapCodecCodec
. This function always inlines. -
partialDispatchUnsafe
public static <K,V> com.mojang.serialization.Codec<V> partialDispatchUnsafe(com.mojang.serialization.Codec<K> keyCodec, String typeKey, Function<? super V, ? extends com.mojang.serialization.DataResult<? extends K>> type, Function<? super K, ? extends com.mojang.serialization.DataResult<? extends com.mojang.serialization.Codec<? extends V>>> codec) Version ofCodec.partialDispatch(String, Function, Function)
that always writes the dispatched codec inline, i.e. at the same nesting level as the"type": ...
.Note: the codec produced by
.dispatch()
inlines the dispatched codec ONLY if it is aMapCodec.MapCodecCodec
. This function always inlines. -
decodeOnly
public static <A> com.mojang.serialization.Codec<A> decodeOnly(com.mojang.serialization.Decoder<A> decoder) Creates a codec from a decoder. The returned codec can only decode, and will throw on any attempt to encode. -
listWithOptionalElements
public static <A> com.mojang.serialization.Codec<List<A>> listWithOptionalElements(com.mojang.serialization.Codec<Optional<A>> elementCodec) Creates a codec for a list from a codec of optional elements. The empty optionals are removed from the list when decoding. -
listWithoutEmpty
public static <A> com.mojang.serialization.Codec<List<A>> listWithoutEmpty(com.mojang.serialization.Codec<List<Optional<A>>> codec) Creates a codec for a list of optional elements, that removes empty values when decoding. -
listDecoderWithIndexedPeek
public static <A> com.mojang.serialization.Decoder<List<A>> listDecoderWithIndexedPeek(com.mojang.serialization.Decoder<List<A>> decoder, ObjIntConsumer<A> consumer) Creates a decoder invoking a callback for each element and the corresponding index in a list. -
withAlternative
public static <T> com.mojang.serialization.Codec<T> withAlternative(com.mojang.serialization.Codec<T> codec, com.mojang.serialization.Codec<T> alternative) Codec with two alternatives.The vanilla
ExtraCodecs.withAlternative(Codec, Codec)
will try the first codec and then the second codec for decoding, but only the first for encoding.Unlike vanilla, this alternative codec also tries to encode with the second codec if the first encode fails.
-