package de.tobiyas.racesandclasses.entitystatusmanager.hots; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.UUID; import org.bukkit.Bukkit; 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.EntityDeathEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerQuitEvent; import de.tobiyas.racesandclasses.RacesAndClasses; public class HotsManager implements Listener{ private final Map<UUID,HotContainer> hotContainers = new HashMap<UUID, HotContainer>(); private final RacesAndClasses plugin; public HotsManager() { this.plugin = RacesAndClasses.getPlugin(); Bukkit.getPluginManager().registerEvents(this, plugin); //Scheduler for Hots. Bukkit.getScheduler().runTaskTimer(plugin, new Runnable() { @Override public void run() { Iterator<Entry<UUID,HotContainer>> it = hotContainers.entrySet().iterator(); while(it.hasNext()){ Entry<UUID,HotContainer> entry = it.next(); HotContainer container = entry.getValue(); if(!container.stillValid()) { it.remove(); continue; } container.tick(); } } }, 10, 10); } /** * Returns the Hot container for that entity. * * @param entity to get. * @return */ public HotContainer get(LivingEntity entity){ if(!hotContainers.containsKey(entity.getUniqueId())) hotContainers.put(entity.getUniqueId(), new HotContainer(entity)); return hotContainers.get(entity.getUniqueId()); } /** * adds the Hot for that entity. * * @param entity to add * @param hot to add * * @return */ public boolean addHot(LivingEntity entity, Hot hot){ HotContainer container = get(entity); return container.addHot(hot); } ////////////////////////// ///Event handler stuff//// ////////////////////////// @EventHandler public void playerQuit(PlayerQuitEvent event){ hotContainers.remove(event.getPlayer().getUniqueId()); } @EventHandler public void playerDies(PlayerDeathEvent event){ HotContainer container = get(event.getEntity()); container.reset(); hotContainers.remove(event.getEntity().getUniqueId()); } @EventHandler(priority = EventPriority.MONITOR) public void entityDies(EntityDeathEvent event){ hotContainers.remove(event.getEntity()); } }