mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-06-18 14:50:56 +00:00
property-ify Chunk Generator addon
This commit is contained in:
+2
-13
@@ -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.generation.generators.NoiseChunkGenerator3D;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder;
|
import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolder;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.palette.PaletteHolderLoader;
|
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.SlantHolder;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolderLoader;
|
import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolderLoader;
|
||||||
import com.dfsek.terra.api.TerraPlugin;
|
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.injection.annotations.Inject;
|
||||||
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
|
import com.dfsek.terra.api.registry.exception.DuplicateEntryException;
|
||||||
import com.dfsek.terra.api.util.seeded.BiomeBuilder;
|
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 com.dfsek.terra.api.world.generator.ChunkGeneratorProvider;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Addon("chunk-generator-noise-3d")
|
@Addon("chunk-generator-noise-3d")
|
||||||
@Author("Terra")
|
@Author("Terra")
|
||||||
@Version("1.0.0")
|
@Version("1.0.0")
|
||||||
@@ -30,26 +25,20 @@ public class NoiseChunkGenerator3DAddon extends TerraAddon implements EventListe
|
|||||||
@Inject
|
@Inject
|
||||||
private TerraPlugin main;
|
private TerraPlugin main;
|
||||||
|
|
||||||
private final Map<String, PaletteInfo> palettes = new HashMap<>();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
main.getEventManager().registerListener(this, this);
|
main.getEventManager().registerListener(this, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onPackLoad(ConfigPackPreLoadEvent event) throws DuplicateEntryException {
|
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())
|
event.getPack().applyLoader(SlantHolder.class, new SlantHolderLoader())
|
||||||
.applyLoader(PaletteHolder.class, new PaletteHolderLoader());
|
.applyLoader(PaletteHolder.class, new PaletteHolderLoader());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onBiomeLoad(ConfigurationLoadEvent event) {
|
public void onBiomeLoad(ConfigurationLoadEvent event) {
|
||||||
if(event.is(BiomeBuilder.class)) {
|
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());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-12
@@ -1,17 +1,14 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.generation.generators;
|
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.PaletteUtil;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.generation.math.samplers.Sampler3D;
|
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.PaletteInfo;
|
||||||
import com.dfsek.terra.addons.chunkgenerator.palette.SlantHolder;
|
|
||||||
import com.dfsek.terra.api.TerraPlugin;
|
import com.dfsek.terra.api.TerraPlugin;
|
||||||
import com.dfsek.terra.api.block.state.BlockState;
|
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.base.Properties;
|
||||||
import com.dfsek.terra.api.block.state.properties.enums.Direction;
|
import com.dfsek.terra.api.block.state.properties.enums.Direction;
|
||||||
import com.dfsek.terra.api.config.ConfigPack;
|
import com.dfsek.terra.api.config.ConfigPack;
|
||||||
import com.dfsek.terra.api.profiler.ProfileFrame;
|
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.vector.Vector3;
|
||||||
import com.dfsek.terra.api.world.BiomeGrid;
|
import com.dfsek.terra.api.world.BiomeGrid;
|
||||||
import com.dfsek.terra.api.world.TerraWorld;
|
import com.dfsek.terra.api.world.TerraWorld;
|
||||||
@@ -34,18 +31,15 @@ import java.util.Random;
|
|||||||
public class NoiseChunkGenerator3D implements TerraChunkGenerator {
|
public class NoiseChunkGenerator3D implements TerraChunkGenerator {
|
||||||
private final ConfigPack configPack;
|
private final ConfigPack configPack;
|
||||||
private final TerraPlugin main;
|
private final TerraPlugin main;
|
||||||
|
private final List<TerraGenerationStage> generationStages = new ArrayList<>();
|
||||||
private final NoiseChunkGenerator3DAddon addon;
|
|
||||||
private final List<TerraGenerationStage> blockPopulators = new ArrayList<>();
|
|
||||||
|
|
||||||
private final BlockState air;
|
private final BlockState air;
|
||||||
|
|
||||||
public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main, NoiseChunkGenerator3DAddon addon) {
|
public NoiseChunkGenerator3D(ConfigPack c, TerraPlugin main) {
|
||||||
this.configPack = c;
|
this.configPack = c;
|
||||||
this.main = main;
|
this.main = main;
|
||||||
this.air = main.getWorldHandle().air();
|
this.air = main.getWorldHandle().air();
|
||||||
this.addon = addon;
|
c.getStages().forEach(stage -> generationStages.add(stage.newInstance(c)));
|
||||||
c.getStages().forEach(stage -> blockPopulators.add(stage.newInstance(c)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"try"})
|
@SuppressWarnings({"try"})
|
||||||
@@ -97,7 +91,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator {
|
|||||||
|
|
||||||
TerraBiome biome = grid.getBiome(cx, cz);
|
TerraBiome biome = grid.getBiome(cx, cz);
|
||||||
|
|
||||||
PaletteInfo paletteInfo = addon.getPalette(biome);
|
PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class);
|
||||||
|
|
||||||
if(paletteInfo == null) {
|
if(paletteInfo == null) {
|
||||||
main.logger().info("null palette: " + biome.getID());
|
main.logger().info("null palette: " + biome.getID());
|
||||||
@@ -166,7 +160,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TerraGenerationStage> getGenerationStages() {
|
public List<TerraGenerationStage> getGenerationStages() {
|
||||||
return blockPopulators;
|
return generationStages;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -176,7 +170,7 @@ public class NoiseChunkGenerator3D implements TerraChunkGenerator {
|
|||||||
TerraBiome biome = provider.getBiome(x, z);
|
TerraBiome biome = provider.getBiome(x, z);
|
||||||
Sampler sampler = terraWorld.getConfig().getSamplerCache().get(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);
|
Palette palette = PaletteUtil.getPalette(x, y, z, biome.getGenerator(world), sampler, paletteInfo);
|
||||||
int fdX = FastMath.floorMod(x, 16);
|
int fdX = FastMath.floorMod(x, 16);
|
||||||
int fdZ = FastMath.floorMod(z, 16);
|
int fdZ = FastMath.floorMod(z, 16);
|
||||||
|
|||||||
+2
-1
@@ -1,8 +1,9 @@
|
|||||||
package com.dfsek.terra.addons.chunkgenerator.palette;
|
package com.dfsek.terra.addons.chunkgenerator.palette;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.properties.Properties;
|
||||||
import com.dfsek.terra.api.world.generator.Palette;
|
import com.dfsek.terra.api.world.generator.Palette;
|
||||||
|
|
||||||
public class PaletteInfo {
|
public class PaletteInfo implements Properties {
|
||||||
private final PaletteHolder paletteHolder;
|
private final PaletteHolder paletteHolder;
|
||||||
private final SlantHolder slantHolder;
|
private final SlantHolder slantHolder;
|
||||||
private final Palette ocean;
|
private final Palette ocean;
|
||||||
|
|||||||
Reference in New Issue
Block a user