the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
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}