mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-05-21 01:00:37 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 734d4bfb94 | |||
| c82e015559 |
+4
-4
@@ -1,5 +1,9 @@
|
|||||||
package com.dfsek.terra.addons.biome.extrusion.extrusions;
|
package com.dfsek.terra.addons.biome.extrusion.extrusions;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
import com.dfsek.terra.addons.biome.extrusion.api.Extrusion;
|
||||||
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
|
import com.dfsek.terra.addons.biome.extrusion.api.ReplaceableBiome;
|
||||||
import com.dfsek.terra.addons.biome.query.api.BiomeQueries;
|
import com.dfsek.terra.addons.biome.query.api.BiomeQueries;
|
||||||
@@ -8,10 +12,6 @@ import com.dfsek.terra.api.util.Range;
|
|||||||
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
import com.dfsek.terra.api.util.collection.ProbabilityCollection;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.function.Predicate;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets biomes at locations based on a sampler.
|
* Sets biomes at locations based on a sampler.
|
||||||
|
|||||||
+2
-2
@@ -7,13 +7,13 @@
|
|||||||
|
|
||||||
package com.dfsek.terra.addons.biome.image.v2;
|
package com.dfsek.terra.addons.biome.image.v2;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import com.dfsek.terra.addons.image.colorsampler.ColorSampler;
|
import com.dfsek.terra.addons.image.colorsampler.ColorSampler;
|
||||||
import com.dfsek.terra.addons.image.converter.ColorConverter;
|
import com.dfsek.terra.addons.image.converter.ColorConverter;
|
||||||
import com.dfsek.terra.api.world.biome.Biome;
|
import com.dfsek.terra.api.world.biome.Biome;
|
||||||
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
|
|
||||||
public class ImageBiomeProvider implements BiomeProvider {
|
public class ImageBiomeProvider implements BiomeProvider {
|
||||||
private final int resolution;
|
private final int resolution;
|
||||||
|
|||||||
+16
-12
@@ -14,7 +14,8 @@ public class BiomeChunkImpl implements BiomeChunk {
|
|||||||
private final SeededVector worldOrigin;
|
private final SeededVector worldOrigin;
|
||||||
private final int chunkOriginArrayIndex;
|
private final int chunkOriginArrayIndex;
|
||||||
private final int worldCoordinateScale;
|
private final int worldCoordinateScale;
|
||||||
private PipelineBiome[][] biomes;
|
private final int size;
|
||||||
|
private PipelineBiome[] biomes;
|
||||||
|
|
||||||
public BiomeChunkImpl(SeededVector worldOrigin, PipelineImpl pipeline) {
|
public BiomeChunkImpl(SeededVector worldOrigin, PipelineImpl pipeline) {
|
||||||
|
|
||||||
@@ -22,14 +23,14 @@ public class BiomeChunkImpl implements BiomeChunk {
|
|||||||
this.chunkOriginArrayIndex = pipeline.getChunkOriginArrayIndex();
|
this.chunkOriginArrayIndex = pipeline.getChunkOriginArrayIndex();
|
||||||
this.worldCoordinateScale = pipeline.getResolution();
|
this.worldCoordinateScale = pipeline.getResolution();
|
||||||
|
|
||||||
int size = pipeline.getArraySize();
|
this.size = pipeline.getArraySize();
|
||||||
|
|
||||||
int expanderCount = pipeline.getExpanderCount();
|
int expanderCount = pipeline.getExpanderCount();
|
||||||
int expansionsApplied = 0;
|
int expansionsApplied = 0;
|
||||||
|
|
||||||
// Allocate working arrays
|
// Allocate working arrays
|
||||||
this.biomes = new PipelineBiome[size][size];
|
this.biomes = new PipelineBiome[size * size];
|
||||||
PipelineBiome[][] lookupArray = new PipelineBiome[size][size];
|
PipelineBiome[] lookupArray = new PipelineBiome[size * size];
|
||||||
// A second lookup array is required such that stage application doesn't affect lookups, otherwise application may cascade
|
// A second lookup array is required such that stage application doesn't affect lookups, otherwise application may cascade
|
||||||
|
|
||||||
// Construct working grid
|
// Construct working grid
|
||||||
@@ -43,7 +44,7 @@ public class BiomeChunkImpl implements BiomeChunk {
|
|||||||
for(int gridZ = 0; gridZ < gridSize; gridZ++) {
|
for(int gridZ = 0; gridZ < gridSize; gridZ++) {
|
||||||
int xIndex = gridOrigin + gridX * gridInterval;
|
int xIndex = gridOrigin + gridX * gridInterval;
|
||||||
int zIndex = gridOrigin + gridZ * gridInterval;
|
int zIndex = gridOrigin + gridZ * gridInterval;
|
||||||
biomes[xIndex][zIndex] = pipeline.getSource().get(worldOrigin.seed(), xIndexToWorldCoordinate(xIndex),
|
biomes[(xIndex * size) + zIndex] = pipeline.getSource().get(worldOrigin.seed(), xIndexToWorldCoordinate(xIndex),
|
||||||
zIndexToWorldCoordinate(zIndex));
|
zIndexToWorldCoordinate(zIndex));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -65,7 +66,7 @@ public class BiomeChunkImpl implements BiomeChunk {
|
|||||||
|
|
||||||
// Cycle arrays, the previously populated array is swapped to be used for lookups, and the result of the stage application
|
// Cycle arrays, the previously populated array is swapped to be used for lookups, and the result of the stage application
|
||||||
// overwrites the previous lookup array. This saves having to allocate a new array copy each time
|
// overwrites the previous lookup array. This saves having to allocate a new array copy each time
|
||||||
PipelineBiome[][] tempArray = biomes;
|
PipelineBiome[] tempArray = biomes;
|
||||||
biomes = lookupArray;
|
biomes = lookupArray;
|
||||||
lookupArray = tempArray;
|
lookupArray = tempArray;
|
||||||
|
|
||||||
@@ -74,7 +75,8 @@ public class BiomeChunkImpl implements BiomeChunk {
|
|||||||
for(int gridX = 0; gridX < gridSize; gridX = gridX + 1) {
|
for(int gridX = 0; gridX < gridSize; gridX = gridX + 1) {
|
||||||
int xIndex = gridOrigin + gridX * gridInterval;
|
int xIndex = gridOrigin + gridX * gridInterval;
|
||||||
int zIndex = gridOrigin + gridZ * gridInterval;
|
int zIndex = gridOrigin + gridZ * gridInterval;
|
||||||
biomes[xIndex][zIndex] = stage.apply(new ViewPoint(this, gridInterval, gridX, gridZ, xIndex, zIndex, lookupArray));
|
biomes[(xIndex * size) + zIndex] = stage.apply(
|
||||||
|
new ViewPoint(this, gridInterval, gridX, gridZ, xIndex, zIndex, lookupArray, size));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -133,7 +135,7 @@ public class BiomeChunkImpl implements BiomeChunk {
|
|||||||
public PipelineBiome get(int xInChunk, int zInChunk) {
|
public PipelineBiome get(int xInChunk, int zInChunk) {
|
||||||
int xIndex = xInChunk + chunkOriginArrayIndex;
|
int xIndex = xInChunk + chunkOriginArrayIndex;
|
||||||
int zIndex = zInChunk + chunkOriginArrayIndex;
|
int zIndex = zInChunk + chunkOriginArrayIndex;
|
||||||
return biomes[xIndex][zIndex];
|
return biomes[(xIndex * size) + zIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
private int xIndexToWorldCoordinate(int xIndex) {
|
private int xIndexToWorldCoordinate(int xIndex) {
|
||||||
@@ -159,10 +161,11 @@ public class BiomeChunkImpl implements BiomeChunk {
|
|||||||
private final int gridZ;
|
private final int gridZ;
|
||||||
private final int xIndex;
|
private final int xIndex;
|
||||||
private final int zIndex;
|
private final int zIndex;
|
||||||
private final PipelineBiome[][] lookupArray;
|
private final PipelineBiome[] lookupArray;
|
||||||
|
private final int size;
|
||||||
|
|
||||||
private ViewPoint(BiomeChunkImpl chunk, int gridInterval, int gridX, int gridZ, int xIndex, int zIndex,
|
private ViewPoint(BiomeChunkImpl chunk, int gridInterval, int gridX, int gridZ, int xIndex, int zIndex,
|
||||||
PipelineBiome[][] lookupArray) {
|
PipelineBiome[] lookupArray, int size) {
|
||||||
this.chunk = chunk;
|
this.chunk = chunk;
|
||||||
this.gridInterval = gridInterval;
|
this.gridInterval = gridInterval;
|
||||||
this.gridX = gridX;
|
this.gridX = gridX;
|
||||||
@@ -170,13 +173,14 @@ public class BiomeChunkImpl implements BiomeChunk {
|
|||||||
this.xIndex = xIndex;
|
this.xIndex = xIndex;
|
||||||
this.zIndex = zIndex;
|
this.zIndex = zIndex;
|
||||||
this.lookupArray = lookupArray;
|
this.lookupArray = lookupArray;
|
||||||
this.biome = lookupArray[xIndex][zIndex];
|
this.size = size;
|
||||||
|
this.biome = lookupArray[(this.xIndex * this.size) + this.zIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
public PipelineBiome getRelativeBiome(int x, int z) {
|
public PipelineBiome getRelativeBiome(int x, int z) {
|
||||||
int lookupXIndex = this.xIndex + x * gridInterval;
|
int lookupXIndex = this.xIndex + x * gridInterval;
|
||||||
int lookupZIndex = this.zIndex + z * gridInterval;
|
int lookupZIndex = this.zIndex + z * gridInterval;
|
||||||
return lookupArray[lookupXIndex][lookupZIndex];
|
return lookupArray[(lookupXIndex * this.size) + lookupZIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
public PipelineBiome getBiome() {
|
public PipelineBiome getBiome() {
|
||||||
|
|||||||
+32
-17
@@ -26,6 +26,33 @@ import com.dfsek.tectonic.api.loader.AbstractConfigLoader;
|
|||||||
import com.dfsek.tectonic.api.loader.ConfigLoader;
|
import com.dfsek.tectonic.api.loader.ConfigLoader;
|
||||||
import com.dfsek.tectonic.api.loader.type.TypeLoader;
|
import com.dfsek.tectonic.api.loader.type.TypeLoader;
|
||||||
import com.dfsek.tectonic.yaml.YamlConfiguration;
|
import com.dfsek.tectonic.yaml.YamlConfiguration;
|
||||||
|
import com.google.common.collect.ListMultimap;
|
||||||
|
import com.google.common.collect.Multimaps;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.UncheckedIOException;
|
||||||
|
import java.lang.reflect.ParameterizedType;
|
||||||
|
import java.lang.reflect.Type;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipFile;
|
||||||
|
|
||||||
import com.dfsek.terra.api.Platform;
|
import com.dfsek.terra.api.Platform;
|
||||||
import com.dfsek.terra.api.addon.BaseAddon;
|
import com.dfsek.terra.api.addon.BaseAddon;
|
||||||
@@ -56,28 +83,16 @@ import com.dfsek.terra.config.fileloaders.FolderLoader;
|
|||||||
import com.dfsek.terra.config.fileloaders.ZIPLoader;
|
import com.dfsek.terra.config.fileloaders.ZIPLoader;
|
||||||
import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader;
|
import com.dfsek.terra.config.loaders.GenericTemplateSupplierLoader;
|
||||||
import com.dfsek.terra.config.loaders.config.BufferedImageLoader;
|
import com.dfsek.terra.config.loaders.config.BufferedImageLoader;
|
||||||
import com.dfsek.terra.config.preprocessor.*;
|
import com.dfsek.terra.config.preprocessor.MetaListLikePreprocessor;
|
||||||
|
import com.dfsek.terra.config.preprocessor.MetaMapPreprocessor;
|
||||||
|
import com.dfsek.terra.config.preprocessor.MetaNumberPreprocessor;
|
||||||
|
import com.dfsek.terra.config.preprocessor.MetaStringPreprocessor;
|
||||||
|
import com.dfsek.terra.config.preprocessor.MetaValuePreprocessor;
|
||||||
import com.dfsek.terra.config.prototype.ProtoConfig;
|
import com.dfsek.terra.config.prototype.ProtoConfig;
|
||||||
import com.dfsek.terra.registry.CheckedRegistryImpl;
|
import com.dfsek.terra.registry.CheckedRegistryImpl;
|
||||||
import com.dfsek.terra.registry.OpenRegistryImpl;
|
import com.dfsek.terra.registry.OpenRegistryImpl;
|
||||||
import com.dfsek.terra.registry.ShortcutHolder;
|
import com.dfsek.terra.registry.ShortcutHolder;
|
||||||
|
|
||||||
import com.google.common.collect.ListMultimap;
|
|
||||||
import com.google.common.collect.Multimaps;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.*;
|
|
||||||
import java.lang.reflect.ParameterizedType;
|
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
import java.util.zip.ZipEntry;
|
|
||||||
import java.util.zip.ZipFile;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a Terra configuration pack.
|
* Represents a Terra configuration pack.
|
||||||
|
|||||||
+2
-2
@@ -1,10 +1,10 @@
|
|||||||
package com.dfsek.terra.bukkit.nms.v1_19_R1;
|
package com.dfsek.terra.bukkit.nms.v1_19_R1;
|
||||||
|
|
||||||
import com.dfsek.terra.api.properties.Properties;
|
|
||||||
|
|
||||||
import net.minecraft.resources.ResourceKey;
|
import net.minecraft.resources.ResourceKey;
|
||||||
import net.minecraft.world.level.biome.Biome;
|
import net.minecraft.world.level.biome.Biome;
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.properties.Properties;
|
||||||
|
|
||||||
|
|
||||||
public record NMSBiomeInfo(ResourceKey<Biome> biomeKey) implements Properties {
|
public record NMSBiomeInfo(ResourceKey<Biome> biomeKey) implements Properties {
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user