From d3c56ae60ca540313830a1d7b67a5b7822381870 Mon Sep 17 00:00:00 2001 From: Siphalor Date: Sun, 26 Mar 2023 18:12:40 +0200 Subject: [PATCH 1/2] Auto-Implement AppleSkin's DynamicFood for CamoFoodItems --- .../impl/food/CamoFoodContextImpl.java | 8 ++++ .../capsaicin/impl/food/FoodHandler.java | 7 +-- .../client/appleskin/MixinCamoFoodItem.java | 45 +++++++++++++++++++ src/main/resources/capsaicin.mixins.json | 1 + 4 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 src/main/java/de/siphalor/capsaicin/impl/food/CamoFoodContextImpl.java create mode 100644 src/main/java/de/siphalor/capsaicin/impl/mixin/client/appleskin/MixinCamoFoodItem.java diff --git a/src/main/java/de/siphalor/capsaicin/impl/food/CamoFoodContextImpl.java b/src/main/java/de/siphalor/capsaicin/impl/food/CamoFoodContextImpl.java new file mode 100644 index 0000000..9099f0b --- /dev/null +++ b/src/main/java/de/siphalor/capsaicin/impl/food/CamoFoodContextImpl.java @@ -0,0 +1,8 @@ +package de.siphalor.capsaicin.impl.food; + +import de.siphalor.capsaicin.api.food.CamoFoodContext; +import net.minecraft.entity.LivingEntity; + +public record CamoFoodContextImpl(LivingEntity user) implements CamoFoodContext { + +} diff --git a/src/main/java/de/siphalor/capsaicin/impl/food/FoodHandler.java b/src/main/java/de/siphalor/capsaicin/impl/food/FoodHandler.java index e3c1940..0edf863 100644 --- a/src/main/java/de/siphalor/capsaicin/impl/food/FoodHandler.java +++ b/src/main/java/de/siphalor/capsaicin/impl/food/FoodHandler.java @@ -60,12 +60,7 @@ public LivingEntity getUser() { this.stack = stack; Item item = stack.getItem(); if (item instanceof CamoFoodItem camoFoodItem) { - this.stack = camoFoodItem.getCamoFoodStack(stack, new CamoFoodContext() { - @Override - public LivingEntity user() { - return user; - } - }); + this.stack = camoFoodItem.getCamoFoodStack(stack, new CamoFoodContextImpl(user)); if (this.stack == null) { return this; } diff --git a/src/main/java/de/siphalor/capsaicin/impl/mixin/client/appleskin/MixinCamoFoodItem.java b/src/main/java/de/siphalor/capsaicin/impl/mixin/client/appleskin/MixinCamoFoodItem.java new file mode 100644 index 0000000..797d59b --- /dev/null +++ b/src/main/java/de/siphalor/capsaicin/impl/mixin/client/appleskin/MixinCamoFoodItem.java @@ -0,0 +1,45 @@ +package de.siphalor.capsaicin.impl.mixin.client.appleskin; + +import de.siphalor.capsaicin.api.food.CamoFoodContext; +import de.siphalor.capsaicin.api.food.CamoFoodItem; +import de.siphalor.capsaicin.impl.food.CamoFoodContextImpl; +import de.siphalor.capsaicin.impl.food.FoodHandler; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.FoodComponent; +import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import squeek.appleskin.helpers.DynamicFood; + +@Mixin(CamoFoodItem.class) +public interface MixinCamoFoodItem extends DynamicFood { + @Shadow + @Nullable ItemStack getCamoFoodStack(ItemStack stack, CamoFoodContext context); + + @Override + default int getDynamicHunger(ItemStack stack, PlayerEntity player) { + ItemStack camoFoodStack = getCamoFoodStack(stack, new CamoFoodContextImpl(player)); + if (camoFoodStack == null) { + return 0; + } + FoodComponent foodComponent = FoodHandler.INSTANCE.get().withStack(stack).withUser(player).getModifiedFoodComponent(); + if (foodComponent == null) { + return 0; + } + return foodComponent.getHunger(); + } + + @Override + default float getDynamicSaturation(ItemStack stack, PlayerEntity player) { + ItemStack camoFoodStack = getCamoFoodStack(stack, new CamoFoodContextImpl(player)); + if (camoFoodStack == null) { + return 0; + } + FoodComponent foodComponent = FoodHandler.INSTANCE.get().withStack(stack).withUser(player).getModifiedFoodComponent(); + if (foodComponent == null) { + return 0; + } + return foodComponent.getSaturationModifier(); + } +} diff --git a/src/main/resources/capsaicin.mixins.json b/src/main/resources/capsaicin.mixins.json index 48eafd0..65b898a 100644 --- a/src/main/resources/capsaicin.mixins.json +++ b/src/main/resources/capsaicin.mixins.json @@ -14,6 +14,7 @@ "MixinPlayerEntity" ], "client": [ + "client.appleskin.MixinCamoFoodItem", "client.appleskin.MixinFoodHelper", "client.polymer.MixinPolymerAppleskinPlugin" ], From e5d817de6d797ffa76165d3784d880659ef2fce3 Mon Sep 17 00:00:00 2001 From: Siphalor Date: Sun, 26 Mar 2023 18:13:16 +0200 Subject: [PATCH 2/2] Version 1.3.1 - Auto-Implement AppleSkin's DynamicFood for CamoFoodItems --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 686bb99..47fb15a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ yarn_mappings = 4 loader_version = 0.14.12 # Mod Properties -mod_version = 1.3.0 +mod_version = 1.3.1 release_type = release maven_group = de.siphalor archives_base_name = capsaicin