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

Commit 6a62710

Browse files
Add cow variant attribute
1 parent 2d35df8 commit 6a62710

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public static List<NpcAttribute> getAllAttributes() {
3636
attributes.addAll(WolfAttributes.getAllAttributes());
3737
attributes.addAll(SlimeAttributes.getAllAttributes());
3838
attributes.addAll(PigAttributes.getAllAttributes());
39+
attributes.addAll(CowAttributes.getAllAttributes());
3940
attributes.addAll(ArmorStandAttributes.getAllAttributes());
4041
attributes.addAll(BeeAttributes.getAllAttributes());
4142
attributes.addAll(VexAttributes.getAllAttributes());
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package de.oliver.fancynpcs.v1_21_5.attributes;
2+
3+
import de.oliver.fancynpcs.api.Npc;
4+
import de.oliver.fancynpcs.api.NpcAttribute;
5+
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;
12+
import net.minecraft.world.entity.animal.Cow;
13+
import net.minecraft.world.entity.animal.CowVariant;
14+
import org.bukkit.entity.EntityType;
15+
16+
import java.util.ArrayList;
17+
import java.util.List;
18+
19+
public class CowAttributes {
20+
21+
public static List<NpcAttribute> getAllAttributes() {
22+
List<NpcAttribute> attributes = new ArrayList<>();
23+
24+
attributes.add(new NpcAttribute(
25+
"variant",
26+
getCowVariantRegistry()
27+
.listElementIds()
28+
.map(id -> id.location().getPath())
29+
.toList(),
30+
List.of(EntityType.COW),
31+
CowAttributes::setVariant
32+
));
33+
34+
return attributes;
35+
}
36+
37+
private static void setVariant(Npc npc, String value) {
38+
final Cow cow = ReflectionHelper.getEntity(npc);
39+
40+
Holder<CowVariant> variant = getCowVariantRegistry()
41+
.get(ResourceKey.create(
42+
Registries.COW_VARIANT,
43+
ResourceLocation.withDefaultNamespace(value.toLowerCase())
44+
))
45+
.orElseThrow();
46+
47+
cow.setVariant(variant);
48+
}
49+
50+
private static HolderLookup.RegistryLookup<CowVariant> getCowVariantRegistry() {
51+
return VanillaRegistries
52+
.createLookup()
53+
.lookup(Registries.COW_VARIANT)
54+
.orElseThrow();
55+
}
56+
57+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static List<NpcAttribute> getAllAttributes() {
2929
.listElementIds()
3030
.map(id -> id.location().getPath())
3131
.toList(),
32-
List.of(EntityType.CAT),
32+
List.of(EntityType.PIG),
3333
PigAttributes::setVariant
3434
));
3535

0 commit comments

Comments
 (0)