|
13 | 13 | import org.bukkit.entity.Ageable; |
14 | 14 | import org.bukkit.entity.Player; |
15 | 15 | import org.bukkit.entity.Villager; |
| 16 | +import org.bukkit.entity.ZombieVillager; |
16 | 17 | import org.bukkit.entity.memory.MemoryKey; |
17 | 18 | import org.bukkit.event.EventHandler; |
18 | 19 | import org.bukkit.event.EventPriority; |
@@ -44,18 +45,30 @@ public void onVillagerClick(PlayerInteractEntityEvent event) { |
44 | 45 | if (!event.getPlayer().isSneaking()) { |
45 | 46 | return; |
46 | 47 | } |
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); |
49 | 68 | } |
| 69 | + } |
50 | 70 |
|
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) { |
59 | 72 | Location villagerPOI = villager.getMemory(MemoryKey.JOB_SITE); |
60 | 73 | ArrayList<Component> messageList = new ArrayList<>(); |
61 | 74 | boolean hasProfession = villager.getProfession() != Villager.Profession.NONE |
@@ -113,6 +126,30 @@ public void onVillagerClick(PlayerInteractEntityEvent event) { |
113 | 126 | } |
114 | 127 | } |
115 | 128 |
|
| 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 | + |
116 | 153 | /** |
117 | 154 | * Checks and returns formatted 'time till adult' message component |
118 | 155 | * @param ageable Clicked Villager |
@@ -267,8 +304,7 @@ private Component villagerRestocks(Villager villager) { |
267 | 304 |
|
268 | 305 | /** |
269 | 306 | * 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 |
272 | 308 | * @return Reputation Component |
273 | 309 | */ |
274 | 310 | private Component villagerPlayerReputation(Reputation reputation) { |
|
0 commit comments