feat: TU19 (Dec 2014) Features & Content (#155)

* try to resolve merge conflict

* feat: TU19 (Dec 2014) Features & Content (#32)

* December 2014 files

* Working release build

* Fix compilation issues

* Add sound to Windows64Media

* Add DLC content and force Tutorial DLC

* Revert "Add DLC content and force Tutorial DLC"

This reverts commit 97a4399472.

* Disable broken light packing

* Disable breakpoint during DLC texture map load

Allows DLC loading but the DLC textures are still broken

* Fix post build not working

* ...

* fix vs2022 build

* fix cmake build

---------

Co-authored-by: Loki <lokirautio@gmail.com>
This commit is contained in:
daoge
2026-03-03 03:04:10 +08:00
committed by GitHub
parent 84c31a2331
commit b3feddfef3
2069 changed files with 264842 additions and 139522 deletions

View File

@@ -13,6 +13,7 @@
#include "TheEndPortalRenderer.h"
#include "SkullTileRenderer.h"
#include "EnderChestRenderer.h"
#include "BeaconRenderer.h"
TileEntityRenderDispatcher *TileEntityRenderDispatcher::instance = NULL;
double TileEntityRenderDispatcher::xOff = 0;
@@ -28,12 +29,12 @@ TileEntityRenderDispatcher::TileEntityRenderDispatcher()
{
// 4J -a dded
font = NULL;
textures = NULL;
level = NULL;
cameraEntity = nullptr;
playerRotY = 0.0f;
playerRotX = 0.0f;;
xPlayer = yPlayer = zPlayer = 0;
textures = NULL;
level = NULL;
cameraEntity = nullptr;
playerRotY = 0.0f;
playerRotX = 0.0f;;
xPlayer = yPlayer = zPlayer = 0;
glEnable(GL_LIGHTING);
renderers[eTYPE_SIGNTILEENTITY] = new SignRenderer();
@@ -45,19 +46,20 @@ TileEntityRenderDispatcher::TileEntityRenderDispatcher()
renderers[eTYPE_THEENDPORTALTILEENTITY] = new TheEndPortalRenderer();
renderers[eTYPE_SKULLTILEENTITY] = new SkullTileRenderer();
renderers[eTYPE_FURNACETILEENTITY] = NULL;
renderers[eTYPE_BEACONTILEENTITY] = new BeaconRenderer();
glDisable(GL_LIGHTING);
AUTO_VAR(itEnd, renderers.end());
for( classToTileRendererMap::iterator it = renderers.begin(); it != itEnd; it++ )
{
if(it->second) it->second->init(this);
}
}
}
TileEntityRenderer *TileEntityRenderDispatcher::getRenderer(eINSTANCEOF e)
{
TileEntityRenderer *r = NULL;
//TileEntityRenderer *r = renderers[e];
//TileEntityRenderer *r = renderers[e];
AUTO_VAR(it, renderers.find( e )); // 4J Stu - The .at and [] accessors insert elements if they don't exist
if( it == renderers.end() )
@@ -66,13 +68,13 @@ TileEntityRenderer *TileEntityRenderDispatcher::getRenderer(eINSTANCEOF e)
}
/* 4J - not doing this hierarchical search anymore. We need to explicitly add renderers for any eINSTANCEOF type that we want to be able to render
if (it == renderers.end() && e != TileEntity::_class)
if (it == renderers.end() && e != TileEntity::_class)
{
r = getRenderer(dynamic_cast<TileEntity::Class *>( e->getSuperclass() ));
r = getRenderer(dynamic_cast<TileEntity::Class *>( e->getSuperclass() ));
// 4J - added condition here to only add if a valid renderer found
if( r ) renderers.insert( classToTileRendererMap::value_type( e, r ) );
//assert(false);
}
}
else if(it != renderers.end() && e != TileEntity::_class)
r = (*it).second;
*/
@@ -87,57 +89,57 @@ bool TileEntityRenderDispatcher::hasRenderer(shared_ptr<TileEntity> e)
TileEntityRenderer *TileEntityRenderDispatcher::getRenderer(shared_ptr<TileEntity> e)
{
if (e == NULL) return NULL;
return getRenderer(e->GetType());
if (e == NULL) return NULL;
return getRenderer(e->GetType());
}
void TileEntityRenderDispatcher::prepare(Level *level, Textures *textures, Font *font, shared_ptr<Mob> player, float a)
void TileEntityRenderDispatcher::prepare(Level *level, Textures *textures, Font *font, shared_ptr<LivingEntity> player, float a)
{
if( this->level != level )
{
setLevel( level );
}
this->textures = textures;
this->cameraEntity = player;
this->font = font;
this->textures = textures;
cameraEntity = player;
this->font = font;
playerRotY = player->yRotO + (player->yRot - player->yRotO) * a;
playerRotX = player->xRotO + (player->xRot - player->xRotO) * a;
playerRotY = player->yRotO + (player->yRot - player->yRotO) * a;
playerRotX = player->xRotO + (player->xRot - player->xRotO) * a;
xPlayer = player->xOld + (player->x - player->xOld) * a;
yPlayer = player->yOld + (player->y - player->yOld) * a;
zPlayer = player->zOld + (player->z - player->zOld) * a;
xPlayer = player->xOld + (player->x - player->xOld) * a;
yPlayer = player->yOld + (player->y - player->yOld) * a;
zPlayer = player->zOld + (player->z - player->zOld) * a;
}
void TileEntityRenderDispatcher::render(shared_ptr<TileEntity> e, float a, bool setColor/*=true*/)
{
if (e->distanceToSqr(xPlayer, yPlayer, zPlayer) < 64 * 64)
if (e->distanceToSqr(xPlayer, yPlayer, zPlayer) < e->getViewDistance())
{
// 4J - changes brought forward from 1.8.2
if (SharedConstants::TEXTURE_LIGHTING)
if (SharedConstants::TEXTURE_LIGHTING)
{
int col = level->getLightColor(e->x, e->y, e->z, 0);
int u = col % 65536;
int v = col / 65536;
glMultiTexCoord2f(GL_TEXTURE1, u / 1.0f, v / 1.0f);
glColor4f(1, 1, 1, 1);
}
int col = level->getLightColor(e->x, e->y, e->z, 0);
int u = col % 65536;
int v = col / 65536;
glMultiTexCoord2f(GL_TEXTURE1, u / 1.0f, v / 1.0f);
glColor4f(1, 1, 1, 1);
}
else
{
float br = level->getBrightness(e->x, e->y, e->z);
glColor4f(br, br, br, 1);
}
render(e, e->x - xOff, e->y - yOff, e->z - zOff, a, setColor);
}
float br = level->getBrightness(e->x, e->y, e->z);
glColor4f(br, br, br, 1);
}
render(e, e->x - xOff, e->y - yOff, e->z - zOff, a, setColor);
}
}
void TileEntityRenderDispatcher::render(shared_ptr<TileEntity> entity, double x, double y, double z, float a, bool setColor/*=true*/, float alpha, bool useCompiled)
{
TileEntityRenderer *renderer = getRenderer(entity);
if (renderer != NULL)
TileEntityRenderer *renderer = getRenderer(entity);
if (renderer != NULL)
{
renderer->render(entity, x, y, z, a, setColor, alpha, useCompiled);
}
renderer->render(entity, x, y, z, a, setColor, alpha, useCompiled);
}
}
void TileEntityRenderDispatcher::setLevel(Level *level)
@@ -152,10 +154,10 @@ void TileEntityRenderDispatcher::setLevel(Level *level)
double TileEntityRenderDispatcher::distanceToSqr(double x, double y, double z)
{
double xd = x - xPlayer;
double yd = y - yPlayer;
double zd = z - zPlayer;
return xd * xd + yd * yd + zd * zd;
double xd = x - xPlayer;
double yd = y - yPlayer;
double zd = z - zPlayer;
return xd * xd + yd * yd + zd * zd;
}
Font *TileEntityRenderDispatcher::getFont()