package net.nemez.chatapi.click; import java.util.HashMap; import java.util.UUID; import org.bukkit.command.CommandSender; public class CallbackMap { private static HashMap> map = new HashMap>(); protected static int register(UUID uuid, ClickCallback callback) { HashMap playerMap = map.get(uuid.toString()); if (playerMap == null) { playerMap = new HashMap(); map.put(uuid.toString(), playerMap); } int largestId = 0; for (int i : playerMap.keySet()) { if (i > largestId) { largestId = i; } } int id = largestId + 1; playerMap.put(id, callback); return id; } protected static void execute(CommandSender sender, UUID uuid, int id) { HashMap playerMap = map.get(uuid.toString()); if (playerMap == null) { return; } ClickCallback cb = playerMap.get(id); if (cb == null) { return; } if (cb.isAsynchronous()) { Thread t = new Thread() { public void run() { cb.execute(sender); } }; t.start(); }else{ cb.execute(sender); } } protected static void discard(UUID uuid) { map.remove(uuid.toString()); } }