Class NeoForgeExtraCodecs

java.lang.Object
net.neoforged.neoforge.common.util.NeoForgeExtraCodecs

public class NeoForgeExtraCodecs extends Object
Codec-related helper functions that are not in ExtraCodecs, but useful to NeoForge and other mods.
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    private static final record 
     
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final com.mojang.serialization.Codec<Optional<WithConditions<Advancement>>>
     
    static final com.mojang.serialization.Codec<Optional<WithConditions<Recipe<?>>>>
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static <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 of Codec.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 of Codec.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 of Codec.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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • 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

      public static <T> com.mojang.serialization.MapCodec<Set<T>> singularOrPluralCodec(com.mojang.serialization.Codec<T> codec, String singularName)
    • singularOrPluralCodec

      public static <T> com.mojang.serialization.MapCodec<Set<T>> singularOrPluralCodec(com.mojang.serialization.Codec<T> codec, String singularName, String pluralName)
    • singularOrPluralCodecNotEmpty

      public static <T> com.mojang.serialization.MapCodec<Set<T>> singularOrPluralCodecNotEmpty(com.mojang.serialization.Codec<T> codec, String singularName)
    • singularOrPluralCodecNotEmpty

      public static <T> com.mojang.serialization.MapCodec<Set<T>> singularOrPluralCodecNotEmpty(com.mojang.serialization.Codec<T> codec, String singularName, String pluralName)
    • 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 of Codec.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 a MapCodec.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 of Codec.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 a MapCodec.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 of Codec.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 a MapCodec.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.