// 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/sign/TeleportSign.java
// @Data
// @Accessors(chain = true)
// @AllArgsConstructor
// @EqualsAndHashCode
// public static class TeleportSignLocation {
// 	private int x;
// 	private int y;
// 	private int z;
// 	private String worldName;
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/task/bukkit/BukkitSignUpdateTask.java
// public class BukkitSignUpdateTask extends SignUpdateTask implements Runnable {
// 
// 	private final Plugin plugin;
// 
// 	public BukkitSignUpdateTask(List<TeleportSign> teleportSigns, int updatesPerTick, Plugin plugin) {
// 		super(teleportSigns, updatesPerTick);
// 		this.plugin = plugin;
// 	}
// 
// 	@Override
// 	public void runTaskLater() {
// 		Bukkit.getScheduler().runTaskLater(plugin, this, 1L);
// 	}
// 
// 	@Override
// 	public void updateSign(TeleportSign sign) {
// 		Location location = new Location(
// 				Bukkit.getWorld(sign.getLocation().getWorldName()),
// 				sign.getLocation().getX(),
// 				sign.getLocation().getY(),
// 				sign.getLocation().getZ()
// 		);
// 		Block block = location.getBlock();
// 		if (location.getWorld().getChunkAt(location).isLoaded()) {
// 			if (block.getState() instanceof Sign) {
// 				Sign signBlock = (Sign) block.getState();
// 				String[] lines = sign.getLayout().renderLayoutFor(sign.getServer());
// 				for (int i = 0; i < lines.length; i++) {
// 					signBlock.setLine(i, lines[i]);
// 				}
// 				signBlock.update();
// 			}
// 		}
// 	}
// 
// 	@Override
// 	public void run() {
// 		this.execute();
// 	}
// 
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/utility/MessageHelper.java
// public class MessageHelper {
// 
// 	@Getter
// 	@Setter
// 	private static Map<String, String> messages;
// 
// 	public static String getMessage(String messageCode, Object... args) {
// 		String template;
// 		if (messages == null || (template = messages.get(messageCode)) == null) {
// 			return messageCode;
// 		}
// 		return String.format(template, args);
// 	}
// 
// }


import de.zh32.teleportsigns.DataContainer;
import de.zh32.teleportsigns.sign.TeleportSign.TeleportSignLocation;
import de.zh32.teleportsigns.task.bukkit.BukkitSignUpdateTask;
import de.zh32.teleportsigns.utility.MessageHelper;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.plugin.Plugin;
import java.util.Arrays;
package de.zh32.teleportsigns.sign;



/**
 * @author zh32
 */
public class BukkitSignCreator extends SignCreator implements Listener {
	private static final String CREATE_PERMISSION = "teleportsigns.create";
	private final Plugin bukkitPlugin;

// 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/sign/TeleportSign.java
// @Data
// @Accessors(chain = true)
// @AllArgsConstructor
// @EqualsAndHashCode
// public static class TeleportSignLocation {
// 	private int x;
// 	private int y;
// 	private int z;
// 	private String worldName;
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/task/bukkit/BukkitSignUpdateTask.java
// public class BukkitSignUpdateTask extends SignUpdateTask implements Runnable {
// 
// 	private final Plugin plugin;
// 
// 	public BukkitSignUpdateTask(List<TeleportSign> teleportSigns, int updatesPerTick, Plugin plugin) {
// 		super(teleportSigns, updatesPerTick);
// 		this.plugin = plugin;
// 	}
// 
// 	@Override
// 	public void runTaskLater() {
// 		Bukkit.getScheduler().runTaskLater(plugin, this, 1L);
// 	}
// 
// 	@Override
// 	public void updateSign(TeleportSign sign) {
// 		Location location = new Location(
// 				Bukkit.getWorld(sign.getLocation().getWorldName()),
// 				sign.getLocation().getX(),
// 				sign.getLocation().getY(),
// 				sign.getLocation().getZ()
// 		);
// 		Block block = location.getBlock();
// 		if (location.getWorld().getChunkAt(location).isLoaded()) {
// 			if (block.getState() instanceof Sign) {
// 				Sign signBlock = (Sign) block.getState();
// 				String[] lines = sign.getLayout().renderLayoutFor(sign.getServer());
// 				for (int i = 0; i < lines.length; i++) {
// 					signBlock.setLine(i, lines[i]);
// 				}
// 				signBlock.update();
// 			}
// 		}
// 	}
// 
// 	@Override
// 	public void run() {
// 		this.execute();
// 	}
// 
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/utility/MessageHelper.java
// public class MessageHelper {
// 
// 	@Getter
// 	@Setter
// 	private static Map<String, String> messages;
// 
// 	public static String getMessage(String messageCode, Object... args) {
// 		String template;
// 		if (messages == null || (template = messages.get(messageCode)) == null) {
// 			return messageCode;
// 		}
// 		return String.format(template, args);
// 	}
// 
// }


// Path: src/main/java/de/zh32/teleportsigns/sign/BukkitSignCreator.java
import de.zh32.teleportsigns.DataContainer;
import de.zh32.teleportsigns.sign.TeleportSign.TeleportSignLocation;
import de.zh32.teleportsigns.task.bukkit.BukkitSignUpdateTask;
import de.zh32.teleportsigns.utility.MessageHelper;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.plugin.Plugin;
import java.util.Arrays;

package de.zh32.teleportsigns.sign;



/**
 * @author zh32
 */
public class BukkitSignCreator extends SignCreator implements Listener {
	private static final String CREATE_PERMISSION = "teleportsigns.create";
	private final Plugin bukkitPlugin;

	public BukkitSignCreator(DataContainer tsigns, Plugin plugin) {