diff --git a/src/main/java/net/tfminecraft/cooking/cache/FurnitureCache.java b/src/main/java/net/tfminecraft/cooking/cache/FurnitureCache.java index 26cd27b..2ac8dc3 100644 --- a/src/main/java/net/tfminecraft/cooking/cache/FurnitureCache.java +++ b/src/main/java/net/tfminecraft/cooking/cache/FurnitureCache.java @@ -90,4 +90,10 @@ public static boolean isBowl(Furniture f) { public static boolean isMealHolder(Furniture f) { return isBowl(f) || isPlate(f); } + + // Other plugins' furniture (pedestals, displays) keeps its own slot display. + public static boolean isCookingFurniture(Furniture f) { + return f.getType() != null + && f.getType().getItemPath().toLowerCase().startsWith("ia.tfmc_cooking:"); + } } diff --git a/src/main/java/net/tfminecraft/cooking/manager/PlateManager.java b/src/main/java/net/tfminecraft/cooking/manager/PlateManager.java index 63a2907..e0a3b87 100644 --- a/src/main/java/net/tfminecraft/cooking/manager/PlateManager.java +++ b/src/main/java/net/tfminecraft/cooking/manager/PlateManager.java @@ -244,7 +244,7 @@ public void interact(FurnitureInteractEvent e) { @EventHandler public void addItem(FurnitureSlotItemAddEvent e) { Furniture f = e.getFurniture(); - if(FurnitureCache.isMealHolder(f)); + if(!FurnitureCache.isCookingFurniture(f)) return; ItemStack item = e.getItem(); FoodItem fi = FoodItem.fromItem(item); if(fi == null) return; diff --git a/src/test/java/net/tfminecraft/cooking/cache/CookingFurnitureTest.java b/src/test/java/net/tfminecraft/cooking/cache/CookingFurnitureTest.java new file mode 100644 index 0000000..60a5e48 --- /dev/null +++ b/src/test/java/net/tfminecraft/cooking/cache/CookingFurnitureTest.java @@ -0,0 +1,37 @@ +package net.tfminecraft.cooking.cache; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.junit.jupiter.api.Test; + +import net.tfminecraft.interactiblefurniture.furniture.Furniture; +import net.tfminecraft.interactiblefurniture.furniture.FurnitureType; + +class CookingFurnitureTest { + + @Test + void cookingFurnitureIsRecognised() { + assertTrue(FurnitureCache.isCookingFurniture(furniture("ia.tfmc_cooking:plate"))); + } + + @Test + void magicPedestalIsNotCookingFurniture() { + assertFalse(FurnitureCache.isCookingFurniture(furniture("ia.tfmc:pedestal"))); + } + + @Test + void furnitureWithoutTypeIsNotCookingFurniture() { + assertFalse(FurnitureCache.isCookingFurniture(mock(Furniture.class))); + } + + private static Furniture furniture(String itemPath) { + FurnitureType type = mock(FurnitureType.class); + when(type.getItemPath()).thenReturn(itemPath); + Furniture furniture = mock(Furniture.class); + when(furniture.getType()).thenReturn(type); + return furniture; + } +}