mirror of
https://gitea.sffempire.ru/Kolyah35/minecraft-pe-0.6.1.git
synced 2026-04-05 23:13:33 +00:00
Compare commits
7 Commits
eac71a93d1
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ef32fcfe08 | ||
|
|
2237515793 | ||
|
|
e272991159 | ||
|
|
055f00be49 | ||
|
|
378dfe8e22 | ||
|
|
61f0124beb | ||
|
|
ff5c57f6ba |
@@ -199,6 +199,9 @@ file(GLOB SERVER_SOURCES
|
|||||||
|
|
||||||
"src/world/level/dimension/Dimension.cpp"
|
"src/world/level/dimension/Dimension.cpp"
|
||||||
|
|
||||||
|
"src/world/level/dimension/FoliageColor.cpp"
|
||||||
|
"src/world/level/GrassColor.cpp"
|
||||||
|
|
||||||
"src/world/level/levelgen/*.cpp"
|
"src/world/level/levelgen/*.cpp"
|
||||||
"src/world/level/levelgen/feature/Feature.cpp"
|
"src/world/level/levelgen/feature/Feature.cpp"
|
||||||
"src/world/level/levelgen/synth/*.cpp"
|
"src/world/level/levelgen/synth/*.cpp"
|
||||||
@@ -258,6 +261,8 @@ file(GLOB CLIENT_SOURCES
|
|||||||
|
|
||||||
"src/util/**.cpp"
|
"src/util/**.cpp"
|
||||||
|
|
||||||
|
"src/util/Color.cpp"
|
||||||
|
|
||||||
"src/world/*.cpp"
|
"src/world/*.cpp"
|
||||||
"src/world/phys/*.cpp"
|
"src/world/phys/*.cpp"
|
||||||
"src/world/entity/*.cpp"
|
"src/world/entity/*.cpp"
|
||||||
|
|||||||
BIN
data/images/misc/foliagecolor.png
Normal file
BIN
data/images/misc/foliagecolor.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
BIN
data/images/misc/grasscolor.png
Normal file
BIN
data/images/misc/grasscolor.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 25 KiB |
BIN
data/images/misc/shadow.png
Normal file
BIN
data/images/misc/shadow.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 868 B |
BIN
data/images/misc/vignette.png
Normal file
BIN
data/images/misc/vignette.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
@@ -153,6 +153,7 @@ options.group.tweaks=Tweaks
|
|||||||
options.allowSprint=Allow sprint
|
options.allowSprint=Allow sprint
|
||||||
options.barOnTop=HUD above inventory
|
options.barOnTop=HUD above inventory
|
||||||
options.rpiCursor=Show Raspberry PI cursor
|
options.rpiCursor=Show Raspberry PI cursor
|
||||||
|
options.foliageTint=Tint Grass and Leaves
|
||||||
options.autoJump=Auto Jump
|
options.autoJump=Auto Jump
|
||||||
options.thirdperson=Third Person
|
options.thirdperson=Third Person
|
||||||
options.servervisible=Server Visible
|
options.servervisible=Server Visible
|
||||||
|
|||||||
@@ -146,6 +146,7 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/util/StringUtils.cpp \
|
../../../src/util/StringUtils.cpp \
|
||||||
../../../src/util/PerfTimer.cpp \
|
../../../src/util/PerfTimer.cpp \
|
||||||
../../../src/util/PerfRenderer.cpp \
|
../../../src/util/PerfRenderer.cpp \
|
||||||
|
../../../src/util/Color.cpp \
|
||||||
../../../src/world/Direction.cpp \
|
../../../src/world/Direction.cpp \
|
||||||
../../../src/world/entity/AgableMob.cpp \
|
../../../src/world/entity/AgableMob.cpp \
|
||||||
../../../src/world/entity/Entity.cpp \
|
../../../src/world/entity/Entity.cpp \
|
||||||
@@ -209,6 +210,8 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/world/level/MobSpawner.cpp \
|
../../../src/world/level/MobSpawner.cpp \
|
||||||
../../../src/world/level/Region.cpp \
|
../../../src/world/level/Region.cpp \
|
||||||
../../../src/world/level/TickNextTickData.cpp \
|
../../../src/world/level/TickNextTickData.cpp \
|
||||||
|
../../../src/world/level/FoliageColor.cpp \
|
||||||
|
../../../src/world/level/GrassColor.cpp \
|
||||||
../../../src/world/level/biome/Biome.cpp \
|
../../../src/world/level/biome/Biome.cpp \
|
||||||
../../../src/world/level/biome/BiomeSource.cpp \
|
../../../src/world/level/biome/BiomeSource.cpp \
|
||||||
../../../src/world/level/chunk/LevelChunk.cpp \
|
../../../src/world/level/chunk/LevelChunk.cpp \
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/util/StringUtils.cpp \
|
../../../src/util/StringUtils.cpp \
|
||||||
../../../src/util/PerfTimer.cpp \
|
../../../src/util/PerfTimer.cpp \
|
||||||
../../../src/util/PerfRenderer.cpp \
|
../../../src/util/PerfRenderer.cpp \
|
||||||
|
../../../src/util/Color.cpp \
|
||||||
../../../src/world/Direction.cpp \
|
../../../src/world/Direction.cpp \
|
||||||
../../../src/world/entity/AgableMob.cpp \
|
../../../src/world/entity/AgableMob.cpp \
|
||||||
../../../src/world/entity/Entity.cpp \
|
../../../src/world/entity/Entity.cpp \
|
||||||
@@ -183,6 +184,8 @@ LOCAL_SRC_FILES := ../../../src/main.cpp \
|
|||||||
../../../src/world/level/MobSpawner.cpp \
|
../../../src/world/level/MobSpawner.cpp \
|
||||||
../../../src/world/level/Region.cpp \
|
../../../src/world/level/Region.cpp \
|
||||||
../../../src/world/level/TickNextTickData.cpp \
|
../../../src/world/level/TickNextTickData.cpp \
|
||||||
|
../../../src/world/level/FoliageColor.cpp \
|
||||||
|
../../../src/world/level/GrassColor.cpp \
|
||||||
../../../src/world/level/biome/Biome.cpp \
|
../../../src/world/level/biome/Biome.cpp \
|
||||||
../../../src/world/level/biome/BiomeSource.cpp \
|
../../../src/world/level/biome/BiomeSource.cpp \
|
||||||
../../../src/world/level/chunk/LevelChunk.cpp \
|
../../../src/world/level/chunk/LevelChunk.cpp \
|
||||||
|
|||||||
@@ -90,6 +90,7 @@
|
|||||||
#include "../network/command/CommandServer.h"
|
#include "../network/command/CommandServer.h"
|
||||||
#include "gamemode/CreatorMode.h"
|
#include "gamemode/CreatorMode.h"
|
||||||
|
|
||||||
|
#include "../world/level/GrassColor.h"
|
||||||
static void checkGlError(const char* tag) {
|
static void checkGlError(const char* tag) {
|
||||||
#ifdef GLDEBUG
|
#ifdef GLDEBUG
|
||||||
while (1) {
|
while (1) {
|
||||||
@@ -1132,6 +1133,24 @@ void Minecraft::init()
|
|||||||
gameRenderer = new GameRenderer(this);
|
gameRenderer = new GameRenderer(this);
|
||||||
particleEngine = new ParticleEngine(level, textures);
|
particleEngine = new ParticleEngine(level, textures);
|
||||||
|
|
||||||
|
// 4j's code for reference
|
||||||
|
// FoliageColor::init(textures->loadTexturePixels(L"misc/foliagecolor.png"));
|
||||||
|
|
||||||
|
|
||||||
|
// my code
|
||||||
|
TextureId foliageId = (textures->loadTexture("misc/foliagecolor.png")); // loading the uh png for foliage color
|
||||||
|
int* foliagePixels = textures->loadTexturePixels(foliageId, "misc/foliagecolor.png");
|
||||||
|
// now i can finally initialize foliage color, probably not the best way to handle this but i cant be arsed rn
|
||||||
|
FoliageColor::init(foliagePixels);
|
||||||
|
|
||||||
|
TextureId grassId = (textures->loadTexture("misc/foliagecolor.png")); // loading the uh png for foliage color
|
||||||
|
int* grassPixels = textures->loadTexturePixels(grassId, "misc/foliagecolor.png");
|
||||||
|
GrassColor::init(grassPixels);
|
||||||
|
|
||||||
|
bool tint = options.getBooleanValue(OPTIONS_FOLIAGE_TINT); // finally, toggleable foliage color
|
||||||
|
FoliageColor::setUseTint(tint);
|
||||||
|
GrassColor::setUseTint(tint);
|
||||||
|
|
||||||
// Platform specific initialization here
|
// Platform specific initialization here
|
||||||
font = new Font(&options, "font/default8.png", textures);
|
font = new Font(&options, "font/default8.png", textures);
|
||||||
|
|
||||||
@@ -1382,6 +1401,12 @@ void Minecraft::_levelGenerated()
|
|||||||
player->resetPos(false);
|
player->resetPos(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (level && level->dimension) {
|
||||||
|
// For example, if you want FogType or any other option
|
||||||
|
level->dimension->FogType = options.getBooleanValue(OPTIONS_FOG_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
this->cameraTargetPlayer = player;
|
this->cameraTargetPlayer = player;
|
||||||
|
|
||||||
std::string serverName = options.getStringValue(OPTIONS_USERNAME) + " - " + level->getLevelData()->levelName;
|
std::string serverName = options.getStringValue(OPTIONS_USERNAME) + " - " + level->getLevelData()->levelName;
|
||||||
|
|||||||
@@ -60,6 +60,12 @@ OptionBool useTouchscreen("useTouchscreen", true);
|
|||||||
|
|
||||||
OptionBool serverVisible("servervisible", true);
|
OptionBool serverVisible("servervisible", true);
|
||||||
|
|
||||||
|
OptionBool foliageTint("foliagetint", false);
|
||||||
|
|
||||||
|
OptionInt fogType("fogType", 0, 0, 2);
|
||||||
|
|
||||||
|
OptionBool javaHud("javaHud", false);
|
||||||
|
|
||||||
OptionInt keyForward("key.forward", Keyboard::KEY_W);
|
OptionInt keyForward("key.forward", Keyboard::KEY_W);
|
||||||
OptionInt keyLeft("key.left", Keyboard::KEY_A);
|
OptionInt keyLeft("key.left", Keyboard::KEY_A);
|
||||||
OptionInt keyBack("key.back", Keyboard::KEY_S);
|
OptionInt keyBack("key.back", Keyboard::KEY_S);
|
||||||
@@ -136,6 +142,8 @@ void Options::initTable() {
|
|||||||
|
|
||||||
m_options[OPTIONS_USE_TOUCHSCREEN] = &useTouchscreen;
|
m_options[OPTIONS_USE_TOUCHSCREEN] = &useTouchscreen;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
m_options[OPTIONS_SERVER_VISIBLE] = &serverVisible;
|
m_options[OPTIONS_SERVER_VISIBLE] = &serverVisible;
|
||||||
|
|
||||||
m_options[OPTIONS_KEY_FORWARD] = &keyForward;
|
m_options[OPTIONS_KEY_FORWARD] = &keyForward;
|
||||||
@@ -160,6 +168,12 @@ void Options::initTable() {
|
|||||||
m_options[OPTIONS_BAR_ON_TOP] = &barOnTop;
|
m_options[OPTIONS_BAR_ON_TOP] = &barOnTop;
|
||||||
m_options[OPTIONS_ALLOW_SPRINT] = &allowSprint;
|
m_options[OPTIONS_ALLOW_SPRINT] = &allowSprint;
|
||||||
m_options[OPTIONS_RPI_CURSOR] = &rpiCursor;
|
m_options[OPTIONS_RPI_CURSOR] = &rpiCursor;
|
||||||
|
m_options[OPTIONS_FOLIAGE_TINT] = &foliageTint;
|
||||||
|
|
||||||
|
// more options yay
|
||||||
|
m_options[OPTIONS_FOG_TYPE] = &fogType;
|
||||||
|
|
||||||
|
m_options[OPTIONS_JAVA_HUD] = &javaHud;
|
||||||
|
|
||||||
m_options[OPTIONS_AUTOJUMP] = &autoJump;
|
m_options[OPTIONS_AUTOJUMP] = &autoJump;
|
||||||
m_options[OPTIONS_LAST_IP] = &lastIp;
|
m_options[OPTIONS_LAST_IP] = &lastIp;
|
||||||
|
|||||||
@@ -84,6 +84,9 @@ enum OptionId {
|
|||||||
OPTIONS_LAST_IP,
|
OPTIONS_LAST_IP,
|
||||||
|
|
||||||
OPTIONS_RPI_CURSOR,
|
OPTIONS_RPI_CURSOR,
|
||||||
|
OPTIONS_FOLIAGE_TINT,
|
||||||
|
OPTIONS_FOG_TYPE,
|
||||||
|
OPTIONS_JAVA_HUD,
|
||||||
// Should be last!
|
// Should be last!
|
||||||
OPTIONS_COUNT
|
OPTIONS_COUNT
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ const float Gui::DropTicks = 40.0f;
|
|||||||
//#include <android/log.h>
|
//#include <android/log.h>
|
||||||
|
|
||||||
Gui::Gui(Minecraft* minecraft)
|
Gui::Gui(Minecraft* minecraft)
|
||||||
: minecraft(minecraft),
|
: minecraft(minecraft),
|
||||||
tickCount(0),
|
tickCount(0),
|
||||||
progress(0),
|
progress(0),
|
||||||
overlayMessageTime(0),
|
overlayMessageTime(0),
|
||||||
@@ -103,6 +103,12 @@ void Gui::render(float a, bool mouseFree, int xMouse, int yMouse) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @todo - Shredder: I added this here but currently viginette is broken so i cant do much about it.
|
||||||
|
// if (minecraft->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS)){
|
||||||
|
// this->renderVignette(this->minecraft->player->getBrightness(a), screenWidth, screenHeight);
|
||||||
|
// }
|
||||||
|
// shredder end
|
||||||
|
|
||||||
if(minecraft->player->getSleepTimer() > 0) {
|
if(minecraft->player->getSleepTimer() > 0) {
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
glDisable(GL_ALPHA_TEST);
|
glDisable(GL_ALPHA_TEST);
|
||||||
@@ -344,6 +350,8 @@ void Gui::displayClientMessage(const std::string& messageId) {
|
|||||||
addMessage(messageId);
|
addMessage(messageId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @todo - shredder: Function seems to be completely fine and ported over from java beta, but renders opaque??? need to investigate
|
||||||
void Gui::renderVignette(float br, int w, int h) {
|
void Gui::renderVignette(float br, int w, int h) {
|
||||||
br = 1 - br;
|
br = 1 - br;
|
||||||
if (br < 0) br = 0;
|
if (br < 0) br = 0;
|
||||||
@@ -354,7 +362,10 @@ void Gui::renderVignette(float br, int w, int h) {
|
|||||||
glDepthMask(false);
|
glDepthMask(false);
|
||||||
glBlendFunc2(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
|
glBlendFunc2(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
|
||||||
glColor4f2(tbr, tbr, tbr, 1);
|
glColor4f2(tbr, tbr, tbr, 1);
|
||||||
|
|
||||||
minecraft->textures->loadAndBindTexture("misc/vignette.png");
|
minecraft->textures->loadAndBindTexture("misc/vignette.png");
|
||||||
|
glTexParameteri2(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
|
glTexParameteri2(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||||
|
|
||||||
Tesselator& t = Tesselator::instance;
|
Tesselator& t = Tesselator::instance;
|
||||||
t.begin();
|
t.begin();
|
||||||
@@ -1105,22 +1116,41 @@ void Gui::renderToolBar( float a, int ySlot, const int screenWidth ) {
|
|||||||
|
|
||||||
// Draw count
|
// Draw count
|
||||||
//Tesselator& t = Tesselator::instance;
|
//Tesselator& t = Tesselator::instance;
|
||||||
glPushMatrix2();
|
|
||||||
glScalef2(InvGuiScale + InvGuiScale, InvGuiScale + InvGuiScale, 1);
|
|
||||||
const float k = 0.5f * GuiScale;
|
|
||||||
|
|
||||||
|
const float k = 0.5f * GuiScale;
|
||||||
|
if (minecraft->options.getBooleanValue(OPTIONS_JAVA_HUD)) // if true enables the java beta item count size and color and calls the java items decorations
|
||||||
|
{
|
||||||
t.beginOverride();
|
t.beginOverride();
|
||||||
if (minecraft->gameMode->isSurvivalType()) {
|
if (minecraft->gameMode->isSurvivalType()) {
|
||||||
x = baseItemX;
|
x = baseItemX;
|
||||||
for (int i = 0; i < slots; i++) {
|
for (int i = 0; i < slots; i++) {
|
||||||
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
||||||
if (item && item->count >= 0)
|
if (item && item->count >= 0)
|
||||||
renderSlotText(item, k*x, k*ySlot + 1, true, true);
|
ItemRenderer::renderGuiItemDecorations(minecraft->font, minecraft->textures, minecraft->player->inventory->getItem(i), x, (float)ySlot);
|
||||||
x += 20;
|
x += 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
minecraft->textures->loadAndBindTexture("font/default8.png");
|
minecraft->textures->loadAndBindTexture("font/default8.png");
|
||||||
t.endOverrideAndDraw();
|
t.endOverrideAndDraw();
|
||||||
|
}
|
||||||
|
else { // otherwise uses the normal pocket edition one
|
||||||
|
glPushMatrix2();
|
||||||
|
glScalef2(InvGuiScale + InvGuiScale, InvGuiScale + InvGuiScale, 1);
|
||||||
|
t.beginOverride();
|
||||||
|
if (minecraft->gameMode->isSurvivalType()) {
|
||||||
|
x = baseItemX;
|
||||||
|
for (int i = 0; i < slots; i++) {
|
||||||
|
ItemInstance* item = minecraft->player->inventory->getItem(i);
|
||||||
|
if (item && item->count >= 0)
|
||||||
|
renderSlotText(item, k*x, k*ySlot, true, true);
|
||||||
|
x += 20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
minecraft->textures->loadAndBindTexture("font/default8.png");
|
||||||
|
t.endOverrideAndDraw();
|
||||||
|
|
||||||
glPopMatrix2();
|
glPopMatrix2();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -225,7 +225,11 @@ void OptionsScreen::generateOptionScreens() {
|
|||||||
|
|
||||||
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
optionPanes[4]->addOptionItem(OPTIONS_ALLOW_SPRINT, minecraft)
|
||||||
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
.addOptionItem(OPTIONS_BAR_ON_TOP, minecraft)
|
||||||
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft);
|
.addOptionItem(OPTIONS_RPI_CURSOR, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_FOLIAGE_TINT, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_JAVA_HUD, minecraft)
|
||||||
|
.addOptionItem(OPTIONS_FOG_TYPE, minecraft);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
void OptionsScreen::mouseClicked(int x, int y, int buttonNum) {
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
#include "../../world/level/Region.h"
|
#include "../../world/level/Region.h"
|
||||||
#include "../../world/level/chunk/LevelChunk.h"
|
#include "../../world/level/chunk/LevelChunk.h"
|
||||||
#include "../../util/Mth.h"
|
#include "../../util/Mth.h"
|
||||||
|
|
||||||
|
#include "../../world/level/biome/BiomeSource.h"
|
||||||
|
|
||||||
|
#include "../../world/level/Level.h"
|
||||||
//#include "../../platform/time.h"
|
//#include "../../platform/time.h"
|
||||||
|
|
||||||
/*static*/ int Chunk::updates = 0;
|
/*static*/ int Chunk::updates = 0;
|
||||||
|
|||||||
@@ -25,6 +25,8 @@
|
|||||||
|
|
||||||
#include "../../client/player/LocalPlayer.h"
|
#include "../../client/player/LocalPlayer.h"
|
||||||
|
|
||||||
|
#include "../../world/level/GrassColor.h"
|
||||||
|
|
||||||
#ifdef GFX_SMALLER_CHUNKS
|
#ifdef GFX_SMALLER_CHUNKS
|
||||||
/* static */ const int LevelRenderer::CHUNK_SIZE = 8;
|
/* static */ const int LevelRenderer::CHUNK_SIZE = 8;
|
||||||
#else
|
#else
|
||||||
@@ -32,7 +34,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
LevelRenderer::LevelRenderer( Minecraft* mc)
|
LevelRenderer::LevelRenderer( Minecraft* mc)
|
||||||
: mc(mc),
|
: mc(mc),
|
||||||
textures(mc->textures),
|
textures(mc->textures),
|
||||||
level(NULL),
|
level(NULL),
|
||||||
cullStep(0),
|
cullStep(0),
|
||||||
@@ -47,6 +49,7 @@ LevelRenderer::LevelRenderer( Minecraft* mc)
|
|||||||
xMaxChunk(0), yMaxChunk(0), zMaxChunk(0),
|
xMaxChunk(0), yMaxChunk(0), zMaxChunk(0),
|
||||||
|
|
||||||
lastViewDistance(-1),
|
lastViewDistance(-1),
|
||||||
|
lastFogType(-1),
|
||||||
|
|
||||||
noEntityRenderFrames(2),
|
noEntityRenderFrames(2),
|
||||||
totalEntities(0),
|
totalEntities(0),
|
||||||
@@ -143,6 +146,10 @@ void LevelRenderer::setLevel( Level* level )
|
|||||||
level->addListener(this);
|
level->addListener(this);
|
||||||
allChanged();
|
allChanged();
|
||||||
}
|
}
|
||||||
|
if (mc->options.getBooleanValue(OPTIONS_AMBIENT_OCCLUSION)) {
|
||||||
|
mc->useAmbientOcclusion = !mc->useAmbientOcclusion;
|
||||||
|
allChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LevelRenderer::allChanged()
|
void LevelRenderer::allChanged()
|
||||||
@@ -155,14 +162,21 @@ void LevelRenderer::allChanged()
|
|||||||
Tile::leaves_carried->setFancy(fancy);
|
Tile::leaves_carried->setFancy(fancy);
|
||||||
lastViewDistance = mc->options.getIntValue(OPTIONS_VIEW_DISTANCE);
|
lastViewDistance = mc->options.getIntValue(OPTIONS_VIEW_DISTANCE);
|
||||||
|
|
||||||
|
lastFogType = mc->options.getIntValue(OPTIONS_FOG_TYPE);
|
||||||
|
|
||||||
|
bool tint = mc->options.getBooleanValue(OPTIONS_FOLIAGE_TINT);
|
||||||
|
FoliageColor::setUseTint(tint);
|
||||||
|
GrassColor::setUseTint(tint);
|
||||||
|
|
||||||
|
|
||||||
int dist = (512 >> 3) << (3 - lastViewDistance);
|
int dist = (512 >> 3) << (3 - lastViewDistance);
|
||||||
if (lastViewDistance <= 2 && mc->isPowerVR())
|
if (lastViewDistance <= 2 && mc->isPowerVR())
|
||||||
dist = (int)((float)dist * 0.8f);
|
dist = (int)((float)dist * 0.8f);
|
||||||
LOGI("last: %d, power: %d\n", lastViewDistance, mc->isPowerVR());
|
LOGI("last: %d, power: %d\n", lastViewDistance, mc->isPowerVR());
|
||||||
|
|
||||||
#if defined(RPI)
|
#if defined(RPI)
|
||||||
dist *= 0.6f;
|
dist *= 0.6f;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (dist > 400) dist = 400;
|
if (dist > 400) dist = 400;
|
||||||
/*
|
/*
|
||||||
@@ -301,6 +315,17 @@ int LevelRenderer::render( Mob* player, int layer, float alpha )
|
|||||||
allChanged();
|
allChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int currentFogType = mc->options.getIntValue(OPTIONS_FOG_TYPE);
|
||||||
|
if (currentFogType != lastFogType) {
|
||||||
|
lastFogType = currentFogType;
|
||||||
|
|
||||||
|
if (level && level->dimension) {
|
||||||
|
level->dimension->FogType = currentFogType; // use new fog stuff
|
||||||
|
}
|
||||||
|
|
||||||
|
allChanged();
|
||||||
|
}
|
||||||
|
|
||||||
TIMER_PUSH("sortchunks");
|
TIMER_PUSH("sortchunks");
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
chunkFixOffs = (chunkFixOffs + 1) % chunksLength;
|
chunkFixOffs = (chunkFixOffs + 1) % chunksLength;
|
||||||
@@ -569,11 +594,11 @@ int LevelRenderer::renderChunks( int from, int to, int layer, float alpha )
|
|||||||
|
|
||||||
for (unsigned int i = 0; i < _renderChunks.size(); ++i) {
|
for (unsigned int i = 0; i < _renderChunks.size(); ++i) {
|
||||||
Chunk* chunk = _renderChunks[i];
|
Chunk* chunk = _renderChunks[i];
|
||||||
#ifdef USE_VBO
|
#ifdef USE_VBO
|
||||||
renderList.addR(chunk->getRenderChunk(layer));
|
renderList.addR(chunk->getRenderChunk(layer));
|
||||||
#else
|
#else
|
||||||
renderList.add(chunk->getList(layer));
|
renderList.add(chunk->getList(layer));
|
||||||
#endif
|
#endif
|
||||||
renderList.next();
|
renderList.next();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1128,53 +1153,53 @@ void LevelRenderer::addParticle(const std::string& name, float x, float y, float
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
void LevelRenderer::addParticle(ParticleType::Id name, float x, float y, float z, float xa, float ya, float za, int data) {
|
void LevelRenderer::addParticle(ParticleType::Id name, float x, float y, float z, float xa, float ya, float za, int data) {
|
||||||
float xd = mc->cameraTargetPlayer->x - x;
|
float xd = mc->cameraTargetPlayer->x - x;
|
||||||
float yd = mc->cameraTargetPlayer->y - y;
|
float yd = mc->cameraTargetPlayer->y - y;
|
||||||
float zd = mc->cameraTargetPlayer->z - z;
|
float zd = mc->cameraTargetPlayer->z - z;
|
||||||
|
|
||||||
const float particleDistance = 16;
|
const float particleDistance = 16;
|
||||||
if (xd * xd + yd * yd + zd * zd > particleDistance * particleDistance) return;
|
if (xd * xd + yd * yd + zd * zd > particleDistance * particleDistance) return;
|
||||||
|
|
||||||
//static Stopwatch sw;
|
//static Stopwatch sw;
|
||||||
//sw.start();
|
//sw.start();
|
||||||
|
|
||||||
//Particle* p = NULL;
|
//Particle* p = NULL;
|
||||||
|
|
||||||
if (name == ParticleType::bubble) mc->particleEngine->add( new BubbleParticle(level, x, y, z, xa, ya, za) );
|
if (name == ParticleType::bubble) mc->particleEngine->add( new BubbleParticle(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::crit) mc->particleEngine->add(new CritParticle2(level, x, y, z, xa, ya, za) );
|
else if (name == ParticleType::crit) mc->particleEngine->add(new CritParticle2(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::smoke) mc->particleEngine->add(new SmokeParticle(level, x, y, z, xa, ya, za) );
|
else if (name == ParticleType::smoke) mc->particleEngine->add(new SmokeParticle(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::explode) mc->particleEngine->add( new ExplodeParticle(level, x, y, z, xa, ya, za) );
|
else if (name == ParticleType::explode) mc->particleEngine->add( new ExplodeParticle(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::flame) mc->particleEngine->add( new FlameParticle(level, x, y, z, xa, ya, za) );
|
else if (name == ParticleType::flame) mc->particleEngine->add( new FlameParticle(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::lava) mc->particleEngine->add( new LavaParticle(level, x, y, z) );
|
else if (name == ParticleType::lava) mc->particleEngine->add( new LavaParticle(level, x, y, z) );
|
||||||
else if (name == ParticleType::largesmoke) mc->particleEngine->add( new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f) );
|
else if (name == ParticleType::largesmoke) mc->particleEngine->add( new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f) );
|
||||||
else if (name == ParticleType::reddust) mc->particleEngine->add( new RedDustParticle(level, x, y, z, xa, ya, za) );
|
else if (name == ParticleType::reddust) mc->particleEngine->add( new RedDustParticle(level, x, y, z, xa, ya, za) );
|
||||||
else if (name == ParticleType::iconcrack) mc->particleEngine->add( new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]) );
|
else if (name == ParticleType::iconcrack) mc->particleEngine->add( new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]) );
|
||||||
|
|
||||||
//switch (name) {
|
//switch (name) {
|
||||||
// case ParticleType::bubble: p = new BubbleParticle(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::bubble: p = new BubbleParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::crit: p = new CritParticle2(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::crit: p = new CritParticle2(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::smoke: p = new SmokeParticle(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::smoke: p = new SmokeParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// //case ParticleType::note: p = new NoteParticle(level, x, y, z, xa, ya, za); break;
|
// //case ParticleType::note: p = new NoteParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::explode: p = new ExplodeParticle(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::explode: p = new ExplodeParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::flame: p = new FlameParticle(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::flame: p = new FlameParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::lava: p = new LavaParticle(level, x, y, z); break;
|
// case ParticleType::lava: p = new LavaParticle(level, x, y, z); break;
|
||||||
// //case ParticleType::splash: p = new SplashParticle(level, x, y, z, xa, ya, za); break;
|
// //case ParticleType::splash: p = new SplashParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::largesmoke: p = new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f); break;
|
// case ParticleType::largesmoke: p = new SmokeParticle(level, x, y, z, xa, ya, za, 2.5f); break;
|
||||||
// case ParticleType::reddust: p = new RedDustParticle(level, x, y, z, xa, ya, za); break;
|
// case ParticleType::reddust: p = new RedDustParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// case ParticleType::iconcrack: p = new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]); break;
|
// case ParticleType::iconcrack: p = new BreakingItemParticle(level, x, y, z, xa, ya, za, Item::items[data]); break;
|
||||||
// //case ParticleType::snowballpoof: p = new BreakingItemParticle(level, x, y, z, Item::snowBall); break;
|
// //case ParticleType::snowballpoof: p = new BreakingItemParticle(level, x, y, z, Item::snowBall); break;
|
||||||
// //case ParticleType::slime: p = new BreakingItemParticle(level, x, y, z, Item::slimeBall); break;
|
// //case ParticleType::slime: p = new BreakingItemParticle(level, x, y, z, Item::slimeBall); break;
|
||||||
// //case ParticleType::heart: p = new HeartParticle(level, x, y, z, xa, ya, za); break;
|
// //case ParticleType::heart: p = new HeartParticle(level, x, y, z, xa, ya, za); break;
|
||||||
// default:
|
// default:
|
||||||
// LOGW("Couldn't find particle of type: %d\n", name);
|
// LOGW("Couldn't find particle of type: %d\n", name);
|
||||||
// break;
|
// break;
|
||||||
//}
|
//}
|
||||||
//if (p) {
|
//if (p) {
|
||||||
// mc->particleEngine->add(p);
|
// mc->particleEngine->add(p);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//sw.stop();
|
//sw.stop();
|
||||||
//sw.printEvery(50, "add-particle-enum");
|
//sw.printEvery(50, "add-particle-enum");
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@@ -113,6 +113,9 @@ private:
|
|||||||
bool occlusionCheck;
|
bool occlusionCheck;
|
||||||
int lastViewDistance;
|
int lastViewDistance;
|
||||||
|
|
||||||
|
// shredder added again...
|
||||||
|
int lastFogType;
|
||||||
|
|
||||||
int ticks;
|
int ticks;
|
||||||
int starList, skyList, darkList;
|
int starList, skyList, darkList;
|
||||||
|
|
||||||
|
|||||||
@@ -249,6 +249,37 @@ int Textures::crispBlend( int c0, int c1 )
|
|||||||
return (a << 24) | (r << 16) | (g << 8) | b;
|
return (a << 24) | (r << 16) | (g << 8) | b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// shredder here, moved the code from minecraft.cpp bcus that isnt the right place
|
||||||
|
// had to implement this because i couldn't find a similar function in the code to do this
|
||||||
|
int* Textures::loadTexturePixels(TextureId texId, const std::string& resourceName){
|
||||||
|
|
||||||
|
const TextureData* texture = getTemporaryTextureData(texId); // storing raw pixels
|
||||||
|
|
||||||
|
int size = texture->w * texture->h; // gets the size of our funny lil guy
|
||||||
|
int* pixels = new int[size]; // memory leaks be galore
|
||||||
|
unsigned char* raw = texture->data; // storing raw data into our beloved variable
|
||||||
|
for (int i = 0; i < (texture->w * texture->h); i++){
|
||||||
|
// my head hurts i hate working with this
|
||||||
|
|
||||||
|
|
||||||
|
// uh since each pixel stores r g b a, aka the color channels which are each one byte, we multiply them by 4 to move from one pixel to another
|
||||||
|
|
||||||
|
int r = raw[i * 4 + 0]; // gets us the first channel aka red
|
||||||
|
int g = raw[i * 4 + 1]; // gets us the second channel green
|
||||||
|
int b = raw[i * 4 + 2]; // gets us the third channel blue
|
||||||
|
int a = raw[i * 4 + 3]; // gets us the alpha channel
|
||||||
|
|
||||||
|
// woohoo pixels uh should have been seperated into their colors now hopefully
|
||||||
|
|
||||||
|
// r g b a
|
||||||
|
// ugh we now got to turn it into the AA RR GGBB format aak 0xAARRGGBB
|
||||||
|
// b gets 0 - 7 (8 bits), g gets 7 - 15 (8 bits), r gets 16 - 23 (8 bits), alpha gets the last ones 24 - 31 (8 bits),
|
||||||
|
pixels[i] = (a << 24) | (r << 16) | (g << 8) | (b); // shuld combine them into one 32 bit int unless i did something dumb
|
||||||
|
}
|
||||||
|
return pixels; // your meal has been prepared john colors
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///*public*/ int loadHttpTexture(std::string url, std::string backup) {
|
///*public*/ int loadHttpTexture(std::string url, std::string backup) {
|
||||||
// HttpTexture texture = httpTextures.get(url);
|
// HttpTexture texture = httpTextures.get(url);
|
||||||
// if (texture != NULL) {
|
// if (texture != NULL) {
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ public:
|
|||||||
TextureId assignTexture(const std::string& resourceName, const TextureData& img);
|
TextureId assignTexture(const std::string& resourceName, const TextureData& img);
|
||||||
const TextureData* getTemporaryTextureData(TextureId id);
|
const TextureData* getTemporaryTextureData(TextureId id);
|
||||||
|
|
||||||
|
int* loadTexturePixels(TextureId texId, const std::string& resourceName);
|
||||||
|
|
||||||
void tick(bool uploadToGraphicsCard);
|
void tick(bool uploadToGraphicsCard);
|
||||||
|
|
||||||
void clear();
|
void clear();
|
||||||
|
|||||||
@@ -40,18 +40,18 @@ EntityRenderDispatcher::EntityRenderDispatcher()
|
|||||||
{
|
{
|
||||||
//@note: The Models (model/armor) will be deleted by resp. MobRenderer
|
//@note: The Models (model/armor) will be deleted by resp. MobRenderer
|
||||||
assign( ER_ITEM_RENDERER, new ItemRenderer());
|
assign( ER_ITEM_RENDERER, new ItemRenderer());
|
||||||
assign( ER_HUMANOID_RENDERER, new HumanoidMobRenderer(new HumanoidModel(), 0));
|
assign( ER_HUMANOID_RENDERER, new HumanoidMobRenderer(new HumanoidModel(), 0.5));
|
||||||
assign( ER_PIG_RENDERER, new PigRenderer(new PigModel(), NULL/*new PigModel(0.5f)*/, 0));
|
assign( ER_PIG_RENDERER, new PigRenderer(new PigModel(0.5), NULL/*new PigModel(0.5f)*/, 0.7));
|
||||||
assign( ER_COW_RENDERER, new MobRenderer(new CowModel(), 0));
|
assign( ER_COW_RENDERER, new MobRenderer(new CowModel(), 0.7));
|
||||||
assign( ER_CHICKEN_RENDERER, new ChickenRenderer( new ChickenModel(), 0));
|
assign( ER_CHICKEN_RENDERER, new ChickenRenderer( new ChickenModel(), 0.3));
|
||||||
assign( ER_SHEEP_RENDERER, new SheepRenderer(new SheepModel(), new SheepFurModel(), 0));
|
assign( ER_SHEEP_RENDERER, new SheepRenderer(new SheepModel(), new SheepFurModel(), 0.7));
|
||||||
assign( ER_SKELETON_RENDERER, new HumanoidMobRenderer(new SkeletonModel(), 0.5f));
|
assign( ER_SKELETON_RENDERER, new HumanoidMobRenderer(new SkeletonModel(), 0.5f));
|
||||||
assign( ER_ZOMBIE_RENDERER, new HumanoidMobRenderer(new ZombieModel(), 0.5f));
|
assign( ER_ZOMBIE_RENDERER, new HumanoidMobRenderer(new ZombieModel(), 0.5f));
|
||||||
assign( ER_CREEPER_RENDERER, new CreeperRenderer());
|
assign( ER_CREEPER_RENDERER, new CreeperRenderer());
|
||||||
assign( ER_SPIDER_RENDERER, new SpiderRenderer());
|
assign( ER_SPIDER_RENDERER, new SpiderRenderer());
|
||||||
assign( ER_TNT_RENDERER, new TntRenderer());
|
assign( ER_TNT_RENDERER, new TntRenderer());
|
||||||
assign( ER_ARROW_RENDERER, new ArrowRenderer());
|
assign( ER_ARROW_RENDERER, new ArrowRenderer());
|
||||||
assign( ER_PLAYER_RENDERER, new PlayerRenderer(new HumanoidModel(0, 0, 64, 64), 0));
|
assign( ER_PLAYER_RENDERER, new PlayerRenderer(new HumanoidModel(0, 0, 64, 64), 0.5));
|
||||||
assign( ER_THROWNEGG_RENDERER, new ItemSpriteRenderer(Item::egg->getIcon(0)));
|
assign( ER_THROWNEGG_RENDERER, new ItemSpriteRenderer(Item::egg->getIcon(0)));
|
||||||
assign( ER_SNOWBALL_RENDERER, new ItemSpriteRenderer(Item::snowBall->getIcon(0)));
|
assign( ER_SNOWBALL_RENDERER, new ItemSpriteRenderer(Item::snowBall->getIcon(0)));
|
||||||
assign( ER_PAINTING_RENDERER, new PaintingRenderer());
|
assign( ER_PAINTING_RENDERER, new PaintingRenderer());
|
||||||
@@ -133,7 +133,7 @@ void EntityRenderDispatcher::render( Entity* entity, float x, float y, float z,
|
|||||||
EntityRenderer* renderer = getRenderer(entity);
|
EntityRenderer* renderer = getRenderer(entity);
|
||||||
if (renderer != NULL) {
|
if (renderer != NULL) {
|
||||||
renderer->render(entity, x, y, z, rot, a);
|
renderer->render(entity, x, y, z, rot, a);
|
||||||
//renderer->postRender(entity, x, y, z, rot, a);
|
renderer->postRender(entity, x, y, z, rot, a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,11 +5,17 @@
|
|||||||
#include "../gles.h"
|
#include "../gles.h"
|
||||||
#include "../../../world/phys/AABB.h"
|
#include "../../../world/phys/AABB.h"
|
||||||
#include "EntityRenderDispatcher.h"
|
#include "EntityRenderDispatcher.h"
|
||||||
|
#include "../../../util/Mth.h"
|
||||||
|
#include "../../../world/level/Level.h"
|
||||||
|
#include "../../../world/level/tile/Tile.h"
|
||||||
|
|
||||||
|
#include "../../Minecraft.h"
|
||||||
|
#include "../../Option.h"
|
||||||
|
|
||||||
EntityRenderDispatcher* EntityRenderer::entityRenderDispatcher = NULL;
|
EntityRenderDispatcher* EntityRenderer::entityRenderDispatcher = NULL;
|
||||||
|
|
||||||
EntityRenderer::EntityRenderer()
|
EntityRenderer::EntityRenderer()
|
||||||
: shadowRadius(0),
|
: shadowRadius(0),
|
||||||
shadowStrength(1.0f)
|
shadowStrength(1.0f)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@@ -36,37 +42,37 @@ void EntityRenderer::render(const AABB& bb, float xo, float yo, float zo) {
|
|||||||
glColor4f2(1, 1, 1, 1);
|
glColor4f2(1, 1, 1, 1);
|
||||||
t.begin();
|
t.begin();
|
||||||
t.offset(xo, yo, zo);
|
t.offset(xo, yo, zo);
|
||||||
//t.normal(0, 0, -1);
|
t.normal(0, 0, -1);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||||
|
|
||||||
//t.normal(0, 0, 1);
|
t.normal(0, 0, 1);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||||
t.vertex(bb.x1, bb.y0, bb.z1);
|
t.vertex(bb.x1, bb.y0, bb.z1);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||||
|
|
||||||
//t.normal(0, -1, 0);
|
t.normal(0, -1, 0);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y0, bb.z1);
|
t.vertex(bb.x1, bb.y0, bb.z1);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||||
|
|
||||||
//t.normal(0, 1, 0);
|
t.normal(0, 1, 0);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||||
|
|
||||||
//t.normal(-1, 0, 0);
|
t.normal(-1, 0, 0);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z1);
|
t.vertex(bb.x0, bb.y0, bb.z1);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z1);
|
t.vertex(bb.x0, bb.y1, bb.z1);
|
||||||
t.vertex(bb.x0, bb.y1, bb.z0);
|
t.vertex(bb.x0, bb.y1, bb.z0);
|
||||||
t.vertex(bb.x0, bb.y0, bb.z0);
|
t.vertex(bb.x0, bb.y0, bb.z0);
|
||||||
|
|
||||||
//t.normal(1, 0, 0);
|
t.normal(1, 0, 0);
|
||||||
t.vertex(bb.x1, bb.y0, bb.z0);
|
t.vertex(bb.x1, bb.y0, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z0);
|
t.vertex(bb.x1, bb.y1, bb.z0);
|
||||||
t.vertex(bb.x1, bb.y1, bb.z1);
|
t.vertex(bb.x1, bb.y1, bb.z1);
|
||||||
@@ -116,134 +122,139 @@ Font* EntityRenderer::getFont() {
|
|||||||
return entityRenderDispatcher->getFont();
|
return entityRenderDispatcher->getFont();
|
||||||
}
|
}
|
||||||
|
|
||||||
//void postRender(Entity entity, float x, float y, float z, float rot, float a) {
|
void EntityRenderer::postRender(Entity* entity, float x, float y, float z, float rot, float a) {
|
||||||
// if (entityRenderDispatcher.options.fancyGraphics && shadowRadius > 0) {
|
if (/*entityRenderDispatcher.options.fancyGraphics &&*/entityRenderDispatcher->minecraft->options.getBooleanValue(OPTIONS_FANCY_GRAPHICS) && shadowRadius > 0) {
|
||||||
// float dist = entityRenderDispatcher.distanceToSqr(entity.x, entity.y, entity.z);
|
float dist = entityRenderDispatcher->distanceToSqr(entity->x, entity->y, entity->z);
|
||||||
// float pow = (float) ((1 - dist / (16.0f * 16.0f)) * shadowStrength);
|
float pow = (float) ((1 - dist / (16.0f * 16.0f)) * shadowStrength);
|
||||||
// if (pow > 0) {
|
if (pow > 0) {
|
||||||
// renderShadow(entity, x, y, z, pow, a);
|
renderShadow(entity, x, y, z, pow, a);
|
||||||
// }
|
}
|
||||||
// }
|
//}
|
||||||
// if (entity.isOnFire()) renderFlame(entity, x, y, z, a);
|
if (entity->isOnFire()) renderFlame(entity, x, y, z, a);
|
||||||
//}
|
}
|
||||||
|
}
|
||||||
|
void EntityRenderer::renderFlame(Entity* e, float x, float y, float z, float a) {
|
||||||
|
|
||||||
//void renderFlame(Entity e, float x, float y, float z, float a) {
|
int tex = ((Tile*)Tile::fire)->tex;
|
||||||
// glDisable2(GL_LIGHTING);
|
|
||||||
// int tex = Tile.fire.tex;
|
|
||||||
|
|
||||||
// int xt = (tex & 0xf) << 4;
|
int xt = (tex & 0xf) << 4;
|
||||||
// int yt = tex & 0xf0;
|
int yt = tex & 0xf0;
|
||||||
|
|
||||||
// float u0 = (xt) / 256.0f;
|
float u0 = (xt) / 256.0f;
|
||||||
// float u1 = (xt + 15.99f) / 256.0f;
|
float u1 = (xt + 15.99f) / 256.0f;
|
||||||
// float v0 = (yt) / 256.0f;
|
float v0 = (yt) / 256.0f;
|
||||||
// float v1 = (yt + 15.99f) / 256.0f;
|
float v1 = (yt + 15.99f) / 256.0f;
|
||||||
|
|
||||||
// glPushMatrix2();
|
glPushMatrix2();
|
||||||
// glTranslatef2((float) x, (float) y, (float) z);
|
glTranslatef2((float) x, (float) y, (float) z);
|
||||||
|
|
||||||
// float s = e.bbWidth * 1.4f;
|
float s = e->bbWidth * 1.4f;
|
||||||
// glScalef2(s, s, s);
|
glScalef2(s, s, s);
|
||||||
// bindTexture("terrain.png");
|
bindTexture("terrain.png");
|
||||||
// Tesselator t = Tesselator.instance;
|
Tesselator& t = Tesselator::instance;
|
||||||
|
|
||||||
// float r = 1.0f;
|
float r = 1.0f;
|
||||||
// float xo = 0.5f;
|
float xo = 0.5f;
|
||||||
// float yo = 0.0f;
|
float yo = 0.0f;
|
||||||
|
|
||||||
// float h = e.bbHeight / e.bbWidth;
|
float h = e->bbHeight / e->bbWidth;
|
||||||
|
|
||||||
// glRotatef2(-entityRenderDispatcher.playerRotY, 0, 1, 0);
|
glRotatef2(-entityRenderDispatcher->playerRotY, 0, 1, 0);
|
||||||
// glTranslatef2(0, 0, -0.4f + ((int) h) * 0.02f);
|
glTranslatef2(0, 0, -0.4f + ((int) h) * 0.02f);
|
||||||
// glColor4f2(1, 1, 1, 1);
|
glColor4f2(1, 1, 1, 1);
|
||||||
// // glRotatef2(-playerRotX, 1, 0, 0);
|
// glRotatef2(-playerRotX, 1, 0, 0);
|
||||||
// t.begin();
|
t.begin();
|
||||||
// while (h > 0) {
|
while (h > 0) {
|
||||||
// t.vertexUV(r - xo, 0 - yo, 0, u1, v1);
|
t.vertexUV(r - xo, 0 - yo, 0, u1, v1);
|
||||||
// t.vertexUV(0 - xo, 0 - yo, 0, u0, v1);
|
t.vertexUV(0 - xo, 0 - yo, 0, u0, v1);
|
||||||
// t.vertexUV(0 - xo, 1.4f - yo, 0, u0, v0);
|
t.vertexUV(0 - xo, 1.4f - yo, 0, u0, v0);
|
||||||
// t.vertexUV(r - xo, 1.4f - yo, 0, u1, v0);
|
t.vertexUV(r - xo, 1.4f - yo, 0, u1, v0);
|
||||||
// h -= 1;
|
h -= 1;
|
||||||
// yo -= 1;
|
yo -= 1;
|
||||||
// r *= 0.9f;
|
r *= 0.9f;
|
||||||
// glTranslatef2(0, 0, -0.04f);
|
glTranslatef2(0, 0, -0.04f);
|
||||||
// }
|
}
|
||||||
// t.end();
|
t.draw();
|
||||||
// glPopMatrix2();
|
glPopMatrix2();
|
||||||
// glEnable2(GL_LIGHTING);
|
// glEnable2(GL_LIGHTING);
|
||||||
//}
|
}
|
||||||
|
|
||||||
//void renderShadow(Entity e, float x, float y, float z, float pow, float a) {
|
void EntityRenderer::renderShadow(Entity* e, float x, float y, float z, float pow, float a) { //
|
||||||
// glEnable2(GL_BLEND);
|
glEnable2(GL_BLEND);
|
||||||
// glBlendFunc2(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc2(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
// Textures textures = entityRenderDispatcher.textures;
|
//Textures* textures = entityRenderDispatcher->textures;
|
||||||
// textures.bind(textures.loadTexture("%clamp%/misc/shadow.png"));
|
//textures->bind(textures->loadTexture("%clamp%/environment/shadow.png"));
|
||||||
|
Textures* textures = entityRenderDispatcher->textures;
|
||||||
|
textures->bind(textures->loadTexture("/misc/shadow.png"));
|
||||||
|
|
||||||
// Level level = getLevel();
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
|
||||||
// glDepthMask(false);
|
Level* level = getLevel();
|
||||||
// float r = shadowRadius;
|
|
||||||
|
|
||||||
// float ex = e.xOld + (e.x - e.xOld) * a;
|
glDepthMask(false);
|
||||||
// float ey = e.yOld + (e.y - e.yOld) * a + e.getShadowHeightOffs();
|
float r = shadowRadius;
|
||||||
// float ez = e.zOld + (e.z - e.zOld) * a;
|
|
||||||
|
|
||||||
// int x0 = Mth.floor(ex - r);
|
float ex = e->xOld + (e->x - e->xOld) * a;
|
||||||
// int x1 = Mth.floor(ex + r);
|
float ey = e->yOld + (e->y - e->yOld) * a + e->getShadowHeightOffs();
|
||||||
// int y0 = Mth.floor(ey - r);
|
float ez = e->zOld + (e->z - e->zOld) * a;
|
||||||
// int y1 = Mth.floor(ey);
|
|
||||||
// int z0 = Mth.floor(ez - r);
|
|
||||||
// int z1 = Mth.floor(ez + r);
|
|
||||||
|
|
||||||
// float xo = x - ex;
|
int x0 = Mth::floor(ex - r);
|
||||||
// float yo = y - ey;
|
int x1 = Mth::floor(ex + r);
|
||||||
// float zo = z - ez;
|
int y0 = Mth::floor(ey - r);
|
||||||
|
int y1 = Mth::floor(ey);
|
||||||
|
int z0 = Mth::floor(ez - r);
|
||||||
|
int z1 = Mth::floor(ez + r);
|
||||||
|
|
||||||
// Tesselator tt = Tesselator.instance;
|
float xo = x - ex;
|
||||||
// tt.begin();
|
float yo = y - ey;
|
||||||
// for (int xt = x0; xt <= x1; xt++)
|
float zo = z - ez;
|
||||||
// for (int yt = y0; yt <= y1; yt++)
|
|
||||||
// for (int zt = z0; zt <= z1; zt++) {
|
|
||||||
// int t = level.getTile(xt, yt - 1, zt);
|
|
||||||
// if (t > 0 && level.getRawBrightness(xt, yt, zt) > 3) {
|
|
||||||
// renderTileShadow(Tile.tiles[t], x, y + e.getShadowHeightOffs(), z, xt, yt, zt, pow, r, xo, yo + e.getShadowHeightOffs(), zo);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// tt.end();
|
|
||||||
|
|
||||||
// glColor4f2(1, 1, 1, 1);
|
Tesselator& tt = Tesselator::instance;
|
||||||
// glDisable2(GL_BLEND);
|
tt.begin();
|
||||||
// glDepthMask(true);
|
for (int xt = x0; xt <= x1; xt++)
|
||||||
//}
|
for (int yt = y0; yt <= y1; yt++)
|
||||||
|
for (int zt = z0; zt <= z1; zt++) {
|
||||||
|
int t = level->getTile(xt, yt - 1, zt);
|
||||||
|
if (t > 0 && level->getRawBrightness(xt, yt, zt) > 3) {
|
||||||
|
renderTileShadow(Tile::tiles[t], x, y + e->getShadowHeightOffs(), z, xt, yt, zt, pow, r, xo, yo + e->getShadowHeightOffs(), zo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tt.draw();
|
||||||
|
|
||||||
//Level* getLevel() {
|
glColor4f2(1, 1, 1, 1);
|
||||||
// return entityRenderDispatcher.level;
|
glDisable2(GL_BLEND);
|
||||||
//}
|
glDepthMask(true);
|
||||||
|
}
|
||||||
|
|
||||||
//void renderTileShadow(Tile tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo) {
|
Level* EntityRenderer::getLevel() {
|
||||||
// Tesselator t = Tesselator.instance;
|
return entityRenderDispatcher->level;
|
||||||
// if (!tt.isCubeShaped()) return;
|
}
|
||||||
|
|
||||||
// float a = ((pow - (y - (yt + yo)) / 2) * 0.5f) * getLevel().getBrightness(xt, yt, zt);
|
void EntityRenderer::renderTileShadow(Tile* tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo) {
|
||||||
// if (a < 0) return;
|
Tesselator& t = Tesselator::instance;
|
||||||
// if (a > 1) a = 1;
|
if (!tt->isCubeShaped()) return;
|
||||||
// t.color(1, 1, 1, (float) a);
|
|
||||||
// // glColor4f2(1, 1, 1, (float) a);
|
|
||||||
|
|
||||||
// float x0 = xt + tt.xx0 + xo;
|
float a = ((pow - (y - (yt + yo)) / 2) * 0.5f) * getLevel()->getBrightness(xt, yt, zt);
|
||||||
// float x1 = xt + tt.xx1 + xo;
|
if (a < 0) return;
|
||||||
// float y0 = yt + tt.yy0 + yo + 1.0 / 64.0f;
|
if (a > 1) a = 1;
|
||||||
// float z0 = zt + tt.zz0 + zo;
|
// t.color(1, 1, 1, (float) a);
|
||||||
// float z1 = zt + tt.zz1 + zo;
|
glColor4f2(1, 1, 1, (float) a);
|
||||||
|
|
||||||
// float u0 = (float) ((x - (x0)) / 2 / r + 0.5f);
|
float x0 = xt + tt->xx0 + xo;
|
||||||
// float u1 = (float) ((x - (x1)) / 2 / r + 0.5f);
|
float x1 = xt + tt->xx1 + xo;
|
||||||
// float v0 = (float) ((z - (z0)) / 2 / r + 0.5f);
|
float y0 = yt + tt->yy0 + yo + 1.0 / 64.0f;
|
||||||
// float v1 = (float) ((z - (z1)) / 2 / r + 0.5f);
|
float z0 = zt + tt->zz0 + zo;
|
||||||
|
float z1 = zt + tt->zz1 + zo;
|
||||||
|
|
||||||
// t.vertexUV(x0, y0, z0, u0, v0);
|
float u0 = (float) ((x - (x0)) / 2 / r + 0.5f);
|
||||||
// t.vertexUV(x0, y0, z1, u0, v1);
|
float u1 = (float) ((x - (x1)) / 2 / r + 0.5f);
|
||||||
// t.vertexUV(x1, y0, z1, u1, v1);
|
float v0 = (float) ((z - (z0)) / 2 / r + 0.5f);
|
||||||
// t.vertexUV(x1, y0, z0, u1, v0);
|
float v1 = (float) ((z - (z1)) / 2 / r + 0.5f);
|
||||||
//}
|
|
||||||
|
t.vertexUV(x0, y0, z0, u0, v0);
|
||||||
|
t.vertexUV(x0, y0, z1, u0, v1);
|
||||||
|
t.vertexUV(x1, y0, z1, u1, v1);
|
||||||
|
t.vertexUV(x1, y0, z0, u1, v0);
|
||||||
|
}
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ class EntityRenderDispatcher;
|
|||||||
class Entity;
|
class Entity;
|
||||||
class AABB;
|
class AABB;
|
||||||
class Font;
|
class Font;
|
||||||
|
class Tile;
|
||||||
|
class Level;
|
||||||
|
|
||||||
class EntityRenderer
|
class EntityRenderer
|
||||||
{
|
{
|
||||||
@@ -24,6 +26,11 @@ public:
|
|||||||
virtual void render(Entity* entity, float x, float y, float z, float rot, float a) = 0;
|
virtual void render(Entity* entity, float x, float y, float z, float rot, float a) = 0;
|
||||||
static void render(const AABB& bb, float xo, float yo, float zo);
|
static void render(const AABB& bb, float xo, float yo, float zo);
|
||||||
static void renderFlat(const AABB& bb);
|
static void renderFlat(const AABB& bb);
|
||||||
|
void renderShadow(Entity* e, float x, float y, float z, float pow, float a);
|
||||||
|
void renderTileShadow(Tile* tt, float x, float y, float z, int xt, int yt, int zt, float pow, float r, float xo, float yo, float zo);
|
||||||
|
void renderFlame(Entity* e, float x, float y, float z, float a);
|
||||||
|
void postRender(Entity* entity, float x, float y, float z, float rot, float a);
|
||||||
|
Level* getLevel();
|
||||||
|
|
||||||
Font* getFont();
|
Font* getFont();
|
||||||
|
|
||||||
|
|||||||
@@ -226,7 +226,42 @@ void ItemRenderer::renderGuiItem(Font* font, Textures* textures, const ItemInsta
|
|||||||
t.draw();
|
t.draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ItemRenderer::renderGuiItemDecorations(const ItemInstance* item, float x, float y) {
|
|
||||||
|
void ItemRenderer::renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y){ // this is normally unused in the header but i ported it from java beta - shredder
|
||||||
|
if (item != NULL) {
|
||||||
|
if (item->count > 1) {
|
||||||
|
char buf[16];
|
||||||
|
sprintf(buf, "%d", item->count);
|
||||||
|
std::string countStr = buf;
|
||||||
|
// glDisable(GL_LIGHTING);
|
||||||
|
// glDisable(GL_DEPTH_TEST);
|
||||||
|
font->drawShadow(countStr, x + 19 - 2 - font->width(countStr),
|
||||||
|
y + 6 + 3, 0xFFFFFF);
|
||||||
|
// glEnable(GL_LIGHTING);
|
||||||
|
// glEnable(GL_DEPTH_TEST);
|
||||||
|
}
|
||||||
|
if (item->isDamaged()) {
|
||||||
|
float p = std::floor(13.5f - (float) item->getDamageValue() * 13.0f / (float) item->getMaxDamage() + 0.5);
|
||||||
|
int cc = (int) std::floor(255.5f - (float) item->getDamageValue() * 255.0f / (float) item->getMaxDamage() + 0.5);
|
||||||
|
// glDisable(GL_LIGHTING);
|
||||||
|
// glDisable(GL_DEPTH_TEST);
|
||||||
|
// glDisable(GL_TEXTURE_2D);
|
||||||
|
// auto var8 = ::net::minecraft::client::renderer::Tesselator::instance();
|
||||||
|
Tesselator& t = Tesselator::instance;
|
||||||
|
int ca = ((255 - cc)<< 16 | (cc << 8));
|
||||||
|
int cb = (((255 - cc) / 4) << 16 | 16128);
|
||||||
|
fillRect(t, x + 2, y + 13, 13, 2, 0);
|
||||||
|
fillRect(t, x + 2, y + 13, 12, 1, cb);
|
||||||
|
fillRect(t, x + 2, y + 13, p, 1, ca);
|
||||||
|
// glEnable(GL_TEXTURE_2D);
|
||||||
|
// glEnable(GL_LIGHTING);
|
||||||
|
// glEnable(GL_DEPTH_TEST);
|
||||||
|
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ItemRenderer::renderGuiItemDecorations(const ItemInstance* item, float x, float y) { // nothing changed here this is the normal pocket edition one.
|
||||||
if (!item) return;
|
if (!item) return;
|
||||||
if (item->count > 0 && item->isDamaged()) {
|
if (item->count > 0 && item->isDamaged()) {
|
||||||
float p = std::floor(13.5f - (float) item->getDamageValue() * 13.0f / (float) item->getMaxDamage());
|
float p = std::floor(13.5f - (float) item->getDamageValue() * 13.0f / (float) item->getMaxDamage());
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public:
|
|||||||
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, bool fancy);
|
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, bool fancy);
|
||||||
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, float w, float h, bool fancy);
|
static void renderGuiItem(Font* font, Textures* textures, const ItemInstance* item, float x, float y, float w, float h, bool fancy);
|
||||||
static void renderGuiItemCorrect(Font* font, Textures* textures, const ItemInstance* item, int x, int y);
|
static void renderGuiItemCorrect(Font* font, Textures* textures, const ItemInstance* item, int x, int y);
|
||||||
//void renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y);
|
static void renderGuiItemDecorations(Font* font, Textures* textures, ItemInstance* item, int x, int y);
|
||||||
static void renderGuiItemDecorations(const ItemInstance* item, float x, float y);
|
static void renderGuiItemDecorations(const ItemInstance* item, float x, float y);
|
||||||
|
|
||||||
static void blit(float x, float y, float sx, float sy, float w, float h);
|
static void blit(float x, float y, float sx, float sy, float w, float h);
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ void MobRenderer::render(Entity* e, float x, float y, float z, float rot, float
|
|||||||
//glEnable2(GL_DEPTH_TEST);
|
//glEnable2(GL_DEPTH_TEST);
|
||||||
|
|
||||||
glPopMatrix2();
|
glPopMatrix2();
|
||||||
|
postRender(mob, x, y, z, rot, a);
|
||||||
renderName(mob, x, y, z);
|
renderName(mob, x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
98
src/util/Color.cpp
Normal file
98
src/util/Color.cpp
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
#include "Mth.h"
|
||||||
|
|
||||||
|
#include "Color.h"
|
||||||
|
#include <cassert>
|
||||||
|
|
||||||
|
//Creates an opaque sRGB color with the specified red, green, and blue values in the range (0.0 - 1.0).
|
||||||
|
//Alpha is defaulted to 1.0. The actual color used in rendering depends on finding the best match given the color space
|
||||||
|
//available for a particular output device.
|
||||||
|
//Parameters:
|
||||||
|
//r - the red component
|
||||||
|
//g - the green component
|
||||||
|
//b - the blue component
|
||||||
|
//Throws:
|
||||||
|
//IllegalArgumentException - if r, g or b are outside of the range 0.0 to 1.0, inclusive
|
||||||
|
Color::Color( float r, float g, float b)
|
||||||
|
{
|
||||||
|
assert( r >= 0.0f && r <= 1.0f );
|
||||||
|
assert( g >= 0.0f && g <= 1.0f );
|
||||||
|
assert( b >= 0.0f && b <= 1.0f );
|
||||||
|
|
||||||
|
//argb
|
||||||
|
colour = ( (0xFF<<24) | ( (int)(r*255)<<16 ) | ( (int)(g*255)<<8 ) | ( (int)(b*255) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
Color::Color( int r, int g, int b)
|
||||||
|
{
|
||||||
|
colour = ( (0xFF<<24) | ( (r&0xff)<<16 ) | ( (g&0xff)<<8 ) | ( (b&0xff) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Creates a Color object based on the specified values for the HSB color model.
|
||||||
|
//The s and b components should be floating-point values between zero and one (numbers in the range 0.0-1.0).
|
||||||
|
//The h component can be any floating-point number. The floor of this number is subtracted from it to create a fraction between 0 and 1.
|
||||||
|
//This fractional number is then multiplied by 360 to produce the hue angle in the HSB color model.
|
||||||
|
//
|
||||||
|
//Parameters:
|
||||||
|
//h - the hue component
|
||||||
|
//s - the saturation of the color
|
||||||
|
//b - the brightness of the color
|
||||||
|
//Returns:
|
||||||
|
//a Color object with the specified hue, saturation, and brightness.
|
||||||
|
Color Color::getHSBColor(float hue, float saturation, float brightness)
|
||||||
|
{
|
||||||
|
int r = 0, g = 0, b = 0;
|
||||||
|
if (saturation == 0)
|
||||||
|
{
|
||||||
|
r = g = b = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
float h = (hue - (float)Mth::floor(hue)) * 6.0f;
|
||||||
|
float f = h - (float)Mth::floor(h);
|
||||||
|
float p = brightness * (1.0f - saturation);
|
||||||
|
float q = brightness * (1.0f - saturation * f);
|
||||||
|
float t = brightness * (1.0f - (saturation * (1.0f - f)));
|
||||||
|
switch ((int) h)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
r = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
g = (int) (t * 255.0f + 0.5f);
|
||||||
|
b = (int) (p * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
r = (int) (q * 255.0f + 0.5f);
|
||||||
|
g = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
b = (int) (p * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
r = (int) (p * 255.0f + 0.5f);
|
||||||
|
g = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
b = (int) (t * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
r = (int) (p * 255.0f + 0.5f);
|
||||||
|
g = (int) (q * 255.0f + 0.5f);
|
||||||
|
b = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
r = (int) (t * 255.0f + 0.5f);
|
||||||
|
g = (int) (p * 255.0f + 0.5f);
|
||||||
|
b = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
r = (int) (brightness * 255.0f + 0.5f);
|
||||||
|
g = (int) (p * 255.0f + 0.5f);
|
||||||
|
b = (int) (q * 255.0f + 0.5f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return Color( r, g, b );
|
||||||
|
}
|
||||||
|
|
||||||
|
int Color::getRGB()
|
||||||
|
{
|
||||||
|
return colour;
|
||||||
|
}
|
||||||
15
src/util/Color.h
Normal file
15
src/util/Color.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
class Color
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
int colour;
|
||||||
|
|
||||||
|
public:
|
||||||
|
//Creates an opaque sRGB color with the specified red, green, and blue values in the range (0.0 - 1.0).
|
||||||
|
Color( float r, float g, float b);
|
||||||
|
Color( int r, int g, int b);
|
||||||
|
|
||||||
|
static Color getHSBColor(float h, float s, float b);
|
||||||
|
int getRGB();
|
||||||
|
};
|
||||||
@@ -245,6 +245,7 @@ void Inventory::setupDefault() {
|
|||||||
addItem(new ItemInstance(Item::seeds_melon));
|
addItem(new ItemInstance(Item::seeds_melon));
|
||||||
addItem(new ItemInstance(Item::dye_powder, 1, DyePowderItem::WHITE));
|
addItem(new ItemInstance(Item::dye_powder, 1, DyePowderItem::WHITE));
|
||||||
addItem(new ItemInstance(Item::hoe_iron));
|
addItem(new ItemInstance(Item::hoe_iron));
|
||||||
|
addItem(new ItemInstance(Item::flintAndSteel));
|
||||||
#ifdef RPI
|
#ifdef RPI
|
||||||
Sel[0] = addItem(new ItemInstance(Item::sword_iron));
|
Sel[0] = addItem(new ItemInstance(Item::sword_iron));
|
||||||
#else
|
#else
|
||||||
|
|||||||
13
src/world/level/FoliageColor.cpp
Normal file
13
src/world/level/FoliageColor.cpp
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#include "FoliageColor.h"
|
||||||
|
|
||||||
|
// TODO: Probably move all the stuff from the header into here so it's a bit cleaner
|
||||||
|
bool FoliageColor::useTint = true;
|
||||||
|
|
||||||
|
int FoliageColor::get(float temp, float rain) {
|
||||||
|
rain *= temp;
|
||||||
|
int x = (int) ((1 - temp) * 255);
|
||||||
|
int y = (int) ((1 - rain) * 255);
|
||||||
|
return pixels[y << 8 | x];
|
||||||
|
}
|
||||||
|
|
||||||
|
int* FoliageColor::pixels = nullptr;
|
||||||
@@ -6,16 +6,33 @@
|
|||||||
class FoliageColor
|
class FoliageColor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// static void init(int[] pixels) {
|
static bool useTint;
|
||||||
// FoliageColor::pixels = pixels;
|
|
||||||
// }
|
static void setUseTint(bool value) {
|
||||||
//
|
useTint = value;
|
||||||
// static int get(float temp, float rain) {
|
}
|
||||||
// rain *= temp;
|
/*
|
||||||
// int x = (int) ((1 - temp) * 255);
|
Shredder here, Ive converted the unused commented out code into their correct syntax, though if i did something incorrectly feel free to take reference from the
|
||||||
// int y = (int) ((1 - rain) * 255);
|
commented out code
|
||||||
// return pixels[y << 8 | x];
|
*/
|
||||||
// }
|
|
||||||
|
// static void init(int[] pixels) {
|
||||||
|
// FoliageColor::pixels = pixels;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// static int get(float temp, float rain) {
|
||||||
|
// rain *= temp;
|
||||||
|
// int x = (int) ((1 - temp) * 255);
|
||||||
|
// int y = (int) ((1 - rain) * 255);
|
||||||
|
// return pixels[y << 8 | x];
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
static void init(int* p) {
|
||||||
|
pixels = p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int get(float temp, float rain);
|
||||||
|
|
||||||
static int getEvergreenColor() {
|
static int getEvergreenColor() {
|
||||||
return 0x619961;
|
return 0x619961;
|
||||||
@@ -26,11 +43,12 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int getDefaultColor() {
|
static int getDefaultColor() {
|
||||||
return 0x48b518;
|
return 0xFFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//static int pixels[256*256];
|
// static int pixels[256*256];
|
||||||
|
static int* pixels;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /*NET_MINECRAFT_WORLD_LEVEL__FoliageColor_H__*/
|
#endif /*NET_MINECRAFT_WORLD_LEVEL__FoliageColor_H__*/
|
||||||
|
|||||||
13
src/world/level/GrassColor.cpp
Normal file
13
src/world/level/GrassColor.cpp
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#include "GrassColor.h"
|
||||||
|
|
||||||
|
// TODO: Probably move all the stuff from the header into here so it's a bit cleaner
|
||||||
|
bool GrassColor::useTint = true;
|
||||||
|
|
||||||
|
int GrassColor::get(float temp, float rain) {
|
||||||
|
rain *= temp;
|
||||||
|
int x = (int) ((1 - temp) * 255);
|
||||||
|
int y = (int) ((1 - rain) * 255);
|
||||||
|
return pixels[y << 8 | x];
|
||||||
|
}
|
||||||
|
|
||||||
|
int* GrassColor::pixels = nullptr;
|
||||||
42
src/world/level/GrassColor.h
Normal file
42
src/world/level/GrassColor.h
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
#ifndef NET_MINECRAFT_WORLD_LEVEL__GrassColor_H__
|
||||||
|
#define NET_MINECRAFT_WORLD_LEVEL__GrassColor_H__
|
||||||
|
|
||||||
|
//package net.minecraft.world.level;
|
||||||
|
|
||||||
|
class GrassColor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static bool useTint;
|
||||||
|
|
||||||
|
static void setUseTint(bool value) {
|
||||||
|
useTint = value;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
Shredder here, Ive converted the unused commented out code into their correct syntax, though if i did something incorrectly feel free to take reference from the
|
||||||
|
commented out code
|
||||||
|
*/
|
||||||
|
|
||||||
|
// static void init(int[] pixels) {
|
||||||
|
// GrassColor::pixels = pixels;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// static int get(float temp, float rain) {
|
||||||
|
// rain *= temp;
|
||||||
|
// int x = (int) ((1 - temp) * 255);
|
||||||
|
// int y = (int) ((1 - rain) * 255);
|
||||||
|
// return pixels[y << 8 | x];
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
static void init(int* p) {
|
||||||
|
pixels = p;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int get(float temp, float rain);
|
||||||
|
|
||||||
|
private:
|
||||||
|
// static int pixels[256*256];
|
||||||
|
static int* pixels;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*NET_MINECRAFT_WORLD_LEVEL__GrassColor_H__*/
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
#include "../../network/packet/ExplodePacket.h"
|
#include "../../network/packet/ExplodePacket.h"
|
||||||
|
|
||||||
Level::Level(LevelStorage* levelStorage, const std::string& levelName, const LevelSettings& settings, int generatorVersion, Dimension* fixedDimension /* = NULL */)
|
Level::Level(LevelStorage* levelStorage, const std::string& levelName, const LevelSettings& settings, int generatorVersion, Dimension* fixedDimension /* = NULL */)
|
||||||
: levelStorage(levelStorage),
|
: levelStorage(levelStorage),
|
||||||
isClientSide(false),
|
isClientSide(false),
|
||||||
isFindingSpawn(false),
|
isFindingSpawn(false),
|
||||||
noNeighborUpdate(false),
|
noNeighborUpdate(false),
|
||||||
@@ -1176,10 +1176,20 @@ Vec3 Level::getSkyColor(Entity* source, float a) {
|
|||||||
if (br < 0.0f) br = 0.0f;
|
if (br < 0.0f) br = 0.0f;
|
||||||
if (br > 0.75f) br = 0.75f; //@note; was 1.0f
|
if (br > 0.75f) br = 0.75f; //@note; was 1.0f
|
||||||
|
|
||||||
// int xx = Mth::floor(source->x);
|
int xx = Mth::floor(source->x);
|
||||||
// int zz = Mth::floor(source->z);
|
int zz = Mth::floor(source->z);
|
||||||
// float temp = 0.5;//(float) getBiomeSource().getTemperature(xx, zz);
|
// float temp = 0.5;//(float) getBiomeSource().getTemperature(xx, zz); // unused in normal pe too, just hardcoded temp values for some reason.
|
||||||
int skyColor = 0x3070ff;//getBiomeSource().getBiome(xx, zz).getSkyColor(temp);
|
float temp = (float) getBiomeSource()->getTemperature(xx, zz);
|
||||||
|
int skyColor;
|
||||||
|
if (dimension->FogType == 1){ // 1 is java styled fog which should use temperatures!
|
||||||
|
skyColor = getBiomeSource()->getBiome(xx, zz)->getSkyColor(temp);
|
||||||
|
}
|
||||||
|
else { // otherwise default to the normal pocket edition skycolor
|
||||||
|
|
||||||
|
skyColor = 0x3070ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
// int skyColor = 0x3070ff;//getBiomeSource().getBiome(xx, zz).getSkyColor(temp); // This is the vanilla way, add it as OPTION_SKY - shredder
|
||||||
|
|
||||||
float r = ((skyColor >> 16) & 0xff) / 255.0f;
|
float r = ((skyColor >> 16) & 0xff) / 255.0f;
|
||||||
float g = ((skyColor >> 8) & 0xff) / 255.0f;
|
float g = ((skyColor >> 8) & 0xff) / 255.0f;
|
||||||
@@ -1943,10 +1953,10 @@ const EntityList& Level::getAllEntities() {
|
|||||||
//
|
//
|
||||||
/*
|
/*
|
||||||
void Level::addEntities(const EntityList& list) {
|
void Level::addEntities(const EntityList& list) {
|
||||||
entities.insert(entities.end(), list.begin(), list.end());
|
entities.insert(entities.end(), list.begin(), list.end());
|
||||||
for (int j = 0; j < (int)list.size(); j++) {
|
for (int j = 0; j < (int)list.size(); j++) {
|
||||||
entityAdded(list[j]);
|
entityAdded(list[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -2042,18 +2052,18 @@ void Level::setSpawnPos(Pos spawnPos) {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
void Level::ensureAdded(Entity* entity) {
|
void Level::ensureAdded(Entity* entity) {
|
||||||
int xc = Mth::floor(entity->x / 16);
|
int xc = Mth::floor(entity->x / 16);
|
||||||
int zc = Mth::floor(entity->z / 16);
|
int zc = Mth::floor(entity->z / 16);
|
||||||
int r = 2;
|
int r = 2;
|
||||||
for (int x = xc - r; x <= xc + r; x++) {
|
for (int x = xc - r; x <= xc + r; x++) {
|
||||||
for (int z = zc - r; z <= zc + r; z++) {
|
for (int z = zc - r; z <= zc + r; z++) {
|
||||||
this->getChunk(x, z);
|
this->getChunk(x, z);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (std::find(entities.begin(), entities.end(), entity) == entities.end()) {
|
if (std::find(entities.begin(), entities.end(), entity) == entities.end()) {
|
||||||
entities.push_back(entity);
|
entities.push_back(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -2070,35 +2080,35 @@ void Level::broadcastEntityEvent(Entity* e, char eventId) {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
void Level::removeAllPendingEntityRemovals() {
|
void Level::removeAllPendingEntityRemovals() {
|
||||||
//Util::removeAll(entities, _entitiesToRemove);
|
//Util::removeAll(entities, _entitiesToRemove);
|
||||||
// //entities.removeAll(entitiesToRemove);
|
// //entities.removeAll(entitiesToRemove);
|
||||||
// for (int j = 0; j < (int)_entitiesToRemove.size(); j++) {
|
// for (int j = 0; j < (int)_entitiesToRemove.size(); j++) {
|
||||||
// Entity* e = _entitiesToRemove[j];
|
// Entity* e = _entitiesToRemove[j];
|
||||||
// int xc = e->xChunk;
|
// int xc = e->xChunk;
|
||||||
// int zc = e->zChunk;
|
// int zc = e->zChunk;
|
||||||
// if (e->inChunk && hasChunk(xc, zc)) {
|
// if (e->inChunk && hasChunk(xc, zc)) {
|
||||||
// getChunk(xc, zc)->removeEntity(e);
|
// getChunk(xc, zc)->removeEntity(e);
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// for (unsigned int j = 0; j < _entitiesToRemove.size(); j++) {
|
// for (unsigned int j = 0; j < _entitiesToRemove.size(); j++) {
|
||||||
// entityRemoved(_entitiesToRemove[j]);
|
// entityRemoved(_entitiesToRemove[j]);
|
||||||
// }
|
// }
|
||||||
// _entitiesToRemove.clear();
|
// _entitiesToRemove.clear();
|
||||||
|
|
||||||
for (unsigned int i = 0; i < entities.size(); i++) {
|
for (unsigned int i = 0; i < entities.size(); i++) {
|
||||||
Entity* e = entities[i];
|
Entity* e = entities[i];
|
||||||
|
|
||||||
if (e->removed) {
|
if (e->removed) {
|
||||||
int xc = e->xChunk;
|
int xc = e->xChunk;
|
||||||
int zc = e->zChunk;
|
int zc = e->zChunk;
|
||||||
if (e->inChunk && hasChunk(xc, zc)) {
|
if (e->inChunk && hasChunk(xc, zc)) {
|
||||||
getChunk(xc, zc)->removeEntity(e);
|
getChunk(xc, zc)->removeEntity(e);
|
||||||
}
|
}
|
||||||
entities.erase( entities.begin() + (i--) );
|
entities.erase( entities.begin() + (i--) );
|
||||||
entityRemoved(e);
|
entityRemoved(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -2231,7 +2241,7 @@ bool Level::inRange( int x, int y, int z ) {
|
|||||||
// AdventureSettings
|
// AdventureSettings
|
||||||
//
|
//
|
||||||
AdventureSettings::AdventureSettings()
|
AdventureSettings::AdventureSettings()
|
||||||
: doTickTime(true),
|
: doTickTime(true),
|
||||||
noPvP(false),
|
noPvP(false),
|
||||||
noPvM(false),
|
noPvM(false),
|
||||||
noMvP(false),
|
noMvP(false),
|
||||||
|
|||||||
@@ -3,8 +3,9 @@
|
|||||||
|
|
||||||
//package net.minecraft.world.level;
|
//package net.minecraft.world.level;
|
||||||
|
|
||||||
/*
|
|
||||||
class BiomeSource;
|
class BiomeSource;
|
||||||
|
/*
|
||||||
class TileEntity;
|
class TileEntity;
|
||||||
*/
|
*/
|
||||||
class Material;
|
class Material;
|
||||||
@@ -29,7 +30,7 @@ public:
|
|||||||
virtual bool isSolidRenderTile(int x, int i, int z) = 0;
|
virtual bool isSolidRenderTile(int x, int i, int z) = 0;
|
||||||
virtual bool isSolidBlockingTile(int x, int i, int z) = 0;
|
virtual bool isSolidBlockingTile(int x, int i, int z) = 0;
|
||||||
|
|
||||||
//virtual BiomeSource* getBiomeSource() = 0;
|
virtual BiomeSource* getBiomeSource() = 0;
|
||||||
virtual Biome* getBiome(int x, int z) = 0;
|
virtual Biome* getBiome(int x, int z) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "tile/Tile.h"
|
#include "tile/Tile.h"
|
||||||
#include "Level.h"
|
#include "Level.h"
|
||||||
|
|
||||||
|
|
||||||
Region::Region(Level* level, int x1, int y1, int z1, int x2, int y2, int z2) {
|
Region::Region(Level* level, int x1, int y1, int z1, int x2, int y2, int z2) {
|
||||||
this->level = level;
|
this->level = level;
|
||||||
|
|
||||||
@@ -135,6 +136,6 @@ Biome* Region::getBiome( int x, int z ) {
|
|||||||
return level->getBiome(x, z);
|
return level->getBiome(x, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
//BiomeSource getBiomeSource() {
|
BiomeSource* Region::getBiomeSource() {
|
||||||
// return level.getBiomeSource();
|
return level->getBiomeSource();
|
||||||
//}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include "LevelSource.h"
|
#include "LevelSource.h"
|
||||||
|
|
||||||
|
|
||||||
class Level;
|
class Level;
|
||||||
class Material;
|
class Material;
|
||||||
class LevelChunk;
|
class LevelChunk;
|
||||||
@@ -27,6 +28,7 @@ public:
|
|||||||
int getData(int x, int y, int z);
|
int getData(int x, int y, int z);
|
||||||
const Material* getMaterial(int x, int y, int z);
|
const Material* getMaterial(int x, int y, int z);
|
||||||
Biome* getBiome(int x, int z);
|
Biome* getBiome(int x, int z);
|
||||||
|
BiomeSource* getBiomeSource() override;
|
||||||
private:
|
private:
|
||||||
int xc1, zc1;
|
int xc1, zc1;
|
||||||
LevelChunk*** chunks;
|
LevelChunk*** chunks;
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
#include "../../entity/MobCategory.h"
|
#include "../../entity/MobCategory.h"
|
||||||
#include "../../level/tile/TallGrass.h"
|
#include "../../level/tile/TallGrass.h"
|
||||||
|
|
||||||
|
#include "../../../util/Color.h"
|
||||||
|
|
||||||
Biome* Biome::rainForest = NULL;
|
Biome* Biome::rainForest = NULL;
|
||||||
Biome* Biome::swampland = NULL;
|
Biome* Biome::swampland = NULL;
|
||||||
Biome* Biome::seasonalForest = NULL;
|
Biome* Biome::seasonalForest = NULL;
|
||||||
@@ -149,13 +151,7 @@ Feature* Biome::getGrassFeature( Random* random ) {
|
|||||||
return new TallgrassFeature(Tile::tallgrass->id, TallGrass::TALL_GRASS);
|
return new TallgrassFeature(Tile::tallgrass->id, TallGrass::TALL_GRASS);
|
||||||
}
|
}
|
||||||
|
|
||||||
Feature* Biome::getBasicTreeFeature( Random* random )
|
|
||||||
{
|
|
||||||
if (random->nextInt(10) == 0) {
|
|
||||||
return new BasicTree(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Biome* Biome::getBiome( float temperature, float downfall )
|
Biome* Biome::getBiome( float temperature, float downfall )
|
||||||
@@ -214,11 +210,11 @@ float Biome::adjustDepth( float depth )
|
|||||||
|
|
||||||
int Biome::getSkyColor( float temp )
|
int Biome::getSkyColor( float temp )
|
||||||
{
|
{
|
||||||
// temp /= 3.f;
|
temp /= 3.f;
|
||||||
// if (temp < -1) temp = -1;
|
if (temp < -1) temp = -1;
|
||||||
// if (temp > 1) temp = 1;
|
if (temp > 1) temp = 1;
|
||||||
return 0x80808080;
|
// return 0x80808080;This is the vanilla way, add it as OPTION_SKY or leave it like this bcus this function literally never gets used anyways if level has vanilla sky color - shredder
|
||||||
//return Color.getHSBColor(224 / 360.0f - temp * 0.05f, 0.50f + temp * 0.1f, 1.0f).getRGB();
|
return Color::getHSBColor(224 / 360.0f - temp * 0.05f, 0.50f + temp * 0.1f, 1.0f).getRGB();
|
||||||
}
|
}
|
||||||
|
|
||||||
Biome::MobList& Biome::getMobs(const MobCategory& category)
|
Biome::MobList& Biome::getMobs(const MobCategory& category)
|
||||||
|
|||||||
@@ -71,7 +71,6 @@ public:
|
|||||||
|
|
||||||
virtual Feature* getTreeFeature(Random* random);
|
virtual Feature* getTreeFeature(Random* random);
|
||||||
virtual Feature* getGrassFeature(Random* random);
|
virtual Feature* getGrassFeature(Random* random);
|
||||||
virtual Feature* getBasicTreeFeature(Random* random);
|
|
||||||
|
|
||||||
static Biome* getBiome(float temperature, float downfall);
|
static Biome* getBiome(float temperature, float downfall);
|
||||||
static Biome* _getBiome(float temperature, float downfall);
|
static Biome* _getBiome(float temperature, float downfall);
|
||||||
|
|||||||
@@ -69,11 +69,11 @@ Biome* BiomeSource::getBiome( int x, int z )
|
|||||||
return getBiomeBlock(x, z, 1, 1)[0];
|
return getBiomeBlock(x, z, 1, 1)[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
//float BiomeSource::getTemperature( int x, int z )
|
float BiomeSource::getTemperature( int x, int z )
|
||||||
//{
|
{
|
||||||
// temperatures = temperatureMap->getRegion(temperatures, x, z, 1, 1, tempScale, tempScale, 0.5f);
|
temperatures = temperatureMap->getRegion(temperatures, x, z, 1, 1, tempScale, tempScale, 0.5f);
|
||||||
// return temperatures[0];
|
return temperatures[0];
|
||||||
//}
|
}
|
||||||
|
|
||||||
Biome** BiomeSource::getBiomeBlock( int x, int z, int w, int h )
|
Biome** BiomeSource::getBiomeBlock( int x, int z, int w, int h )
|
||||||
{
|
{
|
||||||
@@ -123,7 +123,7 @@ Biome** BiomeSource::getBiomeBlock( Biome** biomes__, int x, int z, int w, int h
|
|||||||
return biomes;
|
return biomes;
|
||||||
}
|
}
|
||||||
|
|
||||||
float* BiomeSource::getTemperatureBlock( /*float* temperatures__, */int x, int z, int w, int h )
|
float* BiomeSource::getTemperatureBlock( float* temperatures__, int x, int z, int w, int h )
|
||||||
{
|
{
|
||||||
//LOGI("gTempBlock: 1\n");
|
//LOGI("gTempBlock: 1\n");
|
||||||
//const int size = w * h;
|
//const int size = w * h;
|
||||||
@@ -164,8 +164,8 @@ float* BiomeSource::getTemperatureBlock( /*float* temperatures__, */int x, int z
|
|||||||
return temperatures;
|
return temperatures;
|
||||||
}
|
}
|
||||||
|
|
||||||
//float* BiomeSource::getDownfallBlock( /*float* downfalls__,*/ int x, int z, int w, int h )
|
float* BiomeSource::getDownfallBlock( float* downfalls__, int x, int z, int w, int h )
|
||||||
//{
|
{
|
||||||
// //const int size = w * h;
|
// //const int size = w * h;
|
||||||
// //if (lenDownfalls < size) {
|
// //if (lenDownfalls < size) {
|
||||||
// // delete[] downfalls;
|
// // delete[] downfalls;
|
||||||
@@ -173,6 +173,6 @@ float* BiomeSource::getTemperatureBlock( /*float* temperatures__, */int x, int z
|
|||||||
// // lenDownfalls = size;
|
// // lenDownfalls = size;
|
||||||
// //}
|
// //}
|
||||||
//
|
//
|
||||||
// downfalls = downfallMap->getRegion(downfalls, x, z, w, w, downfallScale, downfallScale, 0.5f);
|
downfalls = downfallMap->getRegion(downfalls, x, z, w, w, downfallScale, downfallScale, 0.5f);
|
||||||
// return downfalls;
|
return downfalls;
|
||||||
//}
|
}
|
||||||
|
|||||||
@@ -31,13 +31,13 @@ public:
|
|||||||
virtual Biome* getBiome(const ChunkPos& chunk);
|
virtual Biome* getBiome(const ChunkPos& chunk);
|
||||||
virtual Biome* getBiome(int x, int z);
|
virtual Biome* getBiome(int x, int z);
|
||||||
|
|
||||||
//virtual float getTemperature(int x, int z);
|
virtual float getTemperature(int x, int z);
|
||||||
|
|
||||||
// Note: The arrays returned here are temporary in the meaning that their
|
// Note: The arrays returned here are temporary in the meaning that their
|
||||||
// contents might change in the future. If you need to SAVE the
|
// contents might change in the future. If you need to SAVE the
|
||||||
// values, do a shallow copy to an array of your own.
|
// values, do a shallow copy to an array of your own.
|
||||||
virtual float* getTemperatureBlock(/*float* temperatures, */ int x, int z, int w, int h);
|
virtual float* getTemperatureBlock(float* temperatures, int x, int z, int w, int h);
|
||||||
//virtual float* getDownfallBlock(/*float* downfalls, */int x, int z, int w, int h);
|
virtual float* getDownfallBlock(float* downfalls, int x, int z, int w, int h);
|
||||||
virtual Biome** getBiomeBlock(int x, int z, int w, int h);
|
virtual Biome** getBiomeBlock(int x, int z, int w, int h);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -262,14 +262,14 @@ void LevelChunk::recalcHeight(int x, int yStart, int z) {
|
|||||||
|
|
||||||
/*public*/
|
/*public*/
|
||||||
void LevelChunk::skyBrightnessChanged() {
|
void LevelChunk::skyBrightnessChanged() {
|
||||||
// int x0 = xt;
|
int x0 = xt;
|
||||||
// int y0 = this->minHeight - 16;
|
int y0 = this->minHeight - 16;
|
||||||
// int z0 = zt;
|
int z0 = zt;
|
||||||
// int x1 = xt + 16;
|
int x1 = xt + 16;
|
||||||
// int y1 = Level::DEPTH - 1;
|
int y1 = Level::DEPTH - 1;
|
||||||
// int z1 = zt + 16;
|
int z1 = zt + 16;
|
||||||
|
|
||||||
//level->setTilesDirty(x0, y0, z0, x1, y1, z1);
|
level->setTilesDirty(x0, y0, z0, x1, y1, z1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*public*/
|
/*public*/
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ Dimension::Dimension()
|
|||||||
ultraWarm(false),
|
ultraWarm(false),
|
||||||
hasCeiling(false),
|
hasCeiling(false),
|
||||||
biomeSource(NULL),
|
biomeSource(NULL),
|
||||||
id(0)
|
id(0),
|
||||||
|
fogColor(0x80daff)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,6 +94,18 @@ float* Dimension::getSunriseColor( float td, float a )
|
|||||||
|
|
||||||
Vec3 Dimension::getFogColor( float td, float a )
|
Vec3 Dimension::getFogColor( float td, float a )
|
||||||
{
|
{
|
||||||
|
if (FogType == 1)
|
||||||
|
{
|
||||||
|
fogColor = 0xc0d8ff; // 1 returns java beta styled fog color.
|
||||||
|
}
|
||||||
|
else if (FogType == 2)
|
||||||
|
{
|
||||||
|
fogColor = 0x406fe5; // 2 returns some type of unused fog color IDK what this one was used for possibly early pe??
|
||||||
|
}
|
||||||
|
else // otherwise as default we return the mcpe fog color
|
||||||
|
{
|
||||||
|
fogColor = 0x80daff;
|
||||||
|
}
|
||||||
float br = Mth::cos(td * Mth::PI * 2) * 2 + 0.5f;
|
float br = Mth::cos(td * Mth::PI * 2) * 2 + 0.5f;
|
||||||
if (br < 0.0f) br = 0.0f;
|
if (br < 0.0f) br = 0.0f;
|
||||||
if (br > 1.0f) br = 1.0f;
|
if (br > 1.0f) br = 1.0f;
|
||||||
@@ -104,7 +117,8 @@ Vec3 Dimension::getFogColor( float td, float a )
|
|||||||
g *= br * 0.94f + 0.06f;
|
g *= br * 0.94f + 0.06f;
|
||||||
b *= br * 0.91f + 0.09f;
|
b *= br * 0.91f + 0.09f;
|
||||||
return Vec3(r, g, b);
|
return Vec3(r, g, b);
|
||||||
//return Vec3(0.752941f, 0.847059f, 1);
|
|
||||||
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Dimension::mayRespawn()
|
bool Dimension::mayRespawn()
|
||||||
|
|||||||
@@ -49,8 +49,11 @@ public:
|
|||||||
bool hasCeiling;
|
bool hasCeiling;
|
||||||
float brightnessRamp[16];//Level::MAX_BRIGHTNESS + 1];
|
float brightnessRamp[16];//Level::MAX_BRIGHTNESS + 1];
|
||||||
int id;
|
int id;
|
||||||
|
|
||||||
|
// shredder added
|
||||||
|
int FogType; // lets us choose between what fog we want ig
|
||||||
protected:
|
protected:
|
||||||
static const long fogColor = 0x80daff;//0x406fe5;//0xc0d8ff;
|
long fogColor; //= 0x80daff;//0x406fe5;//0xc0d8ff;
|
||||||
float sunriseCol[4];
|
float sunriseCol[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
class NormalDayCycleDimension: public Dimension {
|
class NormalDayCycleDimension: public Dimension {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
float getTimeOfDay(long time, float a) {
|
float getTimeOfDay(long time, float a) {
|
||||||
int dayStep = (int) (time % Level::TICKS_PER_DAY);
|
int dayStep = (int) (time % Level::TICKS_PER_DAY);
|
||||||
float td = (dayStep + a) / Level::TICKS_PER_DAY - 0.25f;
|
float td = (dayStep + a) / Level::TICKS_PER_DAY - 0.25f;
|
||||||
@@ -20,6 +21,18 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Vec3 getFogColor( float td, float a ) {
|
Vec3 getFogColor( float td, float a ) {
|
||||||
|
if (FogType == 1)
|
||||||
|
{
|
||||||
|
fogColor = 0xc0d8ff; // 1 returns java beta styled fog color.
|
||||||
|
}
|
||||||
|
else if (FogType == 2)
|
||||||
|
{
|
||||||
|
fogColor = 0x406fe5; // 2 returns some type of unused fog color IDK what this one was used for possibly early pe??
|
||||||
|
}
|
||||||
|
else // otherwise as default we return the mcpe fog color
|
||||||
|
{
|
||||||
|
fogColor = 0x80daff;
|
||||||
|
}
|
||||||
float br = cos(td * Mth::PI * 2) * 2 + 0.5f;
|
float br = cos(td * Mth::PI * 2) * 2 + 0.5f;
|
||||||
if (br < 0) br = 0;
|
if (br < 0) br = 0;
|
||||||
if (br > 1.f) br = 1.f;
|
if (br > 1.f) br = 1.f;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#if 0
|
|
||||||
|
|
||||||
#include "CanyonFeature.h"
|
#include "CanyonFeature.h"
|
||||||
|
|
||||||
@@ -138,7 +138,7 @@ void CanyonFeature::addTunnel( int xOffs, int zOffs, unsigned char* blocks, floa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CanyonFeature::addFeature( Level level, int x, int z, int xOffs, int zOffs, char* blocks )
|
void CanyonFeature::addFeature(Level* level, int x, int z, int xOffs, int zOffs,unsigned char* blocks)
|
||||||
{
|
{
|
||||||
if (random.nextInt(15) != 0) return;
|
if (random.nextInt(15) != 0) return;
|
||||||
|
|
||||||
@@ -151,6 +151,7 @@ void CanyonFeature::addFeature( Level level, int x, int z, int xOffs, int zOffs,
|
|||||||
float thickness = (random.nextFloat() * 2 + random.nextFloat()) + 1;
|
float thickness = (random.nextFloat() * 2 + random.nextFloat()) + 1;
|
||||||
|
|
||||||
addTunnel(xOffs, zOffs, blocks, xCave, yCave, zCave, thickness, yRot, xRot, 0, 0, 5.0);
|
addTunnel(xOffs, zOffs, blocks, xCave, yCave, zCave, thickness, yRot, xRot, 0, 0, 5.0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* //private
|
/* //private
|
||||||
@@ -165,4 +166,4 @@ void CanyonFeature::addFeature( Level level, int x, int z, int xOffs, int zOffs,
|
|||||||
for (int z = zOffs - r; z <= zOffs + r; z++) {
|
for (int z = zOffs - r; z <= zOffs + r; z++) {
|
||||||
random.setSeed((x * xScale + z * zScale) ^ level.seed);*/
|
random.setSeed((x * xScale + z * zScale) ^ level.seed);*/
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#ifndef NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
#ifndef NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
||||||
#define NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
#define NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
//package net.minecraft.world.level.levelgen;
|
//package net.minecraft.world.level.levelgen;
|
||||||
|
|
||||||
@@ -12,8 +12,8 @@ class CanyonFeature: public LargeFeature {
|
|||||||
/*protected*/
|
/*protected*/
|
||||||
void addTunnel(int xOffs, int zOffs, unsigned char* blocks, float xCave, float yCave, float zCave, float thickness, float yRot, float xRot, int step, int dist, float yScale);
|
void addTunnel(int xOffs, int zOffs, unsigned char* blocks, float xCave, float yCave, float zCave, float thickness, float yRot, float xRot, int step, int dist, float yScale);
|
||||||
/*protected*/
|
/*protected*/
|
||||||
void addFeature(Level level, int x, int z, int xOffs, int zOffs, char* blocks);
|
void addFeature(Level* level, int x, int z, int xOffs, int zOffs,unsigned char* blocks);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif /*NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__*/
|
#endif /*NET_MINECRAFT_WORLD_LEVEL_LEVELGEN__CanyonFeature_H__*/
|
||||||
|
|||||||
@@ -473,7 +473,7 @@ void RandomLevelSource::postProcess(ChunkSource* parent, int xt, int zt) {
|
|||||||
MobSpawner::postProcessSpawnMobs(level, biome, xo + 8, zo + 8, 16, 16, &random);
|
MobSpawner::postProcessSpawnMobs(level, biome, xo + 8, zo + 8, 16, 16, &random);
|
||||||
|
|
||||||
//LOGI("Reading temp: 1\n");
|
//LOGI("Reading temp: 1\n");
|
||||||
float* temperatures = level->getBiomeSource()->getTemperatureBlock(/*NULL,*/ xo + 8, zo + 8, 16, 16);
|
float* temperatures = level->getBiomeSource()->getTemperatureBlock(NULL, xo + 8, zo + 8, 16, 16);
|
||||||
for (int x = xo + 8; x < xo + 8 + 16; x++)
|
for (int x = xo + 8; x < xo + 8 + 16; x++)
|
||||||
for (int z = zo + 8; z < zo + 8 + 16; z++) {
|
for (int z = zo + 8; z < zo + 8 + 16; z++) {
|
||||||
int xp = x - (xo + 8);
|
int xp = x - (xo + 8);
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
#include "GrassTile.h"
|
#include "GrassTile.h"
|
||||||
#include "../material/Material.h"
|
#include "../material/Material.h"
|
||||||
#include "../../entity/item/ItemEntity.h"
|
#include "../../entity/item/ItemEntity.h"
|
||||||
|
#include "../GrassColor.h"
|
||||||
|
#include "../Level.h"
|
||||||
|
#include "../LevelSource.h"
|
||||||
|
#include "../biome/BiomeSource.h"
|
||||||
|
#include "../../../client/Minecraft.h"
|
||||||
|
|
||||||
GrassTile::GrassTile(int id)
|
GrassTile::GrassTile(int id)
|
||||||
: super(id, Material::dirt)
|
: super(id, Material::dirt)
|
||||||
@@ -24,11 +29,18 @@ int GrassTile::getTexture( int face, int data ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int GrassTile::getColor( LevelSource* level, int x, int y, int z ) {
|
int GrassTile::getColor( LevelSource* level, int x, int y, int z ) {
|
||||||
//level.getBiomeSource().getBiomeBlock(x, z, 1, 1);
|
|
||||||
//float temp = level.getBiomeSource().temperatures[0];
|
|
||||||
//float rain = level.getBiomeSource().downfalls[0];
|
|
||||||
|
|
||||||
return 0x339933;//GrassColor.get(temp, rain);
|
if(!GrassColor::useTint){
|
||||||
|
return 0x339933;
|
||||||
|
}
|
||||||
|
|
||||||
|
level->getBiomeSource()->getBiomeBlock(x, z, 1, 1);
|
||||||
|
float temp = level->getBiomeSource()->temperatures[0];
|
||||||
|
float rain = level->getBiomeSource()->downfalls[0];
|
||||||
|
|
||||||
|
// return 0x339933;//GrassColor.get(temp, rain); // we need to hook this up with OPTION_FOLIAGE_TINT
|
||||||
|
|
||||||
|
return GrassColor::get(temp, rain);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GrassTile::tick( Level* level, int x, int y, int z, Random* random ) {
|
void GrassTile::tick( Level* level, int x, int y, int z, Random* random ) {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ class GrassTile: public Tile
|
|||||||
{
|
{
|
||||||
typedef Tile super;
|
typedef Tile super;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static const int MIN_BRIGHTNESS = 4;
|
static const int MIN_BRIGHTNESS = 4;
|
||||||
|
|
||||||
GrassTile(int id);
|
GrassTile(int id);
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#include "../../item/Item.h"
|
#include "../../item/Item.h"
|
||||||
#include "../../item/ItemInstance.h"
|
#include "../../item/ItemInstance.h"
|
||||||
#include "../FoliageColor.h"
|
#include "../FoliageColor.h"
|
||||||
|
#include "../LevelSource.h"
|
||||||
|
#include "../biome/BiomeSource.h"
|
||||||
|
|
||||||
class Entity;
|
class Entity;
|
||||||
|
|
||||||
@@ -54,10 +56,18 @@ public:
|
|||||||
if (data == BIRCH_LEAF) {
|
if (data == BIRCH_LEAF) {
|
||||||
return FoliageColor::getBirchColor();
|
return FoliageColor::getBirchColor();
|
||||||
}
|
}
|
||||||
|
if (!FoliageColor::useTint){
|
||||||
return FoliageColor::getDefaultColor();
|
return FoliageColor::getDefaultColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// return FoliageColor::getDefaultColor(); we need to hook this up with OPTION_FOLIAGE_TINT
|
||||||
|
level->getBiomeSource()->getBiomeBlock(x, z, 1, 1);
|
||||||
|
float temperature = level->getBiomeSource()->temperatures[0];
|
||||||
|
float rainfall = level->getBiomeSource()->downfalls[0];
|
||||||
|
return FoliageColor::get(temperature, rainfall);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void onRemove(Level* level, int x, int y, int z) {
|
void onRemove(Level* level, int x, int y, int z) {
|
||||||
int r = 1;
|
int r = 1;
|
||||||
int r2 = r + 1;
|
int r2 = r + 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user