Implement new Palette types

This commit is contained in:
dfsek committed 2020-09-20 22:59:50 -07:00
1 parent 2424b907be
commit 44f302b564
13 files changed
+74 -54

No files matched your search

+7 -1
View File
@@ -83,7 +83,7 @@
<dependency>
<groupId>org.polydev</groupId>
<artifactId>gaea</artifactId>
<version>1.8.1</version>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>javax.vecmath</groupId>
@@ -91,6 +91,12 @@
<version>1.5.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.vecmath</groupId>
<artifactId>vecmath</artifactId>
<version>1.5.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
@@ -12,8 +12,8 @@ import org.bukkit.generator.BlockPopulator;
import org.jetbrains.annotations.NotNull;
import org.polydev.gaea.generation.GaeaChunkGenerator;
import org.polydev.gaea.generation.GenerationPopulator;
import org.polydev.gaea.math.ChunkInterpolator;
import org.polydev.gaea.math.FastNoise;
import org.polydev.gaea.math.InterpolationType;
import org.polydev.gaea.population.PopulationManager;
import java.util.Arrays;
@@ -24,7 +24,7 @@ import java.util.Random;
public class TerraChunkGenerator extends GaeaChunkGenerator {
private final PopulationManager popMan = new PopulationManager();
public TerraChunkGenerator() {
super(InterpolationType.TRILINEAR);
super(ChunkInterpolator.InterpolationType.TRILINEAR);
popMan.attach(new TreePopulator());
popMan.attach(new FaunaPopulator());
popMan.attach(new OrePopulator());
@@ -14,17 +14,12 @@ public class BiomeZone {
private final World w;
private final FastNoise noise;
private static final Map<World, BiomeZone> zones = new HashMap<>();
private static final double[] normalMap = new double[] {-0.572874128818512D, -0.5007192492485046D, -0.4495924413204193D, -0.41612040996551514D, -0.3814384937286377D, -0.3477869927883148D, -0.31369876861572266D, -0.28042978048324585D, -0.24612723290920258D, -0.21002958714962006D, -0.17449893057346344D, -0.1394101232290268D, -0.10480091720819473D, -0.0714595764875412D, -0.03575916960835457D, -0.0017036114586517215D, 0.03202686831355095D, 0.06717526167631149D, 0.10201185941696167D, 0.13758908212184906D, 0.17380206286907196D, 0.20863550901412964D, 0.24430148303508759D, 0.2795235514640808D, 0.31312644481658936D, 0.3475150465965271D, 0.38061848282814026D, 0.415109783411026D, 0.44838231801986694D, 0.4965132176876068D, 0.5715073347091675D, 0.7126374840736389D};
private BiomeZone(World w, float freq) {
this.w = w;
this.noise = new FastNoise((int) w.getSeed()+2);
FastNoise base = new FastNoise((int) (w.getSeed()+2));
base.setNoiseType(FastNoise.NoiseType.Simplex);
base.setFrequency(freq);
this.noise.setCellularDistanceFunction(FastNoise.CellularDistanceFunction.Natural);
this.noise.setCellularNoiseLookup(base);
this.noise.setFrequency(freq);
this.noise.setNoiseType(FastNoise.NoiseType.SimplexFractal);
this.noise.setFractalOctaves(4);
this.noise.setFrequency(WorldConfig.fromWorld(w).zoneFreq);
setZones(WorldConfig.fromWorld(w).definedGrids);
zones.put(w, this);
}
@@ -10,7 +10,7 @@ import org.polydev.gaea.math.parsii.eval.Parser;
import org.polydev.gaea.math.parsii.eval.Scope;
import org.polydev.gaea.math.parsii.eval.Variable;
import org.polydev.gaea.math.parsii.tokenizer.ParseException;
import org.polydev.gaea.world.BlockPalette;
import org.polydev.gaea.world.palette.BlockPalette;
import java.util.List;
import java.util.Map;
@@ -7,12 +7,12 @@ import org.polydev.gaea.biome.BiomeGrid;
public class UserDefinedGrid extends BiomeGrid {
public UserDefinedGrid(World w, float freq1, float freq2, BiomeGridConfig config) {
super(w, freq1, freq2, config.getBiomeGrid().length, config.getBiomeGrid()[0].length);
super.setNormalType(NormalType.CELLULAR);
super.setNormalType(NormalType.LOOKUP4096);
super.setGrid(config.getBiomeGrid());
}
public UserDefinedGrid(World w, float freq1, float freq2, UserDefinedBiome[][] b) {
super(w, freq1, freq2, b.length, b[0].length);
super.setNormalType(NormalType.CELLULAR);
super.setNormalType(NormalType.LOOKUP4096);
super.setGrid(b);
}
}
@@ -6,32 +6,31 @@ import com.dfsek.terra.biome.UserDefinedBiome;
import com.dfsek.terra.config.genconfig.BiomeConfig;
import org.bukkit.World;
import org.bukkit.util.Vector;
import org.polydev.gaea.world.BlockPalette;
import org.polydev.gaea.world.carving.Carver;
import org.polydev.gaea.world.carving.Worm;
import java.util.Random;
public class UserDefinedCarver extends Carver {
private BlockPalette inner;
private BlockPalette walls;
private final double[] start; // 0, 1, 2 = x, y, z.
private final double[] mutate; // 0, 1, 2 = x, y, z. 3 = radius.
private final double[] radiusMultiplier;
private final MaxMin length;
private final MaxMin radius;
public UserDefinedCarver(MaxMin height, MaxMin radius, MaxMin length, double[] start, double[] mutate, double[] radiusMultiplier) {
private final int hash;
public UserDefinedCarver(MaxMin height, MaxMin radius, MaxMin length, double[] start, double[] mutate, double[] radiusMultiplier, int hash) {
super(height.getMin(), height.getMax());
this.radius = radius;
this.length = length;
this.start = start;
this.mutate = mutate;
this.radiusMultiplier = radiusMultiplier;
this.hash = hash;
}
@Override
public Worm getWorm(long l, Vector vector) {
Random r = new Random(l);
Random r = new Random(l+hash);
return new UserDefinedWorm(length.get(r), r, vector, radius.getMax());
}
@@ -17,9 +17,10 @@ import org.polydev.gaea.math.ProbabilityCollection;
import org.polydev.gaea.math.parsii.tokenizer.ParseException;
import org.polydev.gaea.tree.Tree;
import org.polydev.gaea.tree.TreeType;
import org.polydev.gaea.world.BlockPalette;
import org.polydev.gaea.world.Fauna;
import org.polydev.gaea.world.FaunaType;
import org.polydev.gaea.world.palette.BlockPalette;
import org.polydev.gaea.world.palette.RandomPalette;
import java.io.File;
import java.io.IOException;
@@ -27,6 +28,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Random;
import java.util.TreeMap;
public class BiomeConfig extends TerraConfigObject {
@@ -64,7 +66,7 @@ public class BiomeConfig extends TerraConfigObject {
try {
if(((String) entry.getKey()).startsWith("BLOCK:")) {
try {
paletteMap.put((Integer) entry.getValue(), new BlockPalette().addBlockData(new ProbabilityCollection<BlockData>().add(Bukkit.createBlockData(((String) entry.getKey()).substring(6)), 1), 1));
paletteMap.put((Integer) entry.getValue(), new RandomPalette(new Random(0)).addBlockData(new ProbabilityCollection<BlockData>().add(Bukkit.createBlockData(((String) entry.getKey()).substring(6)), 1), 1));
} catch(IllegalArgumentException ex) {
throw new InvalidConfigurationException("SEVERE configuration error for BlockPalettes in biome " + getFriendlyName() + ", ID: " + biomeID + ". BlockData " + entry.getKey() + " is invalid!");
}
@@ -92,7 +92,8 @@ public class CarverConfig extends TerraConfigObject {
MaxMin radius = new MaxMin(getInt("start.radius.min"), getInt("start.radius.max"));
MaxMin height = new MaxMin(getInt("start.height.min"), getInt("start.height.max"));
id = getString("id");
carver = new UserDefinedCarver(height, radius, length, start, mutate, radiusMultiplier);
if(id == null) throw new InvalidConfigurationException("No ID specified for Carver!");
carver = new UserDefinedCarver(height, radius, length, start, mutate, radiusMultiplier, id.hashCode());
caveConfig.put(id, this);
}
@@ -9,9 +9,9 @@ import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.plugin.java.JavaPlugin;
import org.polydev.gaea.world.BlockPalette;
import org.polydev.gaea.world.Fauna;
import org.polydev.gaea.world.palette.BlockPalette;
import org.polydev.gaea.world.palette.RandomPalette;
import java.io.File;
import java.io.IOException;
@@ -45,7 +45,9 @@ public class FaunaConfig extends TerraConfigObject implements Fauna {
throw new InvalidConfigurationException("Invalid material ID in spawnable list: " + e.getMessage());
}
faunaPalette = PaletteConfig.getPalette(getMapList("blocks"));
BlockPalette p = new RandomPalette(new Random(getInt("seed", 4)));
faunaPalette = PaletteConfig.getPalette(getMapList("blocks"), p);
if(!contains("id")) throw new InvalidConfigurationException("Fauna ID unspecified!");
this.id = getString("id");
if(!contains("name")) throw new InvalidConfigurationException("Fauna Name unspecified!");
@@ -76,7 +78,7 @@ public class FaunaConfig extends TerraConfigObject implements Fauna {
if(!location.clone().add(0, i+1, 0).getBlock().isEmpty()) return false;
}
for(int i = 0; i < size; i++) {
location.clone().add(0, i+1, 0).getBlock().setBlockData(faunaPalette.getBlockData(size-(i+1), new Random()), false);
location.clone().add(0, i+1, 0).getBlock().setBlockData(faunaPalette.getBlockData(size-(i+1), location.getBlockX(), location.getBlockZ()), false);
}
return true;
}
@@ -6,14 +6,18 @@ import org.bukkit.Bukkit;
import org.bukkit.block.data.BlockData;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.plugin.java.JavaPlugin;
import org.polydev.gaea.math.FastNoise;
import org.polydev.gaea.math.ProbabilityCollection;
import org.polydev.gaea.world.BlockPalette;
import org.polydev.gaea.world.palette.BlockPalette;
import org.polydev.gaea.world.palette.RandomPalette;
import org.polydev.gaea.world.palette.SimplexPalette;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class PaletteConfig extends TerraConfigObject {
private static final Map<String, PaletteConfig> palettes = new HashMap<>();
@@ -21,13 +25,24 @@ public class PaletteConfig extends TerraConfigObject {
private String paletteID;
private boolean isEnabled = false;
private String friendlyName;
private boolean useNoise = false;
private float nFreq;
public PaletteConfig(File file) throws IOException, InvalidConfigurationException {
super(file);
}
@Override
public void init() throws InvalidConfigurationException {
palette = getPalette(getMapList("blocks"));
BlockPalette pal;
if(getBoolean("simplex", false)) {
useNoise = true;
FastNoise pNoise = new FastNoise(getInt("seed", 3));
pNoise.setNoiseType(FastNoise.NoiseType.SimplexFractal);
pNoise.setFractalOctaves(4);
pNoise.setFrequency((float) getDouble("frequency", 0.02));
pal = new SimplexPalette(pNoise);
} else pal = new RandomPalette(new Random(getInt("seed", 3)));
palette = getPalette(getMapList("blocks"), pal);
if(!contains("id")) throw new InvalidConfigurationException("Grid ID unspecified!");
this.paletteID = getString("id");
if(!contains("name")) throw new InvalidConfigurationException("Grid Name unspecified!");
@@ -52,8 +67,7 @@ public class PaletteConfig extends TerraConfigObject {
return paletteID;
}
protected static BlockPalette getPalette(List<Map<?, ?>> maps) throws InvalidConfigurationException {
BlockPalette p = new BlockPalette();
protected static BlockPalette getPalette(List<Map<?, ?>> maps, BlockPalette p) throws InvalidConfigurationException {
for(Map<?, ?> m : maps) {
try {
ProbabilityCollection<BlockData> layer = new ProbabilityCollection<>();
@@ -70,7 +84,7 @@ public class PaletteConfig extends TerraConfigObject {
@Override
public String toString() {
return "BlockPalette with name: " + getFriendlyName() + ", ID " + getID() + " with " + getPalette().getSize() + " layers";
return "BlockPalette with name: " + getFriendlyName() + ", ID " + getID() + " with " + getPalette().getSize() + " layers, using Simplex: " + useNoise;
}
public static PaletteConfig fromID(String id) {
@@ -7,6 +7,7 @@ import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.BlockPopulator;
import org.bukkit.util.Vector;
import org.jetbrains.annotations.NotNull;
@@ -14,8 +15,10 @@ import org.polydev.gaea.profiler.ProfileFuture;
import org.polydev.gaea.world.carving.CarvingData;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Random;
import java.util.Set;
public class CavePopulator extends BlockPopulator {
@Override
@@ -23,20 +26,22 @@ public class CavePopulator extends BlockPopulator {
ProfileFuture cave = TerraProfiler.fromWorld(world).measure("CaveTime");
for(CarverConfig c : CarverConfig.getCarvers()) {
Map<Location, Material> shiftCandidate = new HashMap<>();
Set<Block> updateNeeded = new HashSet<>();
Map<Vector, CarvingData.CarvingType> blocks = c.getCarver().carve(chunk.getX(), chunk.getZ(), world).getCarvedBlocks();
for(Map.Entry<Vector, CarvingData.CarvingType> e : blocks.entrySet()) {
Vector v = e.getKey();
Block b = chunk.getBlock(v.getBlockX(), v.getBlockY(), v.getBlockZ());
Material m = b.getType();
boolean liquid = m.equals(Material.WATER) || m.equals(Material.LAVA);
boolean liquid = b.getType().equals(Material.WATER) || b.getType().equals(Material.LAVA);
if(e.getValue().equals(CarvingData.CarvingType.CENTER) && c.isReplaceableInner(m)) {
if(c.getShiftedBlocks().containsKey(b.getType())) shiftCandidate.put(b.getLocation(), b.getType());
b.setBlockData(c.getPaletteInner(v.getBlockY()).get(random), liquid);
b.setBlockData(c.getPaletteInner(v.getBlockY()).get(random), false);
} else if(c.isReplaceableOuter(m)){
if(c.getShiftedBlocks().containsKey(b.getType())) shiftCandidate.put(b.getLocation(), b.getType());
b.setBlockData(c.getPaletteOuter(v.getBlockY()).get(random), liquid);
} else if(liquid) {
b.setBlockData(b.getBlockData(), true);
b.setBlockData(c.getPaletteOuter(v.getBlockY()).get(random), false);
}
if(liquid) {
updateNeeded.add(b);
}
}
int i = 0;
@@ -54,7 +59,12 @@ public class CavePopulator extends BlockPopulator {
} catch(NullPointerException ignored) {}
i++;
}
if(i > 0) System.out.println("Shifted " + i + " blocks. " + j + " successful shifts.");
for(Block b : updateNeeded) {
BlockData orig = b.getBlockData();
b.setBlockData(Material.AIR.createBlockData(), true);
b.setBlockData(orig, true);
}
if(i > 0) System.out.println("Shifted " + i + " blocks. " + j + " successful shifts. " + updateNeeded.size() + " blocks updated.");
}
if(cave != null) cave.complete();
+6 -10
View File
@@ -1,29 +1,25 @@
import com.dfsek.terra.biome.BiomeZone;
import org.polydev.gaea.math.FastNoise;
import javax.vecmath.Vector2f;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class DistributionTest {
private static final double[] normalMap = new double[] {-0.7074090838432312D, -0.6983937621116638D, -0.6916067600250244D, -0.6815563440322876D, -0.6738069653511047D, -0.6669901609420776D, -0.6638160943984985D, -0.6613113880157471D, -0.6590566039085388D, -0.6569026112556458D, -0.6553084850311279D, -0.6537241339683533D, -0.6522396802902222D, -0.6510595679283142D, -0.6501344442367554D, -0.6492011547088623D, -0.6481583118438721D, -0.6471081376075745D, -0.6462589502334595D, -0.6451671719551086D, -0.6443428993225098D, -0.6434608101844788D, -0.6426240801811218D, -0.6418614387512207D, -0.6410216093063354D, -0.6403073668479919D, -0.6395679712295532D, -0.6387998461723328D, -0.638111412525177D, -0.6372985243797302D, -0.6365064978599548D, -0.6358203887939453D, -0.6349064707756042D, -0.6342090368270874D, -0.6337069272994995D, -0.633001446723938D, -0.6322312951087952D, -0.631661057472229D, -0.6309065818786621D, -0.6301361322402954D, -0.6294490694999695D, -0.6287845969200134D, -0.6280625462532043D, -0.627465009689331D, -0.6267663240432739D, -0.626183271408081D, -0.6255864500999451D, -0.6248782277107239D, -0.624212384223938D, -0.6238000392913818D, -0.6231371164321899D, -0.6224943995475769D, -0.6218792200088501D, -0.6213060021400452D, -0.6206783652305603D, -0.6201399564743042D, -0.6195181608200073D, -0.6189191937446594D, -0.6180287003517151D, -0.6174584627151489D, -0.6170166730880737D, -0.616350531578064D, -0.6157816648483276D, -0.6152390241622925D, -0.6145324110984802D, -0.6139620542526245D, -0.61328125D, -0.6127347946166992D, -0.6120567917823792D, -0.6113621592521667D, -0.6104971766471863D, -0.6099048256874084D, -0.608817994594574D, -0.6080660223960876D, -0.6072586178779602D, -0.606625497341156D, -0.6057839393615723D, -0.6050985455513D, -0.6045429706573486D, -0.6039659380912781D, -0.6032459735870361D, -0.6026276350021362D, -0.6018943786621094D, -0.6011484861373901D, -0.6003972887992859D, -0.5997307300567627D, -0.5989946722984314D, -0.5982387065887451D, -0.597582995891571D, -0.5968650579452515D, -0.5961800217628479D, -0.5956499576568604D, -0.594971776008606D, -0.5942410230636597D, -0.5937290191650391D, -0.593068540096283D, -0.592410147190094D, -0.5917299389839172D, -0.5910217761993408D, -0.5904621481895447D, -0.5899747610092163D, -0.589218020439148D, -0.5883771777153015D, -0.5875868201255798D, -0.586907148361206D, -0.5861385464668274D, -0.5854381918907166D, -0.5847938656806946D, -0.5841156244277954D, -0.5834392309188843D, -0.582630455493927D, -0.5819268226623535D, -0.5814274549484253D, -0.580765426158905D, -0.5801209807395935D, -0.5796810388565063D, -0.5792078375816345D, -0.5786181092262268D, -0.5780342221260071D, -0.5774702429771423D, -0.5770033001899719D, -0.5764638185501099D, -0.5759979486465454D, -0.5754085183143616D, -0.5747255682945251D, -0.5740239024162292D, -0.57340008020401D, -0.572874128818512D, -0.5724111795425415D, -0.5719996690750122D, -0.5714352130889893D, -0.5707415342330933D, -0.5702087879180908D, -0.5696454644203186D, -0.5691488981246948D, -0.5685044527053833D, -0.567990243434906D, -0.5674160122871399D, -0.5668932795524597D, -0.5664599537849426D, -0.5656421780586243D, -0.5650233030319214D, -0.5643867254257202D, -0.5638323426246643D, -0.5633259415626526D, -0.5626614093780518D, -0.5620179772377014D, -0.56131911277771D, -0.5606859922409058D, -0.5602015852928162D, -0.5595278739929199D, -0.5589155554771423D, -0.5583369135856628D, -0.5578821897506714D, -0.5571556091308594D, -0.5566734075546265D, -0.5561076998710632D, -0.5553616881370544D, -0.5547254681587219D, -0.5540726780891418D, -0.5533741116523743D, -0.5527831315994263D, -0.552133321762085D, -0.5515923500061035D, -0.5509361028671265D, -0.5503506660461426D, -0.5498544573783875D, -0.5491971373558044D, -0.5486406087875366D, -0.5478317737579346D, -0.5473202466964722D, -0.546663224697113D, -0.5460997223854065D, -0.5455703139305115D, -0.5450489521026611D, -0.5445272922515869D, -0.5440360903739929D, -0.5435668230056763D, -0.5429897308349609D, -0.5424480438232422D, -0.5420375466346741D, -0.5414220690727234D, -0.5409082770347595D, -0.5403460264205933D, -0.5397695302963257D, -0.5392237305641174D, -0.5386609435081482D, -0.5380395650863647D, -0.5375149846076965D, -0.5369104146957397D, -0.5363602042198181D, -0.5358449816703796D, -0.5351901054382324D, -0.5346441864967346D, -0.5339838862419128D, -0.5334790349006653D, -0.5328581929206848D, -0.53231281042099D, -0.531755268573761D, -0.5311923623085022D, -0.5305578112602234D, -0.5300067067146301D, -0.5294909477233887D, -0.5288727283477783D, -0.5283600687980652D, -0.5278205275535583D, -0.527280867099762D, -0.5266819596290588D, -0.5259708762168884D, -0.5254105925559998D, -0.5246822237968445D, -0.5241648554801941D, -0.5237182378768921D, -0.5232840180397034D, -0.5226284861564636D, -0.5220814347267151D, -0.5215300917625427D, -0.5210031270980835D, -0.5204776525497437D, -0.5198733806610107D, -0.5193755626678467D, -0.5187353491783142D, -0.5182331800460815D, -0.5176404118537903D, -0.5171401500701904D, -0.516610324382782D, -0.51608Line truncated
//private static final List<Double> m = Arrays.asList(normalMap);
private static final double[] normalMap = new double[] {-0.5522426962852478D, -0.5356624126434326D, -0.5250319838523865D, -0.5172030329704285D, -0.5108230710029602D, -0.5051751136779785D, -0.5003848075866699D, -0.496286541223526D, -0.49219056963920593D, -0.488725870847702D, -0.48548242449760437D, -0.48233601450920105D, -0.4794590473175049D, -0.47680431604385376D, -0.4741802513599396D, -0.4716983437538147D, -0.46938973665237427D, -0.4671768844127655D, -0.46493932604789734D, -0.4628496468067169D, -0.46085309982299805D, -0.45893776416778564D, -0.4571230709552765D, -0.45534923672676086D, -0.4535684585571289D, -0.4518905282020569D, -0.45032820105552673D, -0.44873151183128357D, -0.4472157657146454D, -0.445724755525589D, -0.4442773759365082D, -0.44282811880111694D, -0.44138428568840027D, -0.43998438119888306D, -0.43863797187805176D, -0.4373200237751007D, -0.43603432178497314D, -0.4348065257072449D, -0.4335438907146454D, -0.43234220147132874D, -0.4311666488647461D, -0.42999887466430664D, -0.4288702607154846D, -0.4277186393737793D, -0.42660200595855713D, -0.425540030002594D, -0.42445454001426697D, -0.42338213324546814D, -0.42237231135368347D, -0.4213787317276001D, -0.42034342885017395D, -0.41934314370155334D, -0.41838738322257996D, -0.41747593879699707D, -0.4165368676185608D, -0.41563472151756287D, -0.41473135352134705D, -0.41381341218948364D, -0.412920743227005D, -0.4120390713214874D, -0.41113483905792236D, -0.41027551889419556D, -0.40940171480178833D, -0.4085462987422943D, -0.40771594643592834D, -0.4068986475467682D, -0.4060843288898468D, -0.4052877426147461D, -0.40450364351272583D, -0.40370258688926697D, -0.40295007824897766D, -0.4022042751312256D, -0.40143170952796936D, -0.40068766474723816D, -0.3999272882938385D, -0.39916759729385376D, -0.3984144926071167D, -0.3977096378803253D, -0.3969724774360657D, -0.3962542712688446D, -0.3955434262752533D, -0.39482179284095764D, -0.39413219690322876D, -0.3934393525123596D, -0.39274853467941284D, -0.3920603394508362D, -0.3913818895816803D, -0.3907110095024109D, -0.39001911878585815D, -0.3893643021583557D, -0.38873276114463806D, -0.38809072971343994D, -0.38744935393333435D, -0.38681110739707947D, -0.38617849349975586D, -0.3855555057525635D, -0.3849259316921234D, -0.38428404927253723D, -0.38368701934814453D, -0.38305720686912537D, -0.3824397325515747D, -0.38183310627937317D, -0.3812190294265747D, -0.38061732053756714D, -0.3800400495529175D, -0.37945547699928284D, -0.37887564301490784D, -0.3783135712146759D, -0.3777320683002472D, -0.3771609365940094D, -0.3765930235385895D, -0.3760446608066559D, -0.37546253204345703D, -0.37489989399909973D, -0.37433329224586487D, -0.3737635910511017D, -0.37320101261138916D, -0.37265515327453613D, -0.3721090257167816D, -0.3715764880180359D, -0.3710474967956543D, -0.3705263137817383D, -0.37000274658203125D, -0.36946558952331543D, -0.3689403533935547D, -0.3684338629245758D, -0.3679268956184387D, -0.3674132525920868D, -0.3668895363807678D, -0.36637264490127563D, -0.3658500015735626D, -0.3653477430343628D, -0.3648494482040405D, -0.3643417954444885D, -0.36385640501976013D, -0.36335185170173645D, -0.3628855347633362D, -0.3624073565006256D, -0.3619007468223572D, -0.36142677068710327D, -0.3609183132648468D, -0.3604544401168823D, -0.3599613606929779D, -0.3594810962677002D, -0.3590005338191986D, -0.3585355281829834D, -0.35805660486221313D, -0.35758334398269653D, -0.3571120500564575D, -0.356632798910141D, -0.35616397857666016D, -0.3557022213935852D, -0.35522621870040894D, -0.35475999116897583D, -0.3543040454387665D, -0.3538462817668915D, -0.35339656472206116D, -0.35294967889785767D, -0.3525013029575348D, -0.35205140709877014D, -0.3516044616699219D, -0.3511776924133301D, -0.3507419228553772D, -0.350308358669281D, -0.34987354278564453D, -0.3494442403316498D, -0.34901976585388184D, -0.34858623147010803D, -0.3481590747833252D, -0.3477269113063812D, -0.34729984402656555D, -0.34686949849128723D, -0.34644952416419983D, -0.3460380733013153D, -0.345601350069046D, -0.3451806306838989D, -0.34476256370544434D, -0.3443388342857361D, -0.34393346309661865D, -0.3435156047344208D, -0.34309715032577515D, -0.34269776940345764D, -0.34230056405067444D, -0.34190237522125244D, -0.3415068984031677D, -0.3411085307598114D, -0.3407077193260193D, -0.3403150737285614D, -0.3399060070514679D, -0.3395008146762848D, -0.33910876512527466D, -0.3387194573879242D, -0.3383338451385498D, -0.3379477858543396D, -0.33756473660469055D, -0.33716049790382385D, -0.336769163608551D, -0.33637988567352295D, -0.3360031843185425D, -0.33561065793037415D, -0.33522093296051025D, -0.33484047651290894D, -0.3344566524028778D, -0.3340719938278198D, -0.33369651436805725D, -0.33331871032714844D, -0.3329450190067291D, -0.3325762152671814D, -0.3321962356567383D, -0.3318250775337219D, -0.33146360516548157D, -0.331096351146698D, -0.3307240307331085D, -0.33036690950393677D, -0.3300083577632904D, -0.3296314477920532D, -0.32925838232040405D, -0.3289034366607666D, -0.32853060960769653D, -0.3281768262386322D, -0.3278148Line truncated
//private static final List<Double> m = Arrays.asList(normalMap);
public static void main(String[] args) {
FastNoise noise = new FastNoise();
FastNoise noiseLookup = new FastNoise();
noiseLookup.setNoiseType(FastNoise.NoiseType.Simplex);
noiseLookup.setFrequency(0.02f);
noise.setNoiseType(FastNoise.NoiseType.SimplexFractal);
noise.setFrequency(0.02f);
noise.setNoiseType(FastNoise.NoiseType.Cellular);
noise.setCellularDistanceFunction(FastNoise.CellularDistanceFunction.Natural);
noise.setCellularReturnType(FastNoise.CellularReturnType.NoiseLookup);
noise.setCellularNoiseLookup(noiseLookup);
noise.setFractalOctaves(4);
System.out.println(noise);
int attempts = 16;
int attempts = 3;
int[] numbers = new int[attempts];
double min = Integer.MAX_VALUE;
double max = Integer.MIN_VALUE;
+2 -7
View File
@@ -15,14 +15,9 @@ public class LookupGenerator {
List<Double> vals = new ArrayList<>();
FastNoise noise = new FastNoise();
FastNoise noiseLookup = new FastNoise();
noiseLookup.setNoiseType(FastNoise.NoiseType.Simplex);
noiseLookup.setFrequency(0.02f);
noise.setNoiseType(FastNoise.NoiseType.SimplexFractal);
noise.setFrequency(0.02f);
noise.setNoiseType(FastNoise.NoiseType.Cellular);
noise.setCellularDistanceFunction(FastNoise.CellularDistanceFunction.Natural);
noise.setCellularReturnType(FastNoise.CellularReturnType.NoiseLookup);
noise.setCellularNoiseLookup(noiseLookup);
noise.setFractalOctaves(4);
int[] numbers = new int[dist];
double min = Integer.MAX_VALUE;
double max = Integer.MIN_VALUE;