mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-18 18:42:30 +00:00
[AUTO] Clean & reformat
This commit is contained in:
parent
9a403805c9
commit
2750d46a98
@ -24,14 +24,6 @@ public class TerraWorld {
|
|||||||
private final WorldConfig worldConfig;
|
private final WorldConfig worldConfig;
|
||||||
private boolean safe;
|
private boolean safe;
|
||||||
|
|
||||||
public static void loadWorld(WorldConfig w) {
|
|
||||||
loaded.put(w.getWorldID(), w);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static synchronized TerraWorld getWorld(World w) {
|
|
||||||
return map.computeIfAbsent(w, TerraWorld::new);
|
|
||||||
}
|
|
||||||
|
|
||||||
private TerraWorld(World w) {
|
private TerraWorld(World w) {
|
||||||
safe = true;
|
safe = true;
|
||||||
worldConfig = loaded.get(w.getName());
|
worldConfig = loaded.get(w.getName());
|
||||||
@ -87,6 +79,14 @@ public class TerraWorld {
|
|||||||
grid = new TerraBiomeGrid(w, config.freq1, config.freq2, zone, config, erosion);
|
grid = new TerraBiomeGrid(w, config.freq1, config.freq2, zone, config, erosion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void loadWorld(WorldConfig w) {
|
||||||
|
loaded.put(w.getWorldID(), w);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static synchronized TerraWorld getWorld(World w) {
|
||||||
|
return map.computeIfAbsent(w, TerraWorld::new);
|
||||||
|
}
|
||||||
|
|
||||||
public static synchronized void invalidate() {
|
public static synchronized void invalidate() {
|
||||||
map.clear();
|
map.clear();
|
||||||
for(WorldConfig config : loaded.values()) {
|
for(WorldConfig config : loaded.values()) {
|
||||||
@ -98,6 +98,10 @@ public class TerraWorld {
|
|||||||
return map.size();
|
return map.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isTerraWorld(World w) {
|
||||||
|
return w.getGenerator() instanceof TerraChunkGenerator;
|
||||||
|
}
|
||||||
|
|
||||||
public TerraBiomeGrid getGrid() {
|
public TerraBiomeGrid getGrid() {
|
||||||
return grid;
|
return grid;
|
||||||
}
|
}
|
||||||
@ -117,8 +121,4 @@ public class TerraWorld {
|
|||||||
public boolean isSafe() {
|
public boolean isSafe() {
|
||||||
return safe;
|
return safe;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isTerraWorld(World w) {
|
|
||||||
return w.getGenerator() instanceof TerraChunkGenerator;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,10 @@ public class SimplexCarver extends Carver {
|
|||||||
hasCaves.setFrequency(0.005f);
|
hasCaves.setFrequency(0.005f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static double acot(double x) {
|
||||||
|
return Math.PI / 2 - Math.atan(x);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CarvingData carve(int chunkX, int chunkZ, World w) {
|
public CarvingData carve(int chunkX, int chunkZ, World w) {
|
||||||
CarvingData c = new CarvingData(chunkX, chunkZ);
|
CarvingData c = new CarvingData(chunkX, chunkZ);
|
||||||
@ -68,10 +72,6 @@ public class SimplexCarver extends Carver {
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static double acot(double x) {
|
|
||||||
return Math.PI / 2 - Math.atan(x);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Worm getWorm(long l, Vector vector) {
|
public Worm getWorm(long l, Vector vector) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -21,16 +21,6 @@ public class LoadCommand extends PlayerCommand implements DebugCommand {
|
|||||||
super(parent);
|
super(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "load";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<String> getStructureNames() {
|
public static List<String> getStructureNames() {
|
||||||
List<String> names = new ArrayList<>();
|
List<String> names = new ArrayList<>();
|
||||||
File structureDir = new File(Terra.getInstance().getDataFolder() + File.separator + "export" + File.separator + "structures");
|
File structureDir = new File(Terra.getInstance().getDataFolder() + File.separator + "export" + File.separator + "structures");
|
||||||
@ -45,6 +35,16 @@ public class LoadCommand extends PlayerCommand implements DebugCommand {
|
|||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(@NotNull Player sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "load";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<org.polydev.gaea.command.Command> getSubCommands() {
|
public List<org.polydev.gaea.command.Command> getSubCommands() {
|
||||||
return Arrays.asList(new LoadRawCommand(this), new LoadFullCommand(this, true), new LoadFullCommand(this, false));
|
return Arrays.asList(new LoadRawCommand(this), new LoadFullCommand(this, true), new LoadFullCommand(this, false));
|
||||||
|
@ -194,30 +194,6 @@ public class ConfigPack extends YamlConfiguration {
|
|||||||
LangUtil.log("config-pack.loaded", Level.INFO, getID(), String.valueOf((System.nanoTime() - l) / 1000000D));
|
LangUtil.log("config-pack.loaded", Level.INFO, getID(), String.valueOf((System.nanoTime() - l) / 1000000D));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getID() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Double> getDefinedVariables() {
|
|
||||||
return definedVariables;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, BiomeConfig> getBiomes() {
|
|
||||||
return biomes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public StructureConfig getStructure(String id) {
|
|
||||||
return structures.get(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public BiomeGridConfig getBiomeGrid(String id) {
|
|
||||||
return grids.get(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, NoiseConfig> getNoiseBuilders() {
|
|
||||||
return noiseBuilders;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static synchronized void loadAll(JavaPlugin main) {
|
public static synchronized void loadAll(JavaPlugin main) {
|
||||||
configs.clear();
|
configs.clear();
|
||||||
File file = new File(main.getDataFolder(), "packs");
|
File file = new File(main.getDataFolder(), "packs");
|
||||||
@ -252,6 +228,30 @@ public class ConfigPack extends YamlConfiguration {
|
|||||||
return configs.get(id);
|
return configs.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getID() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Double> getDefinedVariables() {
|
||||||
|
return definedVariables;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, BiomeConfig> getBiomes() {
|
||||||
|
return biomes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public StructureConfig getStructure(String id) {
|
||||||
|
return structures.get(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BiomeGridConfig getBiomeGrid(String id) {
|
||||||
|
return grids.get(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, NoiseConfig> getNoiseBuilders() {
|
||||||
|
return noiseBuilders;
|
||||||
|
}
|
||||||
|
|
||||||
public Map<StructureTypeEnum, StructureConfig> getLocatable() {
|
public Map<StructureTypeEnum, StructureConfig> getLocatable() {
|
||||||
return locatable;
|
return locatable;
|
||||||
}
|
}
|
||||||
|
@ -77,12 +77,6 @@ public class TerraChunkGenerator extends GaeaChunkGenerator {
|
|||||||
popMap.get(c.getWorld()).checkNeighbors(c.getX(), c.getZ(), c.getWorld());
|
popMap.get(c.getWorld()).checkNeighbors(c.getX(), c.getZ(), c.getWorld());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void attachProfiler(WorldProfiler p) {
|
|
||||||
super.attachProfiler(p);
|
|
||||||
popMan.attachProfiler(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Palette<BlockData> getPalette(int x, int y, int z, BiomeConfig c, ChunkInterpolator interpolator, ElevationInterpolator elevationInterpolator) {
|
private static Palette<BlockData> getPalette(int x, int y, int z, BiomeConfig c, ChunkInterpolator interpolator, ElevationInterpolator elevationInterpolator) {
|
||||||
Palette<BlockData> slant = ((WorldGenerator) c.getBiome().getGenerator()).getSlantPalette(y);
|
Palette<BlockData> slant = ((WorldGenerator) c.getBiome().getGenerator()).getSlantPalette(y);
|
||||||
if(slant != null) {
|
if(slant != null) {
|
||||||
@ -138,6 +132,12 @@ public class TerraChunkGenerator extends GaeaChunkGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void attachProfiler(WorldProfiler p) {
|
||||||
|
super.attachProfiler(p);
|
||||||
|
popMan.attachProfiler(p);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("try")
|
@SuppressWarnings("try")
|
||||||
public ChunkData generateBase(@NotNull World world, @NotNull Random random, int chunkX, int chunkZ, ChunkInterpolator interpolator) {
|
public ChunkData generateBase(@NotNull World world, @NotNull Random random, int chunkX, int chunkZ, ChunkInterpolator interpolator) {
|
||||||
|
@ -49,41 +49,6 @@ public class NoiseBuilder {
|
|||||||
return noise;
|
return noise;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NoiseBuilder setFrequency(double frequency) {
|
|
||||||
this.frequency = frequency;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NoiseBuilder setFractalGain(double fractalGain) {
|
|
||||||
this.fractalGain = fractalGain;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NoiseBuilder setFractalLacunarity(double fractalLacunarity) {
|
|
||||||
this.fractalLacunarity = fractalLacunarity;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NoiseBuilder setFractalType(FastNoiseLite.FractalType fractalType) {
|
|
||||||
this.fractalType = fractalType;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NoiseBuilder setOctaves(int octaves) {
|
|
||||||
this.octaves = octaves;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NoiseBuilder setPingPong(double pingPong) {
|
|
||||||
this.pingPong = pingPong;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NoiseBuilder setWeightedStrength(double weightedStrength) {
|
|
||||||
this.weightedStrength = weightedStrength;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public FastNoiseLite.NoiseType getType() {
|
public FastNoiseLite.NoiseType getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
@ -93,21 +58,6 @@ public class NoiseBuilder {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NoiseBuilder setCellularDistanceFunction(FastNoiseLite.CellularDistanceFunction cellularDistanceFunction) {
|
|
||||||
this.cellularDistanceFunction = cellularDistanceFunction;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NoiseBuilder setCellularReturnType(FastNoiseLite.CellularReturnType cellularReturnType) {
|
|
||||||
this.cellularReturnType = cellularReturnType;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NoiseBuilder setCellularJitter(double cellularJitter) {
|
|
||||||
this.cellularJitter = cellularJitter;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSeedOffset() {
|
public int getSeedOffset() {
|
||||||
return seedOffset;
|
return seedOffset;
|
||||||
}
|
}
|
||||||
@ -116,71 +66,121 @@ public class NoiseBuilder {
|
|||||||
this.seedOffset = seedOffset;
|
this.seedOffset = seedOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NoiseBuilder setDomainWarpAmp(double domainWarpAmp) {
|
public FastNoiseLite.CellularDistanceFunction getCellularDistanceFunction() {
|
||||||
this.domainWarpAmp = domainWarpAmp;
|
return cellularDistanceFunction;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setCellularDistanceFunction(FastNoiseLite.CellularDistanceFunction cellularDistanceFunction) {
|
||||||
|
this.cellularDistanceFunction = cellularDistanceFunction;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FastNoiseLite.CellularReturnType getCellularReturnType() {
|
||||||
|
return cellularReturnType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setCellularReturnType(FastNoiseLite.CellularReturnType cellularReturnType) {
|
||||||
|
this.cellularReturnType = cellularReturnType;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FastNoiseLite.DomainWarpType getDomainWarpType() {
|
||||||
|
return domainWarpType;
|
||||||
|
}
|
||||||
|
|
||||||
public NoiseBuilder setDomainWarpType(FastNoiseLite.DomainWarpType domainWarpType) {
|
public NoiseBuilder setDomainWarpType(FastNoiseLite.DomainWarpType domainWarpType) {
|
||||||
this.domainWarpType = domainWarpType;
|
this.domainWarpType = domainWarpType;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NoiseBuilder setRotationType3D(FastNoiseLite.RotationType3D rotationType3D) {
|
|
||||||
this.rotationType3D = rotationType3D;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public FastNoiseLite.CellularDistanceFunction getCellularDistanceFunction() {
|
|
||||||
return cellularDistanceFunction;
|
|
||||||
}
|
|
||||||
|
|
||||||
public FastNoiseLite.CellularReturnType getCellularReturnType() {
|
|
||||||
return cellularReturnType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public FastNoiseLite.DomainWarpType getDomainWarpType() {
|
|
||||||
return domainWarpType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getCellularJitter() {
|
public double getCellularJitter() {
|
||||||
return cellularJitter;
|
return cellularJitter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setCellularJitter(double cellularJitter) {
|
||||||
|
this.cellularJitter = cellularJitter;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public double getDomainWarpAmp() {
|
public double getDomainWarpAmp() {
|
||||||
return domainWarpAmp;
|
return domainWarpAmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setDomainWarpAmp(double domainWarpAmp) {
|
||||||
|
this.domainWarpAmp = domainWarpAmp;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public double getFractalGain() {
|
public double getFractalGain() {
|
||||||
return fractalGain;
|
return fractalGain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setFractalGain(double fractalGain) {
|
||||||
|
this.fractalGain = fractalGain;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public double getFractalLacunarity() {
|
public double getFractalLacunarity() {
|
||||||
return fractalLacunarity;
|
return fractalLacunarity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setFractalLacunarity(double fractalLacunarity) {
|
||||||
|
this.fractalLacunarity = fractalLacunarity;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public double getFrequency() {
|
public double getFrequency() {
|
||||||
return frequency;
|
return frequency;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setFrequency(double frequency) {
|
||||||
|
this.frequency = frequency;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public double getPingPong() {
|
public double getPingPong() {
|
||||||
return pingPong;
|
return pingPong;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setPingPong(double pingPong) {
|
||||||
|
this.pingPong = pingPong;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public double getWeightedStrength() {
|
public double getWeightedStrength() {
|
||||||
return weightedStrength;
|
return weightedStrength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setWeightedStrength(double weightedStrength) {
|
||||||
|
this.weightedStrength = weightedStrength;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public int getOctaves() {
|
public int getOctaves() {
|
||||||
return octaves;
|
return octaves;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setOctaves(int octaves) {
|
||||||
|
this.octaves = octaves;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public FastNoiseLite.FractalType getFractalType() {
|
public FastNoiseLite.FractalType getFractalType() {
|
||||||
return fractalType;
|
return fractalType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setFractalType(FastNoiseLite.FractalType fractalType) {
|
||||||
|
this.fractalType = fractalType;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public FastNoiseLite.RotationType3D getRotationType3D() {
|
public FastNoiseLite.RotationType3D getRotationType3D() {
|
||||||
return rotationType3D;
|
return rotationType3D;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoiseBuilder setRotationType3D(FastNoiseLite.RotationType3D rotationType3D) {
|
||||||
|
this.rotationType3D = rotationType3D;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,14 +28,12 @@ public class WorldGenerator extends Generator {
|
|||||||
private final Palette<BlockData>[] slantPalettes;
|
private final Palette<BlockData>[] slantPalettes;
|
||||||
|
|
||||||
private final boolean preventSmooth;
|
private final boolean preventSmooth;
|
||||||
|
|
||||||
private boolean elevationInterpolation = true;
|
|
||||||
|
|
||||||
private final Expression noiseExp;
|
private final Expression noiseExp;
|
||||||
private final Scope s = new Scope();
|
private final Scope s = new Scope();
|
||||||
private final Variable xVar = s.getVariable("x");
|
private final Variable xVar = s.getVariable("x");
|
||||||
private final Variable yVar = s.getVariable("y");
|
private final Variable yVar = s.getVariable("y");
|
||||||
private final Variable zVar = s.getVariable("z");
|
private final Variable zVar = s.getVariable("z");
|
||||||
|
private boolean elevationInterpolation = true;
|
||||||
|
|
||||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||||
public WorldGenerator(long seed, String equation, String elevateEquation, Map<String, Double> userVariables, Map<String, NoiseConfig> noiseBuilders, Palette[] palettes, Palette[] slantPalettes, boolean preventSmooth) {
|
public WorldGenerator(long seed, String equation, String elevateEquation, Map<String, Double> userVariables, Map<String, NoiseConfig> noiseBuilders, Palette[] palettes, Palette[] slantPalettes, boolean preventSmooth) {
|
||||||
|
@ -30,6 +30,36 @@ import java.util.Random;
|
|||||||
* Populates Flora and Trees
|
* Populates Flora and Trees
|
||||||
*/
|
*/
|
||||||
public class FloraPopulator extends GaeaBlockPopulator {
|
public class FloraPopulator extends GaeaBlockPopulator {
|
||||||
|
private static boolean doTrees(@NotNull UserDefinedBiome biome, TerraWorld world, @NotNull Random random, @NotNull Chunk chunk, int x, int z) {
|
||||||
|
for(Block block : getValidTreeSpawnsAt(chunk, x, z, new Range(0, 254))) {
|
||||||
|
Tree tree = biome.getDecorator().getTrees().get(random);
|
||||||
|
Range range = world.getConfig().getBiome(biome).getTreeRange(tree);
|
||||||
|
if(!range.isInRange(block.getY())) continue;
|
||||||
|
try {
|
||||||
|
Location l = block.getLocation();
|
||||||
|
TreeGenerateEvent event = new TreeGenerateEvent(world, l, tree);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
if(!event.isCancelled()) tree.plant(l, random, Terra.getInstance());
|
||||||
|
} catch(NullPointerException ignore) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<Block> getValidTreeSpawnsAt(Chunk chunk, int x, int z, Range check) {
|
||||||
|
List<Block> blocks = new ArrayList<>();
|
||||||
|
for(int y : check) {
|
||||||
|
if(chunk.getBlock(x, y, z).getType().isSolid() && chunk.getBlock(x, y + 1, z).getType().isAir()) {
|
||||||
|
blocks.add(chunk.getBlock(x, y + 1, z));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return blocks;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int offset(Random r, int i) {
|
||||||
|
return Math.min(Math.max(i + r.nextInt(3) - 1, 0), 15);
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("try")
|
@SuppressWarnings("try")
|
||||||
@Override
|
@Override
|
||||||
public void populate(@NotNull World world, @NotNull Random random, @NotNull Chunk chunk) {
|
public void populate(@NotNull World world, @NotNull Random random, @NotNull Chunk chunk) {
|
||||||
@ -71,34 +101,4 @@ public class FloraPopulator extends GaeaBlockPopulator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean doTrees(@NotNull UserDefinedBiome biome, TerraWorld world, @NotNull Random random, @NotNull Chunk chunk, int x, int z) {
|
|
||||||
for(Block block : getValidTreeSpawnsAt(chunk, x, z, new Range(0, 254))) {
|
|
||||||
Tree tree = biome.getDecorator().getTrees().get(random);
|
|
||||||
Range range = world.getConfig().getBiome(biome).getTreeRange(tree);
|
|
||||||
if(!range.isInRange(block.getY())) continue;
|
|
||||||
try {
|
|
||||||
Location l = block.getLocation();
|
|
||||||
TreeGenerateEvent event = new TreeGenerateEvent(world, l, tree);
|
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
|
||||||
if(!event.isCancelled()) tree.plant(l, random, Terra.getInstance());
|
|
||||||
} catch(NullPointerException ignore) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<Block> getValidTreeSpawnsAt(Chunk chunk, int x, int z, Range check) {
|
|
||||||
List<Block> blocks = new ArrayList<>();
|
|
||||||
for(int y : check) {
|
|
||||||
if(chunk.getBlock(x, y, z).getType().isSolid() && chunk.getBlock(x, y + 1, z).getType().isAir()) {
|
|
||||||
blocks.add(chunk.getBlock(x, y + 1, z));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return blocks;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int offset(Random r, int i) {
|
|
||||||
return Math.min(Math.max(i + r.nextInt(3) - 1, 0), 15);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -144,6 +144,12 @@ public class Structure implements Serializable {
|
|||||||
return (Structure) o;
|
return (Structure) o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void toFile(@NotNull Serializable o, @NotNull File f) throws IOException {
|
||||||
|
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(f));
|
||||||
|
oos.writeObject(o);
|
||||||
|
oos.close();
|
||||||
|
}
|
||||||
|
|
||||||
public StructureContainedBlock[][][] getRawStructure() {
|
public StructureContainedBlock[][][] getRawStructure() {
|
||||||
return structure;
|
return structure;
|
||||||
}
|
}
|
||||||
@ -328,12 +334,6 @@ public class Structure implements Serializable {
|
|||||||
toFile(this, f);
|
toFile(this, f);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void toFile(@NotNull Serializable o, @NotNull File f) throws IOException {
|
|
||||||
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(f));
|
|
||||||
oos.writeObject(o);
|
|
||||||
oos.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public String getId() {
|
public String getId() {
|
||||||
return id;
|
return id;
|
||||||
|
@ -12,6 +12,7 @@ import org.bukkit.entity.EntityType;
|
|||||||
import org.polydev.gaea.math.MathUtil;
|
import org.polydev.gaea.math.MathUtil;
|
||||||
import org.polydev.gaea.math.Range;
|
import org.polydev.gaea.math.Range;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -32,6 +33,10 @@ public class EntityFeature implements Feature {
|
|||||||
this.inSize = inSize;
|
this.inSize = inSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isInChunk(Chunk c, Location l) {
|
||||||
|
return Math.floorDiv(l.getBlockX(), 16) == c.getX() && Math.floorDiv(l.getBlockZ(), 16) == c.getZ();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(Structure structure, Location l, Chunk chunk) {
|
public void apply(Structure structure, Location l, Chunk chunk) {
|
||||||
Random random = new Random(MathUtil.getCarverChunkSeed(chunk.getX(), chunk.getZ(), chunk.getWorld().getSeed()));
|
Random random = new Random(MathUtil.getCarverChunkSeed(chunk.getX(), chunk.getZ(), chunk.getWorld().getSeed()));
|
||||||
@ -75,10 +80,6 @@ public class EntityFeature implements Feature {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isInChunk(Chunk c, Location l) {
|
|
||||||
return Math.floorDiv(l.getBlockX(), 16) == c.getX() && Math.floorDiv(l.getBlockZ(), 16) == c.getZ();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(Structure structure, Location l, Random random) {
|
public void apply(Structure structure, Location l, Random random) {
|
||||||
int amountSpawn = amount.get(random);
|
int amountSpawn = amount.get(random);
|
||||||
@ -114,7 +115,7 @@ public class EntityFeature implements Feature {
|
|||||||
}
|
}
|
||||||
if(canSpawn) {
|
if(canSpawn) {
|
||||||
Debug.info("Spawning entity at " + attempt);
|
Debug.info("Spawning entity at " + attempt);
|
||||||
l.getWorld().spawnEntity(attempt.add(0.5, 1, 0.5), type); // Add 0.5 to X & Z so entity spawns in center of block.
|
Objects.requireNonNull(l.getWorld()).spawnEntity(attempt.add(0.5, 1, 0.5), type); // Add 0.5 to X & Z so entity spawns in center of block.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user