From 252f727eff002b1f18afb95f57bc8c46cb82d925 Mon Sep 17 00:00:00 2001 From: Artsiom Zemliakou Date: Fri, 3 Apr 2026 03:03:28 +0300 Subject: [PATCH] Fix Farmers Delight tomato compatibility (FD 1.2.11) Replace direct TOMATO_CROP field linkage with TomatoVineBlock provider registration to avoid NoSuchFieldError caused by Farmers Delight API type changes. --- .../farming/harvest/TomatoHarvestBehaviour.java | 8 ++++++++ .../farmersdelight/registry/FDHarvestBehaviors.java | 5 +---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/integration/farmersdelight/java/plus/dragons/createintegratedfarming/integration/farmersdelight/farming/harvest/TomatoHarvestBehaviour.java b/src/integration/farmersdelight/java/plus/dragons/createintegratedfarming/integration/farmersdelight/farming/harvest/TomatoHarvestBehaviour.java index 7c67aa1..90ac775 100644 --- a/src/integration/farmersdelight/java/plus/dragons/createintegratedfarming/integration/farmersdelight/farming/harvest/TomatoHarvestBehaviour.java +++ b/src/integration/farmersdelight/java/plus/dragons/createintegratedfarming/integration/farmersdelight/farming/harvest/TomatoHarvestBehaviour.java @@ -27,7 +27,9 @@ import net.minecraft.sounds.SoundSource; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.Nullable; import plus.dragons.createintegratedfarming.api.harvester.CustomHarvestBehaviour; import vectorwing.farmersdelight.common.Configuration; import vectorwing.farmersdelight.common.block.TomatoVineBlock; @@ -42,6 +44,12 @@ public TomatoHarvestBehaviour(TomatoVineBlock tomato) { this.tomato = tomato; } + public static @Nullable TomatoHarvestBehaviour create(Block block) { + if (!(block instanceof TomatoVineBlock tomato)) + return null; + return new TomatoHarvestBehaviour(tomato); + } + @Override public void harvest(HarvesterMovementBehaviour behaviour, MovementContext context, BlockPos pos, BlockState state) { boolean replant = CustomHarvestBehaviour.replant(); diff --git a/src/integration/farmersdelight/java/plus/dragons/createintegratedfarming/integration/farmersdelight/registry/FDHarvestBehaviors.java b/src/integration/farmersdelight/java/plus/dragons/createintegratedfarming/integration/farmersdelight/registry/FDHarvestBehaviors.java index b678e8e..12f1d41 100644 --- a/src/integration/farmersdelight/java/plus/dragons/createintegratedfarming/integration/farmersdelight/registry/FDHarvestBehaviors.java +++ b/src/integration/farmersdelight/java/plus/dragons/createintegratedfarming/integration/farmersdelight/registry/FDHarvestBehaviors.java @@ -21,13 +21,10 @@ import plus.dragons.createintegratedfarming.api.harvester.CustomHarvestBehaviour; import plus.dragons.createintegratedfarming.integration.farmersdelight.farming.harvest.MushroomColonyHarvestBehaviour; import plus.dragons.createintegratedfarming.integration.farmersdelight.farming.harvest.TomatoHarvestBehaviour; -import vectorwing.farmersdelight.common.block.TomatoVineBlock; -import vectorwing.farmersdelight.common.registry.ModBlocks; public class FDHarvestBehaviors { public static void register() { CustomHarvestBehaviour.REGISTRY.registerProvider(MushroomColonyHarvestBehaviour::create); - var tomato = (TomatoVineBlock) ModBlocks.TOMATO_CROP.get(); - CustomHarvestBehaviour.REGISTRY.register(tomato, new TomatoHarvestBehaviour(tomato)); + CustomHarvestBehaviour.REGISTRY.registerProvider(TomatoHarvestBehaviour::create); } }