mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-18 18:42:30 +00:00
43 lines
1.5 KiB
Java
43 lines
1.5 KiB
Java
package com.dfsek.terra.biome;
|
|
|
|
import com.dfsek.terra.config.base.WorldConfig;
|
|
import com.dfsek.terra.image.ImageLoader;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.World;
|
|
import org.polydev.gaea.biome.Biome;
|
|
import org.polydev.gaea.biome.BiomeGrid;
|
|
import org.polydev.gaea.biome.NormalizationUtil;
|
|
import org.polydev.gaea.generation.GenerationPhase;
|
|
|
|
public class UserDefinedGrid extends BiomeGrid {
|
|
private final ImageLoader imageLoader;
|
|
private final boolean fromImage;
|
|
private final ImageLoader.Channel channelX;
|
|
private final ImageLoader.Channel channelZ;
|
|
public UserDefinedGrid(World w, float freq1, float freq2, UserDefinedBiome[][] b) {
|
|
super(w, freq1, freq2, b.length, b[0].length);
|
|
super.setNormalType(NormalType.LOOKUP4096);
|
|
super.setGrid(b);
|
|
WorldConfig c = WorldConfig.fromWorld(w);
|
|
imageLoader = c.imageLoader;
|
|
fromImage = c.fromImage;
|
|
channelX = c.biomeXChannel;
|
|
channelZ = c.biomeZChannel;
|
|
}
|
|
|
|
@Override
|
|
public Biome getBiome(int x, int z, GenerationPhase phase) {
|
|
if(fromImage) {
|
|
double xi = imageLoader.getNoiseVal(x, z, channelX);
|
|
double zi = imageLoader.getNoiseVal(x, z, channelZ);
|
|
return super.getGrid()[NormalizationUtil.normalize(xi, getSizeX())][NormalizationUtil.normalize(zi, getSizeZ())];
|
|
}
|
|
return super.getBiome(x, z, phase);
|
|
}
|
|
|
|
@Override
|
|
public Biome getBiome(Location l, GenerationPhase phase) {
|
|
return this.getBiome(l.getBlockX(), l.getBlockZ(), phase);
|
|
}
|
|
}
|