diff --git a/src/main/java/org/auioc/mcmod/arnicalib/mixin/common/MixinFoodData.java b/src/main/java/org/auioc/mcmod/arnicalib/mixin/common/MixinFoodData.java new file mode 100644 index 00000000..38b1ab18 --- /dev/null +++ b/src/main/java/org/auioc/mcmod/arnicalib/mixin/common/MixinFoodData.java @@ -0,0 +1,36 @@ +package org.auioc.mcmod.arnicalib.mixin.common; + +import javax.annotation.Nullable; +import org.auioc.mcmod.arnicalib.common.event.CommonEventFactory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.food.FoodData; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; + +@Mixin(value = FoodData.class) +public abstract class MixinFoodData { + + + /** + * @author WakelessSloth56 + * @reason {@link org.auioc.mcmod.arnicalib.common.event.impl.LivingEatEvent} + */ + @Overwrite(remap = false) + public void eat(Item p_38713_, ItemStack p_38714_, @Nullable LivingEntity entity) { + var event = CommonEventFactory.onLivingEat(entity, ((FoodData) (Object) this), p_38714_); + if (!event.isCanceled()) { + int nutrition = event.getNutrition(); + float saturationModifier = event.getSaturationModifier(); + if (nutrition != 0 || saturationModifier != 0.0F) { + this.eat(nutrition, saturationModifier); + } + } + } + + @Shadow + protected abstract void eat(int p_38708_, float p_38709_); + +} diff --git a/src/main/resources/arnicalib.mixin.json b/src/main/resources/arnicalib.mixin.json index ea20c752..b3f86b18 100644 --- a/src/main/resources/arnicalib.mixin.json +++ b/src/main/resources/arnicalib.mixin.json @@ -10,6 +10,7 @@ "common.MixinItemStack", "common.MixinProjectile", "common.MixinArrow", + "common.MixinFoodData", "server.MixinServerLifecycleHooks", "server.MixinLootContext", "server.MixinPiglinAi",