12
12
import java .util .Set ;
13
13
import net .minecraft .resources .ResourceLocation ;
14
14
import net .minecraft .util .RandomSource ;
15
+ import net .minecraft .world .entity .Entity ;
15
16
import org .jetbrains .annotations .NotNull ;
16
17
import org .jetbrains .annotations .Nullable ;
17
18
import software .bluelib .api .utils .logging .BaseLogLevel ;
18
19
import software .bluelib .api .utils .logging .BaseLogger ;
19
20
import software .bluelib .api .utils .variant .ParameterUtils ;
21
+ import software .bluelib .entity .variant .IVariantAccessor ;
20
22
import software .bluelib .internal .BlueTranslation ;
21
23
22
24
@ SuppressWarnings ("unused" )
23
- public interface IVariantEntity {
25
+ public interface IVariantEntity < T extends Entity > {
24
26
25
27
@ NotNull
26
28
RandomSource random = RandomSource .create ();
27
29
30
+ @ NotNull
31
+ T getEntity ();
32
+
28
33
@ Nullable
29
34
default String getRandomVariant (@ NotNull List <String > pVariantNamesList , @ Nullable String pDefaultVariant ) {
30
35
if (pVariantNamesList .isEmpty ()) {
@@ -42,4 +47,15 @@ default List<String> getEntityVariants(@NotNull ResourceLocation pEntity) {
42
47
Set <String > variants = ParameterUtils .getVariantsOfEntity (pEntity );
43
48
return variants != null ? new ArrayList <>(variants ) : null ;
44
49
}
50
+
51
+ @ NotNull
52
+ default String getVariantName () {
53
+ T entity = getEntity ();
54
+ return ((IVariantAccessor ) entity ).getEntityVariantName ();
55
+ }
56
+
57
+ default void setVariantName (@ NotNull String pVariantName ) {
58
+ T entity = getEntity ();
59
+ ((IVariantAccessor ) entity ).setEntityVariantName (pVariantName );
60
+ }
45
61
}
0 commit comments