package tv.mineinthebox.essentials.managers;
import java.io.File;
import java.util.HashMap;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import tv.mineinthebox.essentials.xEssentials;
import tv.mineinthebox.essentials.enums.LogType;
import tv.mineinthebox.essentials.instances.Bridge;
public class BridgeManager {
private final xEssentials pl;
private final HashMap<String, Bridge> bridges = new HashMap<String, Bridge>();
public BridgeManager(xEssentials pl) {
this.pl = pl;
}
public boolean contains(Bridge bridge) {
return bridges.containsValue(bridge);
}
public boolean isBridgeSign(Block block) {
for(Bridge bridge : bridges.values()) {
if(bridge.getSigns()[0].equals(block) || bridge.getSigns()[1].equals(block)) {
return true;
}
}
return false;
}
public Bridge getBridgeBySign(Block block) {
for(Bridge bridge : bridges.values()) {
if(bridge.getSigns()[0].equals(block) || bridge.getSigns()[1].equals(block)) {
return bridge;
}
}
return null;
}
public Bridge[] getBridges() {
Bridge[] args = new Bridge[bridges.size()];
int i = 0;
for(Bridge bridge : bridges.values()) {
args[i] = bridge;
i++;
}
return args;
}
public void addBridge(Bridge bridge) {
bridges.put(bridge.getId(), bridge);
}
public void removeBridge(Bridge bridge) {
bridges.remove(bridge.getId());
}
public boolean isBridgeBlock(Block block) {
for(Bridge bridge : getBridges()) {
for(Block blocka : bridge.getBridgeBlocks()) {
if(blocka.equals(block)) {
return true;
}
}
}
return false;
}
public Bridge getBridgeFromBlock(Block block) {
for(Bridge bridge : getBridges()) {
for(Block blocka : bridge.getBridgeBlocks()) {
if(blocka.equals(block)) {
return bridge;
}
}
}
return null;
}
public void reloadBridges() {
bridges.clear();
File dir = new File(pl.getDataFolder() + File.separator + "misc" + File.separator + "bridges");
if(dir.isDirectory()) {
File[] files = dir.listFiles();
for(File f : files) {
FileConfiguration con = YamlConfiguration.loadConfiguration(f);
Bridge bridge = new Bridge(f, con, pl);
if(bridge.getWorld() instanceof World) {
if(pl.getConfiguration().getDebugConfig().isEnabled()) {
xEssentials.log("bridge " + bridge.getId() + " has been registered at: (" + bridge.getSigns()[0].getWorld().getName() + " x:" + bridge.getSigns()[0].getX()+" y:" + bridge.getSigns()[0].getY() + " z:" + bridge.getSigns()[0].getZ()+")", LogType.DEBUG);
}
addBridge(bridge);
} else {
if(pl.getConfiguration().getDebugConfig().isEnabled()) {
xEssentials.log("unregistering gate " + bridge.getId() + " world is not active.", LogType.DEBUG);
}
bridge.remove();
}
}
}
}
}