package jk_5.nailed.server.world;
import jk_5.nailed.api.world.DefaultWorldProviders;
import jk_5.nailed.api.world.Dimension;
import jk_5.nailed.api.world.WorldProvider;
import javax.annotation.Nonnull;
public class NailedDefaultWorldProviders implements DefaultWorldProviders {
private static final NailedDefaultWorldProviders INSTANCE = new NailedDefaultWorldProviders();
private abstract class IdTracked implements WorldProvider {
private int id;
@Override
public final int getId() {
return this.id;
}
@Override
public final void setId(int id) {
this.id = id;
}
@Nonnull
@Override
public Dimension getDimension() {
return Dimension.OVERWORLD;
}
@Override
public String getOptions() {
return null;
}
}
@Nonnull
@Override
public WorldProvider getVoidProvider() {
return new IdTracked() {
@Nonnull
@Override
public String getType() {
return "void";
}
};
}
@Nonnull
@Override
public WorldProvider getOverworldProvider() {
return new IdTracked() {
@Nonnull
@Override
public String getType() {
return "overworld";
}
};
}
@Nonnull
@Override
public WorldProvider getNetherProvider() {
return new IdTracked() {
@Nonnull
@Override
public String getType() {
return "nether";
}
@Nonnull
@Override
public Dimension getDimension() {
return Dimension.NETHER;
}
};
}
@Nonnull
@Override
public WorldProvider getEndProvider() {
return new IdTracked() {
@Nonnull
@Override
public String getType() {
return "end";
}
@Nonnull
@Override
public Dimension getDimension() {
return Dimension.END;
}
};
}
@Nonnull
@Override
public WorldProvider getFlatProvider(@Nonnull final String pattern) {
return new IdTracked() {
@Nonnull
@Override
public String getType() {
return "flat";
}
@Override
public String getOptions() {
return pattern;
}
};
}
public static NailedDefaultWorldProviders instance(){
return INSTANCE;
}
}