Skip to content

Commit

Permalink
add a check if AppleSkin health overlay should be rendered
Browse files Browse the repository at this point in the history
  • Loading branch information
Terrails committed Mar 18, 2024
1 parent e45a8c4 commit df877ba
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package terrails.colorfulhearts.forge.compat;

import net.minecraft.util.Mth;
import net.minecraft.world.Difficulty;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.food.FoodData;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import squeek.appleskin.ModConfig;
Expand All @@ -14,6 +17,7 @@
import terrails.colorfulhearts.forge.api.event.ForgeHeartChangeEvent;
import terrails.colorfulhearts.forge.api.event.ForgeHeartRenderEvent;
import terrails.colorfulhearts.forge.mixin.compat.appleskin.HUDOverlayHandlerAccessor;
import terrails.colorfulhearts.heart.CHeartType;

public class AppleSkinForgeCompat extends AppleSkinCompat {

Expand All @@ -39,6 +43,10 @@ private void onPostRender(ForgeHeartRenderEvent.Post event) {
Player player = client.player;
assert player != null;

if (!shouldDrawOverlay(event.getHealthType(), player)) {
return;
}

/* copied from HUDOverlayHandler */

// try to get the item stack in the player hand
Expand Down Expand Up @@ -77,4 +85,31 @@ private void onPostRender(ForgeHeartRenderEvent.Post event) {
private void heartChanged(ForgeHeartChangeEvent event) {
this.lastHealth = 0;
}

public boolean shouldDrawOverlay(CHeartType heartType, Player player) {
if (heartType != CHeartType.HEALTH) {
return false; // AppleSkin usually checks the effect, but we'll do it this way
}

/* copied from HUDOverlayHandler */
if (!ModConfig.SHOW_FOOD_HEALTH_HUD_OVERLAY.get()) {
return false;
}

// in the `PEACEFUL` mode, health will restore faster
if (player.level().getDifficulty() == Difficulty.PEACEFUL)
return false;

FoodData stats = player.getFoodData();

// when player has any changes health amount by any case can't show estimated health
// because player will confused how much of restored/damaged healths
if (stats.getFoodLevel() >= 18)
return false;

if (player.hasEffect(MobEffects.REGENERATION))
return false;

return true;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package terrails.colorfulhearts.neoforge.compat;

import net.minecraft.util.Mth;
import net.minecraft.world.Difficulty;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.food.FoodData;
import net.minecraft.world.item.ItemStack;
import net.neoforged.neoforge.common.NeoForge;
import squeek.appleskin.ModConfig;
Expand All @@ -11,6 +14,7 @@
import squeek.appleskin.client.HUDOverlayHandler;
import squeek.appleskin.helpers.FoodHelper;
import terrails.colorfulhearts.compat.AppleSkinCompat;
import terrails.colorfulhearts.heart.CHeartType;
import terrails.colorfulhearts.neoforge.api.event.ForgeHeartChangeEvent;
import terrails.colorfulhearts.neoforge.api.event.ForgeHeartRenderEvent;
import terrails.colorfulhearts.neoforge.mixin.compat.appleskin.HUDOverlayHandlerAccessor;
Expand Down Expand Up @@ -39,6 +43,10 @@ private void onPostRender(ForgeHeartRenderEvent.Post event) {
Player player = client.player;
assert player != null;

if (!shouldDrawOverlay(event.getHealthType(), player)) {
return;
}

/* copied from HUDOverlayHandler */

// try to get the item stack in the player hand
Expand Down Expand Up @@ -77,4 +85,31 @@ private void onPostRender(ForgeHeartRenderEvent.Post event) {
private void heartChanged(ForgeHeartChangeEvent event) {
this.lastHealth = 0;
}

public boolean shouldDrawOverlay(CHeartType heartType, Player player) {
if (heartType != CHeartType.HEALTH) {
return false; // AppleSkin usually checks the effect, but we'll do it this way
}

/* copied from HUDOverlayHandler */
if (!ModConfig.SHOW_FOOD_HEALTH_HUD_OVERLAY.get()) {
return false;
}

// in the `PEACEFUL` mode, health will restore faster
if (player.level().getDifficulty() == Difficulty.PEACEFUL)
return false;

FoodData stats = player.getFoodData();

// when player has any changes health amount by any case can't show estimated health
// because player will confused how much of restored/damaged healths
if (stats.getFoodLevel() >= 18)
return false;

if (player.hasEffect(MobEffects.REGENERATION))
return false;

return true;
}
}

0 comments on commit df877ba

Please sign in to comment.