package me.desht.scrollingmenusign; import java.util.HashMap; import java.util.Map; import me.desht.dhutils.PersistableLocation; import org.bukkit.Location; /** * Track the location of every block which is managed by SMS. */ public class LocationManager { private final Map<PersistableLocation, SMSInteractableBlock> locationMap; public LocationManager() { locationMap = new HashMap<PersistableLocation, SMSInteractableBlock>(); } public void registerLocation(Location loc, SMSInteractableBlock interactable) { locationMap.put(new PersistableLocation(loc), interactable); } public void unregisterLocation(Location loc) { locationMap.remove(new PersistableLocation(loc)); } public SMSInteractableBlock getInteractableAt(Location loc) { return locationMap.get(new PersistableLocation(loc)); } public <T> T getInteractableAt(Location loc, Class<T> c) { Object o = locationMap.get(new PersistableLocation(loc)); if (o != null && c.isAssignableFrom(o.getClass())) { return c.cast(o); } else { return null; } } }