From 3808da094269f841b85eeb19833c7f529c19f6af Mon Sep 17 00:00:00 2001 From: fehrnah Date: Mon, 23 Mar 2026 09:06:05 +0000 Subject: [PATCH] fix: make beans replantable by villagers --- .../mixin/VillagerEntityMixin.java | 26 +++++++++++++++++++ src/main/resources/cobblecuisine.mixins.json | 11 ++++++++ .../tags/item/villager_plantable_seeds.json | 6 +++++ src/main/resources/fabric.mod.json | 3 +++ 4 files changed, 46 insertions(+) create mode 100644 src/main/java/com/fyre/cobblecuisine/mixin/VillagerEntityMixin.java create mode 100644 src/main/resources/cobblecuisine.mixins.json create mode 100644 src/main/resources/data/minecraft/tags/item/villager_plantable_seeds.json diff --git a/src/main/java/com/fyre/cobblecuisine/mixin/VillagerEntityMixin.java b/src/main/java/com/fyre/cobblecuisine/mixin/VillagerEntityMixin.java new file mode 100644 index 0000000..b1b4591 --- /dev/null +++ b/src/main/java/com/fyre/cobblecuisine/mixin/VillagerEntityMixin.java @@ -0,0 +1,26 @@ +package com.fyre.cobblecuisine.mixin; + +import com.fyre.cobblecuisine.item.CobbleCuisineItems; +import net.minecraft.entity.passive.VillagerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.village.VillagerProfession; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(VillagerEntity.class) +public abstract class VillagerEntityMixin { + + @Inject(method = "canGather", at = @At("RETURN"), cancellable = true) + private void cobblecuisine$canGather(ItemStack stack, CallbackInfoReturnable cir) { + if (!cir.getReturnValue()) { + VillagerEntity villager = (VillagerEntity) (Object) this; + if (villager.getVillagerData().getProfession() == VillagerProfession.FARMER + && villager.getInventory().canInsert(stack) + && stack.isOf(CobbleCuisineItems.BEAN_SEEDS)) { + cir.setReturnValue(true); + } + } + } +} diff --git a/src/main/resources/cobblecuisine.mixins.json b/src/main/resources/cobblecuisine.mixins.json new file mode 100644 index 0000000..b3973a2 --- /dev/null +++ b/src/main/resources/cobblecuisine.mixins.json @@ -0,0 +1,11 @@ +{ + "required": true, + "package": "com.fyre.cobblecuisine.mixin", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "VillagerEntityMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/src/main/resources/data/minecraft/tags/item/villager_plantable_seeds.json b/src/main/resources/data/minecraft/tags/item/villager_plantable_seeds.json new file mode 100644 index 0000000..7830fe9 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/item/villager_plantable_seeds.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cobblecuisine:bean_seeds" + ] +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index a803843..070e920 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -27,6 +27,9 @@ "com.fyre.cobblecuisine.config.CobbleCuisineModMenuCompat" ] }, + "mixins": [ + "cobblecuisine.mixins.json" + ], "depends": { "fabricloader": ">=${loader_version}", "minecraft": "${minecraft_version}"