diff --git a/src/main/java/org/terasology/moduletestingenvironment/fixtures/DummyWorldGenerator.java b/src/main/java/org/terasology/moduletestingenvironment/fixtures/DummyWorldGenerator.java index b336383..51b068e 100644 --- a/src/main/java/org/terasology/moduletestingenvironment/fixtures/DummyWorldGenerator.java +++ b/src/main/java/org/terasology/moduletestingenvironment/fixtures/DummyWorldGenerator.java @@ -19,7 +19,6 @@ import org.terasology.registry.In; import org.terasology.world.generation.BaseFacetedWorldGenerator; import org.terasology.world.generation.WorldBuilder; -import org.terasology.world.generation.facets.SurfaceHeightFacet; import org.terasology.world.generator.RegisterWorldGenerator; import org.terasology.world.generator.plugin.WorldGeneratorPluginLibrary; diff --git a/src/main/java/org/terasology/moduletestingenvironment/fixtures/FlatSurfaceHeightProvider.java b/src/main/java/org/terasology/moduletestingenvironment/fixtures/FlatSurfaceHeightProvider.java index fb3bdba..c3b4f11 100644 --- a/src/main/java/org/terasology/moduletestingenvironment/fixtures/FlatSurfaceHeightProvider.java +++ b/src/main/java/org/terasology/moduletestingenvironment/fixtures/FlatSurfaceHeightProvider.java @@ -14,38 +14,15 @@ * limitations under the License. */ package org.terasology.moduletestingenvironment.fixtures; -/* - * Copyright 2014 MovingBlocks - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ import org.terasology.math.geom.BaseVector2i; -import org.terasology.world.generation.*; -import org.terasology.world.generation.facets.SeaLevelFacet; -import org.terasology.world.generation.facets.SurfaceHeightFacet; - -import org.terasology.math.geom.BaseVector2i; -import org.terasology.world.generation.Facet; import org.terasology.world.generation.FacetProvider; import org.terasology.world.generation.GeneratingRegion; import org.terasology.world.generation.Produces; -import org.terasology.world.generation.Requires; -import org.terasology.world.generation.facets.SeaLevelFacet; -import org.terasology.world.generation.facets.SurfaceHeightFacet; +import org.terasology.world.generation.facets.ElevationFacet; +import org.terasology.world.generation.facets.SurfacesFacet; -@Produces(SurfaceHeightFacet.class) -@Requires(@Facet(SeaLevelFacet.class)) +@Produces({SurfacesFacet.class, ElevationFacet.class}) public class FlatSurfaceHeightProvider implements FacetProvider { private int height; @@ -59,13 +36,23 @@ public void setSeed(long seed) { @Override public void process(GeneratingRegion region) { - SurfaceHeightFacet facet = new SurfaceHeightFacet(region.getRegion(), region.getBorderForFacet(SurfaceHeightFacet.class)); + ElevationFacet elevationFacet = new ElevationFacet(region.getRegion(), region.getBorderForFacet(ElevationFacet.class)); + SurfacesFacet surfacesFacet = new SurfacesFacet(region.getRegion(), region.getBorderForFacet(SurfacesFacet.class)); + + for (BaseVector2i pos : elevationFacet.getRelativeRegion().contents()) { + elevationFacet.set(pos, height); + } - for (BaseVector2i pos : facet.getRelativeRegion().contents()) { - facet.set(pos, height); + if (surfacesFacet.getWorldRegion().minY() <= height && height <= surfacesFacet.getWorldRegion().maxY()) { + for (int x = surfacesFacet.getWorldRegion().minX(); x <= surfacesFacet.getWorldRegion().maxX(); x++) { + for (int z = surfacesFacet.getWorldRegion().minZ(); z <= surfacesFacet.getWorldRegion().maxZ(); z++) { + surfacesFacet.setWorld(x, height, z, true); + } + } } - region.setRegionFacet(SurfaceHeightFacet.class, facet); + region.setRegionFacet(ElevationFacet.class, elevationFacet); + region.setRegionFacet(SurfacesFacet.class, surfacesFacet); } }