64 lines
1.9 KiB
Java
64 lines
1.9 KiB
Java
package tc.oc.lobby.bukkit.portals;
|
|
|
|
import java.util.Collections;
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
import javax.inject.Inject;
|
|
import javax.inject.Singleton;
|
|
import org.bukkit.geometry.Cuboid;
|
|
import tc.oc.commons.bukkit.config.ExternalConfiguration;
|
|
import tc.oc.commons.bukkit.configuration.ConfigUtils;
|
|
import tc.oc.commons.bukkit.teleport.Navigator;
|
|
import tc.oc.commons.core.logging.Loggers;
|
|
|
|
@Singleton
|
|
public class PortalsConfig extends ExternalConfiguration {
|
|
|
|
private Logger logger;
|
|
private Navigator navigator;
|
|
|
|
@Inject
|
|
PortalsConfig(Loggers loggers, Navigator navigator) {
|
|
this.logger = loggers.get(getClass());
|
|
this.navigator = navigator;
|
|
}
|
|
|
|
public Set<Portal> loadPortals() {
|
|
if (enabled()) {
|
|
Set<Portal> portals = new HashSet();
|
|
logger.log(Level.INFO, "Portals are enabled, loading...");
|
|
for (String name : getPortals()) {
|
|
Portal portal = new Portal(name, navigator.parseConnector(getTo(name)), Cuboid.between(ConfigUtils.getVector(config(), "portals." + name + ".min", null), ConfigUtils.getVector(config(), "portals." + name + ".max", null)));
|
|
portals.add(portal);
|
|
logger.fine("Enabled portal " + name);
|
|
}
|
|
return portals;
|
|
} else {
|
|
logger.fine("Portals are not enabled, therefore they will not be in use.");
|
|
}
|
|
return Collections.emptySet();
|
|
}
|
|
|
|
public String configName() {
|
|
return "portals";
|
|
}
|
|
|
|
protected String fileName() {
|
|
return "lobby-portals";
|
|
}
|
|
|
|
private String getTo(String token) {
|
|
return config().getString("portals." + token + ".to");
|
|
}
|
|
|
|
private Set<String> getPortals() {
|
|
return config().getConfigurationSection("portals").getKeys(false);
|
|
}
|
|
|
|
private boolean enabled() {
|
|
return config().getBoolean("enabled");
|
|
}
|
|
}
|