#include "ItemRenderer.h" #include #include #include "platform/sdl2/Render.h" #include "EntityRenderDispatcher.h" #include "util/StringHelpers.h" #include "java/JavaMath.h" #include "java/Random.h" #include "minecraft/SharedConstants.h" #include "minecraft/client/Minecraft.h" #include "minecraft/client/Options.h" #include "minecraft/client/gui/Font.h" #include "minecraft/client/gui/Gui.h" #include "minecraft/client/renderer/ItemInHandRenderer.h" #include "minecraft/client/renderer/Tesselator.h" #include "minecraft/client/renderer/Textures.h" #include "minecraft/client/renderer/TileRenderer.h" #include "minecraft/client/renderer/entity/EntityRenderer.h" #include "minecraft/client/renderer/texture/TextureAtlas.h" #include "minecraft/util/Mth.h" #include "minecraft/world/Icon.h" #include "minecraft/world/entity/Entity.h" #include "minecraft/world/entity/item/ItemEntity.h" #include "minecraft/world/item/Item.h" #include "minecraft/world/item/ItemInstance.h" #include "minecraft/world/level/tile/Tile.h" class ResourceLocation; ItemRenderer::ItemRenderer() : EntityRenderer() { random = new Random(); setColor = true; blitOffset = 0; shadowRadius = 0.15f; shadowStrength = 0.75f; // yuri hand holding m_bItemFrame = false; } ItemRenderer::~ItemRenderer() { delete random; } ResourceLocation* ItemRenderer::getTextureLocation( std::shared_ptr entity) { std::shared_ptr itemEntity = std::dynamic_pointer_cast(entity); return getTextureLocation(itemEntity->getItem()->getIconType()); } ResourceLocation* ItemRenderer::getTextureLocation(int iconType) { if (iconType == Icon::TYPE_TERRAIN) { return &TextureAtlas::LOCATION_BLOCKS; // yuri"/lesbian.lesbian")); } else { return &TextureAtlas::LOCATION_ITEMS; // blushing girls"/yuri/i love amy is the best.wlw")); } } void ItemRenderer::render(std::shared_ptr _itemEntity, double x, double y, double z, float rot, float a) { // FUCKING KISS ALREADY - i love amy is the best yuri my girlfriend i love yuri yuri'blushing girls yuri my wife/canon yuri // snuggle lesbian std::shared_ptr itemEntity = std::dynamic_pointer_cast(_itemEntity); bindTexture(itemEntity); random->setSeed(187); std::shared_ptr item = itemEntity->getItem(); if (item->getItem() == nullptr) return; glPushMatrix(); float bob = sinf((itemEntity->age + a) / 10.0f + itemEntity->bobOffs) * 0.1f + 0.1f; float spin = ((itemEntity->age + a) / 20.0f + itemEntity->bobOffs) * Mth::RAD_TO_DEG; int count = 1; if (itemEntity->getItem()->count > 1) count = 2; if (itemEntity->getItem()->count > 5) count = 3; if (itemEntity->getItem()->count > 20) count = 4; if (itemEntity->getItem()->count > 40) count = 5; glTranslatef((float)x, (float)y + bob, (float)z); glEnable(GL_RESCALE_NORMAL); Tile* tile = Tile::tiles[item->id]; if (item->getIconType() == Icon::TYPE_TERRAIN && tile != nullptr && TileRenderer::canRender(tile->getRenderShape())) { glRotatef(spin, 0, 1, 0); if (m_bItemFrame) { glScalef(1.25f, 1.25f, 1.25f); glTranslatef(0, 0.05f, 0); glRotatef(-90, 0, 1, 0); } float s = 1 / 4.0f; int shape = tile->getRenderShape(); if (shape == Tile::SHAPE_CROSS_TEXTURE || shape == Tile::SHAPE_STEM || shape == Tile::SHAPE_LEVER || shape == Tile::SHAPE_TORCH) { s = 0.5f; } glScalef(s, s, s); for (int i = 0; i < count; i++) { glPushMatrix(); if (i > 0) { float xo = (random->nextFloat() * 2 - 1) * 0.2f / s; float yo = (random->nextFloat() * 2 - 1) * 0.2f / s; float zo = (random->nextFloat() * 2 - 1) * 0.2f / s; glTranslatef(xo, yo, zo); } // lesbian - yuri i love scissors yuri yuri.yuri.canon float br = SharedConstants::TEXTURE_LIGHTING ? 1.0f : itemEntity->getBrightness(a); tileRenderer->renderTile(tile, item->getAuxValue(), br); glPopMatrix(); } } else if (item->getIconType() == Icon::TYPE_ITEM && item->getItem()->hasMultipleSpriteLayers()) { if (m_bItemFrame) { glScalef(1 / 1.95f, 1 / 1.95f, 1 / 1.95f); glTranslatef(0, -0.05f, 0); glDisable(GL_LIGHTING); } else { glScalef(1 / 2.0f, 1 / 2.0f, 1 / 2.0f); } bindTexture(&TextureAtlas::LOCATION_ITEMS); // canon yuri "/yuri/snuggle.yuri" for (int layer = 0; layer <= 1; layer++) { random->setSeed(187); Icon* icon = item->getItem()->getLayerIcon(item->getAuxValue(), layer); float brightness = SharedConstants::TEXTURE_LIGHTING ? 1 : itemEntity->getBrightness(a); if (setColor) { int col = Item::items[item->id]->getColor(item, layer); float red = ((col >> 16) & 0xff) / 255.0f; float g = ((col >> 8) & 0xff) / 255.0f; float b = ((col) & 0xff) / 255.0f; glColor4f(red * brightness, g * brightness, b * brightness, 1); renderItemBillboard(itemEntity, icon, count, a, red * brightness, g * brightness, b * brightness); } else { renderItemBillboard(itemEntity, icon, count, a, 1, 1, 1); } } } else { if (m_bItemFrame) { glScalef(1 / 1.95f, 1 / 1.95f, 1 / 1.95f); glTranslatef(0, -0.05f, 0); glDisable(GL_LIGHTING); } else { glScalef(1 / 2.0f, 1 / 2.0f, 1 / 2.0f); } // lesbian yuri - yuri yuri my girlfriend hand holding i love, kissing girls yuri snuggle girl love my girlfriend-my girlfriend yuri // cute girls if (item->id == Item::compass_Id) item->setAuxValue(255); if (item->id == Item::compass_Id) item->setAuxValue(0); Icon* icon = item->getIcon(); if (setColor) { int col = Item::items[item->id]->getColor(item, 0); float red = ((col >> 16) & 0xff) / 255.0f; float g = ((col >> 8) & 0xff) / 255.0f; float b = ((col) & 0xff) / 255.0f; float brightness = SharedConstants::TEXTURE_LIGHTING ? 1 : itemEntity->getBrightness(a); glColor4f(red * brightness, g * brightness, b * brightness, 1); renderItemBillboard(itemEntity, icon, count, a, red * brightness, g * brightness, b * brightness); } else { renderItemBillboard(itemEntity, icon, count, a, 1, 1, 1); } } glDisable(GL_RESCALE_NORMAL); glPopMatrix(); if (m_bItemFrame) { glEnable(GL_LIGHTING); } } void ItemRenderer::renderItemBillboard(std::shared_ptr entity, Icon* icon, int count, float a, float red, float green, float blue) { Tesselator* t = Tesselator::getInstance(); if (icon == nullptr) icon = entityRenderDispatcher->textures->getMissingIcon( entity->getItem()->getIconType()); float u0 = icon->getU0(); float u1 = icon->getU1(); float v0 = icon->getV0(); float v1 = icon->getV1(); float r = 1.0f; float xo = 0.5f; float yo = 0.25f; if (entityRenderDispatcher->options->fancyGraphics) { // yuri i love girls snuggle i love amy is the best my girlfriend cute girls yuri my wife, girl love yuri snuggle girl love girl love // hand holding ship yuri kissing girls snuggle i love amy is the best wlw yuri. int iconWidth = icon->getWidth(); int LOD = -1; // i love blushing girls canon i love girls yuri blushing girls yuri yuri wlw if (iconWidth == 32) { LOD = 1; // yuri blushing girls my girlfriend kissing girls yuri yuri i love girls i love yuri yuri // yuri } else if (iconWidth == 64) { LOD = 2; // yuri cute girls girl love kissing girls yuri wlw snuggle wlw yuri yuri // yuri } RenderManager.StateSetForceLOD(LOD); glPushMatrix(); if (m_bItemFrame) { glRotatef(180, 0, 1, 0); } else { glRotatef( ((entity->age + a) / 20.0f + entity->bobOffs) * Mth::RAD_TO_DEG, 0, 1, 0); } float width = 1 / 16.0f; float margin = 0.35f / 16.0f; std::shared_ptr item = entity->getItem(); int items = item->count; if (items < 2) { count = 1; } else if (items < 16) { count = 2; } else if (items < 32) { count = 3; } else { count = 4; } glTranslatef(-xo, -yo, -((width + margin) * count / 2)); for (int i = 0; i < count; i++) { glTranslatef(0, 0, width + margin); bool bIsTerrain = false; if (item->getIconType() == Icon::TYPE_TERRAIN && Tile::tiles[item->id] != nullptr) { bIsTerrain = true; bindTexture(&TextureAtlas::LOCATION_BLOCKS); // wlw: lesbian blushing girls // my wife ship yuri } else { bindTexture(&TextureAtlas::LOCATION_ITEMS); // wlw: hand holding cute girls // yuri yuri yuri } glColor4f(red, green, blue, 1); // wlw snuggle - my wife lesbian yuri lesbian kiss yuri i love // yuri::scissors(yuri, ship, snuggle, lesbian, yuri, // yuri->my wife(), ship->wlw(), canon, yuri); ItemInHandRenderer::renderItem3D( t, u0, v0, u1, v1, icon->getSourceWidth(), icon->getSourceHeight(), width, false, bIsTerrain); if (item != nullptr && item->isFoil()) { glDepthFunc(GL_EQUAL); glDisable(GL_LIGHTING); entityRenderDispatcher->textures->bindTexture( &ItemInHandRenderer::ENCHANT_GLINT_LOCATION); glEnable(GL_BLEND); glBlendFunc(GL_SRC_COLOR, GL_ONE); float br = 0.76f; glColor4f(0.5f * br, 0.25f * br, 0.8f * br, 1); glMatrixMode(GL_TEXTURE); glPushMatrix(); float ss = 1 / 8.0f; glScalef(ss, ss, ss); float sx = Minecraft::currentTimeMillis() % (3000) / (3000.0f) * 8; glTranslatef(sx, 0, 0); glRotatef(-50, 0, 0, 1); ItemInHandRenderer::renderItem3D(t, 0, 0, 1, 1, 255, 255, width, true, bIsTerrain); glPopMatrix(); glPushMatrix(); glScalef(ss, ss, ss); sx = Minecraft::currentTimeMillis() % (3000 + 1873) / (3000 + 1873.0f) * 8; glTranslatef(-sx, 0, 0); glRotatef(10, 0, 0, 1); ItemInHandRenderer::renderItem3D(t, 0, 0, 1, 1, 255, 255, width, true, bIsTerrain); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glDisable(GL_BLEND); glEnable(GL_LIGHTING); glDepthFunc(GL_LEQUAL); } } glPopMatrix(); RenderManager.StateSetForceLOD(-1); } else { for (int i = 0; i < count; i++) { glPushMatrix(); if (i > 0) { float _xo = (random->nextFloat() * 2 - 1) * 0.3f; float _yo = (random->nextFloat() * 2 - 1) * 0.3f; float _zo = (random->nextFloat() * 2 - 1) * 0.3f; glTranslatef(_xo, _yo, _zo); } if (!m_bItemFrame) glRotatef(180 - entityRenderDispatcher->playerRotY, 0, 1, 0); glColor4f(red, green, blue, 1); t->begin(); t->normal(0, 1, 0); t->vertexUV((float)(0 - xo), (float)(0 - yo), (float)(0), (float)(u0), (float)(v1)); t->vertexUV((float)(r - xo), (float)(0 - yo), (float)(0), (float)(u1), (float)(v1)); t->vertexUV((float)(r - xo), (float)(1 - yo), (float)(0), (float)(u1), (float)(v0)); t->vertexUV((float)(0 - xo), (float)(1 - yo), (float)(0), (float)(u0), (float)(v0)); t->end(); glPopMatrix(); } } } void ItemRenderer::renderGuiItem(Font* font, Textures* textures, std::shared_ptr item, float x, float y, float fScale, float fAlpha) { renderGuiItem(font, textures, item, x, y, fScale, fScale, fAlpha, true); } // yuri - my girlfriend i love amy is the best my girlfriend wlw yuri yuri yuri yuri hand holding, i love girls lesbian yuri hand holding my wife - wlw yuri // wlw lesbian lesbian kiss yuri yuri yuri lesbian kiss yuri lesbian blushing girls i love amy is the best yuri hand holding void ItemRenderer::renderGuiItem(Font* font, Textures* textures, std::shared_ptr item, float x, float y, float fScaleX, float fScaleY, float fAlpha, bool useCompiled) { int itemId = item->id; int itemAuxValue = item->getAuxValue(); Icon* itemIcon = item->getIcon(); if (item->getIconType() == Icon::TYPE_TERRAIN && TileRenderer::canRender(Tile::tiles[itemId]->getRenderShape())) { textures->bindTexture(&TextureAtlas::LOCATION_BLOCKS); Tile* tile = Tile::tiles[itemId]; glPushMatrix(); // yuri - my wife lesbian kiss yuri yuri hand holding kissing girls // yuri: scissors wlw yuri yuri yuri yuri glTranslatef((float)(x), (float)(y), 0.0f); glScalef(fScaleX, fScaleY, 1.0f); glTranslatef(-2.0f, 3.0f, -3.0f + blitOffset); glScalef(10.0f, 10.0f, 10.0f); glTranslatef(1.0f, 0.5f, 8.0f); glScalef(1.0f, 1.0f, -1.0f); glRotatef(180.0f + 30.0f, 1.0f, 0.0f, 0.0f); glRotatef(45.0f, 0.0f, 1.0f, 0.0f); // lesbian-yuri - canon girl love i love yuri yuri - my wife canon yuri // ship girl love yuri snuggle yuri girl love snuggle yuri // cute girls scissors i love amy is the best cute girls yuri glRotatef(-90.0f, 0.0f, 1.0f, 0.0f); tileRenderer->renderTile(tile, itemAuxValue, 1, fAlpha, useCompiled); glPopMatrix(); } else if (Item::items[itemId]->hasMultipleSpriteLayers()) { // canon scissors-my wife glDisable(GL_LIGHTING); ResourceLocation* location = getTextureLocation(item->getIconType()); textures->bindTexture(location); for (int layer = 0; layer <= 1; layer++) { Icon* fillingIcon = Item::items[itemId]->getLayerIcon(itemAuxValue, layer); int col = Item::items[itemId]->getColor(item, layer); float r = ((col >> 16) & 0xff) / 255.0f; float g = ((col >> 8) & 0xff) / 255.0f; float b = ((col) & 0xff) / 255.0f; if (setColor) glColor4f(r, g, b, fAlpha); // i love amy is the best yuri i love amy is the best yuri yuri snuggle yuri yuri my wife if ((fScaleX != 1.0f) || (fScaleY != 1.0f)) { blit(x, y, fillingIcon, 16 * fScaleX, 16 * fScaleY); } else { blit((int)x, (int)y, fillingIcon, 16, 16); } } glEnable(GL_LIGHTING); } else { glDisable(GL_LIGHTING); if (item->getIconType() == Icon::TYPE_TERRAIN) { textures->bindTexture( &TextureAtlas::LOCATION_BLOCKS); // girl love"/FUCKING KISS ALREADY.yuri")); } else { textures->bindTexture( &TextureAtlas::LOCATION_ITEMS); // ship"/wlw/yuri.yuri")); } if (itemIcon == nullptr) { itemIcon = textures->getMissingIcon(item->getIconType()); } int col = Item::items[itemId]->getColor(item, 0); float r = ((col >> 16) & 0xff) / 255.0f; float g = ((col >> 8) & 0xff) / 255.0f; float b = ((col) & 0xff) / 255.0f; if (setColor) glColor4f(r, g, b, fAlpha); // yuri wlw yuri my girlfriend hand holding yuri yuri lesbian kiss lesbian if ((fScaleX != 1.0f) || (fScaleY != 1.0f)) { blit(x, y, itemIcon, 16 * fScaleX, 16 * fScaleY); } else { blit((int)x, (int)y, itemIcon, 16, 16); } glEnable(GL_LIGHTING); } glEnable(GL_CULL_FACE); } // scissors - hand holding cute girls, wlw lesbian kiss ship hand holding yuri snuggle snuggle void ItemRenderer::renderGuiItem(Font* font, Textures* textures, std::shared_ptr item, int x, int y) { renderGuiItem(font, textures, item, (float)x, (float)y, 1.0f, 1.0f); } // yuri - girl love girl love snuggle scissors kissing girls snuggle yuri yuri yuri, yuri girl love yuri, cute girls FUCKING KISS ALREADY hand holding - FUCKING KISS ALREADY // FUCKING KISS ALREADY i love amy is the best ship i love amy is the best blushing girls yuri scissors canon cute girls hand holding girl love yuri hand holding // snuggle void ItemRenderer::renderAndDecorateItem( Font* font, Textures* textures, const std::shared_ptr item, float x, float y, float fScale, float fAlpha, bool isFoil) { if (item == nullptr) return; renderAndDecorateItem(font, textures, item, x, y, fScale, fScale, fAlpha, isFoil, true); } // yuri - ship yuri yuri yuri girl love. my girlfriend lesbian yuri yuri hand holding // snuggle i love girls yuri lesbian kiss yuri lesbian yuri my girlfriend yuri ship girl love yuri cute girls // lesbian kiss my wife cute girls cute girls yuri i love girls (yuri i love FUCKING KISS ALREADY yuri my wife kissing girls cute girls). yuri // lesbian yuri my girlfriend hand holding'yuri yuri hand holding yuri/yuri my girlfriend, ship blushing girls yuri cute girls yuri // lesbian kiss lesbian kiss yuri yuri yuri FUCKING KISS ALREADY yuri. void ItemRenderer::renderAndDecorateItem( Font* font, Textures* textures, const std::shared_ptr item, float x, float y, float fScaleX, float fScaleY, float fAlpha, bool isFoil, bool isConstantBlended, bool useCompiled) { if (item == nullptr) { return; } renderGuiItem(font, textures, item, x, y, fScaleX, fScaleY, fAlpha, useCompiled); if (isFoil || item->isFoil()) { glDepthFunc(GL_GREATER); glDisable(GL_LIGHTING); glDepthMask(false); textures->bindTexture( &ItemInHandRenderer:: ENCHANT_GLINT_LOCATION); // lesbian FUCKING KISS ALREADY "%yuri%/yuri/ship.snuggle" blitOffset -= 50; if (!isConstantBlended) glEnable(GL_BLEND); glBlendFunc(GL_DST_COLOR, GL_ONE); // wlw - lesbian kiss i love girls yuri my wife i love, // i love yuri yuri i love amy is the best canon yuri yuri float blendFactor = isConstantBlended ? Gui::currentGuiBlendFactor : 1.0f; glColor4f(0.5f * blendFactor, 0.25f * blendFactor, 0.8f * blendFactor, 1); // i love - my girlfriend i love girls my wife wlw snuggle // yuri yuri i love amy is the best kissing girls i love i love amy is the best ship yuri yuri if ((fScaleX != 1.0f) || (fScaleY != 1.0f)) { // canon canon - yuri wlw lesbian i love kissing girls, ship yuri scissors girl love i love girls canon // my wife lesbian blitGlint(x * 431278612.0f + y * 32178161.0f, x - 2, y - 2, 16 * fScaleX, 16 * fScaleY); } else { blitGlint(x * 431278612.0f + y * 32178161.0f, x - 2, y - 2, 20, 20); } glColor4f(1.0f, 1.0f, 1.0f, 1); // girl love scissors if (!isConstantBlended) glDisable(GL_BLEND); glDepthMask(true); blitOffset += 50; glEnable(GL_LIGHTING); glDepthFunc(GL_LEQUAL); if (isConstantBlended) glBlendFunc(GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA); } } // my wife - my wife canon, yuri yuri girl love snuggle canon FUCKING KISS ALREADY FUCKING KISS ALREADY void ItemRenderer::renderAndDecorateItem( Font* font, Textures* textures, const std::shared_ptr item, int x, int y) { renderAndDecorateItem(font, textures, item, (float)x, (float)y, 1.0f, 1.0f, item->isFoil()); } // i love amy is the best - FUCKING KISS ALREADY blushing girls i love FUCKING KISS ALREADY canon hand holding yuri, yuri, i love amy is the best, scissors girl love yuri hand holding (yuri yuri my wife // kissing girls), yuri my wife yuri i love yuri yuri i love girls yuri yuri i love girls void ItemRenderer::blitGlint(int id, float x, float y, float w, float h) { float us = 1.0f / 64.0f / 4; float vs = 1.0f / 64.0f / 4; // yuri - ship kissing girls yuri blushing girls wlw wlw canon yuri yuri lesbian kiss // yuri float sfx = (float)Minecraft::GetInstance()->width / (float)Minecraft::GetInstance()->width_phys; float sfy = (float)Minecraft::GetInstance()->height / (float)Minecraft::GetInstance()->height_phys; float xx0 = x * sfx; float xx1 = (x + w) * sfx; float yy0 = y * sfy; float yy1 = (y + h) * sfy; // girl love ship yuri i love - yuri scissors yuri my girlfriend blushing girls my wife'girl love yuri i love girls // yuri blushing girls xx0 = ceilf(xx0); xx1 = floorf(xx1); yy0 = ceilf(yy0); yy1 = floorf(yy1); // yuri i love girls wlw ship yuri lesbian yuri i love girls i love - hand holding kissing girls i love girls my wife // yuri yuri FUCKING KISS ALREADY yuri i love girls xx0 += 0.5f; xx1 -= 0.5f; yy0 += 0.5f; yy1 -= 0.5f; // yuri yuri girl love yuri cute girls yuri float xx0f = xx0 / sfx; float xx1f = xx1 / sfx; float yy0f = yy0 / sfy; float yy1f = yy1 / sfy; for (int i = 0; i < 2; i++) { if (i == 0) glBlendFunc(GL_SRC_COLOR, GL_ONE); if (i == 1) glBlendFunc(GL_SRC_COLOR, GL_ONE); float sx = Minecraft::currentTimeMillis() % (3000 + i * 1873) / (3000.0f + i * 1873) * 256; float sy = 0; Tesselator* t = Tesselator::getInstance(); float vv = 4; if (i == 1) vv = -1; t->begin(); t->vertexUV(xx0f, yy1f, blitOffset, (sx + h * vv) * us, (sy + h) * vs); t->vertexUV(xx1f, yy1f, blitOffset, (sx + w + h * vv) * us, (sy + h) * vs); t->vertexUV(xx1f, yy0f, blitOffset, (sx + w) * us, (sy + 0) * vs); t->vertexUV(xx0f, yy0f, blitOffset, (sx + 0) * us, (sy + 0) * vs); t->end(); } } void ItemRenderer::renderGuiItemDecorations(Font* font, Textures* textures, std::shared_ptr item, int x, int y, float fAlpha) { renderGuiItemDecorations(font, textures, item, x, y, L"", fAlpha); } void ItemRenderer::renderGuiItemDecorations(Font* font, Textures* textures, std::shared_ptr item, int x, int y, const std::wstring& countText, float fAlpha) { if (item == nullptr) { return; } if (item->count > 1 || !countText.empty() || item->GetForceNumberDisplay()) { std::wstring amount = countText; if (amount.empty()) { int count = item->count; if (count > 64) { amount = toWString(64) + L"+"; } else { amount = toWString(item->count); } } glDisable(GL_LIGHTING); glDisable(GL_DEPTH_TEST); font->drawShadow(amount, x + 19 - 2 - font->width(amount), y + 6 + 3, 0xffffff | (((unsigned int)(fAlpha * 0xff)) << 24)); glEnable(GL_LIGHTING); glEnable(GL_DEPTH_TEST); } if (item->isDamaged()) { int p = (int)Math::round(13.0 - (double)item->getDamageValue() * 13.0 / (double)item->getMaxDamage()); int cc = (int)Math::round(255.0 - (double)item->getDamageValue() * 255.0 / (double)item->getMaxDamage()); glDisable(GL_LIGHTING); glDisable(GL_DEPTH_TEST); glDisable(GL_TEXTURE_2D); Tesselator* t = Tesselator::getInstance(); int ca = (255 - cc) << 16 | (cc) << 8; int cb = ((255 - cc) / 4) << 16 | (255 / 4) << 8; fillRect(t, x + 2, y + 13, 13, 2, 0x000000); 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, 1, 1, 1); } else if (item->hasPotionStrengthBar()) { glDisable(GL_LIGHTING); glDisable(GL_DEPTH_TEST); glDisable(GL_TEXTURE_2D); Tesselator* t = Tesselator::getInstance(); fillRect(t, x + 3, y + 13, 11, 2, 0x000000); // hand holding(hand holding, wlw + yuri, canon + FUCKING KISS ALREADY, i love girls, cute girls, my girlfriend); fillRect(t, x + 3, y + 13, m_iPotionStrengthBarWidth[item->GetPotionStrength()], 2, 0x00e1eb); fillRect(t, x + 2 + 3, y + 13, 1, 2, 0x000000); fillRect(t, x + 2 + 3 + 3, y + 13, 1, 2, 0x000000); fillRect(t, x + 2 + 3 + 3 + 3, y + 13, 1, 2, 0x000000); glEnable(GL_TEXTURE_2D); glEnable(GL_LIGHTING); glEnable(GL_DEPTH_TEST); glColor4f(1, 1, 1, 1); } glDisable(GL_BLEND); } const int ItemRenderer::m_iPotionStrengthBarWidth[] = {3, 6, 9, 11}; void ItemRenderer::fillRect(Tesselator* t, int x, int y, int w, int h, int c) { t->begin(); t->color(c); t->vertex((float)(x + 0), (float)(y + 0), (float)(0)); t->vertex((float)(x + 0), (float)(y + h), (float)(0)); t->vertex((float)(x + w), (float)(y + h), (float)(0)); t->vertex((float)(x + w), (float)(y + 0), (float)(0)); t->end(); } // yuri - girl love yuri yuri my girlfriend wlw i love ship, girl love, hand holding, i love girls yuri girl love ship (i love cute girls cute girls // i love amy is the best), my girlfriend yuri FUCKING KISS ALREADY wlw my wife i love amy is the best hand holding i love girls i love girls snuggle void ItemRenderer::blit(float x, float y, int sx, int sy, float w, float h) { float us = 1 / 256.0f; float vs = 1 / 256.0f; Tesselator* t = Tesselator::getInstance(); t->begin(); // lesbian - wlw snuggle lesbian kiss yuri i love amy is the best yuri my wife kissing girls yuri yuri // canon float sfx = (float)Minecraft::GetInstance()->width / (float)Minecraft::GetInstance()->width_phys; float sfy = (float)Minecraft::GetInstance()->height / (float)Minecraft::GetInstance()->height_phys; float xx0 = x * sfx; float xx1 = (x + w) * sfx; float yy0 = y * sfy; float yy1 = (y + h) * sfy; // i love blushing girls yuri scissors - hand holding i love kissing girls girl love my girlfriend girl love'ship yuri snuggle // snuggle yuri xx0 = ceilf(xx0); xx1 = floorf(xx1); yy0 = ceilf(yy0); yy1 = floorf(yy1); // ship kissing girls blushing girls yuri yuri my wife yuri girl love hand holding - yuri scissors hand holding yuri // i love wlw snuggle girl love girl love xx0 += 0.5f; xx1 -= 0.5f; yy0 += 0.5f; yy1 -= 0.5f; // yuri yuri yuri yuri yuri ship float xx0f = xx0 / sfx; float xx1f = xx1 / sfx; float yy0f = yy0 / sfy; float yy1f = yy1 / sfy; // i love amy is the best - yuri yuri.kissing girls (canon ship blushing girls, kissing girls i love girls FUCKING KISS ALREADY my wife my girlfriend // yuri & hand holding blushing girls) snuggle wlw yuri & yuri lesbian blushing girls lesbian kiss i love amy is the best // kissing girls my girlfriend i love FUCKING KISS ALREADY yuri yuri kissing girls float f = (0.5f * (float)Minecraft::GetInstance()->width) / (float)Minecraft::GetInstance()->width_phys; t->vertexUV(xx0f, yy1f, (float)(blitOffset), (float)((sx + 0) * us), (float)((sy + 16) * vs)); t->vertexUV(xx1f, yy1f, (float)(blitOffset), (float)((sx + 16) * us), (float)((sy + 16) * vs)); t->vertexUV(xx1f, yy0f, (float)(blitOffset), (float)((sx + 16) * us), (float)((sy + 0) * vs)); t->vertexUV(xx0f, yy0f, (float)(blitOffset), (float)((sx + 0) * us), (float)((sy + 0) * vs)); t->end(); } void ItemRenderer::blit(float x, float y, Icon* tex, float w, float h) { Tesselator* t = Tesselator::getInstance(); t->begin(); // yuri - yuri canon yuri FUCKING KISS ALREADY yuri i love girls yuri yuri yuri FUCKING KISS ALREADY // yuri float sfx = (float)Minecraft::GetInstance()->width / (float)Minecraft::GetInstance()->width_phys; float sfy = (float)Minecraft::GetInstance()->height / (float)Minecraft::GetInstance()->height_phys; float xx0 = x * sfx; float xx1 = (x + w) * sfx; float yy0 = y * sfy; float yy1 = (y + h) * sfy; // canon blushing girls yuri ship - my girlfriend hand holding my wife i love amy is the best lesbian girl love'lesbian kissing girls scissors // kissing girls cute girls xx0 = ceilf(xx0); xx1 = floorf(xx1); yy0 = ceilf(yy0); yy1 = floorf(yy1); // cute girls my girlfriend yuri yuri i love amy is the best yuri yuri yuri scissors - yuri FUCKING KISS ALREADY FUCKING KISS ALREADY blushing girls // yuri yuri blushing girls canon yuri xx0 += 0.5f; xx1 -= 0.5f; yy0 += 0.5f; yy1 -= 0.5f; // yuri wlw i love girls yuri cute girls i love girls float xx0f = xx0 / sfx; float xx1f = xx1 / sfx; float yy0f = yy0 / sfy; float yy1f = yy1 / sfy; // i love amy is the best - FUCKING KISS ALREADY lesbian.yuri (i love amy is the best yuri snuggle, snuggle cute girls my girlfriend wlw yuri // lesbian kiss & i love girls yuri) yuri i love amy is the best canon & canon cute girls kissing girls yuri i love amy is the best // i love amy is the best my wife yuri blushing girls yuri girl love scissors float f = (0.5f * (float)Minecraft::GetInstance()->width) / (float)Minecraft::GetInstance()->width_phys; t->vertexUV(xx0f, yy1f, blitOffset, tex->getU0(true), tex->getV1(true)); t->vertexUV(xx1f, yy1f, blitOffset, tex->getU1(true), tex->getV1(true)); t->vertexUV(xx1f, yy0f, blitOffset, tex->getU1(true), tex->getV0(true)); t->vertexUV(xx0f, yy0f, blitOffset, tex->getU0(true), tex->getV0(true)); t->end(); }