package regalowl.hyperconomy; import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Entity; import org.bukkit.entity.ItemFrame; import org.bukkit.event.Listener; import regalowl.databukkit.QueryResult; public class FrameShopHandler implements Listener { private HyperConomy hc; private EconomyManager em; private HashMap<Short, FrameShop> frameShops = new HashMap<Short, FrameShop>(); public FrameShopHandler() { hc = HyperConomy.hc; em = hc.getEconomyManager(); hc.getServer().getPluginManager().registerEvents(this, hc); load(); } private void load() { hc.getServer().getScheduler().runTaskAsynchronously(hc, new Runnable() { public void run() { frameShops.clear(); QueryResult result = hc.getSQLRead().aSyncSelect("SELECT * FROM hyperconomy_frame_shops"); while (result.next()) { double x = result.getDouble("X"); double y = result.getDouble("Y"); double z = result.getDouble("Z"); World w = Bukkit.getWorld(result.getString("WORLD")); Location l = new Location(w,x,y,z); Shop s = em.getShop(result.getString("SHOP")); String economy = em.getDefaultEconomy().getEconomy(); if (s != null) { economy = s.getEconomy(); } HyperObject ho = em.getEconomy(economy).getHyperObject(result.getString("HYPEROBJECT")); FrameShop fs = new FrameShop((short)(int)result.getInt("ID"), l, ho, s); frameShops.put(fs.getMapId(), fs); } result.close(); } }); } public FrameShop getFrameShop(short id) { if (frameShops.containsKey(id)) { return frameShops.get(id); } return null; } public void removeFrameShop(short id) { if (frameShops.containsKey(id)) { frameShops.remove(id); } } public void createFrameShop(Location l, HyperObject ho, Shop s) { FrameShop fs = new FrameShop(l, ho, s); frameShops.put(fs.getMapId(), fs); } public ItemFrame getFrame(Location loc) { for (Entity e : loc.getChunk().getEntities()) if (e instanceof ItemFrame) { if (e.getLocation().getBlock().getLocation().distance(loc) == 0) { return (ItemFrame) e; } } return null; } }