Added chunk generators and our custom biome layer
This commit is contained in:
parent
d23bd12fd4
commit
75f5a6c2e8
4 changed files with 188 additions and 1 deletions
|
@ -0,0 +1,32 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2015, the Biomes O' Plenty Team
|
||||||
|
*
|
||||||
|
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
|
||||||
|
*
|
||||||
|
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
package biomesoplenty.common.world;
|
||||||
|
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.WorldType;
|
||||||
|
import net.minecraft.world.biome.WorldChunkManager;
|
||||||
|
import net.minecraft.world.gen.layer.GenLayer;
|
||||||
|
|
||||||
|
public class WorldChunkManagerBOP extends WorldChunkManager
|
||||||
|
{
|
||||||
|
public WorldChunkManagerBOP(long seed, WorldType worldType, String chunkProviderSettings)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
this.field_180301_f = chunkProviderSettings;
|
||||||
|
GenLayer[] agenlayer = GenLayer.initializeAllBiomeGenerators(seed, worldType, chunkProviderSettings);
|
||||||
|
agenlayer = getModdedBiomeGenerators(worldType, seed, agenlayer);
|
||||||
|
this.genBiomes = agenlayer[0];
|
||||||
|
this.biomeIndexLayer = agenlayer[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorldChunkManagerBOP(World world)
|
||||||
|
{
|
||||||
|
this(world.getSeed(), world.getWorldInfo().getTerrainType(), world.getWorldInfo().getGeneratorOptions());
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,13 @@
|
||||||
|
|
||||||
package biomesoplenty.common.world;
|
package biomesoplenty.common.world;
|
||||||
|
|
||||||
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.WorldType;
|
import net.minecraft.world.WorldType;
|
||||||
|
import net.minecraft.world.biome.WorldChunkManager;
|
||||||
|
import net.minecraft.world.gen.layer.GenLayer;
|
||||||
|
import net.minecraft.world.gen.layer.GenLayerBiomeEdge;
|
||||||
|
import net.minecraft.world.gen.layer.GenLayerZoom;
|
||||||
|
import biomesoplenty.common.world.layer.GenLayerBiomeBOP;
|
||||||
|
|
||||||
public class WorldTypeBOP extends WorldType
|
public class WorldTypeBOP extends WorldType
|
||||||
{
|
{
|
||||||
|
@ -18,4 +24,19 @@ public class WorldTypeBOP extends WorldType
|
||||||
|
|
||||||
this.setNotificationData();
|
this.setNotificationData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GenLayer getBiomeLayer(long worldSeed, GenLayer parentLayer, String chunkProviderSettingsJson)
|
||||||
|
{
|
||||||
|
GenLayer ret = new GenLayerBiomeBOP(200L, parentLayer, this, chunkProviderSettingsJson);
|
||||||
|
ret = GenLayerZoom.magnify(1000L, ret, 2);
|
||||||
|
ret = new GenLayerBiomeEdge(1000L, ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorldChunkManager getChunkManager(World world)
|
||||||
|
{
|
||||||
|
return new WorldChunkManagerBOP(world);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,130 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2015, the Biomes O' Plenty Team
|
||||||
|
*
|
||||||
|
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
|
||||||
|
*
|
||||||
|
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
package biomesoplenty.common.world.layer;
|
||||||
|
|
||||||
|
import static net.minecraftforge.common.BiomeManager.BiomeType.COOL;
|
||||||
|
import static net.minecraftforge.common.BiomeManager.BiomeType.DESERT;
|
||||||
|
import static net.minecraftforge.common.BiomeManager.BiomeType.ICY;
|
||||||
|
import static net.minecraftforge.common.BiomeManager.BiomeType.WARM;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.util.WeightedRandom;
|
||||||
|
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;
|
||||||
|
import net.minecraftforge.common.BiomeManager;
|
||||||
|
import net.minecraftforge.common.BiomeManager.BiomeEntry;
|
||||||
|
import net.minecraftforge.fml.relauncher.ReflectionHelper;
|
||||||
|
|
||||||
|
public class GenLayerBiomeBOP extends GenLayerBiome
|
||||||
|
{
|
||||||
|
private List<BiomeEntry>[] biomes;
|
||||||
|
|
||||||
|
public GenLayerBiomeBOP(long seed, GenLayer parentLayer, WorldType worldType, String chunkProviderSettings)
|
||||||
|
{
|
||||||
|
super(seed, parentLayer, worldType, chunkProviderSettings);
|
||||||
|
|
||||||
|
biomes = ReflectionHelper.getPrivateValue(GenLayerBiome.class, this, "biomes");
|
||||||
|
|
||||||
|
//TODO: Use vanilla biome weights
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getInts(int areaX, int areaY, int areaWidth, int areaHeight)
|
||||||
|
{
|
||||||
|
int[] inputBiomeIds = this.parent.getInts(areaX, areaY, areaWidth, areaHeight);
|
||||||
|
int[] outputBiomeIds = IntCache.getIntCache(areaWidth * areaHeight);
|
||||||
|
|
||||||
|
for (int x = 0; x < areaHeight; ++x)
|
||||||
|
{
|
||||||
|
for (int z = 0; z < areaWidth; ++z)
|
||||||
|
{
|
||||||
|
this.initChunkSeed((long)(z + areaX), (long)(x + areaY));
|
||||||
|
int k1 = inputBiomeIds[z + x * areaWidth];
|
||||||
|
int l1 = (k1 & 3840) >> 8;
|
||||||
|
k1 &= -3841;
|
||||||
|
|
||||||
|
/*if (this.field_175973_g != null && this.field_175973_g.fixedBiome >= 0)
|
||||||
|
{
|
||||||
|
aint1[j1 + i1 * areaWidth] = this.field_175973_g.fixedBiome;
|
||||||
|
}
|
||||||
|
else */if (isBiomeOceanic(k1))
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = k1;
|
||||||
|
}
|
||||||
|
else if (k1 == BiomeGenBase.mushroomIsland.biomeID)
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = k1;
|
||||||
|
}
|
||||||
|
else if (k1 == 1)
|
||||||
|
{
|
||||||
|
if (l1 > 0)
|
||||||
|
{
|
||||||
|
if (this.nextInt(3) == 0)
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = BiomeGenBase.mesaPlateau.biomeID;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = BiomeGenBase.mesaPlateau_F.biomeID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = getWeightedBiomeEntry(DESERT).biome.biomeID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (k1 == 2)
|
||||||
|
{
|
||||||
|
if (l1 > 0)
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = BiomeGenBase.jungle.biomeID;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = getWeightedBiomeEntry(WARM).biome.biomeID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (k1 == 3)
|
||||||
|
{
|
||||||
|
if (l1 > 0)
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = BiomeGenBase.megaTaiga.biomeID;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = getWeightedBiomeEntry(COOL).biome.biomeID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (k1 == 4)
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = getWeightedBiomeEntry(ICY).biome.biomeID;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
outputBiomeIds[z + x * areaWidth] = BiomeGenBase.mushroomIsland.biomeID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return outputBiomeIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected BiomeEntry getWeightedBiomeEntry(BiomeManager.BiomeType type)
|
||||||
|
{
|
||||||
|
List<BiomeEntry> biomeList = biomes[type.ordinal()];
|
||||||
|
int totalWeight = WeightedRandom.getTotalWeight(biomeList);
|
||||||
|
int weight = nextInt(totalWeight);
|
||||||
|
return (BiomeEntry)WeightedRandom.getRandomItem(biomeList, weight);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,9 @@
|
||||||
public net.minecraft.client.gui.GuiScreen func_146283_a(Ljava/util/List;II)V #drawHoveringText
|
public net.minecraft.client.gui.GuiScreen func_146283_a(Ljava/util/List;II)V #drawHoveringText
|
||||||
public net.minecraft.client.gui.GuiCreateWorld field_146320_D #field_146320_D
|
public net.minecraft.client.gui.GuiCreateWorld field_146320_D #field_146320_D
|
||||||
public net.minecraft.client.gui.GuiCreateWorld field_146331_K #field_146331_K
|
public net.minecraft.client.gui.GuiCreateWorld field_146331_K #field_146331_K
|
||||||
|
|
||||||
public-f net.minecraft.world.biome.BiomeGenBase field_76756_M #biomeID
|
public-f net.minecraft.world.biome.BiomeGenBase field_76756_M #biomeID
|
||||||
public net.minecraft.world.WorldType func_151358_j()Lnet/minecraft/world/WorldType; #setNotificationData
|
public net.minecraft.world.WorldType func_151358_j()Lnet/minecraft/world/WorldType; #setNotificationData
|
||||||
|
protected net.minecraft.world.biome.WorldChunkManager field_76944_d #genBiomes
|
||||||
|
protected net.minecraft.world.biome.WorldChunkManager field_76945_e #biomeIndexLayer
|
||||||
|
protected net.minecraft.world.biome.WorldChunkManager field_180301_f #field_180301_f
|
Loading…
Reference in a new issue