package org.dynmap; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class Event { private List> listeners = new LinkedList>(); private Object lock = new Object(); public void addListener(Listener l) { synchronized(lock) { listeners.add(l); } } public void removeListener(Listener l) { synchronized(lock) { listeners.remove(l); } } public void trigger(T t) { ArrayList> iterlist; synchronized(lock) { iterlist = new ArrayList>(listeners); } for (Listener l : iterlist) { l.triggered(t); } } public interface Listener { void triggered(T t); } }