Skip to content

Commit e99c689

Browse files
committed
support ZombieVillagers
1 parent 2fc773d commit e99c689

1 file changed

Lines changed: 48 additions & 12 deletions

File tree

src/main/java/adhdmc/villagerinfo/VillagerHandling/VillagerHandler.java

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.bukkit.entity.Ageable;
1414
import org.bukkit.entity.Player;
1515
import org.bukkit.entity.Villager;
16+
import org.bukkit.entity.ZombieVillager;
1617
import org.bukkit.entity.memory.MemoryKey;
1718
import org.bukkit.event.EventHandler;
1819
import org.bukkit.event.EventPriority;
@@ -44,18 +45,30 @@ public void onVillagerClick(PlayerInteractEntityEvent event) {
4445
if (!event.getPlayer().isSneaking()) {
4546
return;
4647
}
47-
if (!(event.getRightClicked() instanceof Villager villager)) {
48-
return;
48+
if (event.getRightClicked() instanceof Villager villager) {
49+
if (!player.hasPermission(Perms.USE.getPerm())) {
50+
return;
51+
}
52+
if (Arrays.stream(ToggleSetting.values()).noneMatch(ToggleSetting::isEnabled)) {
53+
VillagerInfo.getInstance().getLogger().warning("You have all VillagerInfo options turned off. That seems silly, why do you have the plugin installed if you don't want to use it?");
54+
return;
55+
}
56+
event.setCancelled(true);
57+
processVillager(player, villager);
58+
} else if (event.getRightClicked() instanceof ZombieVillager zombieVillager) {
59+
if (!player.hasPermission(Perms.USE.getPerm())) {
60+
return;
61+
}
62+
if (Arrays.stream(ToggleSetting.values()).noneMatch(ToggleSetting::isEnabled)) {
63+
VillagerInfo.getInstance().getLogger().warning("You have all VillagerInfo options turned off. That seems silly, why do you have the plugin installed if you don't want to use it?");
64+
return;
65+
}
66+
event.setCancelled(true);
67+
processZombieVillager(player, zombieVillager);
4968
}
69+
}
5070

51-
if (!player.hasPermission(Perms.USE.getPerm())) {
52-
return;
53-
}
54-
if (Arrays.stream(ToggleSetting.values()).noneMatch(ToggleSetting::isEnabled)) {
55-
VillagerInfo.getInstance().getLogger().warning("You have all VillagerInfo options turned off. That seems silly, why do you have the plugin installed if you don't want to use it?");
56-
return;
57-
}
58-
event.setCancelled(true);
71+
private void processVillager(Player player, Villager villager) {
5972
Location villagerPOI = villager.getMemory(MemoryKey.JOB_SITE);
6073
ArrayList<Component> messageList = new ArrayList<>();
6174
boolean hasProfession = villager.getProfession() != Villager.Profession.NONE
@@ -113,6 +126,30 @@ public void onVillagerClick(PlayerInteractEntityEvent event) {
113126
}
114127
}
115128

129+
private void processZombieVillager(Player player, ZombieVillager zombieVillager) {
130+
ArrayList<Component> messageList = new ArrayList<>();
131+
boolean isAdult = zombieVillager.isAdult();
132+
//time until adult
133+
if (ToggleSetting.BABY_AGE.isEnabled() && !isAdult) {
134+
messageList.add(timeTillAdult(zombieVillager));
135+
}
136+
//profession
137+
if (ToggleSetting.PROFESSION.isEnabled() && isAdult) {
138+
messageList.add(villagerProfession(zombieVillager.getVillagerProfession()));
139+
}
140+
//reputation
141+
// TODO: wait for Reputation API to be added for Zombie Villagers or use PDC to calculate reputation NBT by hand
142+
//if (ToggleSetting.REPUTATION.isEnabled()) {
143+
// messageList.add(villagerPlayerReputation(zombieVillager.getReputation(player.getUniqueId())));
144+
//}
145+
//Messages
146+
Component prefix = miniMessage.deserialize(Message.PREFIX.getMessage());
147+
player.sendMessage(prefix);
148+
for (Component component : messageList) {
149+
player.sendMessage(component);
150+
}
151+
}
152+
116153
/**
117154
* Checks and returns formatted 'time till adult' message component
118155
* @param ageable Clicked Villager
@@ -267,8 +304,7 @@ private Component villagerRestocks(Villager villager) {
267304

268305
/**
269306
* Gets a player's reputation and returns a component
270-
* @param villager Clicked Villager
271-
* @param player Player to evaluate
307+
* @param reputation Reputation to evaluate
272308
* @return Reputation Component
273309
*/
274310
private Component villagerPlayerReputation(Reputation reputation) {

0 commit comments

Comments
 (0)