From efa8df83b32f2dcfc6e8bfa6eed36ae08e8fa74b Mon Sep 17 00:00:00 2001 From: Ludovic Marie <136255825+ludovic111@users.noreply.github.com> Date: Tue, 27 Oct 2026 23:06:19 +0100 Subject: [PATCH] villagers: a torchflower crop is never ripe TorchflowerCropBlock.getMaxAge is 2 while its age property stops at 1, so CropBlock.isMaxAge never holds for it: HarvestFarmland leaves it alone and UseBonemeal keeps it as a target until it turns into a torchflower. Co-Authored-By: Claude Opus 5.5 --- crates/horizon-client/src/mobs/villager.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crates/horizon-client/src/mobs/villager.rs b/crates/horizon-client/src/mobs/villager.rs index 9018f20e7..21bcd7d38 100644 --- a/crates/horizon-client/src/mobs/villager.rs +++ b/crates/horizon-client/src/mobs/villager.rs @@ -330,7 +330,8 @@ pub fn ripe_crop(w: &MobWorld, p: [i32; 3]) -> bool { let max = match w.block_name(p[0], p[1], p[2]) { "minecraft:wheat" | "minecraft:carrots" | "minecraft:potatoes" => "7", "minecraft:beetroots" => "3", - "minecraft:torchflower_crop" => "1", + // TorchflowerCropBlock.getMaxAge is 2, past its age property (0-1): + // the crop is never at max age (age 2 is the torchflower itself). _ => return false, }; w.prop(p[0], p[1], p[2], "age") == Some(max)