Added a temporary setup for adding biomes

This commit is contained in:
Adubbz 2013-12-30 18:21:34 +11:00
parent 061f762f9a
commit 7ae104c563
8 changed files with 217 additions and 8 deletions

View File

@ -1,6 +1,60 @@
package biomesoplenty.api;
import java.util.ArrayList;
import java.util.HashMap;
import net.minecraft.world.biome.BiomeGenBase;
import biomesoplenty.common.world.GenLayerBiomeBOP;
public class BOPBiomeHelper
{
public static HashMap<String, BiomeGenBase> biomeList = new HashMap();
public static void registerBiome(BiomeGenBase biome, String name)
{
biomeList.put(name, biome);
}
public static BiomeGenBase get(String name)
{
return biomeList.get(name);
}
public static ArrayList<BiomeGenBase> getCorrespondingTemperatureTypeList(BOPBiomeTemperatureType type)
{
switch (type)
{
case HOT:
return GenLayerBiomeBOP.desertBiomes;
case WARM:
return GenLayerBiomeBOP.warmBiomes;
case COOL:
return GenLayerBiomeBOP.coldBiomes;
case ICY:
return GenLayerBiomeBOP.icyBiomes;
default:
return GenLayerBiomeBOP.warmBiomes;
}
}
public enum BOPBiomeTemperatureType
{
HOT, WARM, COOL, ICY;
}
public static class BOPBiomeListEntry
{
public BiomeGenBase biome;
public BOPBiomeTemperatureType temperatureType;
public BOPBiomeListEntry(BiomeGenBase biome, BOPBiomeTemperatureType temperatureType)
{
this.biome = biome;
this.temperatureType = temperatureType;
}
}
}

View File

@ -1,8 +1,12 @@
package biomesoplenty.common.core;
import biomesoplenty.common.world.ForcedDecorators;
import net.minecraft.world.biome.BiomeGenBase;
import biomesoplenty.api.BOPBiomeHelper;
import biomesoplenty.api.BOPBiomeHelper.BOPBiomeListEntry;
import biomesoplenty.api.BOPBiomeHelper.BOPBiomeTemperatureType;
import biomesoplenty.common.world.WorldGenFieldAssociation;
import biomesoplenty.common.world.WorldTypeBOP;
import biomesoplenty.common.world.decoration.ForcedDecorators;
public class BOPBiomes
{
@ -10,12 +14,47 @@ public class BOPBiomes
public static void init()
{
initializeBiomes();
registerBiomes();
WorldGenFieldAssociation.init();
ForcedDecorators.init();
}
private static void initializeBiomes()
private static void registerBiomes()
{
registerBiome(new BOPBiomeListEntry(BiomeGenBase.desert, BOPBiomeTemperatureType.HOT));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.desert, BOPBiomeTemperatureType.HOT));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.desert, BOPBiomeTemperatureType.HOT));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.field_150588_X, BOPBiomeTemperatureType.HOT));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.field_150588_X, BOPBiomeTemperatureType.HOT));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.plains, BOPBiomeTemperatureType.HOT));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.forest, BOPBiomeTemperatureType.WARM));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.field_150585_R, BOPBiomeTemperatureType.WARM));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.extremeHills, BOPBiomeTemperatureType.WARM));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.plains, BOPBiomeTemperatureType.WARM));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.field_150583_P, BOPBiomeTemperatureType.WARM));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.swampland, BOPBiomeTemperatureType.WARM));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.forest, BOPBiomeTemperatureType.COOL));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.extremeHills, BOPBiomeTemperatureType.COOL));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.taiga, BOPBiomeTemperatureType.COOL));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.plains, BOPBiomeTemperatureType.COOL));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.icePlains, BOPBiomeTemperatureType.ICY));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.icePlains, BOPBiomeTemperatureType.ICY));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.icePlains, BOPBiomeTemperatureType.ICY));
registerBiome(new BOPBiomeListEntry(BiomeGenBase.field_150584_S, BOPBiomeTemperatureType.ICY));
}
public static void registerBiome(BOPBiomeListEntry biome)
{
BOPBiomeHelper.registerBiome(biome.biome, biome.biome.biomeName);
addBiomeToList(biome);
}
public static void addBiomeToList(BOPBiomeListEntry biome)
{
BOPBiomeHelper.getCorrespondingTemperatureTypeList(biome.temperatureType).add(biome.biome);
}
}

View File

@ -6,9 +6,9 @@ import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.gen.feature.WorldGenerator;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import biomesoplenty.common.world.ForcedDecorators;
import biomesoplenty.common.world.IBOPDecoration;
import biomesoplenty.common.world.WorldGenFieldAssociation;
import biomesoplenty.common.world.decoration.ForcedDecorators;
import biomesoplenty.common.world.decoration.IBOPDecoration;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
public class DecorateBiomeEventHandler

