From a673f961b349db45075832819a622258b06adb26 Mon Sep 17 00:00:00 2001 From: dfsek Date: Sat, 17 Jul 2021 10:34:14 -0700 Subject: [PATCH] property-ify Chunk Generator addon --- .../NoiseChunkGenerator3DAddon.java | 15 ++------------- .../generators/NoiseChunkGenerator3D.java | 18 ++++++------------ .../chunkgenerator/palette/PaletteInfo.java | 3 ++- 3 files changed, 10 insertions(+), 26 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java index 1f7c0910b..d6340a8ed 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/NoiseChunkGenerator3DAddon.java @@ -3,7 +3,6 @@ package com.dfsek.terra.addons.chunkgenerator; import com.dfsek.terra.addons.chunkgenerator.generation.generators.NoiseChunkGenerator3D; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolderLoader; -import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolderLoader; import com.dfsek.terra.api.TerraPlugin; @@ -17,12 +16,8 @@ import com.dfsek.terra.api.event.events.config.pack.ConfigPackPreLoadEvent; import com.dfsek.terra.api.injection.annotations.Inject; import com.dfsek.terra.api.registry.exception.DuplicateEntryException; import com.dfsek.terra.api.util.seeded.BiomeBuilder; -import com.dfsek.terra.api.world.biome.TerraBiome; import com.dfsek.terra.api.world.generator.ChunkGeneratorProvider; -import java.util.HashMap; -import java.util.Map; - @Addon("chunk-generator-noise-3d") @Author("Terra") @Version("1.0.0") @@ -30,26 +25,20 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe @Inject private TerraPlugin main; - private final Map palettes = new HashMap<>(); - @Override public void initialize() { main.getEventManager().registerListener(this, this); } public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException { - event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main, this)); + event.getPack().getOrCreateRegistry(ChunkGeneratorProvider.class).register("NOISE_3D", pack -> new NoiseChunkGenerator3D(pack, main)); event.getPack().applyLoader(SlantHolder.class, new SlantHolderLoader()) .applyLoader(PaletteHolder.class, new PaletteHolderLoader()); } public void onBiomeLoad(ConfigurationLoadEvent event) { if(event.is(BiomeBuilder.class)) { - palettes.put(event.getConfiguration().getID(), event.load(new BiomePaletteTemplate()).get()); + event.getLoadedObject(BiomeBuilder.class).getContext().put(event.load(new BiomePaletteTemplate()).get()); } } - - public PaletteInfo getPalette(TerraBiome biome) { - return palettes.get(biome.getID()); - } } diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java index e576de89b..b7f3958d3 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/generators/NoiseChunkGenerator3D.java @@ -1,17 +1,14 @@ package com.dfsek.terra.addons.chunkgenerator.generation.generators; -import com.dfsek.terra.addons.chunkgenerator.NoiseChunkGenerator3DAddon; import com.dfsek.terra.addons.chunkgenerator.PaletteUtil; import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D; import com.dfsek.terra.addons.chunkgenerator.palette.PaletteInfo; -import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder; import com.dfsek.terra.api.TerraPlugin; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.block.state.properties.base.Properties; import com.dfsek.terra.api.block.state.properties.enums.Direction; import com.dfsek.terra.api.config.ConfigPack; import com.dfsek.terra.api.profiler.ProfileFrame; -import com.dfsek.terra.api.util.MathUtil; import com.dfsek.terra.api.vector.Vector3; import com.dfsek.terra.api.world.BiomeGrid; import com.dfsek.terra.api.world.TerraWorld; @@ -34,18 +31,15 @@ import java.util.Random; public class NoiseChunkGenerator3D implements TerraChunkGenerator { private final ConfigPack configPack; private final TerraPlugin main; - - private final NoiseChunkGenerator3DAddon addon; - private final List blockPopulators = new ArrayList<>(); + private final List generationStages = new ArrayList<>(); private final BlockState air; - public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main, NoiseChunkGenerator3DAddon addon) { + public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) { this.configPack = c; this.main = main; this.air = main.getWorldHandle().air(); - this.addon = addon; - c.getStages().forEach(stage -> blockPopulators.add(stage.newInstance(c))); + c.getStages().forEach(stage -> generationStages.add(stage.newInstance(c))); } @SuppressWarnings({"try"}) @@ -97,7 +91,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { TerraBiome biome = grid.getBiome(cx, cz); - PaletteInfo paletteInfo = addon.getPalette(biome); + PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); if(paletteInfo == null) { main.logger().info("null palette: " + biome.getID()); @@ -166,7 +160,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { @Override public List getGenerationStages() { - return blockPopulators; + return generationStages; } @Override @@ -176,7 +170,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator { TerraBiome biome = provider.getBiome(x, z); Sampler sampler = terraWorld.getConfig().getSamplerCache().get(x, z); - PaletteInfo paletteInfo = addon.getPalette(biome); + PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); Palette palette = PaletteUtil.getPalette(x, y, z, biome.getGenerator(world), sampler, paletteInfo); int fdX = FastMath.floorMod(x, 16); int fdZ = FastMath.floorMod(z, 16); diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java index 7323e0965..109da179b 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/palette/PaletteInfo.java @@ -1,8 +1,9 @@ package com.dfsek.terra.addons.chunkgenerator.palette; +import com.dfsek.terra.api.properties.Properties; import com.dfsek.terra.api.world.generator.Palette; -public class PaletteInfo { +public class PaletteInfo implements Properties { private final PaletteHolder paletteHolder; private final SlantHolder slantHolder; private final Palette ocean;