Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions java/squeek/appleskin/api/event/FoodCheckEvent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package squeek.appleskin.api.event;

import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.neoforged.bus.api.Event;

/**
* Can be used to treat non-standard items as food for display purposes
* or if you have a food component specific to your mod.
* Called whenever an item is checked if it should show food tooltips.
* <p>
* Note: if the item lacks default food components, make sure to also
* listen to {@link FoodValuesEvent}, otherwise the tooltip will be empty.
*/
public class FoodCheckEvent extends Event
{
public FoodCheckEvent(Player player, ItemStack itemStack, boolean isFood)
{
this.isFood = isFood;
this.player = player;
this.itemStack = itemStack;
}

public boolean isFood;
public final ItemStack itemStack;
public final Player player;
}
8 changes: 7 additions & 1 deletion java/squeek/appleskin/helpers/FoodHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,20 @@
import net.minecraft.world.item.consume_effects.ApplyStatusEffectsConsumeEffect;
import net.neoforged.neoforge.common.NeoForge;
import org.jetbrains.annotations.Nullable;
import squeek.appleskin.api.event.FoodCheckEvent;
import squeek.appleskin.api.event.FoodValuesEvent;
import squeek.appleskin.network.MessageNaturalRegenerationSync;

public class FoodHelper
{
public static boolean isFood(ItemStack itemStack, Player player)
{
return itemStack.get(DataComponents.FOOD) != null && itemStack.get(DataComponents.CONSUMABLE) != null;
boolean result = itemStack.get(DataComponents.FOOD) != null && itemStack.get(DataComponents.CONSUMABLE) != null;

FoodCheckEvent event = new FoodCheckEvent(player, itemStack, result);
NeoForge.EVENT_BUS.post(event);

return event.isFood;
}

public static boolean canConsume(Player player, FoodProperties foodProperties)
Expand Down