@Override public void setWorldSeed(final String seed) { worldSeed = seed; for (final ChunkGenerationPass generator : generationPasses) { generator.setWorldSeed(seed); } }
@Override public WorldConfigurator getConfigurator() { return new WorldConfiguratorAdapter(); }
@Override public void createChunk(final CoreChunk chunk, EntityBuffer buffer) { for (final ChunkGenerationPass generator : generationPasses) { try { generator.generateChunk(chunk); } catch (RuntimeException e) { logger.error("Error during generation pass {}", generator, e); } } }
@Override public void set(String value) { selectedWorld = value; try { if (findWorldByName(selectedWorld).getWorldGenerator() == null) { worldGenerator = WorldGeneratorManager.createWorldGenerator(findWorldByName(selectedWorld).getWorldGeneratorInfo().getUri(), context, environment); findWorldByName(selectedWorld).setWorldGenerator(worldGenerator); } else { worldGenerator = findWorldByName(selectedWorld).getWorldGenerator(); } if (worldGenerator.getWorldSeed() == null) { worldGenerator.setWorldSeed(createSeed(selectedWorld)); } previewGen = new FacetLayerPreview(environment, worldGenerator); updatePreview(); } catch (UnresolvedWorldGeneratorException e) { e.printStackTrace(); } } });
@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(); } }
private void resetEnvironment() { CoreRegistry.setContext(context); if (environment != null) { EnvironmentSwitchHandler environmentSwitchHandler = context.get(EnvironmentSwitchHandler.class); environmentSwitchHandler.handleSwitchBackFromPreviewEnvironment(subContext); environment.close(); environment = null; } previewGen.close(); WorldConfigurator worldConfig = worldGenerator.getConfigurator(); Map<String, Component> params = worldConfig.getProperties(); if (params != null) { config.setModuleConfigs(worldGenerator.getUri(), params); } }
private void cloneAndSet(String group, Object value) { Component comp = worldConfig.getProperties().get(group); Component clone = compLib.copy(comp); fieldMetadata.setValue(clone, value); // notify the world generator about the new component worldConfig.setProperty(label, clone); } }
private static WorldGenerator loadGenerator(Class<?> generatorClass, SimpleUri uri) throws UnresolvedWorldGeneratorException { if (isValidWorldGenerator(generatorClass)) { try { return (WorldGenerator) generatorClass.getConstructor(SimpleUri.class).newInstance(uri); } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { throw new UnresolvedWorldGeneratorException("Failed to instantiate world generator '" + uri + "'", e); } } else { throw new UnresolvedWorldGeneratorException(uri + " is not a valid world generator"); } }
private Vector3i estimateExtent(TreeGenerator treeGen) { Vector3i maxExt = new Vector3i(); for (int i = 0; i < 100; i++) { Vector3i ext = computeAABB(treeGen, i * 37); maximize(maxExt, ext); } return maxExt; }
/** * Determines a spawn position suitable for this world, such as that used to spawn the initial player. * The default implementation simply picks a position in the very center of the world. * * @param entity the entity related to spawning, if needed (or not). Can be ignored. * @return the chosen position */ default Vector3f getSpawnPosition(EntityRef entity) { return new FixedSpawner(0, 0).getSpawnPosition(getWorld(), entity); } }
@Override public T get() { Component comp = worldConfig.getProperties().get(label); return fieldMetadata.getValue(comp); }
@Override public Block setBlock(int x, int y, int z, Block block) { Vector3i world = chunkToWorldPosition(x, y, z); minimize(min, world); maximize(max, world); return null; } };
private void fetchWorldGenerator() { WorldGenerator generator = CoreRegistry.get(WorldGenerator.class); if (generator != null) { worldGenerator = generator.getUri().toString(); } }
private void setWorldGenerators() { for (WorldSetupWrapper worldSetupWrapper : worldList) { if (worldSetupWrapper.getWorldGenerator() == null) { try { worldSetupWrapper.setWorldGenerator(WorldGeneratorManager.createWorldGenerator(findWorldByName(worldSetupWrapper.getWorldName().toString()).getWorldGeneratorInfo().getUri(), context, environment)); } catch (UnresolvedWorldGeneratorException e) { e.printStackTrace(); } } worldSetupWrapper.getWorldGenerator().setWorldSeed(createSeed(worldSetupWrapper.getWorldName().toString())); } }
@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(); } }
private void cloneAndSet(String group, Object value) { Component comp = worldConfig.getProperties().get(group); Component clone = compLib.copy(comp); fieldMetadata.setValue(clone, value); // notify the world generator about the new component worldConfig.setProperty(label, clone); } }
private void registerPass(final ChunkGenerationPass generator) { generator.setWorldSeed(worldSeed); }
public FacetLayerPreview(ModuleEnvironment environment, WorldGenerator worldGenerator) { this.worldGenerator = worldGenerator; World world = worldGenerator.getWorld(); Set<Class<? extends WorldFacet>> facets = world.getAllFacets(); facetLayers = FacetLayers.createLayersFor(facets, environment); }
@Override public T get() { Component comp = worldConfig.getProperties().get(label); return fieldMetadata.getValue(comp); }
@RegisterWorldGenerator(id = "heightMap", displayName = "Height Map", description = "Generates the world using a height map") public class HeightMapWorldGenerator extends BaseFacetedWorldGenerator {