// Path: src/main/java/de/zh32/teleportsigns/sign/TeleportSign.java
// @Data
// @Builder
// @AllArgsConstructor
// public class TeleportSign {
// 
// 	private GameServer server;
// 
// 	private SignLayout layout;
// 
// 	private TeleportSignLocation location;
// 
// 	@Data
// 	@Accessors(chain = true)
// 	@AllArgsConstructor
// 	@EqualsAndHashCode
// 	public static class TeleportSignLocation {
// 		private int x;
// 		private int y;
// 		private int z;
// 		private String worldName;
// 	}
// 
// 	public boolean equals(Object object) {
// 		if (!(object instanceof TeleportSign)) {
// 			return false;
// 
// 
// 		}
// 		TeleportSign teleportSign = (TeleportSign) object;
// 		if (teleportSign.getLocation().equals(this.location)) {
// 			return true;
// 		}
// 		return false;
// 	}
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/task/SignUpdateTask.java
// public abstract class SignUpdateTask extends Task {
// 
// 	private final int maxUpdatesPerTick;
// 	private int updatesThisTick;
// 	private final Iterator<TeleportSign> it;
// 
// 	public SignUpdateTask(List<TeleportSign> teleportSigns, int updatesPerTick) {
// 		this.maxUpdatesPerTick = updatesPerTick;
// 		this.it = teleportSigns.iterator();
// 	}
// 
// 	@Override
// 	public void execute() {
// 		updatesThisTick = 0;
// 		while (it.hasNext() && updatesThisTick < maxUpdatesPerTick) {
// 			updateSign(it.next());
// 			updatesThisTick++;
// 		}
// 		if (it.hasNext()) {
// 			runTaskLater();
// 		}
// 		finish(null);
// 	}
// 
// 	public abstract void runTaskLater();
// 
// 	public abstract void updateSign(TeleportSign next);
// 
// }


import de.zh32.teleportsigns.sign.TeleportSign;
import de.zh32.teleportsigns.task.SignUpdateTask;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.plugin.Plugin;
import java.util.List;
package de.zh32.teleportsigns.task.bukkit;



/**
 * @author zh32
 */
public class BukkitSignUpdateTask extends SignUpdateTask implements Runnable {

	private final Plugin plugin;

// Path: src/main/java/de/zh32/teleportsigns/sign/TeleportSign.java
// @Data
// @Builder
// @AllArgsConstructor
// public class TeleportSign {
// 
// 	private GameServer server;
// 
// 	private SignLayout layout;
// 
// 	private TeleportSignLocation location;
// 
// 	@Data
// 	@Accessors(chain = true)
// 	@AllArgsConstructor
// 	@EqualsAndHashCode
// 	public static class TeleportSignLocation {
// 		private int x;
// 		private int y;
// 		private int z;
// 		private String worldName;
// 	}
// 
// 	public boolean equals(Object object) {
// 		if (!(object instanceof TeleportSign)) {
// 			return false;
// 
// 
// 		}
// 		TeleportSign teleportSign = (TeleportSign) object;
// 		if (teleportSign.getLocation().equals(this.location)) {
// 			return true;
// 		}
// 		return false;
// 	}
// }
// 
// Path: src/main/java/de/zh32/teleportsigns/task/SignUpdateTask.java
// public abstract class SignUpdateTask extends Task {
// 
// 	private final int maxUpdatesPerTick;
// 	private int updatesThisTick;
// 	private final Iterator<TeleportSign> it;
// 
// 	public SignUpdateTask(List<TeleportSign> teleportSigns, int updatesPerTick) {
// 		this.maxUpdatesPerTick = updatesPerTick;
// 		this.it = teleportSigns.iterator();
// 	}
// 
// 	@Override
// 	public void execute() {
// 		updatesThisTick = 0;
// 		while (it.hasNext() && updatesThisTick < maxUpdatesPerTick) {
// 			updateSign(it.next());
// 			updatesThisTick++;
// 		}
// 		if (it.hasNext()) {
// 			runTaskLater();
// 		}
// 		finish(null);
// 	}
// 
// 	public abstract void runTaskLater();
// 
// 	public abstract void updateSign(TeleportSign next);
// 
// }


// Path: src/main/java/de/zh32/teleportsigns/task/bukkit/BukkitSignUpdateTask.java
import de.zh32.teleportsigns.sign.TeleportSign;
import de.zh32.teleportsigns.task.SignUpdateTask;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.plugin.Plugin;
import java.util.List;

package de.zh32.teleportsigns.task.bukkit;



/**
 * @author zh32
 */
public class BukkitSignUpdateTask extends SignUpdateTask implements Runnable {

	private final Plugin plugin;

	public BukkitSignUpdateTask(List<TeleportSign> teleportSigns, int updatesPerTick, Plugin plugin) {