the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 250 lines 6.3 kB view raw
1#include "stdafx.h" 2#include "net.minecraft.world.level.levelgen.flat.h" 3#include "net.minecraft.world.level.levelgen.h" 4#include "net.minecraft.world.level.h" 5#include "net.minecraft.world.level.storage.h" 6#include "dimension.h" 7#include "BiomeSource.h" 8#include "FixedBiomeSource.h" 9#include "OldChunkStorage.h" 10#include "HellDimension.h" 11#include "NormalDimension.h" 12#include "TheEndDimension.h" 13#include "net.minecraft.world.level.tile.h" 14#include "..\Minecraft.Client\Minecraft.h" 15#include "..\Minecraft.Client\Common\Colours\ColourTable.h" 16 17const float Dimension::MOON_BRIGHTNESS_PER_PHASE[8] = {1.0f, 0.75f, 0.5f, 0.25f, 0, 0.25f, 0.5f, 0.75f}; 18 19void Dimension::init(Level *level) 20{ 21 this->level = level; 22 levelType = level->getLevelData()->getGenerator(); 23 levelTypeOptions = level->getLevelData()->getGeneratorOptions(); 24 init(); 25 updateLightRamp(); 26} 27 28void Dimension::updateLightRamp() 29{ 30 float ambientLight = 0.00f; 31 for (int i = 0; i <= Level::MAX_BRIGHTNESS; i++) 32 { 33 float v = (1 - i / (float) (Level::MAX_BRIGHTNESS)); 34 brightnessRamp[i] = ((1 - v) / (v * 3 + 1)) * (1 - ambientLight) + ambientLight; 35 } 36} 37 38void Dimension::init() 39{ 40#ifdef _OVERRIDE_HEIGHTMAP 41 // 4J Stu - Added to enable overriding the heightmap from a loaded in data file 42 if(app.DebugSettingsOn() && app.GetGameSettingsDebugMask(ProfileManager.GetPrimaryPad())&(1L<<eDebugSetting_EnableBiomeOverride)) 43 { 44 biomeSource = new BiomeSource(level); 45 } 46 else 47#endif 48 if (level->getLevelData()->getGenerator() == LevelType::lvl_flat) 49 { 50 FlatGeneratorInfo *generator = FlatGeneratorInfo::fromValue(level->getLevelData()->getGeneratorOptions()); 51 biomeSource = new FixedBiomeSource(Biome::biomes[generator->getBiome()], 0.5f, 0.5f); 52 delete generator; 53 } 54 else 55 { 56 biomeSource = new BiomeSource(level); 57 } 58} 59 60Dimension::Dimension() 61{ 62 ultraWarm = false; 63 hasCeiling = false; 64 brightnessRamp = new float[Level::MAX_BRIGHTNESS + 1]; 65 id = 0; 66 levelTypeOptions = L""; 67} 68 69Dimension::~Dimension() 70{ 71 delete[] brightnessRamp; 72 73 if(biomeSource != NULL) 74 delete biomeSource; 75} 76 77ChunkSource *Dimension::createRandomLevelSource() const 78{ 79#ifdef _OVERRIDE_HEIGHTMAP 80 // 4J Stu - Added to enable overriding the heightmap from a loaded in data file 81 if(app.DebugSettingsOn() && app.GetGameSettingsDebugMask(ProfileManager.GetPrimaryPad())&(1L<<eDebugSetting_EnableHeightWaterOverride)) 82 { 83 return new CustomLevelSource(level, level->getSeed(), level->getLevelData()->isGenerateMapFeatures()); 84 } 85 else 86#endif 87 if (levelType == LevelType::lvl_flat) 88 { 89 return new FlatLevelSource(level, level->getSeed(), level->getLevelData()->isGenerateMapFeatures()); 90 } 91 else 92 { 93 return new RandomLevelSource(level, level->getSeed(), level->getLevelData()->isGenerateMapFeatures()); 94 } 95} 96 97ChunkSource *Dimension::createFlatLevelSource() const 98{ 99 return new FlatLevelSource(level, level->getSeed(), level->getLevelData()->isGenerateMapFeatures()); 100} 101 102ChunkStorage *Dimension::createStorage(File dir) 103{ 104 return new OldChunkStorage(dir, true); 105} 106 107bool Dimension::isValidSpawn(int x, int z) const 108{ 109 int topTile = level->getTopTile(x, z); 110 111 if (topTile != Tile::grass_Id) return false; 112 113 return true; 114} 115 116float Dimension::getTimeOfDay(__int64 time, float a) const 117{ 118 int dayStep = (int) (time % Level::TICKS_PER_DAY); 119 float td = (dayStep + a) / Level::TICKS_PER_DAY - 0.25f; 120 if (td < 0) td += 1; 121 if (td > 1) td -= 1; 122 float tdo = td; 123 td = 1 - (float) ((cos(td * PI) + 1) / 2); 124 td = tdo + (td - tdo) / 3.0f; 125 return td; 126} 127 128int Dimension::getMoonPhase(__int64 time) const 129{ 130 return ((int) (time / Level::TICKS_PER_DAY)) % 8; 131} 132 133bool Dimension::isNaturalDimension() 134{ 135 return true; 136} 137 138float *Dimension::getSunriseColor(float td, float a) 139{ 140 unsigned int clr1 = Minecraft::GetInstance()->getColourTable()->getColor( eMinecraftColour_Sky_Dawn_Dark ); // 0xB23333 141 double r1 = ( (clr1>>16)&0xFF )/255.0f, g1 = ( (clr1>>8)&0xFF )/255.0, b1 = ( clr1&0xFF )/255.0; 142 143 unsigned int clr2 = Minecraft::GetInstance()->getColourTable()->getColor( eMinecraftColour_Sky_Dawn_Bright ); // 0xFFE533 144 double r2 = ( (clr2>>16)&0xFF )/255.0f, g2 = ( (clr2>>8)&0xFF )/255.0, b2 = ( clr2&0xFF )/255.0; 145 146 float span = 0.4f; 147 float tt = Mth::cos(td * PI * 2) - 0.0f; 148 float mid = -0.0f; 149 if (tt >= mid - span && tt <= mid + span) 150 { 151 float aa = ((tt - mid) / span) * 0.5f + 0.5f; 152 float mix = 1 - (((1 - sin(aa * PI))) * 0.99f); 153 mix = mix * mix; 154 //sunriseCol[0] = (aa * 0.3f + 0.7f); 155 //sunriseCol[1] = (aa * aa * 0.7f + 0.2f); 156 //sunriseCol[2] = (aa * aa * 0.0f + 0.2f); 157 sunriseCol[0] = (aa * (r2-r1) + r1); 158 sunriseCol[1] = (aa * (g2-g1) + g1); 159 sunriseCol[2] = (aa * (b2-b1) + b1); 160 sunriseCol[3] = mix; 161 return sunriseCol; 162 } 163 164 return NULL; 165} 166 167Vec3 *Dimension::getFogColor(float td, float a) const 168{ 169 float br = Mth::cos(td * PI * 2) * 2 + 0.5f; 170 if (br < 0.0f) br = 0.0f; 171 if (br > 1.0f) br = 1.0f; 172 173 unsigned int baseFogColour = Minecraft::GetInstance()->getColourTable()->getColor( eMinecraftColour_Default_Fog_Colour ); 174 float r = ((baseFogColour >> 16) & 0xff) / 255.0f; 175 float g = ((baseFogColour >> 8) & 0xff) / 255.0f; 176 float b = ((baseFogColour) & 0xff) / 255.0f; 177 r *= br * 0.94f + 0.06f; 178 g *= br * 0.94f + 0.06f; 179 b *= br * 0.91f + 0.09f; 180 181 return Vec3::newTemp(r, g, b); 182} 183 184bool Dimension::mayRespawn() const 185{ 186 return true; 187} 188 189Dimension *Dimension::getNew(int id) 190{ 191 if (id == -1) return new HellDimension(); 192 if (id == 0) return new NormalDimension(); 193 if (id == 1) return new TheEndDimension(); 194 195 return NULL; 196} 197 198float Dimension::getCloudHeight() 199{ 200 return (float)Level::genDepth; 201} 202 203bool Dimension::hasGround() 204{ 205 return true; 206} 207 208Pos *Dimension::getSpawnPos() 209{ 210 return NULL; 211} 212 213int Dimension::getSpawnYPosition() 214{ 215 if (levelType == LevelType::lvl_flat) 216 { 217 return 4; 218 } 219 return Level::genDepth / 2; 220} 221 222bool Dimension::hasBedrockFog() 223{ 224 // 4J-PB - turn off bedrock fog if the host player doesn't want it 225 if(app.GetGameHostOption(eGameHostOption_BedrockFog)==0) 226 { 227 return false; 228 } 229 230 return (levelType != LevelType::lvl_flat && !hasCeiling); 231} 232 233double Dimension::getClearColorScale() 234{ 235 if (levelType == LevelType::lvl_flat) 236 { 237 return 1.0; 238 } 239 return 1.0 / 32.0; 240} 241 242bool Dimension::isFoggyAt(int x, int z) 243{ 244 return false; 245} 246 247int Dimension::getXZSize() 248{ 249 return level->getLevelData()->getXZSize(); 250}