package jk_5.nailed.plugins.directorymappackloader;
import com.google.common.base.MoreObjects;
import io.netty.util.concurrent.Promise;
import jk_5.nailed.api.mappack.Mappack;
import jk_5.nailed.api.mappack.filesystem.DirectoryMount;
import jk_5.nailed.api.mappack.filesystem.IMount;
import jk_5.nailed.api.mappack.metadata.MappackMetadata;
import org.apache.commons.io.FileUtils;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.File;
import java.io.IOException;
public class DirectoryMappack implements Mappack {
private final File dir;
private final MappackMetadata metadata;
public DirectoryMappack(File dir, MappackMetadata metadata) {
this.dir = dir;
this.metadata = metadata;
}
@Nonnull
@Override
public String getId() {
return dir.getName();
}
@Nonnull
@Override
public MappackMetadata getMetadata() {
return metadata;
}
@Override
public void prepareWorld(@Nonnull File destinationDirectory, @Nonnull Promise<Void> promise) {
File original = new File(dir, "worlds");
destinationDirectory.mkdir();
try{
FileUtils.copyDirectory(original, destinationDirectory);
promise.setSuccess(null);
}catch(IOException e){
promise.setFailure(e);
}
}
@Nullable
@Override
public IMount getMappackMount() {
return new DirectoryMount(new File(dir, "scripts"));
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("dir", dir)
.add("metadata", metadata)
.toString();
}
}