@RegisterWorldGenerator(id = "builderSampleWorld", displayName = "Builder Sample World") public class BuilderWorldGenerator extends BaseFacetedWorldGenerator { @In private WorldGeneratorPluginLibrary worldGeneratorPluginLibrary; public BuilderWorldGenerator(SimpleUri uri) { super(uri); } @Override protected WorldBuilder createWorld() { return new WorldBuilder(worldGeneratorPluginLibrary) .setSeaLevel(0) .addProvider(new SurfaceProvider()) .addRasterizer(new BuilderWorldRasterizer()) .addPlugins(); } }
RegisterWorldGenerator annotation = generatorClass.getAnnotation(RegisterWorldGenerator.class); if (isValidWorldGenerator(generatorClass)) { SimpleUri uri = new SimpleUri(moduleId, annotation.id()); infos.add(new WorldGeneratorInfo(uri, annotation.displayName(), annotation.description())); } else { logger.error("{} marked to be registered as a World Generator, but is not a subclass of WorldGenerator or lacks the correct constructor",
/** * @param uri uri of the world generator to create. * @param context that will be used to inject teh world generator. * @param environment to be searched for the world generator class. * @return a new world generator with the specified uri. */ public static WorldGenerator createWorldGenerator(SimpleUri uri, Context context, ModuleEnvironment environment) throws UnresolvedWorldGeneratorException { for (Class<?> generatorClass : environment.getTypesAnnotatedWith(RegisterWorldGenerator.class)) { RegisterWorldGenerator annotation = generatorClass.getAnnotation(RegisterWorldGenerator.class); SimpleUri generatorUri = new SimpleUri(environment.getModuleProviding(generatorClass), annotation.id()); if (generatorUri.equals(uri)) { WorldGenerator worldGenerator = loadGenerator(generatorClass, generatorUri); InjectionHelper.inject(worldGenerator, context); return worldGenerator; } } throw new UnresolvedWorldGeneratorException("Unable to resolve world generator '" + uri + "' - not found"); }
@RegisterWorldGenerator(id = "flat", displayName = "Flat") public class FlatWorldGenerator extends BaseFacetedWorldGenerator { @In private WorldGeneratorPluginLibrary worldGeneratorPluginLibrary; public FlatWorldGenerator(SimpleUri uri) { super(uri); } @Override protected WorldBuilder createWorld() { return new WorldBuilder(worldGeneratorPluginLibrary) .addProvider(new SeaLevelProvider(32)) // height of 40 so that it is far enough from sea level so that it doesnt just create beachfront .addProvider(new FlatSurfaceHeightProvider(40)) .addProvider(new PerlinHumidityProvider()) .addProvider(new PerlinSurfaceTemperatureProvider()) .addProvider(new BiomeProvider()) .addProvider(new SurfaceToDensityProvider()) .addProvider(new DefaultFloraProvider()) .addProvider(new DefaultTreeProvider()) .addRasterizer(new FloraRasterizer()) .addRasterizer(new TreeRasterizer()) .addRasterizer(new SolidRasterizer()) .addPlugins(); } }
@RegisterWorldGenerator(id = "heightMap", displayName = "Height Map", description = "Generates the world using a height map") public class HeightMapWorldGenerator extends BaseFacetedWorldGenerator {
@RegisterWorldGenerator(id = "facetedperlin", displayName = "Perlin", description = "Faceted world generator") public class PerlinFacetedWorldGenerator extends BaseFacetedWorldGenerator {