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)
}
private fun renderFoodAndAir(event: RenderGuiOverlayEvent.Pre) {
if (event.overlay != FOOD_LEVEL_ELEMENT && event.overlay != AIR_LEVEL_ELEMENT) {
return
}
private fun renderFoodAndAir(event: RenderGuiOverlayEvent.Pre, gui: ForgeGui) {
val ply: LocalPlayer = minecraft.player ?: return
if (ply.vehicle is LivingEntity ||
minecraft.options.hideGui ||
minecraft.gameMode?.canHurtPlayer() == false ||
minecraft.getCameraEntity() !is Player
) {
if (ply.vehicle is LivingEntity) {
return
}
@ -214,8 +206,6 @@ object MatteryGUI {
mattery = lastState
}
val gui = minecraft.gui as? ForgeGui ?: return
if (mattery != null && mattery.isAndroid) {
event.isCanceled = true
lastState = mattery
@ -273,7 +263,7 @@ object MatteryGUI {
return HEALTH_POISON
} else if (player.hasEffect(MobEffects.WITHER)) {
return HEALTH_WITHER
} else if (player.isFullyFrozen()) {
} else if (player.isFullyFrozen) {
return HEALTH_FROZEN
}
@ -285,26 +275,23 @@ object MatteryGUI {
return RGBAColor.DARK_GREEN.toInt()
} else if (player.hasEffect(MobEffects.WITHER)) {
return RGBAColor.WHITE.toInt()
} else if (player.isFullyFrozen()) {
} else if (player.isFullyFrozen) {
return RGBAColor.AQUA.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
val ply: LocalPlayer = minecraft.player ?: return
var mattery = ply.matteryPlayer
if (!ply.isAlive && mattery == null) {
mattery = lastState
}
val gui = minecraft.gui as? ForgeGui ?: return
if (mattery != null && mattery.isAndroid) {
event.isCanceled = true
lastState = mattery
@ -352,10 +339,13 @@ object MatteryGUI {
}
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) {
renderFoodAndAir(event)
renderFoodAndAir(event, gui)
} else if (event.overlay == PLAYER_HEALTH_ELEMENT) {
renderPlayerHealth(event)
renderPlayerHealth(event, gui)
}
}
}