When subscribing to the AnvilUpdateEvent, I seem to be getting multiple events for a single action of filling the left and right slots on the anvil. This is for Forge 1.9-12.16.0.1811-1.9. Am I doing something wrong here, is this a bug or other? Here's my test code and output from one test run:
Main class:
package com.sviking.practicalanvil;
import com.sviking.practicalanvil.event.PAEventHandler;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@Mod(modid = Main.MODID, name = Main.MODNAME, version = Main.VERSION)
public class Main {
public static final String MODID = "practicalanvil";
public static final String MODNAME = "Practical Anvil Mod";
public static final String VERSION = "1.0.0";
@Instance
public static Main instance = new Main();
@EventHandler
public void preInit(FMLPreInitializationEvent e) {
}
@EventHandler
public void init(FMLInitializationEvent e) {
MinecraftForge.EVENT_BUS.register(new PAEventHandler());
}
@EventHandler
public void postInit(FMLPostInitializationEvent e) {
}
}
Event handler:
package com.sviking.practicalanvil.event;
import net.minecraftforge.event.AnvilUpdateEvent;
import net.minecraftforge.event.entity.player.AnvilRepairEvent;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
public class PAEventHandler {
@SubscribeEvent
public void onAnvilUpdate(AnvilUpdateEvent e) {
System.out.println(e);
e.setCanceled(true);
}
}
Sample output (single action of filling left and right slots):
[21:42:28] [Client thread/INFO] [sTDOUT]: [com.sviking.practicalanvil.event.PAEventHandler:onAnvilUpdate:11]: net.minecraftforge.event.AnvilUpdateEvent@384bd992
[21:42:28] [Client thread/INFO] [sTDOUT]: [com.sviking.practicalanvil.event.PAEventHandler:onAnvilUpdate:11]: net.minecraftforge.event.AnvilUpdateEvent@10fae499
[21:42:28] [Client thread/INFO] [sTDOUT]: [com.sviking.practicalanvil.event.PAEventHandler:onAnvilUpdate:11]: net.minecraftforge.event.AnvilUpdateEvent@259a9966
[21:42:28] [server thread/INFO] [sTDOUT]: [com.sviking.practicalanvil.event.PAEventHandler:onAnvilUpdate:11]: net.minecraftforge.event.AnvilUpdateEvent@b0f027e
[21:42:28] [server thread/INFO] [sTDOUT]: [com.sviking.practicalanvil.event.PAEventHandler:onAnvilUpdate:11]: net.minecraftforge.event.AnvilUpdateEvent@3505b6d9
[21:42:28] [server thread/INFO] [sTDOUT]: [com.sviking.practicalanvil.event.PAEventHandler:onAnvilUpdate:11]: net.minecraftforge.event.AnvilUpdateEvent@6eef4800
[21:42:28] [Client thread/INFO] [sTDOUT]: [com.sviking.practicalanvil.event.PAEventHandler:onAnvilUpdate:11]: net.minecraftforge.event.AnvilUpdateEvent@7b7ef483
[21:42:28] [Client thread/INFO] [sTDOUT]: [com.sviking.practicalanvil.event.PAEventHandler:onAnvilUpdate:11]: net.minecraftforge.event.AnvilUpdateEvent@1d9f2537
I'll also note that the number of events generated varies from as few as 4 to as many as 10.
I've experienced similar behavior with AnvilRepairEvent, though not as extreme.
Thanks in advance.