// Path: src/main/java/de/zh32/teleportsigns/DataContainer.java
// @Getter
// public class DataContainer {
// 
// 	private TeleportSignStorage storage;
// 
// 	private final ConfigurationAdapter configuration;
// 
// 	private List<TeleportSign> teleportSigns;
// 
// 	private List<SignLayout> layouts;
// 
// 	private List<GameServer> servers;
// 
// 	public DataContainer(ConfigurationAdapter configuration) {
// 		this.configuration = configuration;
// 	}
// 
// 	public void initialize() {
// 		layouts = configuration.loadLayouts();
// 		servers = configuration.loadServers();
// 		storage = new TeleportSignSQLiteStorage(configuration.getDatabasePath(), this);
// 		storage.initialize();
// 		teleportSigns = storage.loadAll();
// 
// 	}
// 
// 	public TeleportSign signAtLocation(TeleportSign.TeleportSignLocation location) {
// 		for (TeleportSign sign : teleportSigns) {
// 			if (sign.getLocation().equals(location)) {
// 				return sign;
// 			}
// 		}
// 		return null;
// 	}
// 
// 	public SignLayout layoutByName(String content) {
// 		for (SignLayout layout : layouts) {
// 			if (layout.getName().equals(content)) {
// 				return layout;
// 			}
// 		}
// 		return null;
// 	}
// 
// 	public GameServer serverByName(String content) {
// 		for (GameServer server : servers) {
// 			if (server.getName().equals(content)) {
// 				return server;
// 			}
// 		}
// 		return null;
// 	}
// 
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/event/EventAdapter.java
// public interface EventAdapter {
// 	ProxyTeleportEvent callTeleportEvent(String player, GameServer server);
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/event/ProxyTeleportEvent.java
// public interface ProxyTeleportEvent {
// 
// 	boolean isCancelled();
// 
// 	String getPlayerName();
// 
// 	GameServer getServer();
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/utility/Cooldown.java
// public class Cooldown {
// 	private final int cooldownTime;
// 	private Map<String, Long> cooldowns;
// 
// 	public Cooldown(int cooldownTime) {
// 		this.cooldownTime = cooldownTime;
// 		cooldowns = new HashMap<>();
// 	}
// 
// 	public boolean hasCooldown(String player) {
// 		if (!cooldowns.containsKey(player)) return false;
// 		return (System.currentTimeMillis() - cooldowns.get(player)) < cooldownTime;
// 	}
// 
// 	public void setDefaultCooldown(String player) {
// 		cooldowns.put(player, System.currentTimeMillis());
// 	}
// 
// }


import de.zh32.teleportsigns.DataContainer;
import de.zh32.teleportsigns.event.EventAdapter;
import de.zh32.teleportsigns.event.ProxyTeleportEvent;
import de.zh32.teleportsigns.utility.Cooldown;
import lombok.Getter;
package de.zh32.teleportsigns.sign;


/**
 * @author zh32
 */
@Getter
public abstract class ServerTeleporter {

	private final Cooldown cooldown;
// Path: src/main/java/de/zh32/teleportsigns/DataContainer.java
// @Getter
// public class DataContainer {
// 
// 	private TeleportSignStorage storage;
// 
// 	private final ConfigurationAdapter configuration;
// 
// 	private List<TeleportSign> teleportSigns;
// 
// 	private List<SignLayout> layouts;
// 
// 	private List<GameServer> servers;
// 
// 	public DataContainer(ConfigurationAdapter configuration) {
// 		this.configuration = configuration;
// 	}
// 
// 	public void initialize() {
// 		layouts = configuration.loadLayouts();
// 		servers = configuration.loadServers();
// 		storage = new TeleportSignSQLiteStorage(configuration.getDatabasePath(), this);
// 		storage.initialize();
// 		teleportSigns = storage.loadAll();
// 
// 	}
// 
// 	public TeleportSign signAtLocation(TeleportSign.TeleportSignLocation location) {
// 		for (TeleportSign sign : teleportSigns) {
// 			if (sign.getLocation().equals(location)) {
// 				return sign;
// 			}
// 		}
// 		return null;
// 	}
// 
// 	public SignLayout layoutByName(String content) {
// 		for (SignLayout layout : layouts) {
// 			if (layout.getName().equals(content)) {
// 				return layout;
// 			}
// 		}
// 		return null;
// 	}
// 
// 	public GameServer serverByName(String content) {
// 		for (GameServer server : servers) {
// 			if (server.getName().equals(content)) {
// 				return server;
// 			}
// 		}
// 		return null;
// 	}
// 
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/event/EventAdapter.java
// public interface EventAdapter {
// 	ProxyTeleportEvent callTeleportEvent(String player, GameServer server);
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/event/ProxyTeleportEvent.java
// public interface ProxyTeleportEvent {
// 
// 	boolean isCancelled();
// 
// 	String getPlayerName();
// 
// 	GameServer getServer();
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/utility/Cooldown.java
// public class Cooldown {
// 	private final int cooldownTime;
// 	private Map<String, Long> cooldowns;
// 
// 	public Cooldown(int cooldownTime) {
// 		this.cooldownTime = cooldownTime;
// 		cooldowns = new HashMap<>();
// 	}
// 
// 	public boolean hasCooldown(String player) {
// 		if (!cooldowns.containsKey(player)) return false;
// 		return (System.currentTimeMillis() - cooldowns.get(player)) < cooldownTime;
// 	}
// 
// 	public void setDefaultCooldown(String player) {
// 		cooldowns.put(player, System.currentTimeMillis());
// 	}
// 
// }


// Path: src/main/java/de/zh32/teleportsigns/sign/ServerTeleporter.java
import de.zh32.teleportsigns.DataContainer;
import de.zh32.teleportsigns.event.EventAdapter;
import de.zh32.teleportsigns.event.ProxyTeleportEvent;
import de.zh32.teleportsigns.utility.Cooldown;
import lombok.Getter;

package de.zh32.teleportsigns.sign;


/**
 * @author zh32
 */
@Getter
public abstract class ServerTeleporter {

	private final Cooldown cooldown;
	private final DataContainer dataFinder;