fancynpcs: Add sniffer state attribute

This commit is contained in:
Oliver
2025-06-02 09:52:17 +02:00
parent 6fcf7ae6cc
commit bc14e69bd3
2 changed files with 37 additions and 0 deletions

View File

@@ -42,6 +42,7 @@ public class Attributes_1_21_5 {
attributes.addAll(BeeAttributes.getAllAttributes());
attributes.addAll(VexAttributes.getAllAttributes());
attributes.addAll(ArmadilloAttributes.getAllAttributes());
attributes.addAll(SnifferAttributes.getAllAttributes());
attributes.addAll(DisplayAttributes.getAllAttributes());
attributes.addAll(TextDisplayAttributes.getAllAttributes());

View File

@@ -0,0 +1,36 @@
package de.oliver.fancynpcs.v1_21_5.attributes;
import de.oliver.fancynpcs.api.Npc;
import de.oliver.fancynpcs.api.NpcAttribute;
import de.oliver.fancynpcs.v1_21_5.ReflectionHelper;
import net.minecraft.world.entity.animal.sniffer.Sniffer;
import org.bukkit.entity.EntityType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class SnifferAttributes {
public static List<NpcAttribute> getAllAttributes() {
List<NpcAttribute> attributes = new ArrayList<>();
attributes.add(new NpcAttribute(
"state",
Arrays.stream(Sniffer.State.values())
.map(Enum::name)
.toList(),
List.of(EntityType.SNIFFER),
SnifferAttributes::setState
));
return attributes;
}
private static void setState(Npc npc, String value) {
final Sniffer sniffer = ReflectionHelper.getEntity(npc);
Sniffer.State state = Sniffer.State.valueOf(value.toUpperCase());
sniffer.transitionTo(state);
}
}