package buildcraft.core.tablet.manager;
import java.util.HashMap;
import net.minecraft.entity.player.EntityPlayer;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.PlayerEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import buildcraft.core.tablet.TabletServer;
public class TabletManagerServer {
public static final TabletManagerServer INSTANCE = new TabletManagerServer();
private HashMap<EntityPlayer, TabletThread> threads = new HashMap<EntityPlayer, TabletThread>();
public TabletServer get(EntityPlayer player) {
if (!threads.containsKey(player)) {
TabletServer tablet = new TabletServer(player);
TabletThread thread = new TabletThread(tablet);
threads.put(player, thread);
new Thread(thread).start();
}
return (TabletServer) threads.get(player).getTablet();
}
public void onServerStopping() {
for (TabletThread thread : threads.values()) {
thread.stop();
}
threads.clear();
}
@SubscribeEvent
public void serverTick(TickEvent.ServerTickEvent event) {
for (TabletThread thread : threads.values()) {
thread.tick(0.05F);
}
}
@SubscribeEvent
public void playerLogout(PlayerEvent.PlayerLoggedOutEvent event) {
TabletThread thread = threads.get(event.player);
if (thread != null) {
thread.stop();
threads.remove(event.player);
}
}
}