From b3e279dc5a8ac10e26b25ce11b26de2c980d472e Mon Sep 17 00:00:00 2001 From: XxFran10xX <318299142+XxFran10xX@users.noreply.github.com> Date: Sun, 27 Sep 2026 19:01:29 +0200 Subject: [PATCH] fix: make blue and brown chicken eggs cookable Cold and warm chicken variants (1.21.5+) lay minecraft:blue_egg and minecraft:brown_egg. Only minecraft:egg had a pickup conversion, so these stayed vanilla and could not be cooked. Owned chickens of those variants also dropped vanilla eggs because the drop suppression only checked EGG. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../cooking/husbandry/HusbandryEggs.java | 5 +++++ .../husbandry/HusbandryHarvestListener.java | 2 +- src/main/resources/conversions.yml | 2 ++ .../cooking/husbandry/HusbandryEggsTest.java | 18 ++++++++++++++++++ .../cooking/item/EggIngredientTest.java | 2 ++ 5 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/test/java/net/tfminecraft/cooking/husbandry/HusbandryEggsTest.java diff --git a/src/main/java/net/tfminecraft/cooking/husbandry/HusbandryEggs.java b/src/main/java/net/tfminecraft/cooking/husbandry/HusbandryEggs.java index a04b888..f8ecb66 100644 --- a/src/main/java/net/tfminecraft/cooking/husbandry/HusbandryEggs.java +++ b/src/main/java/net/tfminecraft/cooking/husbandry/HusbandryEggs.java @@ -8,6 +8,11 @@ final class HusbandryEggs { private HusbandryEggs() {} + // Cold and warm chicken variants lay blue and brown eggs. + static boolean isVanillaEgg(Material material) { + return material == Material.EGG || material == Material.BLUE_EGG || material == Material.BROWN_EGG; + } + static void tryLay(LivingEntity entity, HusbandryAnimal animal, long nowMillis) { if (entity == null || animal == null) { return; diff --git a/src/main/java/net/tfminecraft/cooking/husbandry/HusbandryHarvestListener.java b/src/main/java/net/tfminecraft/cooking/husbandry/HusbandryHarvestListener.java index 519e830..f353817 100644 --- a/src/main/java/net/tfminecraft/cooking/husbandry/HusbandryHarvestListener.java +++ b/src/main/java/net/tfminecraft/cooking/husbandry/HusbandryHarvestListener.java @@ -214,7 +214,7 @@ public void onDropEgg(EntityDropItemEvent event) { return; } ItemStack stack = event.getItemDrop().getItemStack(); - if (stack.getType() != Material.EGG) { + if (!HusbandryEggs.isVanillaEgg(stack.getType())) { return; } HusbandryRepository repository = HusbandryEntities.repository(); diff --git a/src/main/resources/conversions.yml b/src/main/resources/conversions.yml index 7f3fa15..db68ea1 100644 --- a/src/main/resources/conversions.yml +++ b/src/main/resources/conversions.yml @@ -7,6 +7,8 @@ conversions: - v.beetroot vegetable(type=vegetable_1;origin=Beetroot;tags=freshness.0) - v.apple fruit(type=fruit_1;origin=Apple;tags=freshness.0) - v.egg egg(type=egg;origin=Egg;tags=freshness.0:cooked.0) + - v.blue_egg egg(type=egg;origin=Egg;tags=freshness.0:cooked.0) + - v.brown_egg egg(type=egg;origin=Egg;tags=freshness.0:cooked.0) - v.melon fruit(type=fruit_1;origin=Melon;tags=freshness.0) - v.melon_slice fruit(type=fruit_1;origin=Melon Slice;tags=freshness.0) - v.pumpkin vegetable(type=vegetable_1;origin=Pumpkin;tags=freshness.0) diff --git a/src/test/java/net/tfminecraft/cooking/husbandry/HusbandryEggsTest.java b/src/test/java/net/tfminecraft/cooking/husbandry/HusbandryEggsTest.java new file mode 100644 index 0000000..cedcf1d --- /dev/null +++ b/src/test/java/net/tfminecraft/cooking/husbandry/HusbandryEggsTest.java @@ -0,0 +1,18 @@ +package net.tfminecraft.cooking.husbandry; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.bukkit.Material; +import org.junit.jupiter.api.Test; + +class HusbandryEggsTest { + + @Test + void everyChickenVariantEggIsSuppressed() { + assertTrue(HusbandryEggs.isVanillaEgg(Material.EGG)); + assertTrue(HusbandryEggs.isVanillaEgg(Material.BLUE_EGG)); + assertTrue(HusbandryEggs.isVanillaEgg(Material.BROWN_EGG)); + assertFalse(HusbandryEggs.isVanillaEgg(Material.FEATHER)); + } +} diff --git a/src/test/java/net/tfminecraft/cooking/item/EggIngredientTest.java b/src/test/java/net/tfminecraft/cooking/item/EggIngredientTest.java index c6b490b..0571215 100644 --- a/src/test/java/net/tfminecraft/cooking/item/EggIngredientTest.java +++ b/src/test/java/net/tfminecraft/cooking/item/EggIngredientTest.java @@ -39,6 +39,8 @@ void eggStatesAndHusbandryQualityAreConfigured() throws Exception { assertTrue(types.contains("edible-when-cooked: true")); assertTrue(conversions.contains("v.egg egg(type=egg;origin=Egg;tags=freshness.0:cooked.0)")); + assertTrue(conversions.contains("v.blue_egg egg(type=egg;origin=Egg;tags=freshness.0:cooked.0)")); + assertTrue(conversions.contains("v.brown_egg egg(type=egg;origin=Egg;tags=freshness.0:cooked.0)")); assertTrue(husbandry.contains("food(type=egg;origin=Egg;tags=freshness.0:cooked.0)")); assertTrue(husbandry.contains("egg-timer: 1h")); assertFalse(husbandry.contains("egg-timer: 10m"));