Package net.neoforged.neoforge.common
Interface IExtensibleEnum
- All Known Implementing Classes:
BiomeSpecialEffects.GrassColorModifier
,DamageEffects
,DamageScaling
,DeathMessageType
,FireworkExplosion.Shape
,Gui.HeartType
,HumanoidModel.ArmPose
,ItemDisplayContext
,MobCategory
,Raid.RaiderType
,Rarity
,RecipeBookCategories
,RecipeBookType
,VertexFormatElement.Usage
public interface IExtensibleEnum
To be implemented on vanilla enums that should be enhanced with ASM to be
extensible. If this is implemented on a class, the class must define a static
method called "create" which takes a String (enum name), and the rest of the
parameters matching a constructor.
For example, an enum with the constructor MyEnum(Object foo)
would
require the method:
public static MyEnum create(String name, Object foo) { throw new IllegalStateException("Enum not extended"); }The method contents will be replaced with ASM at runtime. Multiple
create
methods can be defined as long as each
matches a constructor.-
Method Summary
Modifier and TypeMethodDescriptionstatic <E extends Enum<E> & StringRepresentable>
com.mojang.serialization.Codec<E> createCodecForExtensibleEnum
(Supplier<E[]> valuesSupplier, Function<? super String, ? extends E> enumValueFromNameFunction) Use this instead ofStringRepresentable.fromEnum(Supplier)
for extensible enums because this not cache the enum values on constructionstatic <E extends Enum<E> & StringRepresentable>
StreamCodec<io.netty.buffer.ByteBuf, E> createStreamCodecForExtensibleEnum
(Supplier<E[]> valuesSupplier) Use this instead ofByteBufCodecs.idMapper(IntFunction, ToIntFunction)
for extensible enums because this not cache the enum values on constructiondefault void
init()
Deprecated.
-
Method Details
-
init
Deprecated.Called by generated factory code to do any post-constructor setup required by the enum. Should not be called manually. -
createCodecForExtensibleEnum
static <E extends Enum<E> & StringRepresentable> com.mojang.serialization.Codec<E> createCodecForExtensibleEnum(Supplier<E[]> valuesSupplier, Function<? super String, ? extends E> enumValueFromNameFunction) Use this instead ofStringRepresentable.fromEnum(Supplier)
for extensible enums because this not cache the enum values on construction -
createStreamCodecForExtensibleEnum
static <E extends Enum<E> & StringRepresentable> StreamCodec<io.netty.buffer.ByteBuf,E> createStreamCodecForExtensibleEnum(Supplier<E[]> valuesSupplier) Use this instead ofByteBufCodecs.idMapper(IntFunction, ToIntFunction)
for extensible enums because this not cache the enum values on construction
-