Skip to content
This repository was archived by the owner on Jul 30, 2025. It is now read-only.

Commit 2d35df8

Browse files
Add pig variant attribute
1 parent c8d13b8 commit 2d35df8

File tree

1 file changed

+37
-0
lines changed
  • implementation_1_21_5/src/main/java/de/oliver/fancynpcs/v1_21_5/attributes

1 file changed

+37
-0
lines changed

implementation_1_21_5/src/main/java/de/oliver/fancynpcs/v1_21_5/attributes/PigAttributes.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,15 @@
33
import de.oliver.fancynpcs.api.Npc;
44
import de.oliver.fancynpcs.api.NpcAttribute;
55
import de.oliver.fancynpcs.v1_21_5.ReflectionHelper;
6+
import net.minecraft.core.Holder;
7+
import net.minecraft.core.HolderLookup;
8+
import net.minecraft.core.registries.Registries;
9+
import net.minecraft.data.registries.VanillaRegistries;
10+
import net.minecraft.resources.ResourceKey;
11+
import net.minecraft.resources.ResourceLocation;
612
import net.minecraft.world.entity.EquipmentSlot;
713
import net.minecraft.world.entity.animal.Pig;
14+
import net.minecraft.world.entity.animal.PigVariant;
815
import net.minecraft.world.item.Items;
916
import org.bukkit.entity.EntityType;
1017

@@ -16,6 +23,16 @@ public class PigAttributes {
1623
public static List<NpcAttribute> getAllAttributes() {
1724
List<NpcAttribute> attributes = new ArrayList<>();
1825

26+
attributes.add(new NpcAttribute(
27+
"variant",
28+
getPigVariantRegistry()
29+
.listElementIds()
30+
.map(id -> id.location().getPath())
31+
.toList(),
32+
List.of(EntityType.CAT),
33+
PigAttributes::setVariant
34+
));
35+
1936
attributes.add(new NpcAttribute(
2037
"has_saddle",
2138
List.of("true", "false"),
@@ -26,6 +43,19 @@ public static List<NpcAttribute> getAllAttributes() {
2643
return attributes;
2744
}
2845

46+
private static void setVariant(Npc npc, String value) {
47+
final Pig pig = ReflectionHelper.getEntity(npc);
48+
49+
Holder<PigVariant> variant = getPigVariantRegistry()
50+
.get(ResourceKey.create(
51+
Registries.PIG_VARIANT,
52+
ResourceLocation.withDefaultNamespace(value.toLowerCase())
53+
))
54+
.orElseThrow();
55+
56+
pig.setVariant(variant);
57+
}
58+
2959
private static void setHasSaddle(Npc npc, String value) {
3060
Pig pig = ReflectionHelper.getEntity(npc);
3161

@@ -36,4 +66,11 @@ private static void setHasSaddle(Npc npc, String value) {
3666
}
3767
}
3868

69+
private static HolderLookup.RegistryLookup<PigVariant> getPigVariantRegistry() {
70+
return VanillaRegistries
71+
.createLookup()
72+
.lookup(Registries.PIG_VARIANT)
73+
.orElseThrow();
74+
}
75+
3976
}

0 commit comments

Comments
 (0)