diff --git a/patches/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch b/patches/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch index 354583ddd14..9a5f84e0339 100644 --- a/patches/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch +++ b/patches/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch @@ -61,6 +61,15 @@ ContainerHelper.saveAllItems(output, this.items); output.store("RecipesUsed", RECIPES_USED_CODEC, this.recipesUsed); } +@@ -214,7 +_,7 @@ + Item fuelItem = fuel.getItem(); + fuel.shrink(1); + if (fuel.isEmpty()) { +- ItemStackTemplate remainder = fuelItem.getCraftingRemainder(); ++ ItemStackTemplate remainder = fuel.getCraftingRemainder(); + items.set(1, remainder != null ? remainder.create() : ItemStack.EMPTY); + } + } @@ -248,7 +_,7 @@ } diff --git a/patches/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java.patch b/patches/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java.patch index 8f342ddeed6..b62f68f5057 100644 --- a/patches/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java.patch +++ b/patches/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java.patch @@ -8,14 +8,17 @@ ItemStack ingredient = items.get(3); PotionBrewing potionBrewing = level.potionBrewing(); -@@ -181,6 +_,7 @@ +@@ -181,8 +_,9 @@ items.set(dest, potionBrewing.mix(ingredient, items.get(dest))); } + net.neoforged.neoforge.event.EventHooks.onPotionBrewed(items); ingredient.shrink(1); - ItemStackTemplate remainder = ingredient.getItem().getCraftingRemainder(); +- ItemStackTemplate remainder = ingredient.getItem().getCraftingRemainder(); ++ ItemStackTemplate remainder = ingredient.getCraftingRemainder(); if (remainder != null) { + if (ingredient.isEmpty()) { + ingredient = remainder.create(); @@ -218,13 +_,13 @@ @Override diff --git a/src/main/java/net/neoforged/neoforge/common/extensions/IItemStackExtension.java b/src/main/java/net/neoforged/neoforge/common/extensions/IItemStackExtension.java index ce83389b347..c827f48d8ae 100644 --- a/src/main/java/net/neoforged/neoforge/common/extensions/IItemStackExtension.java +++ b/src/main/java/net/neoforged/neoforge/common/extensions/IItemStackExtension.java @@ -25,7 +25,6 @@ import net.minecraft.world.item.AdventureModePredicate; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.component.ItemAttributeModifiers; import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.item.crafting.RecipeType; @@ -51,16 +50,6 @@ private ItemStack self() { return (ItemStack) this; } - /** - * ItemStack sensitive version of {@link Item#getCraftingRemainder()}. - * Returns a full ItemStack instance of the result. - * - * @return The resulting ItemStack - */ - default @Nullable ItemStackTemplate getCraftingRemainder() { - return self().getItem().getCraftingRemainder(self()); - } - /** * Returns the fuel burn time for this item stack. If it is zero, this item is not a fuel. *

diff --git a/src/main/java/net/neoforged/neoforge/common/extensions/ItemInstanceExtension.java b/src/main/java/net/neoforged/neoforge/common/extensions/ItemInstanceExtension.java index 94c7da44141..c33956132bd 100644 --- a/src/main/java/net/neoforged/neoforge/common/extensions/ItemInstanceExtension.java +++ b/src/main/java/net/neoforged/neoforge/common/extensions/ItemInstanceExtension.java @@ -7,14 +7,17 @@ import net.minecraft.core.Holder; import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemInstance; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemStackTemplate; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.ItemEnchantments; import net.neoforged.neoforge.common.ItemAbilities; import net.neoforged.neoforge.common.ItemAbility; import net.neoforged.neoforge.event.EventHooks; +import org.jspecify.annotations.Nullable; public interface ItemInstanceExtension { private ItemInstance self() { @@ -54,4 +57,14 @@ default int getEnchantmentLevel(Holder enchantment) { int level = self().typeHolder().value().getEnchantmentLevel(self(), enchantment); return EventHooks.getEnchantmentLevelSpecific(level, self(), enchantment); } + + /** + * ItemInstance sensitive version of {@link Item#getCraftingRemainder()}. + * Returns a full ItemStackTemplate instance of the result. + * + * @return The resulting ItemStackTemplate + */ + default @Nullable ItemStackTemplate getCraftingRemainder() { + return self().typeHolder().value().getCraftingRemainder(self()); + } }