#include "TntRenderer.h" #include #include "platform/renderer/renderer.h" #include "minecraft/SharedConstants.h" #include "minecraft/client/renderer/TileRenderer.h" #include "minecraft/client/renderer/texture/TextureAtlas.h" #include "minecraft/world/entity/Entity.h" #include "minecraft/world/entity/item/PrimedTnt.h" #include "minecraft/world/level/tile/Tile.h" TntRenderer::TntRenderer() { renderer = new TileRenderer(); this->shadowRadius = 0.5f; } void TntRenderer::render(std::shared_ptr _tnt, double x, double y, double z, float rot, float a) { // 4J - dynamic cast required because we aren't using templates/generics in // our version std::shared_ptr tnt = std::dynamic_pointer_cast(_tnt); glPushMatrix(); glTranslatef((float)x, (float)y, (float)z); if (tnt->life - a + 1 < 10) { float g = 1 - ((tnt->life - a + 1) / 10.0f); if (g < 0) g = 0; if (g > 1) g = 1; g = g * g; g = g * g; float s = 1.0f + g * 0.3f; glScalef(s, s, s); } float br = (1 - ((tnt->life - a + 1) / 100.0f)) * 0.8f; bindTexture(tnt); // 4J - change brought forward from 1.8.2 float brightness = SharedConstants::TEXTURE_LIGHTING ? 1.0f : tnt->getBrightness(a); renderer->renderTile(Tile::tnt, 0, brightness); if (tnt->life / 5 % 2 == 0) { glDisable(GL_TEXTURE_2D); glDisable(GL_LIGHTING); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA); glColor4f(1, 1, 1, br); renderer->setColor = false; // 4J added so that renderTile doesn't set // its own colour here renderer->renderTile(Tile::tnt, 0, 1); renderer->setColor = true; // 4J added so that renderTile doesn't set // its own colour here glColor4f(1, 1, 1, 1); glDisable(GL_BLEND); glEnable(GL_LIGHTING); glEnable(GL_TEXTURE_2D); } glPopMatrix(); } ResourceLocation* TntRenderer::getTextureLocation(std::shared_ptr mob) { return &TextureAtlas::LOCATION_BLOCKS; }