View File

@ -0,0 +1,105 @@
package biomesoplenty.common.world;
import java.util.ArrayList;
import net.minecraft.world.WorldType;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.gen.layer.GenLayer;
import net.minecraft.world.gen.layer.GenLayerBiome;
import net.minecraft.world.gen.layer.IntCache;
public class GenLayerBiomeBOP extends GenLayerBiome
{
public static ArrayList<BiomeGenBase> desertBiomes = new ArrayList();
public static ArrayList<BiomeGenBase> warmBiomes = new ArrayList();
public static ArrayList<BiomeGenBase> coldBiomes = new ArrayList();
public static ArrayList<BiomeGenBase> icyBiomes = new ArrayList();
public GenLayerBiomeBOP(long par1, GenLayer parentLayer, WorldType worldType)
{
super(par1, parentLayer, worldType);
}
@Override
public int[] getInts(int par1, int par2, int par3, int par4)
{
int[] aint = this.parent.getInts(par1, par2, par3, par4);
int[] aint1 = IntCache.getIntCache(par3 * par4);
for (int i1 = 0; i1 < par4; ++i1)
{
for (int j1 = 0; j1 < par3; ++j1)
{
this.initChunkSeed((long)(j1 + par1), (long)(i1 + par2));
int biomeID = aint[j1 + i1 * par3];
//TODO: 111100000000
int l1 = (biomeID & 3840) >> 8;
biomeID &= -3841;
//TODO: isOceanBiome()
if (func_151618_b(biomeID))
{
aint1[j1 + i1 * par3] = biomeID;
}
else if (biomeID == BiomeGenBase.mushroomIsland.biomeID)
{
aint1[j1 + i1 * par3] = biomeID;
}
else if (biomeID == 1)
{
if (l1 > 0)
{
if (this.nextInt(3) == 0)
{
//TODO: mesaPlateau
aint1[j1 + i1 * par3] = BiomeGenBase.field_150608_ab.biomeID;
}
else
{
//TODO: mesaPlateau F
aint1[j1 + i1 * par3] = BiomeGenBase.field_150607_aa.biomeID;
}
}
else
{
aint1[j1 + i1 * par3] = this.desertBiomes.get(this.nextInt(this.desertBiomes.size())).biomeID;
}
}
else if (biomeID == 2)
{
if (l1 > 0)
{
aint1[j1 + i1 * par3] = BiomeGenBase.jungle.biomeID;
}
else
{
aint1[j1 + i1 * par3] = this.warmBiomes.get(this.nextInt(this.warmBiomes.size())).biomeID;
}
}
else if (biomeID == 3)
{
if (l1 > 0)
{
//TODO: megaTaiga
aint1[j1 + i1 * par3] = BiomeGenBase.field_150578_U.biomeID;
}
else
{
aint1[j1 + i1 * par3] = this.coldBiomes.get(this.nextInt(this.coldBiomes.size())).biomeID;
}
}
else if (biomeID == 4)
{
aint1[j1 + i1 * par3] = this.icyBiomes.get(this.nextInt(this.icyBiomes.size())).biomeID;
}
else
{
aint1[j1 + i1 * par3] = BiomeGenBase.mushroomIsland.biomeID;
}
}
}
return aint1;
}
}

View File

@ -1,6 +1,9 @@
package biomesoplenty.common.world;
import net.minecraft.world.WorldType;
import net.minecraft.world.gen.layer.GenLayer;
import net.minecraft.world.gen.layer.GenLayerBiomeEdge;
import net.minecraft.world.gen.layer.GenLayerZoom;
public class WorldTypeBOP extends WorldType
{
@ -9,4 +12,12 @@ public class WorldTypeBOP extends WorldType
super("BIOMESOP");
}
@Override
public GenLayer getBiomeLayer(long worldSeed, GenLayer parentLayer)
{
GenLayer ret = new GenLayerBiomeBOP(200L, parentLayer, this);
ret = GenLayerZoom.magnify(1000L, ret, 2);
ret = new GenLayerBiomeEdge(1000L, ret);
return ret;
}
}

View File

@ -1,4 +1,4 @@
package biomesoplenty.common.world;
package biomesoplenty.common.world.decoration;
import java.util.HashMap;

View File

@ -1,4 +1,4 @@
package biomesoplenty.common.world;
package biomesoplenty.common.world.decoration;
public interface IBOPDecoration
{

View File

@ -1,6 +1,6 @@
package biomesoplenty.common.world.forceddecorators;
import biomesoplenty.common.world.IBOPDecoration;
import biomesoplenty.common.world.decoration.IBOPDecoration;
public class SwampForcedDecorator implements IBOPDecoration
{