diff --git a/patches/minecraft/net/minecraft/world/inventory/AnvilMenu.java.patch b/patches/minecraft/net/minecraft/world/inventory/AnvilMenu.java.patch index a925d47dd8..8566aff68b 100644 --- a/patches/minecraft/net/minecraft/world/inventory/AnvilMenu.java.patch +++ b/patches/minecraft/net/minecraft/world/inventory/AnvilMenu.java.patch @@ -24,9 +24,9 @@ this.f_39000_ = 0; + boolean flag = false; + ++ if (!net.minecraftforge.common.ForgeHooks.onAnvilChange(this, itemstack, itemstack2, f_39768_, f_39001_, j, this.f_39771_)) return; if (!itemstack2.m_41619_()) { - boolean flag = itemstack2.m_150930_(Items.f_42690_) && !EnchantedBookItem.m_41163_(itemstack2).isEmpty(); -+ if (!net.minecraftforge.common.ForgeHooks.onAnvilChange(this, itemstack, itemstack2, f_39768_, f_39001_, j, this.f_39771_)) return; + flag = itemstack2.m_41720_() == Items.f_42690_ && !EnchantedBookItem.m_41163_(itemstack2).isEmpty(); if (itemstack1.m_41763_() && itemstack1.m_41720_().m_6832_(itemstack, itemstack2)) { int l2 = Math.min(itemstack1.m_41773_(), itemstack1.m_41776_() / 4); diff --git a/src/main/java/net/minecraftforge/event/AnvilUpdateEvent.java b/src/main/java/net/minecraftforge/event/AnvilUpdateEvent.java index 7e0411ef5b..efb8e0d93d 100644 --- a/src/main/java/net/minecraftforge/event/AnvilUpdateEvent.java +++ b/src/main/java/net/minecraftforge/event/AnvilUpdateEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; /** * - * AnvilUpdateEvent is fired when the inputs (either input stack, or the name) to an anvil are changed.
+ * AnvilUpdateEvent is fired whenever the input stacks (left or right) or the name in an anvil changed.
* It is called from {@link AnvilMenu#createResult()}.
* If the event is canceled, vanilla behavior will not run, and the output will be set to {@link ItemStack#EMPTY}.
* If the event is not canceled, but the output is not empty, it will set the output and not run vanilla behavior.
diff --git a/src/test/java/net/minecraftforge/debug/misc/AnvilUpdateEventTest.java b/src/test/java/net/minecraftforge/debug/misc/AnvilUpdateEventTest.java new file mode 100644 index 0000000000..3259e41d1b --- /dev/null +++ b/src/test/java/net/minecraftforge/debug/misc/AnvilUpdateEventTest.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) Forge Development LLC and contributors + * SPDX-License-Identifier: LGPL-2.1-only + */ + +package net.minecraftforge.debug.misc; + +import org.slf4j.Logger; + +import com.mojang.logging.LogUtils; + +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.AnvilUpdateEvent; +import net.minecraftforge.fml.common.Mod; + +/** + * This class provides a way to test the AnvilUpdateEvent.
+ * The event is now fired as described in the javadoc (of AnvilUpdateEvent).
+ * "AnvilUpdateEvent is fired whenever the input stacks (left or right) or the name in an anvil changed." + */ +@Mod(AnvilUpdateEventTest.MOD_ID) +public class AnvilUpdateEventTest +{ + private static final boolean ENABLED = false; + private static final Logger LOGGER = LogUtils.getLogger(); + static final String MOD_ID = "anvil_update_event_fix"; + + public AnvilUpdateEventTest() + { + if (ENABLED) + { + MinecraftForge.EVENT_BUS.addListener(this::anvilUpdate); + } + } + + private void anvilUpdate(AnvilUpdateEvent event) + { + LOGGER.info("Anvil input or name changed!"); + } +} diff --git a/src/test/resources/META-INF/mods.toml b/src/test/resources/META-INF/mods.toml index 5d93f73e4c..7df8333233 100644 --- a/src/test/resources/META-INF/mods.toml +++ b/src/test/resources/META-INF/mods.toml @@ -242,6 +242,8 @@ modId="custom_transformtype_test" modId="mega_model_test" [[mods]] modId="emissive_elements_test" +[[mods]] +modId="anvil_update_event_fix"