Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.pl3x.bukkit.lifespan;
- import org.bukkit.Bukkit;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.LivingEntity;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.EventPriority;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.CreatureSpawnEvent;
- import org.bukkit.event.entity.EntityDamageEvent;
- import org.bukkit.event.entity.EntityInteractEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.scheduler.BukkitRunnable;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.UUID;
- public class LifeSpan extends JavaPlugin implements Listener {
- private final Map<UUID, EntityTimer> timers = new HashMap<>();
- @Override
- public void onEnable() {
- getServer().getPluginManager().registerEvents(this, this);
- }
- @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
- public void onEntitySpawn(CreatureSpawnEvent event) {
- switch (event.getEntityType()) {
- case WITHER_SKELETON:
- case STRAY:
- case HUSK:
- case ZOMBIE_VILLAGER:
- case VEX:
- case CREEPER:
- case SKELETON:
- case SPIDER:
- case ZOMBIE:
- case SLIME:
- case GHAST:
- case PIG_ZOMBIE:
- case ENDERMAN:
- case CAVE_SPIDER:
- case SILVERFISH:
- case BLAZE:
- case MAGMA_CUBE:
- case WITCH:
- case ENDERMITE:
- case GUARDIAN:
- createTimer(event.getEntity());
- }
- }
- @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
- public void onEntityInteract(EntityInteractEvent event) {
- if (event.getEntity() instanceof LivingEntity) {
- handleInteract((LivingEntity) event.getEntity());
- }
- }
- @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
- public void onEntityDamage(EntityDamageEvent event) {
- if (event.getEntity() instanceof LivingEntity) {
- handleInteract((LivingEntity) event.getEntity());
- }
- }
- private void handleInteract(LivingEntity entity) {
- EntityTimer timer = timers.remove(entity.getUniqueId());
- if (timer == null) {
- return;
- }
- timer.cancel();
- createTimer(entity);
- }
- public void createTimer(LivingEntity entity) {
- EntityTimer timer = new EntityTimer(entity);
- timer.runTaskLater(this, 12000); // 10 minutes
- timers.put(entity.getUniqueId(), timer);
- }
- public class EntityTimer extends BukkitRunnable {
- private final UUID entity;
- public EntityTimer(LivingEntity entity) {
- this.entity = entity.getUniqueId();
- }
- @Override
- public void run() {
- Entity entity = Bukkit.getEntity(this.entity);
- if (entity == null) {
- cancel();
- return;
- }
- if (entity.isDead()) {
- cancel();
- return;
- }
- if (entity.getCustomName() != null) {
- cancel();
- return;
- }
- entity.remove();
- }
- @Override
- public void cancel() {
- timers.remove(entity);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement