This commit is contained in:
Daniel Mills
2020-01-04 14:01:10 -05:00
parent 7934be70ee
commit 93e02093be
20 changed files with 1793 additions and 138 deletions

View File

@@ -1,9 +1,12 @@
package ninja.bytecode.iris.generator;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Random;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Biome;
@@ -24,13 +27,16 @@ import ninja.bytecode.iris.generator.layer.GenLayerOreLapis;
import ninja.bytecode.iris.generator.layer.GenLayerRidge;
import ninja.bytecode.iris.generator.populator.BiomeBiasSchematicPopulator;
import ninja.bytecode.iris.schematic.Schematic;
import ninja.bytecode.iris.schematic.SchematicGroup;
import ninja.bytecode.iris.util.AtomicChunkData;
import ninja.bytecode.iris.util.ChunkPlan;
import ninja.bytecode.iris.util.IrisInterpolation;
import ninja.bytecode.iris.util.MB;
import ninja.bytecode.iris.util.ParallelChunkGenerator;
import ninja.bytecode.shuriken.collections.GList;
import ninja.bytecode.shuriken.collections.GMap;
import ninja.bytecode.shuriken.execution.J;
import ninja.bytecode.shuriken.io.IO;
import ninja.bytecode.shuriken.logging.L;
import ninja.bytecode.shuriken.math.M;
import ninja.bytecode.shuriken.math.RNG;
@@ -70,6 +76,7 @@ public class IrisGenerator extends ParallelChunkGenerator
private GenLayerOreDiamond glOreDiamond;
private RNG rTerrain;
private World world;
private GMap<String, SchematicGroup> schematicCache = new GMap<>();
@Override
public void onInit(World world, Random random)
@@ -157,7 +164,7 @@ public class IrisGenerator extends ParallelChunkGenerator
mb = biome.getSurface(wx, wz, rTerrain);
MB mbx = biome.getScatterChanceSingle();
if(!mbx.material.equals(Material.AIR))
{
setBlock(x, i + 1, z, mbx.material, mbx.data);
@@ -209,42 +216,109 @@ public class IrisGenerator extends ParallelChunkGenerator
public List<BlockPopulator> getDefaultPopulators(World world)
{
GList<BlockPopulator> p = new GList<>();
int b = 0;
for(IrisBiome i : IrisBiome.getAllBiomes())
if(Iris.settings.gen.doSchematics)
{
b++;
L.i("Processing Populators for Biome " + i.getName());
for(String j : i.getSchematicGroups().keySet())
int b = 0;
int sch = 0;
for(IrisBiome i : IrisBiome.getAllBiomes())
{
p.add(new BiomeBiasSchematicPopulator(i.getSchematicGroups().get(j), i, loadSchematics(j)));
b++;
L.i("Processing Populators for Biome " + i.getName());
for(String j : i.getSchematicGroups().keySet())
{
SchematicGroup gs = loadSchematics(j);
sch += gs.size();
p.add(new BiomeBiasSchematicPopulator(i.getSchematicGroups().get(j), i, gs.getSchematics().toArray(new Schematic[gs.size()])));
}
}
p.add(new BlockPopulator()
{
@SuppressWarnings("deprecation")
@Override
public void populate(World world, Random random, Chunk source)
{
Bukkit.getScheduler().scheduleSyncDelayedTask(Iris.instance, () -> world.refreshChunk(source.getX(), source.getZ()), 50);
}
});
L.i("Initialized " + b + " Biomes with " + p.size() + " Populators using " + sch + " Schematics");
}
L.i("Initialized " + b + " Biomes and " + p.size() + " Populators");
L.flush();
return p;
}
private Schematic[] loadSchematics(String folder)
private SchematicGroup loadSchematics(String folder)
{
if(schematicCache.containsKey(folder))
{
return schematicCache.get(folder);
}
File f = new File(Iris.instance.getDataFolder(), "objects/" + folder);
GList<Schematic> s = new GList<>();
GList<String> flags = new GList<>();
if(f.exists() && f.isDirectory())
{
for(File i : f.listFiles())
{
if(i.isFile() && i.getName().endsWith(".ifl"))
{
try
{
flags.add(IO.readAll(i).split("\\Q\n\\E"));
}
catch(IOException e)
{
e.printStackTrace();
}
}
if(i.isFile() && i.getName().endsWith(".ish"))
{
J.attempt(()-> s.add(Schematic.load(i)));
J.attempt(() ->
{
Schematic sc = Schematic.load(i);
s.add(sc);
});
}
}
}
for(String i : flags)
{
String flag = i.trim().toLowerCase();
if(flag.equals("center"))
{
for(Schematic j : s)
{
j.setCenteredHeight();
}
L.i("Centered " + s.size() + " Schematics");
}
}
L.i("Loaded " + s.size() + " Schematics in " + folder);
return s.toArray(new Schematic[s.size()]);
SchematicGroup g = new SchematicGroup(folder);
g.setSchematics(s);
g.setFlags(flags);
for(String i : flags)
{
if(i.startsWith("priority="))
{
J.attempt(() -> g.setPriority(Integer.valueOf(i.split("\\Q=\\E")[1]).intValue()));
}
}
schematicCache.put(folder, g);
return g;
}
private double getBiomedHeight(int x, int z, ChunkPlan plan)

View File

@@ -24,10 +24,12 @@ public class IrisBiome
.surface(MB.of(Material.SAND));
public static final IrisBiome BEACH = new IrisBiome("Beach", Biome.BEACHES)
.surface(MB.of(Material.SAND))
.schematic("boulder/sandy", 0.009)
.height(0.12)
.schematic("palm", 0.83);
.schematic("tree/palm", 0.83);
public static final IrisBiome ROAD_GRAVEL = new IrisBiome("Gravel Road", Biome.PLAINS)
.surface(MB.of(Material.GRAVEL), MB.of(Material.COBBLESTONE))
.schematic("boulder/smooth", 0.001)
.scatter(MB.of(Material.TORCH), 0.05);
public static final IrisBiome ROAD_GRASSY = new IrisBiome("Grass Path", Biome.PLAINS)
.surface(MB.of(Material.GRASS_PATH))
@@ -46,109 +48,116 @@ public class IrisBiome
.height(-0.07);
public static final IrisBiome DESERT = new IrisBiome("Desert", Biome.DESERT)
.surface(MB.of(Material.SAND))
.schematic("deadwood", 0.03)
.schematic("boulder/sandy", 0.023)
.schematic("tree/deadwood", 0.03)
.scatter(MB.of(Material.DEAD_BUSH, 0), 0.008)
.dirt(MB.of(Material.SANDSTONE));
public static final IrisBiome DESERT_RED = new IrisBiome("Red Desert", Biome.DESERT)
.surface(MB.of(Material.SAND, 1))
.schematic("deadwood", 0.03)
.schematic("tree/deadwood", 0.045)
.scatter(MB.of(Material.DEAD_BUSH, 0), 0.008)
.dirt(MB.of(Material.RED_SANDSTONE));
public static final IrisBiome DESERT_COMBINED = new IrisBiome("Combined Desert", Biome.DESERT)
.surface(MB.of(Material.SAND), MB.of(Material.SAND, 1))
.scatter(MB.of(Material.DEAD_BUSH, 0), 0.008)
.schematic("deadwood", 0.05)
.schematic("tree/deadwood", 0.0443)
.dirt(MB.of(Material.SANDSTONE), MB.of(Material.RED_SANDSTONE))
.simplexSurface();
public static final IrisBiome DESERT_HILLS = new IrisBiome("Desert Hills", Biome.DESERT_HILLS)
.surface(MB.of(Material.SAND))
.amp(0.75)
.height(0.137)
.schematic("deadwood", 0.03)
.schematic("tree/deadwood", 0.03)
.schematic("boulder/sandy", 0.015)
.scatter(MB.of(Material.DEAD_BUSH, 0), 0.08)
.dirt(MB.of(Material.SANDSTONE));
public static final IrisBiome MESA = new IrisBiome("Mesa", Biome.MESA)
.surface(MB.of(Material.HARD_CLAY), MB.of(Material.STAINED_CLAY, 1), MB.of(Material.STAINED_CLAY, 8), MB.of(Material.STAINED_CLAY, 12))
.dirt(MB.of(Material.CLAY), MB.of(Material.SAND), MB.of(Material.SAND, 1))
.schematic("boulder", 0.02)
.schematic("boulder/sandy", 0.02)
.simplexSurface();
public static final IrisBiome SAVANNA = new IrisBiome("Savanna", Biome.SAVANNA)
.schematic("deadwood", 0.03)
.schematic("tree/deadwood", 0.03)
.schematic("boulder/sandy", 0.02)
.schematic("boulder", 0.02)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.18);
public static final IrisBiome SAVANNA_HILLS = new IrisBiome("Savanna Hills", Biome.SAVANNA_ROCK)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.18)
.schematic("deadwood", 0.01)
.schematic("tree/deadwood", 0.01)
.schematic("boulder", 0.02)
.schematic("boulder/sandy", 0.02)
.height(0.13)
.amp(0.75);
public static final IrisBiome OCEAN_2 = new IrisBiome("Ocean 2", Biome.OCEAN)
.surface(MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.CLAY), MB.of(Material.GRAVEL))
.simplexSurface()
.height(-0.03);
public static final IrisBiome JUNGLE = new IrisBiome("Jungle", Biome.JUNGLE)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.058)
.schematic("boulder", 0.02)
.schematic("boulder/smooth", 0.02)
.schematic("tree/oak/massive", 0.045)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.013);
public static final IrisBiome JUNGLE_HILLS = new IrisBiome("Jungle Hills", Biome.JUNGLE_HILLS)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.081)
.schematic("boulder", 0.02)
.schematic("boulder/smooth", 0.02)
.schematic("tree/oak/massive", 0.045)
.amp(1.75)
.height(0.13)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.02);
public static final IrisBiome SWAMP = new IrisBiome("Swamp", Biome.SWAMPLAND)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.04)
.schematic("willow", 2.5)
.schematic("tree/willow", 2.5)
.schematic("boulder", 0.02)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.03);
public static final IrisBiome PLAINS = new IrisBiome("Plains", Biome.PLAINS)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.38)
.schematic("oak_bush", 0.25)
.schematic("tree/oak/bush", 0.25)
.schematic("boulder", 0.02)
.amp(0.4)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.03);
public static final IrisBiome OCEAN_3 = new IrisBiome("Ocean 3", Biome.OCEAN)
.surface(MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.CLAY), MB.of(Material.GRAVEL))
.simplexSurface()
.height(-0.03);
public static final IrisBiome DECAYING_PLAINS = new IrisBiome("Decaying Plains", Biome.PLAINS)
.surface(MB.of(Material.GRASS_PATH), MB.of(Material.GRASS))
.scatter(MB.of(Material.LONG_GRASS, 1), 0.04)
.schematic("deadwood", 0.03)
.schematic("tree/deadwood", 0.03)
.schematic("boulder/sandy", 0.01)
.simplexSurface();
public static final IrisBiome FOREST = new IrisBiome("Forest", Biome.FOREST)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.23)
.schematic("oak", 2.31)
.schematic("tree/oak", 2.31)
.schematic("boulder", 0.02)
.schematic("cracked_oak", 0.03)
.schematic("oak_large", 1.41)
.schematic("boulder/smooth", 0.01)
.schematic("tree/oak/cracked", 0.03)
.schematic("tree/oak/large", 1.41)
.schematic("tree/oak/massive", 0.045)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.13);
public static final IrisBiome FOREST_HILLS = new IrisBiome("Forest Hills", Biome.FOREST_HILLS)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.23)
.schematic("oak", 2.31)
.schematic("tree/oak", 2.31)
.schematic("boulder", 0.02)
.schematic("cracked_oak", 0.03)
.schematic("oak_large", 0.31)
.schematic("boulder/smooth", 0.01)
.schematic("tree/oak/cracked", 0.03)
.schematic("tree/oak/massive", 0.045)
.schematic("tree/oak/large", 0.31)
.amp(0.75)
.height(0.13)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.13);
public static final IrisBiome FOREST_MOUNTAINS = new IrisBiome("Forest Mountains", Biome.MUTATED_EXTREME_HILLS_WITH_TREES)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.13)
.amp(2.25)
.schematic("pine", 2.31)
.schematic("tree/pine", 2.31)
.schematic("boulder", 0.04)
.schematic("redwood", 1.11)
.schematic("redwood_tall", 2.51)
.schematic("boulder/smooth", 0.01)
.schematic("tree/redwood", 1.11)
.schematic("tree/redwood/tall", 2.51)
.height(0.165)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.13);
public static final IrisBiome HAUNTED_FOREST = new IrisBiome("Haunted Forest", Biome.MUTATED_SWAMPLAND)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.13)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.13)
.schematic("willow", 2.31)
.schematic("oak", 1.31)
.schematic("tree/willow", 1.21)
.schematic("tree/oak", 0.71)
.schematic("boulder", 0.01)
.schematic("cracked_oak", 0.03)
.schematic("oak_bush", 1.83)
.schematic("boulder/smooth", 0.02)
.schematic("tree/oak/cracked", 0.03)
.schematic("tree/oak/massive", 0.4)
.schematic("tree/oak/bush", 1.83)
.schematic("structure/magical", 0.002)
.addEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, 100, 0))
.addEffect(new PotionEffect(PotionEffectType.SLOW, 100, 0))
.addEffect(new PotionEffect(PotionEffectType.HUNGER, 100, 0))
@@ -156,71 +165,74 @@ public class IrisBiome
.scatterSurface();
public static final IrisBiome BIRCH_FOREST = new IrisBiome("Birch Forest", Biome.BIRCH_FOREST)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.23)
.schematic("birch", 2.51)
.schematic("tree/birch", 2.51)
.schematic("boulder", 0.02)
.schematic("birch_small", 3.25)
.schematic("boulder/smooth", 0.01)
.schematic("tree/birch/small", 3.25)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.13);
public static final IrisBiome BIRCH_FOREST_HILLS = new IrisBiome("Birch Forest Hills", Biome.BIRCH_FOREST_HILLS)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.23)
.schematic("birch", 2.51)
.schematic("tree/birch", 2.51)
.schematic("boulder/smooth", 0.01)
.schematic("boulder", 0.02)
.schematic("birch_small", 3.25)
.schematic("tree/birch/small", 3.25)
.amp(0.75)
.height(0.13)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.13);
public static final IrisBiome OCEAN_4 = new IrisBiome("Ocean 4", Biome.OCEAN)
.surface(MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.CLAY), MB.of(Material.GRAVEL))
.simplexSurface()
.height(-0.03);
public static final IrisBiome ROOFED_FOREST = new IrisBiome("Roofed Forest", Biome.ROOFED_FOREST)
.scatter(MB.of(Material.LONG_GRASS, 1), 0.23)
.schematic("boulder", 0.02)
.schematic("tree/oak/massive", 0.02)
.schematic("tree/oak/roofed", 0.78)
.schematic("boulder/smooth", 0.01)
.schematic("structure/magical", 0.009)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.13);
public static final IrisBiome TAIGA = new IrisBiome("Taiga", Biome.TAIGA)
.schematic("cracked_pine", 0.03)
.schematic("pine", 2.51)
.schematic("boulder", 0.08)
.schematic("tree/pine/cracked", 0.03)
.schematic("tree/pine", 2.51)
.schematic("boulder", 0.02)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.07);
public static final IrisBiome EXTREME_HILLS = new IrisBiome("Extreme Hills", Biome.EXTREME_HILLS)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.04)
.amp(1.565)
.schematic("boulder/smooth", 0.01)
.height(0.142);
public static final IrisBiome EXTREME_HILLS_TREES = new IrisBiome("Extreme Hills +", Biome.EXTREME_HILLS_WITH_TREES)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.09)
.schematic("boulder", 0.02)
.schematic("pine", 1.02)
.schematic("redwood_tall", 3.02)
.schematic("tree/pine", 1.02)
.schematic("boulder/smooth", 0.01)
.schematic("tree/redwood/tall", 3.02)
.amp(1.525)
.height(0.152);
public static final IrisBiome TAIGA_COLD = new IrisBiome("Taiga Cold", Biome.TAIGA_COLD)
.scatter(MB.of(Material.LONG_GRASS, 2), 0.04)
.schematic("pine", 2.51)
.schematic("boulder", 0.02)
.schematic("cracked_pine", 0.03);
.schematic("tree/pine", 2.51)
.schematic("boulder/snowy", 0.02)
.schematic("tree/pine/cracked", 0.03);
public static final IrisBiome TAIGA_COLD_HILLS = new IrisBiome("Taiga Cold Hills", Biome.TAIGA_COLD_HILLS)
.schematic("pine", 2.51)
.schematic("boulder", 0.02)
.schematic("cracked_pine", 0.03);
public static final IrisBiome ICE_FLATS = new IrisBiome("Ice Flats", Biome.ICE_FLATS);
.schematic("tree/pine", 2.51)
.schematic("boulder/snowy", 0.02)
.schematic("tree/pine/cracked", 0.03);
public static final IrisBiome ICE_FLATS = new IrisBiome("Ice Flats", Biome.ICE_FLATS)
.schematic("boulder/snowy", 0.03);
public static final IrisBiome ICE_MOUNTAINS = new IrisBiome("Ice Mountains", Biome.ICE_MOUNTAINS)
.schematic("boulder/snowy", 0.03)
.amp(1.45);
public static final IrisBiome OCEAN_5 = new IrisBiome("Ocean 5", Biome.OCEAN)
.surface(MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.SAND), MB.of(Material.CLAY), MB.of(Material.GRAVEL))
.simplexSurface()
.height(-0.03);
public static final IrisBiome REDWOOD_TAIGA = new IrisBiome("Redwood Taiga", Biome.REDWOOD_TAIGA)
.surface(MB.of(Material.DIRT, 2), MB.of(Material.DIRT, 1))
.schematic("redwood_large", 0.87)
.schematic("cracked_pine", 0.03)
.schematic("tree/redwood/large", 0.87)
.schematic("tree/redwood/massive", 0.2)
.schematic("tree/pine/cracked", 0.03)
.schematic("boulder", 0.02)
.schematic("redwood", 3.5)
.schematic("tree/redwood", 3.5)
.simplexSurface();
public static final IrisBiome REDWOOD_TAIGA_HILLS = new IrisBiome("Redwood Taiga Hills", Biome.REDWOOD_TAIGA_HILLS)
.surface(MB.of(Material.DIRT, 2), MB.of(Material.DIRT, 1))
.schematic("redwood_large", 0.87)
.schematic("cracked_pine", 0.03)
.schematic("tree/redwood/large", 0.87)
.schematic("tree/pine/cracked", 0.03)
.schematic("boulder", 0.02)
.schematic("redwood", 3.5)
.schematic("tree/redwood", 3.5)
.amp(0.75)
.simplexSurface();
@@ -453,4 +465,99 @@ public class IrisBiome
j.addPotionEffect(i);
}
}
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
long temp;
temp = Double.doubleToLongBits(amp);
result = prime * result + (int) (temp ^ (temp >>> 32));
result = prime * result + ((dirt == null) ? 0 : dirt.hashCode());
result = prime * result + ((effects == null) ? 0 : effects.hashCode());
temp = Double.doubleToLongBits(height);
result = prime * result + (int) (temp ^ (temp >>> 32));
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((poly == null) ? 0 : poly.hashCode());
result = prime * result + ((realBiome == null) ? 0 : realBiome.hashCode());
result = prime * result + ((scatterChance == null) ? 0 : scatterChance.hashCode());
result = prime * result + (scatterSurface ? 1231 : 1237);
result = prime * result + ((schematicGroups == null) ? 0 : schematicGroups.hashCode());
result = prime * result + (simplexScatter ? 1231 : 1237);
result = prime * result + ((surface == null) ? 0 : surface.hashCode());
return result;
}
@Override
public boolean equals(Object obj)
{
if(this == obj)
return true;
if(obj == null)
return false;
if(getClass() != obj.getClass())
return false;
IrisBiome other = (IrisBiome) obj;
if(Double.doubleToLongBits(amp) != Double.doubleToLongBits(other.amp))
return false;
if(dirt == null)
{
if(other.dirt != null)
return false;
}
else if(!dirt.equals(other.dirt))
return false;
if(effects == null)
{
if(other.effects != null)
return false;
}
else if(!effects.equals(other.effects))
return false;
if(Double.doubleToLongBits(height) != Double.doubleToLongBits(other.height))
return false;
if(name == null)
{
if(other.name != null)
return false;
}
else if(!name.equals(other.name))
return false;
if(poly == null)
{
if(other.poly != null)
return false;
}
else if(!poly.equals(other.poly))
return false;
if(realBiome != other.realBiome)
return false;
if(scatterChance == null)
{
if(other.scatterChance != null)
return false;
}
else if(!scatterChance.equals(other.scatterChance))
return false;
if(scatterSurface != other.scatterSurface)
return false;
if(schematicGroups == null)
{
if(other.schematicGroups != null)
return false;
}
else if(!schematicGroups.equals(other.schematicGroups))
return false;
if(simplexScatter != other.simplexScatter)
return false;
if(surface == null)
{
if(other.surface != null)
return false;
}
else if(!surface.equals(other.surface))
return false;
return true;
}
}

View File

@@ -27,7 +27,6 @@ public class GenLayerOreDiamond extends GenLayer
clamp = new CNG(rng.nextParallelRNG(299 + shift), 1D, 1).scale(0.0325).fractureWith(new CNG(rng.nextParallelRNG(412 + shift), 1D, 1)
.scale(0.015).fractureWith(new CNG(rng.nextParallelRNG(412 + shift), 1D, 1)
.scale(0.03), 33), 592);
//@done
}
@@ -35,7 +34,7 @@ public class GenLayerOreDiamond extends GenLayer
{
double orenoise = ore.noise(wxx, wzx);
if(clamp.noise(wxx, wzx) > 0.77 && IrisGenerator.ROCK.contains(MB.of(g.getType(x, (int) (orenoise * 12D), z))))
if(clamp.noise(wxx, wzx) > 0.85 && IrisGenerator.ROCK.contains(MB.of(g.getType(x, (int) (orenoise * 12D), z))))
{
g.setBlock(x, (int) (orenoise * 12D), z, Material.DIAMOND_ORE);
}

View File

@@ -34,7 +34,7 @@ public class GenLayerOreGold extends GenLayer
{
double orenoise = ore.noise(wxx, wzx);
if(clamp.noise(wxx, wzx) < 0.4 && (int) (orenoise * 200D) - 42 < 45 && b.getSurface().contains(new MB(Material.GRASS)) && IrisGenerator.ROCK.contains(MB.of(g.getType(x, (int) (orenoise * 200D) - 42, z))))
if(clamp.noise(wxx, wzx) > 0.75 && (int) (orenoise * 200D) - 42 < 45 && b.getSurface().contains(new MB(Material.GRASS)) && IrisGenerator.ROCK.contains(MB.of(g.getType(x, (int) (orenoise * 200D) - 42, z))))
{
g.setBlock(x, (int) (orenoise * 200D) - 42, z, Material.GOLD_ORE);
}

View File

@@ -30,4 +30,33 @@ public class BiomeBiasSchematicPopulator extends SurfaceBiasSchematicPopulator
super.doPopulate(world, random, source, wx, wz);
}
}
@Override
public int hashCode()
{
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((biome == null) ? 0 : biome.hashCode());
return result;
}
@Override
public boolean equals(Object obj)
{
if(this == obj)
return true;
if(!super.equals(obj))
return false;
if(getClass() != obj.getClass())
return false;
BiomeBiasSchematicPopulator other = (BiomeBiasSchematicPopulator) obj;
if(biome == null)
{
if(other.biome != null)
return false;
}
else if(!biome.equals(other.biome))
return false;
return true;
}
}

View File

@@ -1,5 +1,6 @@
package ninja.bytecode.iris.generator.populator;
import java.util.Arrays;
import java.util.Random;
import org.bukkit.Chunk;
@@ -32,4 +33,28 @@ public class SchematicPopulator extends ChancedPopulator
schematics[random.nextInt(schematics.length)].place(world, wx, b.getY() - 1, wz);
}
@Override
public int hashCode()
{
final int prime = 31;
int result = super.hashCode();
result = prime * result + Arrays.hashCode(schematics);
return result;
}
@Override
public boolean equals(Object obj)
{
if(this == obj)
return true;
if(!super.equals(obj))
return false;
if(getClass() != obj.getClass())
return false;
SchematicPopulator other = (SchematicPopulator) obj;
if(!Arrays.equals(schematics, other.schematics))
return false;
return true;
}
}

View File

@@ -27,6 +27,35 @@ public class SurfaceBiasSchematicPopulator extends SchematicPopulator
return this;
}
@Override
public int hashCode()
{
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((bias == null) ? 0 : bias.hashCode());
return result;
}
@Override
public boolean equals(Object obj)
{
if(this == obj)
return true;
if(!super.equals(obj))
return false;
if(getClass() != obj.getClass())
return false;
SurfaceBiasSchematicPopulator other = (SurfaceBiasSchematicPopulator) obj;
if(bias == null)
{
if(other.bias != null)
return false;
}
else if(!bias.equals(other.bias))
return false;
return true;
}
@Override
public void doPopulate(World world, Random random, Chunk source, int wx, int wz)
{