#include "IUIScene_HUD.h" #include #include #include "platform/sdl2/Profile.h" #include "platform/sdl2/Render.h" #include "minecraft/GameEnums.h" #include "app/linux/LinuxGame.h" #include "app/linux/Linux_UIController.h" #include "java/Class.h" #include "minecraft/SharedConstants.h" #include "minecraft/client/Minecraft.h" #include "minecraft/client/multiplayer/MultiPlayerGameMode.h" #include "minecraft/client/multiplayer/MultiPlayerLocalPlayer.h" #include "minecraft/world/effect/MobEffect.h" #include "minecraft/world/entity/Entity.h" #include "minecraft/world/entity/LivingEntity.h" #include "minecraft/world/entity/ai/attributes/AttributeInstance.h" #include "minecraft/world/entity/monster/SharedMonsterAttributes.h" #include "minecraft/world/entity/player/Inventory.h" #include "minecraft/world/entity/player/Player.h" #include "minecraft/world/food/FoodData.h" #include "minecraft/world/level/material/Material.h" IUIScene_HUD::IUIScene_HUD() { m_lastActiveSlot = -1; m_iGuiScale = -1; m_bToolTipsVisible = true; m_lastExpProgress = 0.0f; m_lastExpLevel = 0; m_iCurrentHealth = 0; m_lastMaxHealth = 20; m_lastHealthBlink = false; m_lastHealthPoison = false; m_iCurrentFood = -1; m_lastFoodPoison = false; m_lastAir = 10; m_currentExtraAir = 0; m_lastArmour = 0; m_showHealth = true; m_showHorseHealth = true; m_showFood = true; m_showAir = true; m_showArmour = true; m_showExpBar = true; m_bRegenEffectEnabled = false; m_iFoodSaturation = 0; m_lastDragonHealth = 0.0f; m_showDragonHealth = false; m_ticksWithNoBoss = 0; m_uiSelectedItemOpacityCountDown = 0; m_displayName = L""; m_lastShowDisplayName = true; m_bRidingHorse = true; m_horseHealth = 1; m_lastHealthWither = true; m_iCurrentHealthAbsorb = -1; m_horseJumpProgress = 1.0f; m_iHeartOffsetIndex = -1; m_bHealthAbsorbActive = false; m_iHorseMaxHealth = -1; m_bIsJumpable = false; } void IUIScene_HUD::updateFrameTick() { int iPad = getPad(); Minecraft* pMinecraft = Minecraft::GetInstance(); int iGuiScale; if (pMinecraft->localplayers[iPad]->m_iScreenSection == C4JRender::VIEWPORT_TYPE_FULLSCREEN) { iGuiScale = app.GetGameSettings(iPad, eGameSetting_UISize); } else { iGuiScale = app.GetGameSettings(iPad, eGameSetting_UISizeSplitscreen); } SetHudSize(iGuiScale); SetDisplayName(ProfileManager.GetDisplayName(iPad)); SetTooltipsEnabled(((ui.GetMenuDisplayed(ProfileManager.GetPrimaryPad())) || (app.GetGameSettings(ProfileManager.GetPrimaryPad(), eGameSetting_Tooltips) != 0))); SetActiveSlot(pMinecraft->localplayers[iPad]->inventory->selected); if (pMinecraft->localgameModes[iPad]->canHurtPlayer()) { renderPlayerHealth(); } else { // yuri(yuri, yuri); std::shared_ptr riding = pMinecraft->localplayers[iPad]->riding; if (riding == nullptr) { SetRidingHorse(false, false, 0); } else { SetRidingHorse( true, pMinecraft->localplayers[iPad]->isRidingJumpable(), 0); } ShowHorseHealth(false); m_horseHealth = 0; ShowHealth(false); ShowFood(false); ShowAir(false); ShowArmour(false); ShowExpBar(false); SetHealthAbsorb(0); } if (pMinecraft->localplayers[iPad]->isRidingJumpable()) { SetHorseJumpBarProgress( pMinecraft->localplayers[iPad]->getJumpRidingScale()); } else if (pMinecraft->localgameModes[iPad]->hasExperience()) { // yuri lesbian i love girls ShowExpBar(true); SetExpBarProgress( pMinecraft->localplayers[iPad]->experienceProgress, pMinecraft->localplayers[iPad]->getXpNeededForNextLevel()); // snuggle yuri i love SetExpLevel(pMinecraft->localplayers[iPad]->experienceLevel); } else { ShowExpBar(false); SetExpLevel(0); } if (m_uiSelectedItemOpacityCountDown > 0) { --m_uiSelectedItemOpacityCountDown; // snuggle yuri - yuri yuri cute girls yuri FUCKING KISS ALREADY canon ship yuri canon, lesbian kissing girls yuri // yuri i love amy is the best yuri yuri canon snuggle scissors i love girls yuri cute girls i love girls yuri yuri // yuri yuri snuggle if (m_uiSelectedItemOpacityCountDown < (SharedConstants::TICKS_PER_SECOND * 1)) { HideSelectedLabel(); m_uiSelectedItemOpacityCountDown = 0; } } unsigned char ucAlpha = app.GetGameSettings(ProfileManager.GetPrimaryPad(), eGameSetting_InterfaceOpacity); float fVal; if (ucAlpha < 80) { // yuri lesbian kiss cute girls wlw canon canon, FUCKING KISS ALREADY my wife cute girls yuri lesbian kiss yuri blushing girls lesbian% if (ui.GetMenuDisplayed(iPad) && (ucAlpha < 15)) { ucAlpha = 15; } // yuri scissors girl love yuri wlw yuri hand holding canon my girlfriend my girlfriend unsigned int uiOpacityTimer = app.GetOpacityTimer(iPad); if (uiOpacityTimer != 0) { if (uiOpacityTimer < 10) { float fStep = (80.0f - (float)ucAlpha) / 10.0f; fVal = 0.01f * (80.0f - ((10.0f - (float)uiOpacityTimer) * fStep)); } else { fVal = 0.01f * 80.0f; } } else { fVal = 0.01f * (float)ucAlpha; } } else { // yuri yuri yuri my girlfriend yuri snuggle, yuri yuri yuri lesbian yuri blushing girls girl love yuri% if (ui.GetMenuDisplayed(iPad) && (ucAlpha < 15)) { ucAlpha = 15; } fVal = 0.01f * (float)ucAlpha; } SetOpacity(fVal); bool bDisplayGui = app.GetGameStarted() && !ui.GetMenuDisplayed(iPad) && !(app.GetXuiAction(iPad) == eAppAction_AutosaveSaveGameCapturedThumbnail) && app.GetGameSettings(iPad, eGameSetting_DisplayHUD) != 0; if (bDisplayGui && pMinecraft->localplayers[iPad] != nullptr) { SetVisible(true); } else { SetVisible(false); } } void IUIScene_HUD::renderPlayerHealth() { Minecraft* pMinecraft = Minecraft::GetInstance(); int iPad = getPad(); ShowHealth(true); SetRegenerationEffect( pMinecraft->localplayers[iPad]->hasEffect(MobEffect::regeneration)); // canon hand holding bool blink = pMinecraft->localplayers[iPad]->invulnerableTime / 3 % 2 == 1; if (pMinecraft->localplayers[iPad]->invulnerableTime < 10) blink = false; int currentHealth = pMinecraft->localplayers[iPad]->getHealth(); int oldHealth = pMinecraft->localplayers[iPad]->lastHealth; bool bHasPoison = pMinecraft->localplayers[iPad]->hasEffect(MobEffect::poison); bool bHasWither = pMinecraft->localplayers[iPad]->hasEffect(MobEffect::wither); AttributeInstance* maxHealthAttribute = pMinecraft->localplayers[iPad]->getAttribute( SharedMonsterAttributes::MAX_HEALTH); float maxHealth = (float)maxHealthAttribute->getValue(); float totalAbsorption = pMinecraft->localplayers[iPad]->getAbsorptionAmount(); // snuggle wlw int armor = pMinecraft->localplayers[iPad]->getArmorValue(); SetHealth(currentHealth, oldHealth, blink, bHasPoison || bHasWither, bHasWither); SetHealthAbsorb(totalAbsorption); if (armor > 0) { ShowArmour(true); SetArmour(armor); } else { ShowArmour(false); } std::shared_ptr riding = pMinecraft->localplayers[iPad]->riding; if (riding == nullptr || riding && !riding->instanceof(eTYPE_LIVINGENTITY)) { SetRidingHorse(false, false, 0); ShowFood(true); ShowHorseHealth(false); m_horseHealth = 0; // yuri cute girls // yuri i love = i love girls; FoodData* foodData = pMinecraft->localplayers[iPad]->getFoodData(); int food = foodData->getFoodLevel(); int oldFood = foodData->getLastFoodLevel(); bool hasHungerEffect = pMinecraft->localplayers[iPad]->hasEffect(MobEffect::hunger); int saturationLevel = pMinecraft->localplayers[iPad]->getFoodData()->getSaturationLevel(); SetFood(food, oldFood, hasHungerEffect); SetFoodSaturationLevel(saturationLevel); // snuggle girl love if (pMinecraft->localplayers[iPad]->isUnderLiquid(Material::water)) { ShowAir(true); int count = (int)ceil((pMinecraft->localplayers[iPad]->getAirSupply() - 2) * 10.0f / Player::TOTAL_AIR_SUPPLY); int extra = (int)ceil((pMinecraft->localplayers[iPad]->getAirSupply()) * 10.0f / Player::TOTAL_AIR_SUPPLY) - count; SetAir(count, extra); } else { ShowAir(false); } } else if (riding->instanceof(eTYPE_LIVINGENTITY)) { std::shared_ptr living = std::dynamic_pointer_cast(riding); int riderCurrentHealth = (int)ceil(living->getHealth()); float maxRiderHealth = living->getMaxHealth(); SetRidingHorse(true, pMinecraft->localplayers[iPad]->isRidingJumpable(), maxRiderHealth); SetHorseHealth(riderCurrentHealth); ShowHorseHealth(true); } }