Fix health bar rendering when it shouldn't

This commit is contained in:
DBotThePony 2023-03-18 20:57:23 +07:00
parent 04c295a359
commit 38e4c078fe
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -193,18 +193,10 @@ object MatteryGUI {
showIteration(event) showIteration(event)
} }
private fun renderFoodAndAir(event: RenderGuiOverlayEvent.Pre) { private fun renderFoodAndAir(event: RenderGuiOverlayEvent.Pre, gui: ForgeGui) {
if (event.overlay != FOOD_LEVEL_ELEMENT && event.overlay != AIR_LEVEL_ELEMENT) {
return
}
val ply: LocalPlayer = minecraft.player ?: return val ply: LocalPlayer = minecraft.player ?: return
if (ply.vehicle is LivingEntity || if (ply.vehicle is LivingEntity) {
minecraft.options.hideGui ||
minecraft.gameMode?.canHurtPlayer() == false ||
minecraft.getCameraEntity() !is Player
) {
return return
} }
@ -214,8 +206,6 @@ object MatteryGUI {
mattery = lastState mattery = lastState
} }
val gui = minecraft.gui as? ForgeGui ?: return
if (mattery != null && mattery.isAndroid) { if (mattery != null && mattery.isAndroid) {
event.isCanceled = true event.isCanceled = true
lastState = mattery lastState = mattery
@ -273,7 +263,7 @@ object MatteryGUI {
return HEALTH_POISON return HEALTH_POISON
} else if (player.hasEffect(MobEffects.WITHER)) { } else if (player.hasEffect(MobEffects.WITHER)) {
return HEALTH_WITHER return HEALTH_WITHER
} else if (player.isFullyFrozen()) { } else if (player.isFullyFrozen) {
return HEALTH_FROZEN return HEALTH_FROZEN
} }
@ -285,26 +275,23 @@ object MatteryGUI {
return RGBAColor.DARK_GREEN.toInt() return RGBAColor.DARK_GREEN.toInt()
} else if (player.hasEffect(MobEffects.WITHER)) { } else if (player.hasEffect(MobEffects.WITHER)) {
return RGBAColor.WHITE.toInt() return RGBAColor.WHITE.toInt()
} else if (player.isFullyFrozen()) { } else if (player.isFullyFrozen) {
return RGBAColor.AQUA.toInt() return RGBAColor.AQUA.toInt()
} }
return RGBAColor.RED.toInt() return RGBAColor.RED.toInt()
} // можно вынести в конфиг, но для этого нужен селектор цвета } // можно вынести в конфиг, но для этого нужен селектор цвета
private fun renderPlayerHealth(event: RenderGuiOverlayEvent.Pre) { private fun renderPlayerHealth(event: RenderGuiOverlayEvent.Pre, gui: ForgeGui) {
if (!ClientConfig.ANDROID_HEALTH_HUD) return if (!ClientConfig.ANDROID_HEALTH_HUD) return
val ply: LocalPlayer = minecraft.player ?: return val ply: LocalPlayer = minecraft.player ?: return
var mattery = ply.matteryPlayer var mattery = ply.matteryPlayer
if (!ply.isAlive && mattery == null) { if (!ply.isAlive && mattery == null) {
mattery = lastState mattery = lastState
} }
val gui = minecraft.gui as? ForgeGui ?: return
if (mattery != null && mattery.isAndroid) { if (mattery != null && mattery.isAndroid) {
event.isCanceled = true event.isCanceled = true
lastState = mattery lastState = mattery
@ -352,10 +339,13 @@ object MatteryGUI {
} }
fun onLayerRenderEvent(event: RenderGuiOverlayEvent.Pre) { fun onLayerRenderEvent(event: RenderGuiOverlayEvent.Pre) {
val gui = minecraft.gui as? ForgeGui ?: return
if (minecraft.options.hideGui || !gui.shouldDrawSurvivalElements()) return
if (event.overlay == FOOD_LEVEL_ELEMENT || event.overlay == AIR_LEVEL_ELEMENT) { if (event.overlay == FOOD_LEVEL_ELEMENT || event.overlay == AIR_LEVEL_ELEMENT) {
renderFoodAndAir(event) renderFoodAndAir(event, gui)
} else if (event.overlay == PLAYER_HEALTH_ELEMENT) { } else if (event.overlay == PLAYER_HEALTH_ELEMENT) {
renderPlayerHealth(event) renderPlayerHealth(event, gui)
} }
} }
} }