mirror of
https://github.com/neoStudiosLCE/neoLegacy.git
synced 2026-08-20 09:57:09 +00:00
some changes
This commit is contained in:
parent
54958075bb
commit
f17f5a98e5
|
|
@ -12,7 +12,7 @@
|
||||||
#include "PerlinNoise.h"
|
#include "PerlinNoise.h"
|
||||||
|
|
||||||
|
|
||||||
Biome *Biome::biomes[256];
|
Biome *Biome::biomes[257];
|
||||||
|
|
||||||
Biome *Biome::ocean = nullptr;//0
|
Biome *Biome::ocean = nullptr;//0
|
||||||
Biome *Biome::plains = nullptr;//1
|
Biome *Biome::plains = nullptr;//1
|
||||||
|
|
@ -120,6 +120,8 @@ void Biome::staticCtor()
|
||||||
Biome::coldTaigaHills = (new TaigaBiome(31))->setColor(0x163933)->setName(L"Cold Taiga Hills")->setLeafColor(0x4EBA31)->setSnowCovered()->setTemperatureAndDownfall(-0.5f, 0.4f)->setDepthAndScale(0.3f, 0.8f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_TaigaHills, eMinecraftColour_Foliage_TaigaHills, eMinecraftColour_Water_TaigaHills,eMinecraftColour_Sky_TaigaHills);
|
Biome::coldTaigaHills = (new TaigaBiome(31))->setColor(0x163933)->setName(L"Cold Taiga Hills")->setLeafColor(0x4EBA31)->setSnowCovered()->setTemperatureAndDownfall(-0.5f, 0.4f)->setDepthAndScale(0.3f, 0.8f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_TaigaHills, eMinecraftColour_Foliage_TaigaHills, eMinecraftColour_Water_TaigaHills,eMinecraftColour_Sky_TaigaHills);
|
||||||
Biome::megaTaiga = (new TaigaBiome(32,1))->setColor(0x0b6659)->setName(L"Mega Taiga")->setLeafColor(0x4EBA31)->setTemperatureAndDownfall(0.3f, 0.8f)->setDepthAndScale(0.1f, 0.4f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Taiga, eMinecraftColour_Foliage_Taiga, eMinecraftColour_Water_Taiga,eMinecraftColour_Sky_Taiga);
|
Biome::megaTaiga = (new TaigaBiome(32,1))->setColor(0x0b6659)->setName(L"Mega Taiga")->setLeafColor(0x4EBA31)->setTemperatureAndDownfall(0.3f, 0.8f)->setDepthAndScale(0.1f, 0.4f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Taiga, eMinecraftColour_Foliage_Taiga, eMinecraftColour_Water_Taiga,eMinecraftColour_Sky_Taiga);
|
||||||
Biome::megaTaigaHills = (new TaigaBiome(33,2))->setColor(0x0b6659)->setName(L"Mega Taiga Hills")->setLeafColor(0x4EBA31)->setTemperatureAndDownfall(0.3f, 0.8f)->setDepthAndScale(0.3f, 0.8f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_TaigaHills, eMinecraftColour_Foliage_TaigaHills, eMinecraftColour_Water_TaigaHills,eMinecraftColour_Sky_TaigaHills);
|
Biome::megaTaigaHills = (new TaigaBiome(33,2))->setColor(0x0b6659)->setName(L"Mega Taiga Hills")->setLeafColor(0x4EBA31)->setTemperatureAndDownfall(0.3f, 0.8f)->setDepthAndScale(0.3f, 0.8f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_TaigaHills, eMinecraftColour_Foliage_TaigaHills, eMinecraftColour_Water_TaigaHills,eMinecraftColour_Sky_TaigaHills);
|
||||||
|
Biome::extremeHills_plus = (new ExtremeHillsBiome(34, true))->setColor(0x507050)->setName(L"Extreme Hills+")->setDepthAndScale(0.3f, 1.5f)->setTemperatureAndDownfall(0.2f, 0.3f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_ExtremeHills,eMinecraftColour_Foliage_ExtremeHills,eMinecraftColour_Water_ExtremeHills, eMinecraftColour_Sky_ExtremeHills);
|
||||||
|
|
||||||
Biome::savanna = (new SavannaBiome(35))->setColor(0xbda235)->setName(L"Savanna")->setNoRain()->setTemperatureAndDownfall(1.2f, 0.0f) ->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Savanna, eMinecraftColour_Foliage_Savanna, eMinecraftColour_Sky_Desert, eMinecraftColour_Sky_Desert);
|
Biome::savanna = (new SavannaBiome(35))->setColor(0xbda235)->setName(L"Savanna")->setNoRain()->setTemperatureAndDownfall(1.2f, 0.0f) ->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Savanna, eMinecraftColour_Foliage_Savanna, eMinecraftColour_Sky_Desert, eMinecraftColour_Sky_Desert);
|
||||||
Biome::savannaPlateau = (new SavannaBiome(36))->setColor(0xa79d64)->setName(L"Savanna Plateau")->setNoRain()->setTemperatureAndDownfall(1.0f, 0.0f)->setDepthAndScale(1.5f, 0.025f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Savanna, eMinecraftColour_Foliage_Savanna, eMinecraftColour_Sky_Desert, eMinecraftColour_Sky_Desert);
|
Biome::savannaPlateau = (new SavannaBiome(36))->setColor(0xa79d64)->setName(L"Savanna Plateau")->setNoRain()->setTemperatureAndDownfall(1.0f, 0.0f)->setDepthAndScale(1.5f, 0.025f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Savanna, eMinecraftColour_Foliage_Savanna, eMinecraftColour_Sky_Desert, eMinecraftColour_Sky_Desert);
|
||||||
|
|
||||||
|
|
@ -128,12 +130,13 @@ void Biome::staticCtor()
|
||||||
Biome::mesaPlateau = (new MesaBiome(39, true, false))->setColor(0xca5936)->setName(L"Mesa Plateau")->setDepthAndScale(1.5f, 0.025f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Mesa, eMinecraftColour_Foliage_Mesa, eMinecraftColour_Water_Mesa, eMinecraftColour_Sky_Desert);
|
Biome::mesaPlateau = (new MesaBiome(39, true, false))->setColor(0xca5936)->setName(L"Mesa Plateau")->setDepthAndScale(1.5f, 0.025f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Mesa, eMinecraftColour_Foliage_Mesa, eMinecraftColour_Water_Mesa, eMinecraftColour_Sky_Desert);
|
||||||
|
|
||||||
Biome::sunflowersPlains = (new PlainsBiome(129,true))->setColor(0x8db360)->setName(L"Sunflowers Plains")->setTemperatureAndDownfall(0.8f, 0.4f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Plains, eMinecraftColour_Foliage_Plains, eMinecraftColour_Water_Plains,eMinecraftColour_Sky_Plains);
|
Biome::sunflowersPlains = (new PlainsBiome(129,true))->setColor(0x8db360)->setName(L"Sunflowers Plains")->setTemperatureAndDownfall(0.8f, 0.4f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Plains, eMinecraftColour_Foliage_Plains, eMinecraftColour_Water_Plains,eMinecraftColour_Sky_Plains);
|
||||||
|
Biome::extremeHillsM = static_cast<ExtremeHillsBiome*>(Biome::biomes[3])->createMutatedBiome(131);
|
||||||
Biome::flowerForest = (new ForestBiome(132, 1))->setColor(0x056621)->setName(L"Flower Forest")->setTemperatureAndDownfall(0.7f, 0.8f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Forest, eMinecraftColour_Foliage_Forest, eMinecraftColour_Water_Forest,eMinecraftColour_Sky_Forest);
|
Biome::flowerForest = (new ForestBiome(132, 1))->setColor(0x056621)->setName(L"Flower Forest")->setTemperatureAndDownfall(0.7f, 0.8f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Forest, eMinecraftColour_Foliage_Forest, eMinecraftColour_Water_Forest,eMinecraftColour_Sky_Forest);
|
||||||
Biome::iceSpikes = (new IceBiome(140,true))->setColor(0xffffff)->setName(L"Ice Spikes")->setSnowCovered()->setTemperatureAndDownfall(0, 0.5f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_IcePlains, eMinecraftColour_Foliage_IcePlains, eMinecraftColour_Water_IcePlains,eMinecraftColour_Sky_IcePlains);
|
Biome::iceSpikes = (new IceBiome(140,true))->setColor(0xffffff)->setName(L"Ice Spikes")->setSnowCovered()->setTemperatureAndDownfall(0, 0.5f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_IcePlains, eMinecraftColour_Foliage_IcePlains, eMinecraftColour_Water_IcePlains,eMinecraftColour_Sky_IcePlains);
|
||||||
Biome::birchForestM=(new ForestBiome::MutatedBirchForestBiome(155, biomes[27]))->setColor(0x47875a)->setName(L"Birch Forest M")->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Forest, eMinecraftColour_Foliage_Birch, eMinecraftColour_Water_Forest, eMinecraftColour_Sky_Forest);
|
Biome::birchForestM=(new ForestBiome::MutatedBirchForestBiome(155, biomes[27]))->setColor(0x47875a)->setName(L"Birch Forest M")->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Forest, eMinecraftColour_Foliage_Birch, eMinecraftColour_Water_Forest, eMinecraftColour_Sky_Forest);
|
||||||
Biome::birchForestHillsM=(new ForestBiome::MutatedBirchForestBiome(156, biomes[28]))->setColor(0x47875a)->setName(L"Birch Forest Hills M")->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_ForestHills, eMinecraftColour_Foliage_Birch, eMinecraftColour_Water_Forest, eMinecraftColour_Sky_ForestHills);
|
Biome::birchForestHillsM=(new ForestBiome::MutatedBirchForestBiome(156, biomes[28]))->setColor(0x47875a)->setName(L"Birch Forest Hills M")->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_ForestHills, eMinecraftColour_Foliage_Birch, eMinecraftColour_Water_Forest, eMinecraftColour_Sky_ForestHills);
|
||||||
Biome::roofedForestM=(new ForestBiome::MutatedForestBiome(157, biomes[29]))->setColor(0x177a35)->setName(L"Roofed Forest M")->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_RoofedForest, eMinecraftColour_Foliage_RoofedForest, eMinecraftColour_Water_Forest, eMinecraftColour_Sky_Forest);
|
Biome::roofedForestM=(new ForestBiome::MutatedForestBiome(157, biomes[29]))->setColor(0x177a35)->setName(L"Roofed Forest M")->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_RoofedForest, eMinecraftColour_Foliage_RoofedForest, eMinecraftColour_Water_Forest, eMinecraftColour_Sky_Forest);
|
||||||
|
Biome::extremeHills_plusM = static_cast<ExtremeHillsBiome*>(Biome::biomes[34])->createMutatedBiome(162);
|
||||||
Biome::savannaM = (new MutatedSavannaBiome(163, biomes[35]))->setColor(0xe5da87)->setName(L"Savanna M")->setNoRain()->setTemperatureAndDownfall(1.1f, 0.0f)->setDepthAndScale(0.35f, 1.3f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Savanna, eMinecraftColour_Foliage_Savanna, eMinecraftColour_Sky_Desert, eMinecraftColour_Sky_Desert);
|
Biome::savannaM = (new MutatedSavannaBiome(163, biomes[35]))->setColor(0xe5da87)->setName(L"Savanna M")->setNoRain()->setTemperatureAndDownfall(1.1f, 0.0f)->setDepthAndScale(0.35f, 1.3f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Savanna, eMinecraftColour_Foliage_Savanna, eMinecraftColour_Sky_Desert, eMinecraftColour_Sky_Desert);
|
||||||
Biome::savannaPlateauM = (new MutatedSavannaBiome(164, biomes[36]))->setColor(0xd1c890)->setName(L"Savanna Plateau M")->setNoRain()->setTemperatureAndDownfall(1.0f, 0.0f)->setDepthAndScale(1.05f, 1.2125f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Savanna, eMinecraftColour_Foliage_Savanna, eMinecraftColour_Sky_Desert, eMinecraftColour_Sky_Desert);
|
Biome::savannaPlateauM = (new MutatedSavannaBiome(164, biomes[36]))->setColor(0xd1c890)->setName(L"Savanna Plateau M")->setNoRain()->setTemperatureAndDownfall(1.0f, 0.0f)->setDepthAndScale(1.05f, 1.2125f)->setLeafFoliageWaterSkyColor(eMinecraftColour_Grass_Savanna, eMinecraftColour_Foliage_Savanna, eMinecraftColour_Sky_Desert, eMinecraftColour_Sky_Desert);
|
||||||
|
|
||||||
|
|
@ -382,17 +385,20 @@ float Biome::getTemperature(int x, int y, int z)
|
||||||
void Biome::buildSurfaceAtDefault(Level *level, Random *random, byte* chunkBlocks, int x, int z, double noiseVal)
|
void Biome::buildSurfaceAtDefault(Level *level, Random *random, byte* chunkBlocks, int x, int z, double noiseVal)
|
||||||
{
|
{
|
||||||
byte topState = this->topMaterial;
|
byte topState = this->topMaterial;
|
||||||
|
byte topStateData = this->topMaterialData;
|
||||||
byte fillerState = this->material;
|
byte fillerState = this->material;
|
||||||
|
byte fillerStateData = this->materialData;
|
||||||
|
|
||||||
int runDepth = -1;
|
int runDepth = -1;
|
||||||
int noiseDepth = (int)(noiseVal / 3.0 + 3.0 + random->nextDouble() * 0.25);
|
int noiseDepth = (int)(noiseVal / 3.0 + 3.0 + random->nextDouble() * 0.25);
|
||||||
int localX = x & 15;
|
int localX = x & 15;
|
||||||
int localZ = z & 15;
|
int localZ = z & 15;
|
||||||
int seaLevel = level->seaLevel;
|
|
||||||
|
|
||||||
for (int y = Level::genDepthMinusOne; y >= 0; --y)
|
|
||||||
|
const int SEA_LEVEL = 63;
|
||||||
|
|
||||||
|
for (int y = 127; y >= 0; --y)
|
||||||
{
|
{
|
||||||
|
|
||||||
int index = (localZ * 16 + localX) * Level::genDepth + y;
|
int index = (localZ * 16 + localX) * Level::genDepth + y;
|
||||||
|
|
||||||
if (y <= 1 + random->nextInt(2))
|
if (y <= 1 + random->nextInt(2))
|
||||||
|
|
@ -414,33 +420,40 @@ void Biome::buildSurfaceAtDefault(Level *level, Random *random, byte* chunkBlock
|
||||||
if (noiseDepth <= 0)
|
if (noiseDepth <= 0)
|
||||||
{
|
{
|
||||||
topState = 0;
|
topState = 0;
|
||||||
|
topStateData = 0;
|
||||||
fillerState = static_cast<byte>(Tile::stone_Id);
|
fillerState = static_cast<byte>(Tile::stone_Id);
|
||||||
|
fillerStateData = 0;
|
||||||
}
|
}
|
||||||
else if (y >= seaLevel - 4 && y <= seaLevel + 1)
|
else if (y < 6)
|
||||||
{
|
{
|
||||||
topState = this->topMaterial;
|
topState = this->topMaterial;
|
||||||
|
topStateData = this->topMaterialData;
|
||||||
fillerState = this->material;
|
fillerState = this->material;
|
||||||
|
fillerStateData = this->materialData;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (y < seaLevel && topState == 0)
|
if (y < SEA_LEVEL && topState == 0)
|
||||||
{
|
{
|
||||||
if (this->getTemperature(x, y, z) < 0.15f) {
|
if (this->getTemperature(x, y, z) < 0.15f)
|
||||||
topState = static_cast<byte>(Tile::ice_Id);
|
topState = static_cast<byte>(Tile::ice_Id);
|
||||||
} else {
|
else
|
||||||
topState = static_cast<byte>(Tile::calmWater_Id);
|
topState = static_cast<byte>(Tile::calmWater_Id);
|
||||||
}
|
topStateData = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
runDepth = noiseDepth;
|
runDepth = noiseDepth;
|
||||||
|
|
||||||
if (y >= seaLevel - 1)
|
if (y >= SEA_LEVEL - 1)
|
||||||
{
|
{
|
||||||
chunkBlocks[index] = topState;
|
chunkBlocks[index] = topState;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (y < seaLevel - 7 - noiseDepth)
|
else if (y < SEA_LEVEL - 7 - noiseDepth)
|
||||||
{
|
{
|
||||||
topState = 0;
|
topState = 0;
|
||||||
|
topStateData = 0;
|
||||||
fillerState = static_cast<byte>(Tile::stone_Id);
|
fillerState = static_cast<byte>(Tile::stone_Id);
|
||||||
|
fillerStateData = 0;
|
||||||
chunkBlocks[index] = static_cast<byte>(Tile::gravel_Id);
|
chunkBlocks[index] = static_cast<byte>(Tile::gravel_Id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -455,8 +468,10 @@ void Biome::buildSurfaceAtDefault(Level *level, Random *random, byte* chunkBlock
|
||||||
|
|
||||||
if (runDepth == 0 && fillerState == static_cast<byte>(Tile::sand_Id))
|
if (runDepth == 0 && fillerState == static_cast<byte>(Tile::sand_Id))
|
||||||
{
|
{
|
||||||
runDepth = random->nextInt(4) + (y - 63 > 0 ? y - 63 : 0);
|
runDepth = random->nextInt(4) + (y > 0 ? y : 0);
|
||||||
|
|
||||||
fillerState = static_cast<byte>(Tile::sandStone_Id);
|
fillerState = static_cast<byte>(Tile::sandStone_Id);
|
||||||
|
fillerStateData = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ class Biome
|
||||||
public:
|
public:
|
||||||
static void staticCtor();
|
static void staticCtor();
|
||||||
|
|
||||||
static Biome *biomes[256];
|
static Biome *biomes[257];
|
||||||
|
|
||||||
static Biome *ocean;
|
static Biome *ocean;
|
||||||
static Biome *plains;
|
static Biome *plains;
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ BiomeInitLayer::BiomeInitLayer(int64_t seed, shared_ptr<Layer> parent, int64_t s
|
||||||
icyBiomes[3] = Biome::coldTaiga;
|
icyBiomes[3] = Biome::coldTaiga;
|
||||||
|
|
||||||
|
|
||||||
if (levelType != LevelType::lvl_normal_1_1 && levelType == LevelType::lvl_flat)
|
if (levelType != LevelType::lvl_normal_1_1 && levelType == LevelType::lvl_customized)
|
||||||
{
|
{
|
||||||
this->customSettings = (CustomizableSourceSettings*)superflatConfig;
|
this->customSettings = (CustomizableSourceSettings*)superflatConfig;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,85 +1,98 @@
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "net.minecraft.world.level.h"
|
#include "net.minecraft.world.level.h"
|
||||||
#include "net.minecraft.world.level.tile.h"
|
#include "net.minecraft.world.level.tile.h"
|
||||||
#include "net.minecraft.world.level.levelgen.feature.h"
|
#include "net.minecraft.world.level.levelgen.feature.h"
|
||||||
#include "ExtremeHillsBiome.h"
|
#include "ExtremeHillsBiome.h"
|
||||||
#include "BiomeDecorator.h"
|
#include "BiomeDecorator.h"
|
||||||
|
|
||||||
#include "SpruceFeature.h"
|
#include "SpruceFeature.h"
|
||||||
#include "TreeFeature.h"
|
#include "TreeFeature.h"
|
||||||
|
|
||||||
|
ExtremeHillsBiome::ExtremeHillsBiome(int id) : ExtremeHillsBiome(id, false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
ExtremeHillsBiome::ExtremeHillsBiome(int id, bool extraTrees) : Biome(id)
|
ExtremeHillsBiome::ExtremeHillsBiome(int id, bool extraTrees) : Biome(id)
|
||||||
{
|
{
|
||||||
silverfishFeature = new OreFeature(Tile::monsterStoneEgg_Id, 8);
|
|
||||||
taigaFeature = new SpruceFeature(false);
|
silverfishFeature = new OreFeature(Tile::monsterStoneEgg_Id, 9);
|
||||||
friendlies.clear();
|
|
||||||
type = 0;
|
taigaFeature = new SpruceFeature(false);
|
||||||
if (extraTrees)
|
|
||||||
{
|
friendlies.clear();
|
||||||
decorator->treeCount = 3;
|
type = TYPE_NORMAL;
|
||||||
type = 1;
|
|
||||||
}
|
if (extraTrees)
|
||||||
|
{
|
||||||
|
decorator->treeCount = 3;
|
||||||
|
type = TYPE_TREES;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ExtremeHillsBiome::~ExtremeHillsBiome()
|
ExtremeHillsBiome::~ExtremeHillsBiome()
|
||||||
{
|
{
|
||||||
delete silverfishFeature;
|
delete silverfishFeature;
|
||||||
delete taigaFeature;
|
delete taigaFeature;
|
||||||
}
|
}
|
||||||
|
|
||||||
Feature *ExtremeHillsBiome::getTreeFeature(Random *random)
|
Feature* ExtremeHillsBiome::getTreeFeature(Random* random)
|
||||||
{
|
{
|
||||||
if (random->nextInt(3) > 0)
|
|
||||||
{
|
if (random->nextInt(3) > 0)
|
||||||
return new SpruceFeature(false);
|
{
|
||||||
}
|
return new SpruceFeature(false);
|
||||||
return Biome::getTreeFeature(random);
|
}
|
||||||
|
return Biome::getTreeFeature(random);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExtremeHillsBiome::decorate(Level *level, Random *random, int xo, int zo) {
|
void ExtremeHillsBiome::decorate(Level* level, Random* random, int xo, int zo)
|
||||||
Biome::decorate(level, random, xo, zo);
|
|
||||||
|
|
||||||
if (GENERATE_EMERALD_ORE)
|
|
||||||
{
|
|
||||||
int emeraldCount = 3 + random->nextInt(6);
|
|
||||||
for (int d = 0; d < emeraldCount; d++)
|
|
||||||
{
|
|
||||||
int x = xo + random->nextInt(16);
|
|
||||||
int y = random->nextInt((Level::genDepth / 4) - 4) + 4;
|
|
||||||
int z = zo + random->nextInt(16);
|
|
||||||
int tile = level->getTile(x, y, z);
|
|
||||||
if (tile == Tile::stone_Id)
|
|
||||||
{
|
|
||||||
level->setTileAndData(x, y, z, Tile::emeraldOre_Id, 0, Tile::UPDATE_CLIENTS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 7; i++)
|
|
||||||
{
|
|
||||||
int x = xo + random->nextInt(16);
|
|
||||||
int y = random->nextInt(64);
|
|
||||||
int z = zo + random->nextInt(16);
|
|
||||||
silverfishFeature->place(level, random, x, y, z);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ExtremeHillsBiome::buildSurfaceAtDefault(Level *level, Random *random, byte* chunkBlocks, int x, int z, double noiseVal)
|
|
||||||
{
|
{
|
||||||
topMaterial = static_cast<byte>(Tile::grass_Id);
|
Biome::decorate(level, random, xo, zo);
|
||||||
material = static_cast<byte>(Tile::dirt_Id);
|
|
||||||
|
|
||||||
if ((noiseVal < -1.0 || noiseVal > 2.0) && type == 2)
|
if (GENERATE_EMERALD_ORE)
|
||||||
|
{
|
||||||
|
int emeraldCount = 3 + random->nextInt(6);
|
||||||
|
for (int d = 0; d < emeraldCount; d++)
|
||||||
|
{
|
||||||
|
int x = xo + random->nextInt(16);
|
||||||
|
|
||||||
|
int y = random->nextInt(28) + 4;
|
||||||
|
int z = zo + random->nextInt(16);
|
||||||
|
int tile = level->getTile(x, y, z);
|
||||||
|
if (tile == Tile::stone_Id)
|
||||||
|
{
|
||||||
|
level->setTileAndData(x, y, z, Tile::emeraldOre_Id, 0, Tile::UPDATE_CLIENTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 7; i++)
|
||||||
|
{
|
||||||
|
int x = xo + random->nextInt(16);
|
||||||
|
int y = random->nextInt(64);
|
||||||
|
int z = zo + random->nextInt(16);
|
||||||
|
silverfishFeature->place(level, random, x, y, z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExtremeHillsBiome::buildSurfaceAtDefault(Level* level, Random* random, byte* chunkBlocks, int x, int z, double noiseVal)
|
||||||
|
{
|
||||||
|
topMaterial = static_cast<byte>(Tile::grass_Id);
|
||||||
|
topMaterialData = 0;
|
||||||
|
material = static_cast<byte>(Tile::dirt_Id);
|
||||||
|
materialData = 0;
|
||||||
|
|
||||||
|
if ((noiseVal < -1.0 || noiseVal > 2.0) && type == TYPE_MUTATED)
|
||||||
{
|
{
|
||||||
topMaterial = static_cast<byte>(Tile::gravel_Id);
|
topMaterial = static_cast<byte>(Tile::gravel_Id);
|
||||||
material = static_cast<byte>(Tile::gravel_Id);
|
material = static_cast<byte>(Tile::gravel_Id);
|
||||||
}
|
}
|
||||||
else if (noiseVal > 1.0 && type != 1)
|
else if (noiseVal > 1.0 && type != TYPE_TREES)
|
||||||
{
|
{
|
||||||
topMaterial = static_cast<byte>(Tile::stone_Id);
|
topMaterial = static_cast<byte>(Tile::stone_Id);
|
||||||
topMaterialData = 0;
|
topMaterialData = 0;
|
||||||
material = static_cast<byte>(Tile::stone_Id);
|
material = static_cast<byte>(Tile::stone_Id);
|
||||||
materialData = 0;
|
materialData = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Biome::buildSurfaceAtDefault(level, random, chunkBlocks, x, z, noiseVal);
|
Biome::buildSurfaceAtDefault(level, random, chunkBlocks, x, z, noiseVal);
|
||||||
|
|
@ -87,10 +100,16 @@ void ExtremeHillsBiome::buildSurfaceAtDefault(Level *level, Random *random, byte
|
||||||
|
|
||||||
Biome* ExtremeHillsBiome::mutateHills(Biome* baseBiome)
|
Biome* ExtremeHillsBiome::mutateHills(Biome* baseBiome)
|
||||||
{
|
{
|
||||||
this->type = 2; // Mutated type
|
this->type = TYPE_MUTATED;
|
||||||
this->setColor(baseBiome->color, true);
|
this->setColor(baseBiome->color, true);
|
||||||
this->setName(baseBiome->m_name + L" M");
|
this->setName(baseBiome->m_name + L" M");
|
||||||
this->setDepthAndScale(baseBiome->depth, baseBiome->scale);
|
this->setDepthAndScale(baseBiome->depth, baseBiome->scale);
|
||||||
this->setTemperatureAndDownfall(baseBiome->temperature, baseBiome->downfall);
|
this->setTemperatureAndDownfall(baseBiome->temperature, baseBiome->downfall);
|
||||||
return this;
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Biome* ExtremeHillsBiome::createMutatedBiome(int id)
|
||||||
|
{
|
||||||
|
return (new ExtremeHillsBiome(id, false))->mutateHills(this);
|
||||||
}
|
}
|
||||||
|
|
@ -1,23 +1,32 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
|
#pragma once
|
||||||
#include "Biome.h"
|
#include "Biome.h"
|
||||||
|
#include "OreFeature.h"
|
||||||
|
#include "SpruceFeature.h"
|
||||||
|
|
||||||
class ExtremeHillsBiome : public Biome
|
class ExtremeHillsBiome : public Biome
|
||||||
{
|
{
|
||||||
friend class Biome;
|
|
||||||
private:
|
private:
|
||||||
static const bool GENERATE_EMERALD_ORE = true;
|
static const bool GENERATE_EMERALD_ORE = true;
|
||||||
Feature *silverfishFeature;
|
Feature *silverfishFeature;
|
||||||
int type;
|
int type;
|
||||||
Feature *taigaFeature;
|
Feature *taigaFeature;
|
||||||
|
|
||||||
protected:
|
static constexpr int TYPE_NORMAL = 0;
|
||||||
ExtremeHillsBiome(int id, bool extraTrees = false);
|
static constexpr int TYPE_TREES = 1;
|
||||||
~ExtremeHillsBiome();
|
static constexpr int TYPE_MUTATED = 2;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void decorate(Level *level, Random *random, int xo, int zo) override;
|
|
||||||
virtual void buildSurfaceAtDefault(Level *level, Random *random, byte* chunkBlocks, int x, int z, double noiseVal) override;
|
ExtremeHillsBiome(int id);
|
||||||
virtual Feature *getTreeFeature(Random *random) override;
|
|
||||||
Biome* mutateHills(Biome* baseBiome);
|
ExtremeHillsBiome(int id, bool extraTrees);
|
||||||
|
~ExtremeHillsBiome();
|
||||||
|
|
||||||
|
Feature* getTreeFeature(Random* random) override;
|
||||||
|
void decorate(Level* level, Random* random, int xo, int zo) override;
|
||||||
|
void buildSurfaceAtDefault(Level* level, Random* random, byte* chunkBlocks, int x, int z, double noiseVal) override;
|
||||||
|
Biome* mutateHills(Biome* baseBiome);
|
||||||
|
Biome* createMutatedBiome(int id);
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
@ -20,7 +20,8 @@ MutatedBiome::MutatedBiome(int id, Biome* baseBiome)
|
||||||
scale = baseBiome->scale + 0.2f;
|
scale = baseBiome->scale + 0.2f;
|
||||||
temperature = baseBiome->temperature;
|
temperature = baseBiome->temperature;
|
||||||
downfall = baseBiome->downfall;
|
downfall = baseBiome->downfall;
|
||||||
|
_hasRain = baseBiome->_hasRain;
|
||||||
|
snowCovered = baseBiome->snowCovered;
|
||||||
|
|
||||||
friendlies = baseBiome->friendlies;
|
friendlies = baseBiome->friendlies;
|
||||||
enemies = baseBiome->enemies;
|
enemies = baseBiome->enemies;
|
||||||
|
|
@ -32,15 +33,17 @@ MutatedBiome::MutatedBiome(int id, Biome* baseBiome)
|
||||||
|
|
||||||
m_waterColor = baseBiome->m_waterColor;
|
m_waterColor = baseBiome->m_waterColor;
|
||||||
m_skyColor = baseBiome->m_skyColor;
|
m_skyColor = baseBiome->m_skyColor;
|
||||||
|
m_grassColor = baseBiome->m_grassColor;
|
||||||
|
m_foliageColor = baseBiome->m_foliageColor;
|
||||||
m_name = baseBiome->m_name + L" Mutated";
|
m_name = baseBiome->m_name + L" Mutated";
|
||||||
|
|
||||||
// Copia parametri del decorator
|
|
||||||
if (decorator && baseBiome->decorator) {
|
if (decorator && baseBiome->decorator) {
|
||||||
decorator->treeCount = baseBiome->decorator->treeCount;
|
decorator->treeCount = baseBiome->decorator->treeCount;
|
||||||
decorator->grassCount = baseBiome->decorator->grassCount;
|
decorator->grassCount = baseBiome->decorator->grassCount;
|
||||||
decorator->flowerCount = baseBiome->decorator->flowerCount;
|
decorator->flowerCount = baseBiome->decorator->flowerCount;
|
||||||
decorator->hugeMushrooms = baseBiome->decorator->hugeMushrooms;
|
decorator->hugeMushrooms = baseBiome->decorator->hugeMushrooms;
|
||||||
// ... altri campi se necessari
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,4 +13,8 @@ public:
|
||||||
topMaterial = Tile::gravel_Id; // surfaceblock
|
topMaterial = Tile::gravel_Id; // surfaceblock
|
||||||
material = Tile::gravel_Id;
|
material = Tile::gravel_Id;
|
||||||
}
|
}
|
||||||
|
int OceanBiome::getTemperatureCategory() const override
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
8
Minecraft.World/SuperflatConfig.h
Normal file
8
Minecraft.World/SuperflatConfig.h
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ByteArrayTag.h"
|
||||||
|
|
||||||
|
class SuperflatConfig {
|
||||||
|
public:
|
||||||
|
ByteArrayTag* toTag();
|
||||||
|
};
|
||||||
|
|
@ -1451,6 +1451,7 @@ set(_MINECRAFT_WORLD_COMMON_NET_MINECRAFT_WORLD_LEVEL_LEVELGEN
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/TheEndLevelRandomLevelSource.h"
|
"${CMAKE_CURRENT_SOURCE_DIR}/TheEndLevelRandomLevelSource.h"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/TownFeature.h"
|
"${CMAKE_CURRENT_SOURCE_DIR}/TownFeature.h"
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/net.minecraft.world.level.levelgen.h"
|
"${CMAKE_CURRENT_SOURCE_DIR}/net.minecraft.world.level.levelgen.h"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/SuperflatConfig.h"
|
||||||
)
|
)
|
||||||
source_group("net/minecraft/world/level/levelgen" FILES ${_MINECRAFT_WORLD_COMMON_NET_MINECRAFT_WORLD_LEVEL_LEVELGEN})
|
source_group("net/minecraft/world/level/levelgen" FILES ${_MINECRAFT_WORLD_COMMON_NET_MINECRAFT_WORLD_LEVEL_LEVELGEN})
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue