108 lines
3.5 KiB
Java
108 lines
3.5 KiB
Java
package com.alttd.events;
|
|
|
|
import com.alttd.GUI.windows.OpenGUI;
|
|
import com.alttd.VillagerUI;
|
|
import com.alttd.config.Config;
|
|
import com.alttd.config.VillagerConfig;
|
|
import com.alttd.objects.EconUser;
|
|
import com.alttd.objects.LoadedVillagers;
|
|
import com.alttd.objects.VillagerType;
|
|
import com.alttd.util.Utilities;
|
|
import jdk.jshell.execution.Util;
|
|
import org.bukkit.entity.EntityType;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.entity.Villager;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.entity.EntityDamageByBlockEvent;
|
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
|
import org.bukkit.event.entity.EntityDeathEvent;
|
|
import org.bukkit.event.entity.EntityPotionEffectEvent;
|
|
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
import java.util.UUID;
|
|
|
|
public class VillagerEvents implements Listener {
|
|
|
|
@EventHandler
|
|
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
|
|
if (!(event.getRightClicked() instanceof Villager villager))
|
|
return;
|
|
|
|
VillagerType loadedVillager = LoadedVillagers.getLoadedVillager(villager.getUniqueId());
|
|
if (loadedVillager == null)
|
|
return;
|
|
|
|
Player player = event.getPlayer();
|
|
event.setCancelled(true);
|
|
if (!player.hasPermission(loadedVillager.getPermission())) {
|
|
player.sendMiniMessage(Config.NO_PERMISSION, null); //TODO more specific message?
|
|
return;
|
|
}
|
|
EconUser user = EconUser.getUser(player.getUniqueId());
|
|
if (user == null) {
|
|
Utilities.econSyncingMessage(player);
|
|
return;
|
|
}
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
OpenGUI openGUI = new OpenGUI(loadedVillager, user);
|
|
new BukkitRunnable() {
|
|
@Override
|
|
public void run() {
|
|
openGUI.open(player);
|
|
}
|
|
}.runTask(VillagerUI.getInstance());
|
|
}
|
|
}.runTaskAsynchronously(VillagerUI.getInstance());
|
|
}
|
|
|
|
@EventHandler
|
|
public void onVillagerDeath(EntityDeathEvent event) {
|
|
if (!event.getEntityType().equals(EntityType.VILLAGER))
|
|
return;
|
|
UUID uuid = event.getEntity().getUniqueId();
|
|
|
|
LoadedVillagers.removeLoadedVillager(uuid);
|
|
VillagerConfig.removeVillager(uuid);
|
|
}
|
|
|
|
@EventHandler
|
|
public void onVillagerPotioned(EntityPotionEffectEvent event) {
|
|
if (!(event.getEntity() instanceof Villager villager))
|
|
return;
|
|
|
|
VillagerType loadedVillager = LoadedVillagers.getLoadedVillager(villager.getUniqueId());
|
|
if (loadedVillager == null)
|
|
return;
|
|
|
|
event.setCancelled(true);
|
|
}
|
|
|
|
@EventHandler
|
|
public void onVillagerEntityDamage(EntityDamageByEntityEvent event) {
|
|
if (!(event.getEntity() instanceof Villager villager))
|
|
return;
|
|
|
|
VillagerType loadedVillager = LoadedVillagers.getLoadedVillager(villager.getUniqueId());
|
|
if (loadedVillager == null)
|
|
return;
|
|
|
|
event.setCancelled(true);
|
|
}
|
|
|
|
@EventHandler
|
|
public void onVillagerBlockDamage(EntityDamageByBlockEvent event) {
|
|
if (!(event.getEntity() instanceof Villager villager))
|
|
return;
|
|
|
|
VillagerType loadedVillager = LoadedVillagers.getLoadedVillager(villager.getUniqueId());
|
|
if (loadedVillager == null)
|
|
return;
|
|
|
|
event.setCancelled(true);
|
|
}
|
|
}
|