Interface VariantHolder<BedrockVariant extends VariantHolder.BuiltIn>

Type Parameters:
BedrockVariant - the enum of Bedrock variants.
All Known Subinterfaces:
VariantIntHolder
All Known Implementing Classes:
CatEntity, ChickenEntity, CowEntity, FrogEntity, MooshroomEntity, PigEntity, TemperatureVariantAnimal, WolfEntity

public interface VariantHolder<BedrockVariant extends VariantHolder.BuiltIn>
Interface to help set up data-driven entity variants for mobs.

Data-driven variants are sent as an int ID of their variant registry by Java, but can be a metadata ID or entity property on bedrock. This interface helps translate data-driven variants to built-in bedrock ones.

Implementations usually have to implement variantRegistry() and setBedrockVariant(BuiltIn), and should also have an enum with built-in variants on bedrock (implementing VariantHolder.BuiltIn).

  • Method Details

    • setVariant

      default void setVariant(org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.IntEntityMetadata variant)
    • setVariantFromJavaId

      default void setVariantFromJavaId(int variant)
      Sets the variant of the entity.
    • getSession

      GeyserSession getSession()
    • variantRegistry

      JavaRegistryKey<? extends BedrockVariant> variantRegistry()
      The registry in JavaRegistries for this mob's variants. The registry can utilise the reader(Class, Enum) method to create a reader to be used in RegistryCache.
    • setBedrockVariant

      void setBedrockVariant(BedrockVariant bedrockVariant)
      Should set the variant for bedrock.
    • reader

      static <BuiltInVariant extends Enum<? extends VariantHolder.BuiltIn>> RegistryCache.RegistryReader<BuiltInVariant> reader(Class<BuiltInVariant> clazz, BuiltInVariant fallback)
      Creates a registry reader for this mob's variants.

      This reader simply matches the identifiers of registry entries with built-in variants. If no built-in variant matches, the fallback/default is returned.