feat: implement hardcore hearts with game mode lock
Display hardcore heart textures when a world is in hardcore mode, matching Java Edition behavior. Hearts switch between normal/hardcore across all states (poison, wither, flash) and all HUD resolutions. C++ changes: - IUIScene_HUD: check isHardcore() and call SetHardcoreMode() each tick - UIScene_HUD: send hardcore boolean to Flash via Iggy, invalidate SetHealth dirty check on state change to force heart redraw - CreateWorldMenu/LoadMenu: lock game mode to Survival when hardcore - MinecraftServer: gate server.properties hardcore override behind MINECRAFT_SERVER_BUILD so offline worlds preserve their saved flag SWF changes (via new Java tools): - AddHardcoreBitmaps: adds 10 hardcore heart bitmaps to graphics SWFs - AddHardcoreHearts: adds 10 new frames (15-24) to health sprite - PatchHudABC: patches HUD ActionScript bytecode with SetHardcore method and frame offset logic (+14 normal/poison, +6 wither) Also updates README changelog styling with consistent ### headings.
This commit is contained in:
@@ -5,6 +5,8 @@
|
||||
#include "..\..\..\Minecraft.World\net.minecraft.world.item.h"
|
||||
#include "..\..\..\Minecraft.World\net.minecraft.world.entity.ai.attributes.h"
|
||||
#include "..\..\..\Minecraft.World\net.minecraft.world.entity.monster.h"
|
||||
#include "..\..\MultiPlayerLevel.h"
|
||||
#include "..\..\..\Minecraft.World\LevelData.h"
|
||||
#include "IUIScene_HUD.h"
|
||||
|
||||
#include "UI.h"
|
||||
@@ -20,6 +22,7 @@ IUIScene_HUD::IUIScene_HUD()
|
||||
m_lastMaxHealth = 20;
|
||||
m_lastHealthBlink = false;
|
||||
m_lastHealthPoison = false;
|
||||
m_lastHealthHardcore = false;
|
||||
m_iCurrentFood = -1;
|
||||
m_lastFoodPoison = false;
|
||||
m_lastAir = 10;
|
||||
@@ -94,9 +97,10 @@ void IUIScene_HUD::updateFrameTick()
|
||||
ShowHealth(false);
|
||||
ShowFood(false);
|
||||
ShowAir(false);
|
||||
ShowArmour(false);
|
||||
ShowArmour(false);
|
||||
ShowExpBar(false);
|
||||
SetHealthAbsorb(0);
|
||||
SetHealthAbsorb(0);
|
||||
SetHardcoreMode(false);
|
||||
}
|
||||
|
||||
if(pMinecraft->localplayers[iPad]->isRidingJumpable())
|
||||
@@ -206,6 +210,12 @@ void IUIScene_HUD::renderPlayerHealth()
|
||||
// Update armour
|
||||
int armor = pMinecraft->localplayers[iPad]->getArmorValue();
|
||||
|
||||
// Check hardcore mode
|
||||
bool bHardcore = pMinecraft->level != nullptr
|
||||
&& pMinecraft->level->getLevelData() != nullptr
|
||||
&& pMinecraft->level->getLevelData()->isHardcore();
|
||||
SetHardcoreMode(bHardcore);
|
||||
|
||||
SetHealth(currentHealth, oldHealth, blink, bHasPoison || bHasWither, bHasWither);
|
||||
SetHealthAbsorb(totalAbsorption);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user